index.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360
  1. <template>
  2. <div>
  3. <basicLayout
  4. ref="list"
  5. formPath="salerPrivatecustomer"
  6. tableName="salerPrivatecustomerTable"
  7. idName="sa_customersid"
  8. :apiId="{query:20221012164402,del:''}"
  9. :autoQuery="false"
  10. :detailPath="{path:'/customerDetail',param:{tabIndex:tabIndex}}"
  11. @listCreate="list">
  12. <template #custom>
  13. <div class="mt-10">
  14. <label class="search__label">范围:</label>
  15. <el-select class="inline-16" v-model="value" size="small" placeholder="请选择数据分类" @change="selectChange" >
  16. <el-option
  17. v-for="item in editableTabs"
  18. :key="item.index"
  19. :label="item.title"
  20. :value="item.name">
  21. </el-option>
  22. </el-select>
  23. </div>
  24. <div class="mt-10">
  25. <label class="search__label">客户类型:</label>
  26. <el-select class="inline-16" v-model="selectParam.type" size="small" placeholder="请选择" @change="selectChange" clearable>
  27. <el-option
  28. v-for="item in option.typeData"
  29. :key="item.value"
  30. :label="item.value"
  31. :value="item.value">
  32. </el-option>
  33. </el-select>
  34. </div>
  35. <div class="mt-10">
  36. <label class="search__label">客户等级:</label>
  37. <el-select class="inline-16" v-model="selectParam.customergrade" size="small" placeholder="请选择" @change="selectChange" clearable>
  38. <el-option
  39. v-for="item in option.gradeData"
  40. :key="item.value"
  41. :label="item.value"
  42. :value="item.value">
  43. </el-option>
  44. </el-select>
  45. </div>
  46. <div class="mt-10">
  47. <label class="search__label">所属行业:</label>
  48. <el-select class="inline-16" v-model="selectParam.industry" size="small" placeholder="请选择" @change="selectChange" clearable>
  49. <el-option
  50. v-for="item in option.industryData"
  51. :key="item.value"
  52. :label="item.value"
  53. :value="item.value">
  54. </el-option>
  55. </el-select>
  56. </div>
  57. <div class="mt-10">
  58. <label class="search__label">合作状态:</label>
  59. <el-select class="inline-16" v-model="selectParam.status" size="small" placeholder="请选择" @change="selectChange" clearable>
  60. <el-option
  61. v-for="item in option.status"
  62. :key="item.value"
  63. :label="item.value"
  64. :value="item.value">
  65. </el-option>
  66. </el-select>
  67. </div>
  68. <div class="mt-10">
  69. <label class="search__label">成交状态:</label>
  70. <el-select class="inline-16" v-model="selectParam.tradingstatus" size="small" placeholder="请选择" @change="selectChange" clearable>
  71. <el-option
  72. v-for="item in option.tradingstatus"
  73. :key="item.value"
  74. :label="item.value"
  75. :value="item.value">
  76. </el-option>
  77. </el-select>
  78. </div>
  79. <div class="mt-10">
  80. <label class="search__label" >创建时间:</label>
  81. <el-date-picker
  82. style="margin-right: 24px !important;"
  83. size="small"
  84. @change="selectChange"
  85. value-format="yyyy-MM-dd"
  86. v-model="dateSelect"
  87. type="daterange"
  88. range-separator="至"
  89. start-placeholder="开始日期"
  90. end-placeholder="结束日期"
  91. clearable>
  92. </el-date-picker>
  93. </div>
  94. </template>
  95. <template v-slot:tbList="scope">
  96. <div v-if="scope.data.column.columnname === 'isleader'">
  97. <span v-if="scope.data.column.data['leader'].length !== 0">已分配</span>
  98. <span v-else>未分配</span>
  99. </div>
  100. <div v-else-if="scope.data.column.columnname === 'tag'">
  101. <div v-for="item in scope.data.column.data.tag_sys" :key="item.index" style="float: left;margin-left: 5px;margin-bottom: 5px">
  102. <el-tag color="#FA8C16" size="mini" type="warning" effect="dark">
  103. <span>{{item}}</span>
  104. </el-tag>
  105. </div>
  106. <div v-for="item in scope.data.column.data.tag" :key="item.index" style="float: left;margin-left: 5px;margin-bottom: 5px">
  107. <el-tag color="#FAAB16" size="mini" type="warning" effect="dark">
  108. <span>{{item}}</span>
  109. </el-tag>
  110. </div>
  111. </div>
  112. <div v-else-if="scope.data.column.columnname === 'industry'">
  113. <span v-if="JSON.stringify(scope.data.column.data.industry) !== '[]' && scope.data.column.data.industry">
  114. <div v-for="item in scope.data.column.data.industry" :key="item.index" style="float: left;margin-left: 5px;margin-bottom: 5px">
  115. <el-tag size="mini" effect="dark">
  116. <span>{{item}}</span>
  117. </el-tag>
  118. </div>
  119. </span>
  120. <div v-else>
  121. {{'--'}}
  122. </div>
  123. </div>
  124. <div v-else-if="scope.data.column.columnname === 'tradingstatus'">
  125. <span style="color:#3874f6" v-if="scope.data.column.data[[scope.data.column.columnname]] == '未成交'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
  126. <span style="color:#fa8c16" v-else-if="scope.data.column.data[[scope.data.column.columnname]] == '已成交'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
  127. <span style="color:#333333" v-else-if="scope.data.column.data[[scope.data.column.columnname]] == '多次成交'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
  128. </div>
  129. <div v-else-if="scope.data.column.columnname === 'status'">
  130. <span style="color:#3874f6" v-if="scope.data.column.data[[scope.data.column.columnname]] == '潜在'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
  131. <span style="color:#52c41a" v-else-if="scope.data.column.data[[scope.data.column.columnname]] == '合作中'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
  132. <span style="color:#999999" v-else-if="scope.data.column.data[[scope.data.column.columnname]] == '已终止'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
  133. </div>
  134. <div v-else-if="scope.data.column.columnname === 'contact'">
  135. <span>{{scope.data.column.data['leader'][0]?scope.data.column.data['leader'][0].name:'--'}}</span>
  136. </div>
  137. <div v-else>
  138. {{scope.data.column.data[[scope.data.column.columnname]]?scope.data.column.data[[scope.data.column.columnname]]:'--'}}
  139. </div>
  140. </template>
  141. </basicLayout>
  142. </div>
  143. </template>
  144. <script>
  145. export default {
  146. name: "index",
  147. data() {
  148. return {
  149. value:'1',
  150. editableTabsValue: "我负责的",
  151. editableTabs: [
  152. {
  153. title: '我负责的',
  154. name: "1",
  155. },
  156. {
  157. title: '我参与的',
  158. name: "2",
  159. },
  160. {
  161. title: '我创建的',
  162. name: "5",
  163. },
  164. {
  165. title: '我下属负责的',
  166. name: "3",
  167. },
  168. {
  169. title: '我下属参与的',
  170. name: "4",
  171. }
  172. ],
  173. tabIndex:"1",
  174. options:[],
  175. listData:[],
  176. option:{
  177. typeData:[],
  178. gradeData:[],
  179. industryData:[],
  180. status:[
  181. {
  182. value:'潜在'
  183. },
  184. {
  185. value:'合作中'
  186. },
  187. {
  188. value:'已终止'
  189. }
  190. ],
  191. tradingstatus:[
  192. {
  193. value:'未成交'
  194. },
  195. {
  196. value:'已成交'
  197. },
  198. {
  199. value:'多次成交'
  200. }
  201. ]
  202. },
  203. selectParam: {
  204. status:'',
  205. type:'',
  206. customergrade:'',
  207. industry:'',
  208. startdate:'',
  209. enddate:'',
  210. tradingstatus:''
  211. },
  212. dateSelect:''
  213. }
  214. },
  215. mounted() {
  216. this.queryData('1')
  217. this.typeList()
  218. this.gradeList()
  219. this.industryList()
  220. },
  221. methods:{
  222. list (param) {
  223. param.content.isend = 0
  224. param.content.type = 0
  225. param.content.isExport = 0
  226. },
  227. queryData(id){
  228. this.$refs['list'].param.content.type = id
  229. this.$refs['list'].param.content.isExport = false
  230. this.$refs.list.param.content.deleted = 0
  231. this.$refs.list.param.content.isend = 0
  232. this.$refs['list'].listData()
  233. // this.$store.dispatch('sendDataToForm',)
  234. },
  235. handleCommand(command){
  236. this.tabIndex = command.name
  237. this.editableTabsValue = command.title
  238. this.selectChange()
  239. /*this.$refs['list'].param.content.type = command.name
  240. this.$refs['list'].param.content.isExport = 0
  241. this.$refs['list'].listData()*/
  242. // this.$store.dispatch('sendDataToForm',)
  243. },
  244. /*客户类型列表*/
  245. async typeList(){
  246. const res = await this.$api.requested({
  247. "classname": "sysmanage.develop.optiontype.optiontype",
  248. "method": "optiontypeselect",
  249. "content": {
  250. "pageNumber": 1,
  251. "pageSize": 20,
  252. "typename": "customertypemx",
  253. "parameter": {
  254. "siteid": "YOSTEST2"
  255. }
  256. }
  257. })
  258. this.option.typeData = res.data
  259. console.log("客户类型",res.data)
  260. console.log(this.option.typeData)
  261. },
  262. /*客户等级*/
  263. async gradeList(){
  264. const res = await this.$api.requested({
  265. "classname": "sysmanage.develop.optiontype.optiontype",
  266. "method": "optiontypeselect",
  267. "content": {
  268. "pageNumber": 1,
  269. "pageSize": 20,
  270. "typename": "customergrade",
  271. "parameter": {
  272. "siteid": "YOSTEST2"
  273. }
  274. }
  275. })
  276. console.log("客户等级",res.data)
  277. /*for (var i=0;i<res.data.length; i++){
  278. if (res.data[i].remarks !== ''){
  279. this.options.gradeData[i] = res.data[i].value + "——" + res.data[i].remarks
  280. }else{
  281. this.options.gradeData[i] = res.data[i].value
  282. }
  283. }*/
  284. this.option.gradeData = res.data
  285. console.log("处理后客户等级",this.option.gradeData)
  286. },
  287. /*行业列表*/
  288. async industryList(){
  289. const res = await this.$api.requested({
  290. "classname": "sysmanage.develop.optiontype.optiontype",
  291. "method": "optiontypeselect",
  292. "content": {
  293. "pageNumber": 1,
  294. "pageSize": 20,
  295. "typename": "industry",
  296. "parameter": {
  297. "siteid": "YOSTEST2"
  298. }
  299. }
  300. })
  301. this.option.industryData = res.data
  302. },
  303. selectChange(){
  304. this.tabIndex = this.value
  305. if (this.dateSelect !== '' && this.dateSelect !== null){
  306. this.selectParam.startdate = this.dateSelect[0]
  307. this.selectParam.enddate = this.dateSelect[1]
  308. }else {
  309. this.selectParam.startdate = ''
  310. this.selectParam.enddate = ''
  311. }
  312. this.$refs.list.param.content.type = this.tabIndex
  313. this.$refs.list.param.content.where = Object.assign({},this.$refs.list.param.content.where,this.selectParam)
  314. this.$refs.list.param.content.phonenumber = 1
  315. this.$refs['list'].listData()
  316. },
  317. async queryUserInfo() {
  318. let res = await this.$api.requested({
  319. "classname": "common.usercenter.usercenter",
  320. "method": "queryUserMsg",
  321. "content": {
  322. }
  323. })
  324. console.log(res.data);
  325. this.userInfo = {
  326. isAuth : res.data.hr.isleader,
  327. userid: res.data.hr.userid
  328. }
  329. console.log(this.userInfo,'user')
  330. window.sessionStorage.setItem('userInfo',JSON.stringify(this.userInfo))
  331. console.log(JSON.parse(window.sessionStorage.getItem('userInfo')));
  332. },
  333. },
  334. created() {
  335. this.queryUserInfo()
  336. },
  337. }
  338. </script>
  339. <style scoped>
  340. .el-dropdown-link {
  341. cursor: pointer;
  342. color: #151515;
  343. font-size: 16px;
  344. }
  345. .el-divider--vertical{
  346. margin: 0 16px;
  347. }
  348. .el-icon-arrow-down {
  349. font-size: 16px;
  350. }
  351. .s_panel {
  352. margin-bottom:10px
  353. }
  354. </style>