follow.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <template>
  2. <div class="follow" style="margin-right:10px">
  3. <el-button size="mini" :type="disabled || data.status === '已无效'?'':'primary'" @click="followBtn" :disabled="disabled || data.status === '已无效'">跟进</el-button>
  4. <el-drawer title="线索跟进" append-to-body :visible.sync="dialogVisible" size="30%" :before-close="handleClose" :show-close="false">
  5. <div class="drawer__panel">
  6. <el-form :model="param" :rules="rules" ref="ruleForm" label-width="110px" class="demo-ruleForm"
  7. label-position="right">
  8. <el-form-item label="跟进时间">
  9. <el-date-picker v-model="timer" type="datetime" format="yyyy-MM-dd HH:mm:ss" size="small">
  10. </el-date-picker>
  11. </el-form-item>
  12. <el-form-item label="本次跟进方式" prop="followupmode">
  13. <el-select v-model="param.followupmode" placeholder="请选择方式" size="small">
  14. <el-option v-for="(item,index) in followTypeList" :key="index" :label="item.value" :value="item.value">
  15. </el-option>
  16. </el-select>
  17. </el-form-item>
  18. <!-- <el-form-item label="本次跟进结果" prop="logtype">
  19. <el-radio-group v-model="param.logtype">
  20. <el-radio label="跟进">跟进</el-radio>
  21. </el-radio-group>
  22. </el-form-item> -->
  23. <el-form-item label="跟进内容" prop="content" v-if="param.logtype == '跟进'">
  24. <el-input type="textarea" v-model="param.content" size="small"></el-input>
  25. </el-form-item>
  26. <upload
  27. ref="upload"
  28. :folderid="folderid"
  29. @onSuccess="onSuccess"
  30. :bindData="bindData"
  31. type="button">
  32. </upload>
  33. </el-form>
  34. </div>
  35. <div class="fixed__btn__panel">
  36. <el-button size="small" @click="dialogVisible = false" class="normal-btn-width">取 消</el-button>
  37. <el-button size="small" type="primary" @click="followAction" class="normal-btn-width" :loading="loading">确 定</el-button>
  38. </div>
  39. </el-drawer>
  40. </div>
  41. </template>
  42. <script>
  43. import upload from './upload'
  44. export default {
  45. components:{upload},
  46. name: '',
  47. data () {
  48. return {
  49. loading:false,
  50. bindData:{},
  51. folderid:JSON.parse(sessionStorage.getItem('folderid')).appfolderid,
  52. param: {
  53. "sat_orderclueid": 4,
  54. "content": "",
  55. "createdate":'',
  56. "followupmode": "", //当面拜访、电话沟通
  57. "logtype": "跟进", //跟进、成交、丢单、无效
  58. "competitor": "",
  59. "latitude":"",//经度,可选
  60. "longitude":"",//纬度,可选
  61. "address":"",//解析地址,
  62. "sat_ordercluefollowuplogid":0//传0新增
  63. },
  64. timer: '',
  65. rules: {
  66. content: [
  67. { required: true, message: '内容不能为空', trigger: 'blur' },
  68. ],
  69. followupmode: [
  70. { required: true, message: '内容不能为空', trigger: 'blur' },
  71. ],
  72. logtype: [
  73. { required: true, message: '内容不能为空', trigger: 'blur' },
  74. ],
  75. competitor: [
  76. { required: true, message: '内容不能为空', trigger: 'blur' },
  77. ],
  78. },
  79. time: '',
  80. dialogVisible: false,
  81. followTypeList: []
  82. }
  83. },
  84. props: {
  85. detailInfo: {
  86. default () {
  87. return []
  88. },
  89. },
  90. position: {
  91. type: String
  92. },
  93. updataList: {
  94. type: Function
  95. },
  96. getDetail: {
  97. type: Function
  98. },
  99. disabled: Boolean,
  100. data:{}
  101. },
  102. watch: {
  103. dialogVisible(val) {
  104. if (!val) {
  105. this.$refs['ruleForm'].resetFields()
  106. this.$refs.upload.fileLinkList = []
  107. this.$refs.upload.fileList = []
  108. }
  109. }
  110. },
  111. computed: {
  112. },
  113. created () {
  114. this.getFollowType()
  115. this.timer = new Date()
  116. },
  117. methods: {
  118. async getFollowType () {
  119. let res = await this.$store.dispatch('optiontypeselect', 'followupmode')
  120. this.followTypeList = res.data
  121. },
  122. followBtn () {
  123. this.dialogVisible = true
  124. },
  125. handleClose () {
  126. this.dialogVisible = false
  127. },
  128. followAction () {
  129. this.$refs.ruleForm.validate(async val => {
  130. if (!val) return
  131. this.param.sat_orderclueid = this.detailInfo.sat_orderclueid
  132. console.log(this.timer)
  133. this.param.createdate = this.timer
  134. console.log(this.param.createdate)
  135. this.param.createdate = `${this.timer.getFullYear()}-${this.timer.getMonth() + 1}-${this.timer.getDate()} ${this.timer.getHours()}:${this.timer.getMinutes()}:${this.timer.getSeconds()}`
  136. console.log(this.param.createdate)
  137. let res = await this.$api.requested({
  138. "id":20221208100602,
  139. "content": this.param
  140. })
  141. this.bindData = {
  142. "ownertable": 'sa_workorder_node',
  143. "ownerid": 1,
  144. "usetype": 'default',
  145. }
  146. this.loading = true
  147. this.$refs['upload'].toUpload(() => {
  148. this.loading = false
  149. this.$emit('onSuccess')
  150. this.dialogVisible = false
  151. })
  152. })
  153. },
  154. onSuccess () {
  155. }
  156. },
  157. };
  158. </script>
  159. <style scoped>
  160. .follow {
  161. display: inline-block;
  162. }
  163. /deep/.el-input,.el-select {
  164. width: 100%;
  165. }
  166. </style>