TaskCheckDetail.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458
  1. <template>
  2. <div>
  3. <a-page-header
  4. style="background-color: #FFFFFF;"
  5. title="稽核详情-客户详情"
  6. sub-title=""
  7. @back="showCheckList"
  8. >
  9. <a-descriptions :title="checkInfo.info.customerName" :column="3" :bordered="false">
  10. <a-descriptions-item label="客户编号">{{checkInfo.info.customerNo}}</a-descriptions-item>
  11. <a-descriptions-item label="服务号码">{{checkInfo.info.smsNumber}}</a-descriptions-item>
  12. <a-descriptions-item label="用户编号">{{checkInfo.info.userNo}}</a-descriptions-item>
  13. <a-descriptions-item label="入网时间">{{checkInfo.info.networkAccessTime}}</a-descriptions-item>
  14. <a-descriptions-item label="用户状态" :span="2">{{checkInfo.info.userState}}</a-descriptions-item>
  15. <a-descriptions-item label="员工姓名">{{checkInfo.info.staffName}}</a-descriptions-item>
  16. <a-descriptions-item label="员工工号">{{checkInfo.info.staffNo}}</a-descriptions-item>
  17. </a-descriptions>
  18. </a-page-header>
  19. <a-card :bordered="false" style="margin-top: 10px;">
  20. <a-form-model
  21. ref="ruleForm"
  22. :label-col="labelCol"
  23. :wrapper-col="wrapperCol"
  24. >
  25. <a-card title="业务基本情况内容" :bordered="true">
  26. <a-descriptions :bordered="false">
  27. <a-descriptions-item label="用户开通状态">{{checkInfo.info.userOpenState}}</a-descriptions-item>
  28. <a-descriptions-item label="码号" :span="2">{{checkInfo.info.smsNumberPrefix}}</a-descriptions-item>
  29. <a-descriptions-item label="详细用途" :span="3">{{checkInfo.info.smsNumberUsage}}</a-descriptions-item>
  30. <a-descriptions-item label="使用单位联系人">{{checkInfo.info.customerContacts}}</a-descriptions-item>
  31. <a-descriptions-item label="手机号" :span="2">{{checkInfo.info.customerContactsPhone}}</a-descriptions-item>
  32. <a-descriptions-item label="客户经理">{{checkInfo.info.accountManager}}</a-descriptions-item>
  33. <a-descriptions-item label="手机号" :span="2">{{checkInfo.info.accountManagerPhone}}</a-descriptions-item>
  34. </a-descriptions>
  35. </a-card>
  36. <a-card title="业务规范性内容" :bordered="true">
  37. <a-descriptions :bordered="false">
  38. <a-descriptions-item label="合同到期时间">{{checkInfo.info.contractExpireTime}}</a-descriptions-item>
  39. <a-descriptions-item label="码号证书到期时间">{{checkInfo.info.smsNumberCertificateExpireTime}}</a-descriptions-item>
  40. <a-descriptions-item label="备案通知到期时间">{{checkInfo.info.recordNoticeExpireTime}}</a-descriptions-item>
  41. <a-descriptions-item label="增值业务许可证到期时间">{{checkInfo.info.valueAddedLicenceExpireTime}}</a-descriptions-item>
  42. <a-descriptions-item label="营业执照到期时间" :span="2">{{checkInfo.info.businessLicenceExpireTime}}</a-descriptions-item>
  43. <a-descriptions-item label="合同签署主体与实际开通客户是否一致">{{checkInfo.info.contractOpenCustomerSame}}</a-descriptions-item>
  44. <a-descriptions-item label="是否有集团价格审批" :span="2">{{checkInfo.info.groupPriceApproval}}</a-descriptions-item>
  45. <a-descriptions-item label="资料是否完整">{{checkInfo.info.dataComplete}}</a-descriptions-item>
  46. <a-descriptions-item label="是否完成整改" :span="2">{{checkInfo.info.rectifyReformOver}}</a-descriptions-item>
  47. </a-descriptions>
  48. </a-card>
  49. <a-card title="附件资料" :bordered="true">
  50. <div style="background-color: rgba(236,236,236,0); padding: 0px">
  51. <a-row :gutter="16">
  52. <a-col :span="6">
  53. <a-card title="资料类型选择">
  54. <a-radio-group @change="fileTypeClick" v-model:value="radioValue" button-style="solid" style="width: 250px">
  55. <a-badge class="badge-width-100" :count=fileTypeBadge[fileType.businessContract].len
  56. :show-zero=fileTypeBadge[fileType.businessContract].showZero
  57. :number-style=fileTypeBadge[fileType.businessContract].numberStyle
  58. >
  59. <a-radio-button style="display: flex" :value=fileType.businessContract>业务合同</a-radio-button>
  60. </a-badge>
  61. <a-badge class="badge-width-100" :count=fileTypeBadge[fileType.smsNumberCertificate].len
  62. :show-zero=fileTypeBadge[fileType.smsNumberCertificate].showZero
  63. :number-style=fileTypeBadge[fileType.smsNumberCertificate].numberStyle>
  64. <a-radio-button style="display: flex" :value=fileType.smsNumberCertificate>
  65. 号码证书
  66. </a-radio-button>
  67. </a-badge>
  68. <a-badge class="badge-width-100" :count=fileTypeBadge[fileType.recordNotice].len
  69. :show-zero=fileTypeBadge[fileType.recordNotice].showZero
  70. :number-style=fileTypeBadge[fileType.recordNotice].numberStyle>
  71. <a-radio-button style="display: flex" :value=fileType.recordNotice>
  72. 备案通知
  73. </a-radio-button>
  74. </a-badge>
  75. <a-badge class="badge-width-100" :count=fileTypeBadge[fileType.groupPriceApproval].len
  76. :show-zero=fileTypeBadge[fileType.groupPriceApproval].showZero
  77. :number-style=fileTypeBadge[fileType.groupPriceApproval].numberStyle>
  78. <a-radio-button style="display: flex" :value=fileType.groupPriceApproval>
  79. 集团政企价格审批单
  80. </a-radio-button>
  81. </a-badge>
  82. <a-badge class="badge-width-100" :count=fileTypeBadge[fileType.businessLicence].len
  83. :show-zero=fileTypeBadge[fileType.businessLicence].showZero
  84. :number-style=fileTypeBadge[fileType.businessLicence].numberStyle>
  85. <a-radio-button style="display: flex" :value=fileType.businessLicence>
  86. 营业执照
  87. </a-radio-button>
  88. </a-badge>
  89. <a-badge class="badge-width-100" :count=fileTypeBadge[fileType.customerIntroductionLetter].len
  90. :show-zero=fileTypeBadge[fileType.customerIntroductionLetter].showZero
  91. :number-style=fileTypeBadge[fileType.customerIntroductionLetter].numberStyle>
  92. <a-radio-button style="display: flex" :value=fileType.customerIntroductionLetter>
  93. 集团政企价格审批单
  94. </a-radio-button>
  95. </a-badge>
  96. <a-badge class="badge-width-100" :count=fileTypeBadge[fileType.handlerIdNumberCopy].len
  97. :show-zero=fileTypeBadge[fileType.handlerIdNumberCopy].showZero
  98. :number-style=fileTypeBadge[fileType.handlerIdNumberCopy].numberStyle>
  99. <a-radio-button style="display: flex" :value=fileType.handlerIdNumberCopy>
  100. 经办人身份复印件
  101. </a-radio-button>
  102. </a-badge>
  103. <a-badge class="badge-width-100" :count=fileTypeBadge[fileType.crmScreenshot].len
  104. :show-zero=fileTypeBadge[fileType.crmScreenshot].showZero
  105. :number-style=fileTypeBadge[fileType.crmScreenshot].numberStyle>
  106. <a-radio-button style="display: flex" :value=fileType.crmScreenshot>
  107. CRM 行短业务截图
  108. </a-radio-button>
  109. </a-badge>
  110. <a-badge class="badge-width-100" :count=fileTypeBadge[fileType.valueAddedLicence].len
  111. :show-zero=fileTypeBadge[fileType.valueAddedLicence].showZero
  112. :number-style=fileTypeBadge[fileType.valueAddedLicence].numberStyle>
  113. <a-radio-button style="display: flex" :value=fileType.valueAddedLicence>
  114. 增值业务许可证
  115. </a-radio-button>
  116. </a-badge>
  117. </a-radio-group>
  118. </a-card>
  119. </a-col>
  120. <a-col :span="18">
  121. <a-card title="资料详情" :bordered="false">
  122. <a-list item-layout="vertical" :data-source="delList">
  123. <a-list-item slot="renderItem" slot-scope="item, index">
  124. <!-- <pdf
  125. ref="pdf"
  126. :src="item.url">
  127. </pdf>-->
  128. <a-list-item-meta
  129. :description=item.information
  130. >
  131. <a slot="title" :href=item.href>{{ item.title }}</a>
  132. <a-avatar
  133. slot="avatar"
  134. :src=item.url
  135. icon="file"
  136. />
  137. </a-list-item-meta>
  138. <iframe
  139. frameborder="1"
  140. :src=item.href
  141. ref="ifr"
  142. width="100%"
  143. height="560px"
  144. scrolling="auto">
  145. </iframe>
  146. </a-list-item>
  147. </a-list>
  148. </a-card>
  149. </a-col>
  150. </a-row>
  151. </div>
  152. <!-- <a-descriptions :column="1" :bordered="false">
  153. <a-descriptions-item label="业务合同" :span="2">
  154. <a-space><a v-for="(file,index) in fileList" :href="handlePreview(file)" target="_blank">{{'附件' + (index + 1)}}</a></a-space>
  155. </a-descriptions-item>
  156. <a-descriptions-item label="号码证书" :span="2">
  157. <a-space><a v-for="(file,index) in fileList" :href="handlePreview(file)" target="_blank">{{'附件' + (index + 1)}}</a></a-space>
  158. </a-descriptions-item>
  159. <a-descriptions-item label="备案通知" :span="2">
  160. <a-space><a v-for="(file,index) in fileList" :href="handlePreview(file)" target="_blank">{{'附件' + (index + 1)}}</a></a-space>
  161. </a-descriptions-item>
  162. <a-descriptions-item label="集团政企价格审批单" :span="2">
  163. <a-space><a v-for="(file,index) in fileList" :href="handlePreview(file)" target="_blank">{{'附件' + (index + 1)}}</a></a-space>
  164. </a-descriptions-item>
  165. <a-descriptions-item label="营业执照" :span="2">
  166. <a-space><a v-for="(file,index) in fileList" :href="handlePreview(file)" target="_blank">{{'附件' + (index + 1)}}</a></a-space>
  167. </a-descriptions-item>
  168. <a-descriptions-item label="客户介绍信" :span="2">
  169. <a-space><a v-for="(file,index) in fileList" :href="handlePreview(file)" target="_blank">{{'附件' + (index + 1)}}</a></a-space>
  170. </a-descriptions-item>
  171. <a-descriptions-item label="经办人身份证复印件" :span="2">
  172. <a-space><a v-for="(file,index) in fileList" :href="handlePreview(file)" target="_blank">{{'附件' + (index + 1)}}</a></a-space>
  173. </a-descriptions-item>
  174. <a-descriptions-item label="在CRM没有行短业务的截图" :span="2">
  175. <a-space><a v-for="(file,index) in fileList" :href="handlePreview(file)" target="_blank">{{'附件' + (index + 1)}}</a></a-space>
  176. </a-descriptions-item>
  177. </a-descriptions>-->
  178. </a-card>
  179. <a-form-model-item :wrapper-col="{ span: 14, offset: 4 }" style="margin-top: 10px;">
  180. <a-space>
  181. <a-button @click="showCheckList">
  182. 返回
  183. </a-button>
  184. </a-space>
  185. </a-form-model-item>
  186. </a-form-model>
  187. </a-card>
  188. </div>
  189. </template>
  190. <script>
  191. import { httpAction, getAction } from '@api/manage'
  192. import '@/assets/less/TableExpand.less'
  193. import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  194. let Base64 = require('js-base64').Base64
  195. export default {
  196. name: 'TaskCheckDetail',
  197. mixins:[JeecgListMixin],
  198. props: {
  199. checkInfo: {
  200. type: Object,
  201. require: true
  202. }
  203. },
  204. data () {
  205. return {
  206. delList:[],
  207. radioValue: "businessContract",
  208. fileType: {
  209. businessContract: "businessContract",
  210. smsNumberCertificate: "smsNumberCertificate",
  211. recordNotice: "recordNotice",
  212. groupPriceApproval: "groupPriceApproval",
  213. businessLicence: "businessLicence",
  214. customerIntroductionLetter: "customerIntroductionLetter",
  215. handlerIdNumberCopy: "handlerIdNumberCopy",
  216. crmScreenshot: "crmScreenshot",
  217. valueAddedLicence: "valueAddedLicence"
  218. },
  219. fileTypeBadge: {
  220. "businessContract": {
  221. len: 0,
  222. showZero: true,
  223. numberStyle: {
  224. backgroundColor: '#fa073f'
  225. }
  226. },
  227. "smsNumberCertificate":{
  228. len: 0,
  229. showZero: true,
  230. numberStyle: {
  231. backgroundColor: '#fa073f'
  232. }
  233. },
  234. "recordNotice":{
  235. len: 0,
  236. showZero: true,
  237. numberStyle: {
  238. backgroundColor: '#fa073f'
  239. }
  240. },
  241. "groupPriceApproval":{
  242. len: 0,
  243. showZero: true,
  244. numberStyle: {
  245. backgroundColor: '#fa073f'
  246. }
  247. },
  248. "businessLicence":{
  249. len: 0,
  250. showZero: true,
  251. numberStyle: {
  252. backgroundColor: '#fa073f'
  253. }
  254. },
  255. "customerIntroductionLetter":{
  256. len: 0,
  257. showZero: true,
  258. numberStyle: {
  259. backgroundColor: '#fa073f'
  260. }
  261. },
  262. "handlerIdNumberCopy":{
  263. len: 0,
  264. showZero: true,
  265. numberStyle: {
  266. backgroundColor: '#fa073f'
  267. }
  268. },
  269. "crmScreenshot":{
  270. len: 0,
  271. showZero: true,
  272. numberStyle: {
  273. backgroundColor: '#fa073f'
  274. }
  275. },
  276. "valueAddedLicence":{
  277. len: 0,
  278. showZero: true,
  279. numberStyle: {
  280. backgroundColor: '#fa073f'
  281. }
  282. },
  283. },
  284. description: '稽核详情页面',
  285. labelCol: { span: 1 },
  286. wrapperCol: { span: 23 },
  287. url: {
  288. list: "/smsCheck/customerInfo/list",
  289. listData: "/smsCheck/customerData/list"
  290. },
  291. autoSearch: false,
  292. fileList: [
  293. {text: '附件', url: "http://202.85.214.182:9001/default/by2_1650088480055.jpg"},
  294. {text: '附件', url: "http://202.85.214.182:9001/default/《Nginx代理系统常用手册》电子书_1650129698991.pdf"}
  295. ],
  296. }
  297. },
  298. created() {
  299. this.customerDataList();
  300. this.badgeCount()
  301. },
  302. methods: {
  303. fileTypeClick(a, event) {
  304. this.customerDataList();
  305. },
  306. customerDataList() {
  307. let model = {
  308. "infoId": this.checkInfo.info.id
  309. }
  310. httpAction(this.url.listData, model, "post")
  311. .then((res) => {
  312. if (res.success) {
  313. let records = res.result.records;
  314. if (records.length > 0) {
  315. this.delList = [];
  316. let record = records[0];
  317. let recordElement = record[this.radioValue];
  318. if (recordElement != null || recordElement != undefined) {
  319. let splitList = recordElement.split(",");
  320. for (var i in splitList) {
  321. let splitListElement = splitList[i];
  322. let split = splitListElement.split("/");
  323. let splitElement = split[split.length - 1];
  324. let del = {
  325. title: splitElement,
  326. href: window._CONFIG['onlinePreviewDomainURL'] + '?url=' + encodeURIComponent(Base64.encode((splitListElement))),
  327. information: "上传用户:" + record.createBy,
  328. url: splitListElement
  329. }
  330. this.delList.push(del)
  331. }
  332. } else {
  333. this.delList = [];
  334. }
  335. console.log( this.delList)
  336. } else {
  337. this.delList = [];
  338. }
  339. } else {
  340. this.$message.error('查询资料信息失败')
  341. }
  342. }).finally(() => {
  343. })
  344. },
  345. badgeCount() {
  346. //this.fileTypeBadge = []
  347. let model = {
  348. "infoId": this.checkInfo.info.id
  349. }
  350. httpAction(this.url.listData, model, "post")
  351. .then((res) => {
  352. if (res.success) {
  353. res = res.result.records
  354. if (res.length > 0 && res != null) {
  355. let data = res[0];
  356. for (var i in this.fileType) {
  357. let fileTypeElement = this.fileType[i];
  358. let datum = data[fileTypeElement];
  359. let badge = {};
  360. if (datum == null) {
  361. } else {
  362. let length = datum.split(",").length;
  363. let showZero = length > 0 ? false : true;
  364. badge = {
  365. len: parseInt(length),
  366. showZero: showZero,
  367. numberStyle: {
  368. backgroundColor: "#52c41a"
  369. }
  370. }
  371. this.fileTypeBadge[fileTypeElement] = badge;
  372. }
  373. console.log(this.fileTypeBadge)
  374. }
  375. }
  376. } else {
  377. /* for (var i in this.fileType) {
  378. let fileTypeElement = this.fileType[i];
  379. let badge = {
  380. len: 0,
  381. showZero: true,
  382. style: {}
  383. }
  384. this.fileTypeBadge[fileTypeElement] = badge;
  385. }*/
  386. }
  387. })
  388. },
  389. // 显示列表页面
  390. showList() {
  391. this.$emit('goList');
  392. },
  393. // 显示列表页面
  394. showCheckList() {
  395. let taskInfo = this.checkInfo.task;
  396. this.$emit('goCheckList', taskInfo);
  397. },
  398. handlePreview(record) {
  399. if (record && record.url) {
  400. let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + encodeURIComponent(Base64.encode((record.url)))
  401. return url;
  402. }
  403. },
  404. }
  405. }
  406. </script>
  407. <style scoped>
  408. .badge-width-100{
  409. width: 100%;
  410. }
  411. </style>