addLog.vue 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. <template>
  2. <div>
  3. <el-button type="default" size="mini" @click="onShow" :disabled="status === '已结案' || status === '已失败'">新 建</el-button>
  4. <el-drawer title=" 新建跟进动态" size="600px" append-to-body :visible.sync="dialogFormVisible" @close="onClose">
  5. <div class="drawer__panel">
  6. <el-form :model="form" ref="form" label-position="top" label-width="80px">
  7. <el-form-item v-if="$route.path === '/projectChangeDetail' || $route.path === '/customerDetail' || $route.path === '/PublicCustomerDetail'" label="跟进类型" prop="type" :rules="{ required: true, message: '请选择跟进类型', trigger: 'change'}">
  8. <el-select v-model="form.type" placeholder="请选择" style="width: 100%">
  9. <el-option
  10. v-for="item in followUpType"
  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="跟进对象" v-if="$route.path === '/projectChangeDetail' || $route.path === '/customerDetail' || $route.path === '/PublicCustomerDetail'" prop="dataextend.contactsid" :rules="{ required: true, message: '请选择跟进对象', trigger: 'change'}">
  18. <el-tag
  19. style="float: left;margin-right: 5px;margin-bottom: 5px"
  20. v-for="tag in selectTag"
  21. :key="tag.index"
  22. closable
  23. @close="closeTag(tag)"
  24. :type="tag.type">
  25. {{tag.name}}
  26. </el-tag>
  27. <contactsList style="float: left" @onSelect="onSelect" :selects="form.dataextend.contactsid"></contactsList>
  28. </el-form-item>
  29. <el-form-item label="跟进动态" prop="content" :rules="{ required: true, message: '请填写跟进动态', trigger: 'blur'}" v-if="$route.path !== '/projectChangeDetail' && $route.path !== '/customerDetail' && $route.path !== '/PublicCustomerDetail'">
  30. <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 18 }" v-model="form.content" placeholder="请输入跟进动态" autocomplete="off"></el-input>
  31. </el-form-item>
  32. <el-form-item label="目的" prop="target" :rules="{ required: false, message: '请填写跟进目的', trigger: 'blur'}" v-if="$route.path === '/projectChangeDetail' || $route.path === '/customerDetail' || $route.path === '/PublicCustomerDetail'">
  33. <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 18 }" v-model="form.target" placeholder="请输入跟进目的" autocomplete="off"></el-input>
  34. </el-form-item>
  35. <el-form-item label="过程" prop="content" :rules="{ required: false, message: '请填写跟进过程', trigger: 'blur'}" v-if="$route.path === '/projectChangeDetail' || $route.path === '/customerDetail' || $route.path === '/PublicCustomerDetail'">
  36. <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 18 }" v-model="form.content" placeholder="请输入跟进过程" autocomplete="off"></el-input>
  37. </el-form-item>
  38. <el-form-item label="结果" prop="results" :rules="{ required: false, message: '请填写跟进结果', trigger: 'blur'}" v-if="$route.path === '/projectChangeDetail' || $route.path === '/customerDetail' || $route.path === '/PublicCustomerDetail'">
  39. <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 18 }" v-model="form.results" placeholder="请输入跟进结果" autocomplete="off"></el-input>
  40. </el-form-item>
  41. <el-form-item label="下次跟进计划" prop="nextplan" :rules="{ required: false, message: '请填写下次跟进计划', trigger: 'blur'}" v-if="$route.path === '/projectChangeDetail' || $route.path === '/customerDetail' || $route.path === '/PublicCustomerDetail'">
  42. <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 18 }" v-model="form.nextplan" placeholder="请输入下次跟进计划" autocomplete="off"></el-input>
  43. </el-form-item>
  44. <el-form-item>
  45. <upload
  46. ref="upload"
  47. :folderid="folderid"
  48. @onSuccess="onSuccess"
  49. :bindData="bindData"
  50. type="button">
  51. </upload>
  52. <!-- <previewImage :image="{}" :deletebtn="true"></previewImage> -->
  53. </el-form-item>
  54. </el-form>
  55. </div>
  56. <div class="fixed__btn__panel">
  57. <el-button size="small" @click="onClose">取 消</el-button>
  58. <el-button type="warning" size="small" @click="submitLog">保 存</el-button>
  59. </div>
  60. </el-drawer>
  61. </div>
  62. </template>
  63. <script>
  64. import upload from '@/components/upload/preview_upload.vue'
  65. import previewImage from '@/components/previewImage/index.vue'
  66. import contactsList from '@/template/projectChange/contactsList.vue'
  67. export default {
  68. props:['ownertable','status'],
  69. components:{
  70. upload,
  71. previewImage,
  72. contactsList
  73. },
  74. data () {
  75. return {
  76. dialogFormVisible:false,
  77. form:{
  78. content:'',
  79. type:'',
  80. dataextend: {
  81. contactsid: [] // 跟进对象
  82. },//扩展参数
  83. target:'',//目的
  84. results:'',//结果
  85. nextplan:'',//下次跟进计划
  86. },
  87. selectTag:[],
  88. bindData:{},
  89. folderid:JSON.parse(sessionStorage.getItem('folderid')).appfolderid,
  90. attachmentids:[],
  91. path:'',
  92. followUpType:[],
  93. projectParam:{
  94. id:20221111131004,
  95. content:{
  96. pageNumber:1,
  97. pageSize:20,
  98. sa_projectid:'',
  99. nocache:true,
  100. where:{
  101. condition:''
  102. }
  103. }
  104. }
  105. }
  106. },
  107. methods:{
  108. /*onSuccess(res) {
  109. this.attachmentids = res.data.attachmentids
  110. },*/
  111. onShow(){
  112. this.dialogFormVisible = true
  113. console.log(this.$route,'route')
  114. this.path = this.$route.path
  115. console.log(this.path)
  116. this.queryFollowUpType()
  117. },
  118. /*获取跟进类型*/
  119. async queryFollowUpType(){
  120. const res = await this.$store.dispatch('optiontypeselect','followuptype')
  121. this.followUpType = res.data
  122. },
  123. submitLog () {
  124. this.$refs.form.validate(async (valid)=>{
  125. if (!valid) return false
  126. const res = await this.$api.requested({
  127. "id": 20220930121601,
  128. "content": {
  129. "sys_datafollowupid":0,
  130. "ownertable":this.ownertable,
  131. "ownerid":this.$route.query.id,
  132. "type":this.form.type,
  133. "content":this.form.content,
  134. "target":this.form.target,//目的
  135. "results":this.form.results,//结果
  136. "nextplan":this.form.nextplan,//下次跟进计划
  137. "dataextend": {
  138. "contactsid": this.form.dataextend.contactsid // 跟进对象
  139. }
  140. }
  141. })
  142. this.tool.showMessage(res,()=>{
  143. this.bindData = {
  144. "ownertable": 'sys_datafollowup',
  145. "ownerid": res.data.sys_datafollowupid,
  146. "usetype": 'default',
  147. }
  148. this.dialogFormVisible = false
  149. this.$refs['form'].resetFields();
  150. this.$refs['upload'].toUpload()
  151. this.$emit('onSuccess')
  152. this.selectTag = []
  153. this.form.dataextend.contactsid = []
  154. })
  155. })
  156. },
  157. onSuccess() {
  158. this.$emit('onSuccess')
  159. this.dialogFormVisible = false
  160. },
  161. onSelect(row){
  162. this.selectTag = row
  163. this.form.dataextend.contactsid = row.map(item=>item.sys_phonebookid)
  164. this.$refs.form.validateField('dataextend.contactsid')
  165. },
  166. closeTag(row){
  167. for (var i=0;i<this.selectTag.length;i++){
  168. if (row.contactsid === this.selectTag[i].contactsid){
  169. this.selectTag.splice(i,1)
  170. this.form.dataextend.contactsid.splice(i,1)
  171. break
  172. }
  173. }
  174. },
  175. onClose(){
  176. this.dialogFormVisible = false
  177. this.selectTag = []
  178. this.form.dataextend.contactsid = []
  179. this.$refs.form.resetFields()
  180. }
  181. }
  182. }
  183. </script>
  184. <style>
  185. </style>
  186. <style scoped>
  187. /deep/ .el-form-item {
  188. margin-bottom: 10px;
  189. }
  190. /deep/ .el-form--label-top .el-form-item__label {
  191. float: none;
  192. display: inline-block;
  193. text-align: left;
  194. padding: 0 0 0px 0;
  195. }
  196. </style>