Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

callback-add-or-update.vue 5.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. <template>
  2. <el-dialog :visible.sync="visible" :title="!dataForm.id ? $t('add') : $t('update')" :close-on-click-modal="false" :close-on-press-escape="false">
  3. <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'">
  4. <el-form-item label="用户id" prop="customerId">
  5. <el-input v-model="dataForm.customerId" placeholder="用户id"></el-input>
  6. </el-form-item>
  7. <el-form-item label="所属公司" prop="companyId">
  8. <el-select v-model="dataForm.companyId" placeholder="请选择公司">
  9. <el-option
  10. v-for="item in companys"
  11. :key="item.value"
  12. :label="item.label"
  13. :value="item.value">
  14. </el-option>
  15. </el-select>
  16. </el-form-item>
  17. <el-form-item label="回访类型" prop="callType">
  18. <el-select v-model="dataForm.callType" placeholder="回访类型">
  19. <el-option
  20. v-for="item in callTypes"
  21. :key="item.value"
  22. :label="item.label"
  23. :value="item.value">
  24. </el-option>
  25. </el-select>
  26. </el-form-item>
  27. <el-form-item label="推送内容" prop="content">
  28. <el-input v-model="dataForm.content" placeholder="推送内容"></el-input>
  29. </el-form-item>
  30. <el-form-item label="备注" prop="remark">
  31. <el-input v-model="dataForm.remark" placeholder="备注"></el-input>
  32. </el-form-item>
  33. <el-form-item label="状态" prop="status">
  34. <el-select v-model="dataForm.status" placeholder="状态">
  35. <el-option
  36. v-for="item in statusList"
  37. :key="item.value"
  38. :label="item.label"
  39. :value="item.value">
  40. </el-option>
  41. </el-select>
  42. </el-form-item>
  43. </el-form>
  44. <template slot="footer">
  45. <el-button @click="visible = false">{{ $t('cancel') }}</el-button>
  46. <el-button type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button>
  47. </template>
  48. </el-dialog>
  49. </template>
  50. <script>
  51. import debounce from 'lodash/debounce'
  52. export default {
  53. data () {
  54. return {
  55. visible: false,
  56. dataForm: {
  57. id: '',
  58. customerId: '',
  59. companyId: '',
  60. callType: '',
  61. content: '',
  62. remark: '',
  63. isPush: '',
  64. pushCode: '',
  65. pushMsg: '',
  66. pushDate: '',
  67. createBy: '',
  68. createTime: '',
  69. updateBy: '',
  70. updateTime: '',
  71. deleteTime: '',
  72. status: ''
  73. },
  74. companys:[],
  75. callTypes:[
  76. {
  77. 'label':'未回访',
  78. 'value':'0',
  79. },
  80. {
  81. 'label':'有效表单',
  82. 'value':'1',
  83. }
  84. ],
  85. statusList:[
  86. {
  87. 'label':'无效',
  88. 'value':0,
  89. },
  90. {
  91. 'label':'有效',
  92. 'value':1,
  93. }
  94. ],
  95. }
  96. },
  97. computed: {
  98. dataRule () {
  99. return {
  100. customerId: [
  101. { required: true, message: this.$t('validate.required'), trigger: 'blur' }
  102. ],
  103. companyId: [
  104. { required: true, message: this.$t('validate.required'), trigger: 'blur' }
  105. ],
  106. callType: [
  107. { required: true, message: this.$t('validate.required'), trigger: 'blur' }
  108. ],
  109. content: [
  110. { required: true, message: this.$t('validate.required'), trigger: 'blur' }
  111. ],
  112. remark: [
  113. { required: true, message: this.$t('validate.required'), trigger: 'blur' }
  114. ],
  115. status: [
  116. { required: true, message: this.$t('validate.required'), trigger: 'blur' }
  117. ]
  118. }
  119. }
  120. },
  121. methods: {
  122. init () {
  123. this.getCompanysOptions();
  124. this.visible = true
  125. this.$nextTick(() => {
  126. this.$refs['dataForm'].resetFields()
  127. if (this.dataForm.id) {
  128. this.getInfo()
  129. }
  130. })
  131. },
  132. // 获取信息
  133. getInfo () {
  134. this.$http.get(`/sys/callback/${this.dataForm.id}`).then(({ data: res }) => {
  135. if (res.code !== 0) {
  136. return this.$message.error(res.msg)
  137. }
  138. this.dataForm = {
  139. ...this.dataForm,
  140. ...res.data
  141. }
  142. }).catch(() => {})
  143. },
  144. //初始化公司下拉框中的选项
  145. async getCompanysOptions() {
  146. this.$http.get(`/sys/companies/list`).then(({ data: res }) => {
  147. if (res.code !== 0) {
  148. return this.$message.error(res.msg)
  149. }
  150. this.companys=[];
  151. if (res.data!=null){
  152. res.data.forEach(element => {
  153. this.companys.push({label:element.name,value:element.id})
  154. })
  155. }
  156. }).catch(() => {})
  157. },
  158. // 表单提交
  159. dataFormSubmitHandle: debounce(function () {
  160. this.$refs['dataForm'].validate((valid) => {
  161. if (!valid) {
  162. return false
  163. }
  164. this.$http[!this.dataForm.id ? 'post' : 'put']('/sys/callback/', this.dataForm).then(({ data: res }) => {
  165. if (res.code !== 0) {
  166. return this.$message.error(res.msg)
  167. }
  168. this.$message({
  169. message: this.$t('prompt.success'),
  170. type: 'success',
  171. duration: 500,
  172. onClose: () => {
  173. this.visible = false
  174. this.$emit('refreshDataList')
  175. }
  176. })
  177. }).catch(() => {})
  178. })
  179. }, 1000, { 'leading': true, 'trailing': false })
  180. }
  181. }
  182. </script>