index.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. <template>
  2. <div>
  3. <basicLayout
  4. ref="basicLayout"
  5. tableName="customerTable"
  6. idName="sa_customersid"
  7. :apiId="{query:20221012164402,del:''}"
  8. :autoQuery="false"
  9. @checkboxCallBack="checkboxCallBack"
  10. >
  11. <template #titleLight>
  12. <batchDeletion v-if="tool.checkAuth($route.name,'batchDeletion')" ref="batchDeletion" :ownerids="selectData" :sys_object="application" @delSuccess="queryData"></batchDeletion>
  13. <!-- <batchRecovery v-if="tool.checkAuth($route.name,'batchRecovery')" ref="batchRecovery" :ownerids="selectData" :sys_object="application" @recoverySuccess="queryData"></batchRecovery>-->
  14. </template>
  15. <template #custom>
  16. <div class="mt-10">
  17. <p class="search__label">应用:</p>
  18. <el-select
  19. class="inline-24"
  20. size="small"
  21. v-model="application"
  22. placeholder="请选择范围"
  23. @change="applicationChange"
  24. >
  25. <el-option
  26. v-for="item in applicationList"
  27. :key="item.index"
  28. :label="item.label"
  29. :value="item.value"
  30. ></el-option>
  31. </el-select>
  32. </div>
  33. <div class="mt-10">
  34. <label class="search__label">客户类型:</label>
  35. <el-select class="inline-16" v-model="selectParam.type" size="small" placeholder="请选择" @change="selectChange" clearable>
  36. <el-option
  37. v-for="item in option.typeData"
  38. :key="item.value"
  39. :label="item.value"
  40. :value="item.value">
  41. </el-option>
  42. </el-select>
  43. </div>
  44. <div class="mt-10">
  45. <label class="search__label">客户等级:</label>
  46. <el-select class="inline-16" v-model="selectParam.customergrade" size="small" placeholder="请选择" @change="selectChange" clearable>
  47. <el-option
  48. v-for="item in option.gradeData"
  49. :key="item.value"
  50. :label="item.value"
  51. :value="item.value">
  52. </el-option>
  53. </el-select>
  54. </div>
  55. <div class="mt-10">
  56. <label class="search__label">所属行业:</label>
  57. <el-select class="inline-16" v-model="selectParam.industry" size="small" placeholder="请选择" @change="selectChange" clearable>
  58. <el-option
  59. v-for="item in option.industryData"
  60. :key="item.value"
  61. :label="item.value"
  62. :value="item.value">
  63. </el-option>
  64. </el-select>
  65. </div>
  66. <div class="mt-10">
  67. <label class="search__label">合作状态:</label>
  68. <el-select class="inline-16" v-model="selectParam.status" size="small" placeholder="请选择" @change="selectChange" clearable>
  69. <el-option
  70. v-for="item in option.status"
  71. :key="item.value"
  72. :label="item.value"
  73. :value="item.value">
  74. </el-option>
  75. </el-select>
  76. </div>
  77. <div class="mt-10">
  78. <label class="search__label" >创建时间:</label>
  79. <el-date-picker
  80. style="margin-right: 24px !important;"
  81. size="small"
  82. @change="selectChange"
  83. value-format="yyyy-MM-dd"
  84. v-model="dateSelect"
  85. type="daterange"
  86. range-separator="至"
  87. start-placeholder="开始日期"
  88. end-placeholder="结束日期"
  89. clearable>
  90. </el-date-picker>
  91. </div>
  92. </template>
  93. <template v-slot:tbList="scope">
  94. <div v-if="scope.data.column.columnname === 'isleader'">
  95. <span v-if="scope.data.column.data['leader'].length !== 0">已分配</span>
  96. <span v-else>未分配</span>
  97. </div>
  98. <div v-else-if="scope.data.column.columnname === 'tag'">
  99. <div v-for="item in scope.data.column.data.tag_sys" :key="item.index" style="float: left;margin-left: 5px;margin-bottom: 5px">
  100. <el-tag color="#FA8C16" size="mini" type="warning" effect="dark">
  101. <span>{{item}}</span>
  102. </el-tag>
  103. </div>
  104. <div v-for="item in scope.data.column.data.tag" :key="item.index" style="float: left;margin-left: 5px;margin-bottom: 5px">
  105. <el-tag color="#FAAB16" size="mini" type="warning" effect="dark">
  106. <span>{{item}}</span>
  107. </el-tag>
  108. </div>
  109. </div>
  110. <div v-else-if="scope.data.column.columnname === 'tradingstatus'">
  111. <span style="color:#3874f6" v-if="scope.data.column.data[[scope.data.column.columnname]] == '未成交'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
  112. <span style="color:#fa8c16" v-else-if="scope.data.column.data[[scope.data.column.columnname]] == '已成交'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
  113. <span style="color:#333333" v-else-if="scope.data.column.data[[scope.data.column.columnname]] == '多次成交'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
  114. </div>
  115. <div v-else-if="scope.data.column.columnname === 'status'">
  116. <span style="color:#3874f6" v-if="scope.data.column.data[[scope.data.column.columnname]] == '潜在'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
  117. <span style="color:#52c41a" v-else-if="scope.data.column.data[[scope.data.column.columnname]] == '合作中'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
  118. <span style="color:#999999" v-else-if="scope.data.column.data[[scope.data.column.columnname]] == '已终止'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
  119. </div>
  120. <div v-else-if="scope.data.column.columnname === 'contact'">
  121. <span>{{scope.data.column.data['leader'][0]?scope.data.column.data['leader'][0].name:'--'}}</span>
  122. </div>
  123. <div v-else>
  124. {{scope.data.column.data[[scope.data.column.columnname]]?scope.data.column.data[[scope.data.column.columnname]]:'--'}}
  125. </div>
  126. </template>
  127. <template v-slot:tbOpreation="scope">
  128. <delData class="inline-16" :ownerid="scope.data.data.sa_customersid" :sys_object="application" @delSuccess="queryData"></delData>
  129. <recovery class="inline-16" :ownerid="scope.data.data.sa_customersid" :sys_object="application" @recoverySuccess="queryData"></recovery>
  130. </template>
  131. </basicLayout>
  132. </div>
  133. </template>
  134. <script>
  135. import recovery from "@/HManagement/ecycle/modules/recovery";
  136. import delData from "@/HManagement/ecycle/modules/delData";
  137. import batchDeletion from "@/HManagement/ecycle/modules/batchDeletion";
  138. import batchRecovery from "@/HManagement/ecycle/modules/batchRecovery";
  139. export default {
  140. name: "index",
  141. data () {
  142. return {
  143. application:'2',
  144. applicationList:[
  145. {
  146. label: '销售线索',
  147. value: "1",
  148. },
  149. {
  150. label: '客户',
  151. value: "2",
  152. },
  153. {
  154. label: '合同',
  155. value: "3",
  156. },
  157. {
  158. label: '项目商机',
  159. value: "4",
  160. },
  161. {
  162. label: '报价单',
  163. value: "5",
  164. }
  165. ],
  166. option:{
  167. typeData:[],
  168. gradeData:[],
  169. industryData:[],
  170. status:[
  171. {
  172. value:'潜在'
  173. },
  174. {
  175. value:'合作中'
  176. },
  177. {
  178. value:'已终止'
  179. }
  180. ]
  181. },
  182. selectParam: {
  183. status:'',
  184. type:'',
  185. customergrade:'',
  186. industry:'',
  187. startdate:'',
  188. enddate:'',
  189. },
  190. dateSelect:'',
  191. selectData:[]
  192. }
  193. },
  194. components:{recovery,delData,batchDeletion,batchRecovery},
  195. methods:{
  196. queryData(){
  197. this.$refs.basicLayout.param.content.isAll = 0
  198. this.$refs.basicLayout.param.content.type = 0
  199. this.$refs.basicLayout.param.content.deleted = 1
  200. this.$refs.basicLayout.listData()
  201. },
  202. applicationChange(val){
  203. console.log(val)
  204. this.$emit("changeApplication",val)
  205. },
  206. /*客户类型列表*/
  207. async typeList(){
  208. const siteid = JSON.parse(sessionStorage.getItem('active_account')).siteid
  209. const res = await this.$api.requested({
  210. "classname": "sysmanage.develop.optiontype.optiontype",
  211. "method": "optiontypeselect",
  212. "content": {
  213. "pageNumber": 1,
  214. "pageSize": 20,
  215. "typename": "customertypemx",
  216. "parameter": {
  217. "siteid": siteid
  218. }
  219. }
  220. })
  221. this.option.typeData = res.data
  222. console.log("客户类型",res.data)
  223. console.log(this.option.typeData)
  224. },
  225. /*客户等级*/
  226. async gradeList(){
  227. const siteid = JSON.parse(sessionStorage.getItem('active_account')).siteid
  228. const res = await this.$api.requested({
  229. "classname": "sysmanage.develop.optiontype.optiontype",
  230. "method": "optiontypeselect",
  231. "content": {
  232. "pageNumber": 1,
  233. "pageSize": 20,
  234. "typename": "customergrade",
  235. "parameter": {
  236. "siteid": siteid
  237. }
  238. }
  239. })
  240. console.log("客户等级",res.data)
  241. /*for (var i=0;i<res.data.length; i++){
  242. if (res.data[i].remarks !== ''){
  243. this.options.gradeData[i] = res.data[i].value + "——" + res.data[i].remarks
  244. }else{
  245. this.options.gradeData[i] = res.data[i].value
  246. }
  247. }*/
  248. this.option.gradeData = res.data
  249. console.log("处理后客户等级",this.option.gradeData)
  250. },
  251. /*行业列表*/
  252. async industryList(){
  253. const siteid = JSON.parse(sessionStorage.getItem('active_account')).siteid
  254. const res = await this.$api.requested({
  255. "classname": "sysmanage.develop.optiontype.optiontype",
  256. "method": "optiontypeselect",
  257. "content": {
  258. "pageNumber": 1,
  259. "pageSize": 20,
  260. "typename": "industry",
  261. "parameter": {
  262. "siteid": siteid
  263. }
  264. }
  265. })
  266. this.option.industryData = res.data
  267. },
  268. selectChange(){
  269. this.tabIndex = this.value
  270. if (this.dateSelect !== '' && this.dateSelect !== null){
  271. this.selectParam.startdate = this.dateSelect[0]
  272. this.selectParam.enddate = this.dateSelect[1]
  273. }else {
  274. this.selectParam.startdate = ''
  275. this.selectParam.enddate = ''
  276. }
  277. this.$refs.basicLayout.param.content.type = 0
  278. this.$refs.basicLayout.param.content.where = Object.assign({},this.$refs.basicLayout.param.content.where,this.selectParam)
  279. this.$refs.basicLayout.param.content.phonenumber = 1
  280. this.$refs['basicLayout'].listData()
  281. },
  282. checkboxCallBack(val){
  283. console.log(val,"客户")
  284. this.selectData = []
  285. val.forEach((item,index) => {
  286. this.selectData[index] = item.sa_customersid
  287. })
  288. this.$refs.batchDeletion.length = this.selectData.length
  289. this.$refs.batchRecovery.length = this.selectData.length
  290. console.log(this.selectData)
  291. }
  292. },
  293. mounted() {
  294. this.queryData()
  295. this.typeList()
  296. this.gradeList()
  297. this.industryList()
  298. },
  299. }
  300. </script>
  301. <style scoped>
  302. </style>