contactDetailDialog.vue 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526
  1. <template>
  2. <div>
  3. <el-tabs v-model="activeName" type="card">
  4. <el-tab-pane label="基本信息" name="base">
  5. <el-form
  6. label-width="140px"
  7. class="el-form-box"
  8. ref="formRef"
  9. :model="form"
  10. >
  11. <el-row>
  12. <el-col :span="8">
  13. <el-form-item label="客户分类:" prop="categoryId">
  14. <el-input v-model="form.categoryName" disabled></el-input>
  15. </el-form-item>
  16. </el-col>
  17. <el-col :span="8">
  18. <el-form-item label="分管部门:" prop="fgDeptId">
  19. <el-input v-model="form.fgDeptName" disabled></el-input>
  20. </el-form-item>
  21. </el-col>
  22. <el-col :span="8">
  23. <el-form-item label="业务员:" prop="salesmanId">
  24. <el-input v-model="form.salesmanName" disabled></el-input>
  25. </el-form-item>
  26. </el-col>
  27. <el-col :span="8">
  28. <el-form-item label="客户名称:" prop="name">
  29. <el-input v-model="form.name" disabled></el-input>
  30. </el-form-item>
  31. </el-col>
  32. <el-col :span="8">
  33. <el-form-item label="客户代号:" prop="serialNo">
  34. <el-input v-model="form.serialNo" disabled></el-input>
  35. </el-form-item>
  36. </el-col>
  37. <el-col :span="8">
  38. <el-form-item label="客户简称:" prop="simpleName">
  39. <el-input v-model="form.simpleName" disabled></el-input>
  40. </el-form-item>
  41. </el-col>
  42. <el-col :span="8">
  43. <el-form-item label="法定代表人:" prop="legalPerson">
  44. <el-input v-model="form.legalPerson" disabled></el-input>
  45. </el-form-item>
  46. </el-col>
  47. <el-col :span="8">
  48. <el-form-item label="注册资金:" prop="registeredCapital">
  49. <el-input v-model="form.registeredCapital" disabled></el-input>
  50. </el-form-item>
  51. </el-col>
  52. <el-col :span="8">
  53. <el-form-item label="授信额度:" prop="authorizationLimit">
  54. <el-input v-model="form.authorizationLimit" disabled></el-input>
  55. </el-form-item>
  56. </el-col>
  57. <el-col :span="8">
  58. <el-form-item label="单位电话:" prop="phone">
  59. <el-input v-model="form.phone" disabled></el-input>
  60. </el-form-item>
  61. </el-col>
  62. <el-col :span="8">
  63. <el-form-item
  64. class="form_item_label"
  65. label="统一社会信用代码:"
  66. prop="unifiedSocialCreditCode"
  67. >
  68. <el-input
  69. v-model="form.unifiedSocialCreditCode"
  70. disabled
  71. ></el-input>
  72. </el-form-item>
  73. </el-col>
  74. <el-col :span="8">
  75. <el-form-item label="所属行业:" prop="industry">
  76. <el-input v-model="form.industryFullName" disabled></el-input>
  77. </el-form-item>
  78. </el-col>
  79. <el-col :span="24">
  80. <el-form-item label="注册地址:" prop="addressId">
  81. <el-input
  82. v-model="form.addressName"
  83. disabled
  84. style="width: 35%"
  85. ></el-input>
  86. <el-input
  87. v-model="form.address"
  88. disabled
  89. style="width: 65%"
  90. ></el-input>
  91. </el-form-item>
  92. </el-col>
  93. <el-col :span="24">
  94. <el-form-item label="联系地址:" prop="addressId">
  95. <el-input
  96. v-model="otherForm.addressName"
  97. disabled
  98. style="width: 35%"
  99. ></el-input>
  100. <el-input
  101. v-model="otherForm.address"
  102. disabled
  103. style="width: 65%"
  104. ></el-input>
  105. </el-form-item>
  106. </el-col>
  107. <el-col :span="8">
  108. <el-form-item label="营业类型:" prop="companyCategoryId">
  109. <el-input
  110. v-model="form.companyCategoryName"
  111. disabled
  112. ></el-input>
  113. </el-form-item>
  114. </el-col>
  115. <el-col :span="8">
  116. <el-form-item label="企业类型:" prop="companyCategoryId">
  117. <el-input v-model="form.enterpriseTypeName" disabled></el-input>
  118. </el-form-item>
  119. </el-col>
  120. <el-col :span="8">
  121. <el-form-item label="登记日期:" prop="registerDate">
  122. <el-input v-model="form.registerDate" disabled></el-input>
  123. </el-form-item>
  124. </el-col>
  125. <el-col :span="8">
  126. <el-form-item label="经营范围:" prop="businessScope">
  127. <el-input v-model="form.businessScope" disabled></el-input>
  128. </el-form-item>
  129. </el-col>
  130. <el-col :span="8">
  131. <el-form-item label="主营产品:" prop="mainProduct">
  132. <el-input v-model="form.mainProduct" disabled></el-input>
  133. </el-form-item>
  134. </el-col>
  135. <el-col :span="8">
  136. <el-form-item label="上级单位:" prop="hasParentGroup">
  137. <el-input v-model="form.parentName" disabled></el-input>
  138. </el-form-item>
  139. </el-col>
  140. <el-col :span="8">
  141. <el-form-item label="级别:">
  142. <DictSelection
  143. dictName="供应商级别"
  144. disabled
  145. clearable
  146. v-model="form.level"
  147. >
  148. </DictSelection>
  149. </el-form-item>
  150. </el-col>
  151. <el-col :span="16">
  152. <el-form-item label="经营范围" prop="businessScope">
  153. <el-input
  154. disabled
  155. type="textarea"
  156. maxlength="500"
  157. placeholder="请输入"
  158. v-model="form.businessScope"
  159. ></el-input>
  160. </el-form-item>
  161. </el-col>
  162. <el-col :span="16">
  163. <el-form-item label="备注:" prop="remark">
  164. <el-input
  165. type="textarea"
  166. v-model="form.remark"
  167. disabled
  168. ></el-input>
  169. </el-form-item>
  170. </el-col>
  171. </el-row>
  172. </el-form>
  173. </el-tab-pane>
  174. <el-tab-pane label="银行信息" name="bank">
  175. <ele-pro-table
  176. ref="table"
  177. :columns="bankColumns"
  178. :datasource="tableBankData"
  179. height="350px"
  180. :toolkit="[]"
  181. :need-page="false"
  182. >
  183. <template v-slot:accountNameHeader="{ column }">
  184. <span>{{ column.label }}</span
  185. ><span style="color: red">*</span>
  186. </template>
  187. <template v-slot:accountName="{ row }">
  188. {{ row.accountName }}
  189. </template>
  190. <template v-slot:accountNo="{ row }">
  191. {{ row.accountNo }}
  192. </template>
  193. <template v-slot:bankName="{ row }">
  194. {{ row.bankName }}
  195. </template>
  196. <template v-slot:interbankNo="{ row }">
  197. {{ row.interbankNo }}
  198. </template>
  199. </ele-pro-table>
  200. </el-tab-pane>
  201. <el-tab-pane label="联系人信息" name="link">
  202. <ele-pro-table
  203. ref="linkTable"
  204. :columns="linkColumns"
  205. :datasource="tableLinkData"
  206. :toolkit="[]"
  207. height="350px"
  208. :need-page="false"
  209. >
  210. <template v-slot:linkNameHeader="{ column }">
  211. <span>{{ column.label }}</span
  212. ><span style="color: red">*</span>
  213. </template>
  214. <template v-slot:mobilePhoneHeader="{ column }">
  215. <span>{{ column.label }}</span
  216. ><span style="color: red">*</span>
  217. </template>
  218. <template v-slot:statusHeader="{ column }">
  219. <span>{{ column.label }}</span
  220. ><span style="color: red">*</span>
  221. </template>
  222. <template v-slot:linkName="{ row }">
  223. {{ row.linkName }}
  224. </template>
  225. <template v-slot:mobilePhone="{ row }">
  226. {{ row.mobilePhone }}
  227. </template>
  228. <template v-slot:phone="{ row }">
  229. {{ row.phone }}
  230. </template>
  231. <template v-slot:email="{ row }">
  232. {{ row.email }}
  233. </template>
  234. <template v-slot:deptName="{ row }">
  235. {{ row.deptName }}
  236. </template>
  237. <template v-slot:post="{ row }">
  238. {{ row.post }}
  239. </template>
  240. <template v-slot:ifChief="{ row, $index }">
  241. <el-select v-model="row.ifChief" class="w100" disabled>
  242. <el-option
  243. v-for="item in ifChiefList"
  244. :key="item.value"
  245. :label="item.label"
  246. :value="item.value"
  247. ></el-option>
  248. </el-select>
  249. </template>
  250. <template v-slot:status="{ row }">
  251. <DictSelection
  252. dictName="客户联系人状态"
  253. v-model="row.status"
  254. :disabled="true"
  255. ></DictSelection>
  256. </template>
  257. <template v-slot:remark="{ row }">
  258. {{ row.remark }}
  259. </template>
  260. </ele-pro-table>
  261. </el-tab-pane>
  262. <el-tab-pane label="证书资质" name="certificate">
  263. <certificateManagement
  264. ref="certificateManagementRef"
  265. ></certificateManagement>
  266. </el-tab-pane>
  267. </el-tabs>
  268. </div>
  269. </template>
  270. <script>
  271. import {
  272. contactDetail,
  273. getInfoByIds
  274. } from '@/api/bpm/components/saleManage/contact';
  275. import { getFile } from '@/api/system/file';
  276. import dictMixins from '@/mixins/dictMixins';
  277. import { copyObj } from '@/utils/util';
  278. import {
  279. contactQcPackPageAPI
  280. } from '@/api/bpm/components/supplierManage/contact';
  281. import fileMain from '@/components/addDoc/index.vue';
  282. import certificateManagement from '@/views/bpm/handleTask/components/certificateQualifications/index.vue';
  283. export default {
  284. props: {
  285. businessId: {
  286. default: ''
  287. }
  288. },
  289. mixins: [dictMixins],
  290. components: { fileMain, certificateManagement },
  291. data() {
  292. let formDef = {
  293. address: '',
  294. addressId: 0,
  295. addressName: '',
  296. authorizationLimit: 0,
  297. businessLicenseFile: [],
  298. businessScope: '',
  299. categoryId: '',
  300. categoryName: '',
  301. companyCategoryId: '',
  302. companyCategoryName: '',
  303. enterpriseTypeName: '',
  304. enterpriseTypeId: '',
  305. hasParentGroup: 0,
  306. industry: '',
  307. industryCode: '',
  308. industryFullName: '',
  309. mainProduct: '',
  310. name: '',
  311. officialIndustry: '',
  312. phone: '',
  313. registerDate: '',
  314. remark: '',
  315. serialNo: '',
  316. simpleName: '',
  317. legalPerson: '',
  318. registeredCapital: '',
  319. type: 1,
  320. unifiedSocialCreditCode: ''
  321. };
  322. let otherFormDef = {
  323. settlementMode: '',
  324. settlementModeName: '',
  325. taxRate: 0,
  326. address: '',
  327. addressId: '',
  328. deptId: '',
  329. deptName: '',
  330. discount: 0,
  331. salesmanId: '',
  332. salesmanName: '',
  333. sender: '',
  334. senderPhone: ''
  335. };
  336. return {
  337. visible: false,
  338. certificateQualificationsDialogFlag: false,
  339. title: '客户详情',
  340. row: {},
  341. activeName: 'base',
  342. formDef,
  343. otherFormDef,
  344. form: copyObj(formDef),
  345. otherForm: copyObj(otherFormDef),
  346. tableBankData: [],
  347. tableLinkData: [],
  348. ifChiefList: [
  349. {
  350. value: 0,
  351. label: '否'
  352. },
  353. {
  354. value: 1,
  355. label: '是'
  356. }
  357. ],
  358. bankColumns: [
  359. {
  360. type: 'index',
  361. width: 55,
  362. align: 'center'
  363. },
  364. {
  365. label: '单位名称',
  366. prop: 'accountName',
  367. slot: 'accountName',
  368. action: 'accountName',
  369. headerSlot: 'accountNameHeader'
  370. },
  371. {
  372. label: '银行账号',
  373. prop: 'accountNo',
  374. slot: 'accountNo',
  375. action: 'accountNo'
  376. },
  377. {
  378. label: '开户行',
  379. prop: 'bankName',
  380. slot: 'bankName',
  381. action: 'bankName'
  382. },
  383. {
  384. label: '银行银联号',
  385. prop: 'interbankNo',
  386. slot: 'interbankNo',
  387. action: 'interbankNo'
  388. }
  389. ],
  390. linkColumns: [
  391. {
  392. type: 'index',
  393. width: 55,
  394. align: 'center'
  395. },
  396. {
  397. label: '姓名',
  398. prop: 'linkName',
  399. slot: 'linkName',
  400. action: 'linkName',
  401. headerSlot: 'linkNameHeader'
  402. },
  403. {
  404. label: '手机',
  405. prop: 'mobilePhone',
  406. slot: 'mobilePhone',
  407. action: 'mobilePhone',
  408. headerSlot: 'mobilePhoneHeader'
  409. },
  410. {
  411. label: '电话',
  412. prop: 'phone',
  413. slot: 'phone',
  414. action: 'phone'
  415. },
  416. {
  417. label: '微信号',
  418. prop: 'wechat',
  419. slot: 'wechat',
  420. action: 'wechat'
  421. },
  422. {
  423. label: '邮箱',
  424. prop: 'email',
  425. slot: 'email',
  426. action: 'email'
  427. },
  428. {
  429. label: '部门',
  430. prop: 'deptName',
  431. slot: 'deptName',
  432. action: 'deptName'
  433. },
  434. {
  435. label: '职务',
  436. prop: 'post',
  437. slot: 'post',
  438. action: 'post'
  439. },
  440. {
  441. label: '状态',
  442. prop: 'status',
  443. slot: 'status',
  444. action: 'status',
  445. headerSlot: 'statusHeader'
  446. },
  447. {
  448. label: '是否首要',
  449. prop: 'ifChief',
  450. slot: 'ifChief',
  451. action: 'ifChief'
  452. },
  453. {
  454. label: '备注',
  455. prop: 'remark',
  456. slot: 'remark',
  457. action: 'remark'
  458. }
  459. ],
  460. };
  461. },
  462. created() {
  463. this._getById(this.businessId);
  464. },
  465. methods: {
  466. cancel() {
  467. this.$nextTick(() => {
  468. // 关闭后,销毁所有的表单数据
  469. (this.form = copyObj(this.formDef)),
  470. (this.otherForm = copyObj(this.otherFormDef)),
  471. (this.tableBankData = []);
  472. this.tableLinkData = [];
  473. this.visible = false;
  474. });
  475. },
  476. async _getById(id) {
  477. if (!id) {
  478. return;
  479. }
  480. const data = await contactDetail(id);
  481. this.form = data.base;
  482. this.otherForm = data.other;
  483. this.tableBankData = data.bankList;
  484. this.tableLinkData = data.linkList;
  485. if (this.tableLinkData && this.tableLinkData.length > 0) {
  486. this.tableLinkData.forEach((e) => (e.status = e.status + ''));
  487. }
  488. this.$nextTick(()=>{
  489. this.$refs.certificateManagementRef.getTable(this.form.id,4)
  490. })
  491. await getInfoByIds(this.form.categoryId).then((res) => {
  492. let categoryName = res.data.map((item) => item.name)?.join(',');
  493. this.$set(this.form, 'categoryName', categoryName);
  494. });
  495. },
  496. downloadFile(file) {
  497. getFile({ objectName: file.storePath }, file.name);
  498. }
  499. }
  500. };
  501. </script>
  502. <style scoped lang="scss">
  503. :deep .isGreen {
  504. background: #ffd16c;
  505. }
  506. </style>