TaskUploadData.vue 66 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918
  1. <template>
  2. <div>
  3. <a-page-header
  4. style="background-color: #FFFFFF;margin-bottom:10px"
  5. title="上传资料"
  6. sub-title=""
  7. @back="goBack"
  8. ></a-page-header>
  9. <a-card style="margin-bottom:10px;color: #000000d9;font-size: 15px;line-height: 2.5;">
  10. <div>
  11. <span>1.请选择所上传资料的卡类型</span>
  12. </div>
  13. <a-radio-group style="position: relative;left: 30px"
  14. @change="controlChange" v-model:value="lotData.blockType" :disabled="rectificationIs">
  15. <a-radio :value="'model'">正式卡</a-radio>
  16. <a-radio :value="'test'">测试卡</a-radio>
  17. </a-radio-group>
  18. <div v-if="lotData.blockType != 'test'">
  19. <span style="display: block">2.是否突破价格管控</span>
  20. <a-radio-group style="position: relative;left: 30px;" :disabled="rectificationIs"
  21. @change="controlChange" v-model:value="lotData.control">
  22. <a-radio :value="'controlY'">是</a-radio>
  23. <a-radio :value="'controlN'">否</a-radio>
  24. </a-radio-group>
  25. </div>
  26. </a-card>
  27. <!-- 步骤条-->
  28. <a-card style="margin-bottom:10px">
  29. <!-- v-model:current="current"-->
  30. <a-steps :current="current" size="small">
  31. <a-step v-for="item in steps" :key="item.title" :title="item.title" :status="item.status"/>
  32. </a-steps>
  33. </a-card>
  34. <!-- 测试卡申请单-->
  35. <a-card v-if="current == 0 && lotData.blockType == 'test'" style="margin-bottom:10px">
  36. <div slot="title">
  37. <span style="float: left;position: relative;top: 4px">测试卡申请单</span>
  38. <!-- 操作按钮-->
  39. <div style="position: relative;left: 10px">
  40. <a-button v-if="current < steps.length - 1" type="primary" @click="nextSteps">下一步</a-button>
  41. <a-button
  42. v-if="current == steps.length - 1"
  43. type="primary"
  44. @click="submitLot"
  45. >提交
  46. </a-button>
  47. <a-button v-if="current > 0" style="margin-left: 8px" @click="prevSteps">上一步</a-button>
  48. </div>
  49. </div>
  50. <div style="float: left;width: 43%">
  51. <div class="markdown" style="position: relative;top:30px">
  52. <ul>
  53. <li>1)测试卡申请单是否加盖公章</li>
  54. <li>2)测试卡申请单中经办人、责任人身份证是否一致</li>
  55. <li style="color: red"
  56. v-if="lotNote.testCardApplicationNote != null && lotNote.testCardApplicationNote.length > 0">
  57. 稽核结果备注:{{ lotNote.testCardApplicationNote }}
  58. </li>
  59. </ul>
  60. </div>
  61. </div>
  62. <div style="width: 50%;float:left;">
  63. <div style="height: 70%">
  64. <div class="thumb-example">
  65. <!-- swiper1 -->
  66. <swiper
  67. class="swiper gallery-top"
  68. :options="swiperOptionTop"
  69. ref="swiperTop"
  70. >
  71. <swiper-slide class="slide-1" v-for="(item, index) in swiperImg" :key="item.id">
  72. <iframe
  73. v-if="item.urlBase"
  74. frameborder="1"
  75. :src="item.urlBase"
  76. ref="ifr"
  77. width="604px"
  78. height="445px"
  79. scrolling="auto">
  80. </iframe>
  81. <img style="width: 70%;height: 70%;border: 1px solid;"
  82. v-if="!item.urlBase" :src="noDataPng" border="1">
  83. <a-button v-if="item.urlBase && lotState.testCardApplicationState != 1"
  84. style="display: block;margin-top: 10px;border-color: red;color: red"
  85. danger @click="removeFile(item)">移除
  86. </a-button>
  87. </swiper-slide>
  88. <div
  89. class="swiper-button-next swiper-button-white"
  90. slot="button-next"
  91. ></div>
  92. <div
  93. class="swiper-button-prev swiper-button-white"
  94. slot="button-prev"
  95. ></div>
  96. </swiper>
  97. <!-- swiper2 Thumbs -->
  98. <swiper
  99. class="swiper gallery-thumbs"
  100. :options="swiperOptionThumbs"
  101. ref="swiperThumbs"
  102. >
  103. <swiper-slide
  104. class="slide"
  105. style="width:100px;height:100px;"
  106. v-for="(item, index) in swiperImg"
  107. :key="item.id"
  108. >
  109. <div v-if="item.urlBase" style="width: 100%;height: 96px;background: rgb(68,142,247);color: white">
  110. <span style="white-space:normal; word-break:break-all;overflow:hidden;">{{ item.fileName }}</span>
  111. </div>
  112. <img style="width: 100%;height: 96px"
  113. v-if="!item.urlBase" :src="noDataPng" border="1">
  114. </swiper-slide>
  115. <!-- 点我上传文件按钮-->
  116. <div v-if="lotState.testCardApplicationState != 1" class="clearfix">
  117. <a-upload
  118. listType="picture-card"
  119. name="file"
  120. :multiple="false"
  121. :action="importMinioUploadAction"
  122. :customRequest="selfUploadContract"
  123. :headers="tokenHeader"
  124. :showUploadList="false"
  125. :beforeUpload="importBeforeUpload"
  126. @change="importHandleChange"
  127. >
  128. <div v-if="lotData.contractFiles.length < 10">
  129. <a-icon type="plus"/>
  130. <div class="ant-upload-text">点我上传合同</div>
  131. </div>
  132. </a-upload>
  133. </div>
  134. <div class="swiper-button-next swiper-button-white" slot="button-next">
  135. <div>
  136. <!-- <img src="../../../../assets/images/nextImg.png" alt=""/>-->
  137. </div>
  138. </div>
  139. <div class="swiper-button-prev swiper-button-white" slot="button-prev">
  140. <div>
  141. <!-- <img src="../../../../assets/images/prevImg.png" alt=""/>-->
  142. </div>
  143. </div>
  144. </swiper>
  145. </div>
  146. </div>
  147. </div>
  148. </a-card>
  149. <!-- 合同要求-->
  150. <a-card v-if="current == 0 && lotData.blockType == 'model'" style="margin-bottom:10px">
  151. <div slot="title">
  152. <span style="float: left;position: relative;top: 4px">合同要求</span>
  153. <!-- 操作按钮-->
  154. <div style="position: relative;left: 10px">
  155. <a-button v-if="current < steps.length - 1" type="primary" @click="nextSteps">下一步</a-button>
  156. <a-button
  157. v-if="current == steps.length - 1"
  158. type="primary"
  159. @click="submitLot"
  160. >提交
  161. </a-button>
  162. <a-button v-if="current > 0" style="margin-left: 8px" @click="prevSteps">上一步</a-button>
  163. </div>
  164. </div>
  165. <div style="float: left;width: 43%">
  166. <div class="markdown" style="position: relative;top:30px">
  167. <ul>
  168. <li>1)是否在有效期</li>
  169. <li>2)是否明确场景,如车联网,水表等,且与风险评估表一致</li>
  170. <li>3)是否明确开通功能,如语音,短信,流量等</li>
  171. <li>4)是否明确功能限制,如定向、机卡绑定、卡片限定、限额管控、黑名单限制等</li>
  172. <li>5)是否明确白名单数量,具体号码,地址等</li>
  173. <li>6)是否明确禁止二次销售</li>
  174. <li>7)是否明确防范垃圾短信和骚扰电话条款</li>
  175. <li>8)是否无低级错误,如缺少签字,日期等</li>
  176. <li>9)合同签署是否是法人,是否有授权书</li>
  177. <li style="color: red" v-if="lotNote.contractNote != null && lotNote.contractNote.length > 0">
  178. 稽核结果备注:{{ lotNote.contractNote }}
  179. </li>
  180. </ul>
  181. </div>
  182. </div>
  183. <div style="width: 50%;float:left;">
  184. <div style="height: 70%">
  185. <div class="thumb-example">
  186. <!-- swiper1 -->
  187. <swiper
  188. class="swiper gallery-top"
  189. :options="swiperOptionTop"
  190. ref="swiperTop"
  191. >
  192. <swiper-slide class="slide-1" v-for="(item, index) in swiperImg" :key="item.id">
  193. <iframe
  194. v-if="item.urlBase"
  195. frameborder="1"
  196. :src="item.urlBase"
  197. ref="ifr"
  198. width="604px"
  199. height="445px"
  200. scrolling="auto">
  201. </iframe>
  202. <img style="width: 70%;height: 70%;border: 1px solid;"
  203. v-if="!item.urlBase" :src="noDataPng" border="1">
  204. <a-button v-if="item.urlBase && lotState.contractState != 1"
  205. style="display: block;margin-top: 10px;border-color: red;color: red"
  206. danger @click="removeFile(item)">移除
  207. </a-button>
  208. </swiper-slide>
  209. <div
  210. class="swiper-button-next swiper-button-white"
  211. slot="button-next"
  212. ></div>
  213. <div
  214. class="swiper-button-prev swiper-button-white"
  215. slot="button-prev"
  216. ></div>
  217. </swiper>
  218. <!-- swiper2 Thumbs -->
  219. <swiper
  220. class="swiper gallery-thumbs"
  221. :options="swiperOptionThumbs"
  222. ref="swiperThumbs"
  223. >
  224. <swiper-slide
  225. class="slide"
  226. style="width:100px;height:100px;"
  227. v-for="(item, index) in swiperImg"
  228. :key="item.id"
  229. >
  230. <div v-if="item.urlBase" style="width: 100%;height: 96px;background: rgb(68,142,247);color: white">
  231. <span style="white-space:normal; word-break:break-all;overflow:hidden;">{{ item.fileName }}</span>
  232. </div>
  233. <img style="width: 100%;height: 96px"
  234. v-if="!item.urlBase" :src="noDataPng" border="1">
  235. </swiper-slide>
  236. <!-- 点我上传文件按钮-->
  237. <div v-if="lotState.contractState != 1" class="clearfix">
  238. <a-upload
  239. listType="picture-card"
  240. name="file"
  241. :multiple="false"
  242. :action="importMinioUploadAction"
  243. :customRequest="selfUploadContract"
  244. :headers="tokenHeader"
  245. :showUploadList="false"
  246. :beforeUpload="importBeforeUpload"
  247. @change="importHandleChange"
  248. >
  249. <div v-if="lotData.contractFiles.length < 10">
  250. <a-icon type="plus"/>
  251. <div class="ant-upload-text">点我上传合同</div>
  252. </div>
  253. </a-upload>
  254. </div>
  255. <div class="swiper-button-next swiper-button-white" slot="button-next">
  256. <div>
  257. <!-- <img src="../../../../assets/images/nextImg.png" alt=""/>-->
  258. </div>
  259. </div>
  260. <div class="swiper-button-prev swiper-button-white" slot="button-prev">
  261. <div>
  262. <!-- <img src="../../../../assets/images/prevImg.png" alt=""/>-->
  263. </div>
  264. </div>
  265. </swiper>
  266. </div>
  267. </div>
  268. </div>
  269. </a-card>
  270. <!-- 责任人和经办人授权书-->
  271. <a-card v-if="current == 1" style="margin-bottom:10px">
  272. <div slot="title">
  273. <span style="float: left;position: relative;top: 4px">责任人和经办人授权书</span>
  274. <!-- 操作按钮-->
  275. <div style="position: relative;left: 10px">
  276. <a-button v-if="current < steps.length - 1" type="primary" @click="nextSteps">下一步</a-button>
  277. <a-button
  278. v-if="current == steps.length - 1"
  279. type="primary"
  280. >
  281. 提交
  282. </a-button>
  283. <a-button v-if="current > 0" style="margin-left: 8px" @click="prevSteps">上一步</a-button>
  284. </div>
  285. </div>
  286. <div style="float: left;width: 43%">
  287. <div class="markdown" style="position: relative;top:30px">
  288. <ul>
  289. <li>1)经办人和责任人授权书齐全并且加盖公章</li>
  290. <li>2)经办人和责任人与授权书一致</li>
  291. <li style="color: red" v-if="lotNote.empowerNote != null && lotNote.empowerNote.length > 0">
  292. 稽核结果备注:{{ lotNote.empowerNote }}
  293. </li>
  294. </ul>
  295. </div>
  296. </div>
  297. <div style="width: 50%;float:left;">
  298. <div style="height: 70%">
  299. <div class="thumb-example">
  300. <!-- swiper1 -->
  301. <swiper
  302. class="swiper gallery-top"
  303. :options="swiperOptionTop"
  304. ref="swiperTop"
  305. >
  306. <swiper-slide class="slide-1" v-for="(item, index) in swiperImg" :key="item.id">
  307. <iframe
  308. v-if="item.urlBase"
  309. frameborder="1"
  310. :src="item.urlBase"
  311. ref="ifr"
  312. width="604px"
  313. height="445px"
  314. scrolling="auto">
  315. </iframe>
  316. <img style="width: 70%;height: 70%;border: 1px solid;"
  317. v-if="!item.urlBase" :src="noDataPng" border="1">
  318. <a-button v-if="item.urlBase && lotState.empowerState != 1"
  319. style="display: block;margin-top: 10px;border-color: red;color: red"
  320. danger @click="removeFile(item)">移除
  321. </a-button>
  322. </swiper-slide>
  323. <div
  324. class="swiper-button-next swiper-button-white"
  325. slot="button-next"
  326. ></div>
  327. <div
  328. class="swiper-button-prev swiper-button-white"
  329. slot="button-prev"
  330. ></div>
  331. </swiper>
  332. <!-- swiper2 Thumbs -->
  333. <swiper
  334. class="swiper gallery-thumbs"
  335. :options="swiperOptionThumbs"
  336. ref="swiperThumbs"
  337. >
  338. <swiper-slide
  339. class="slide"
  340. style="width:100px;height:100px;"
  341. v-for="(item, index) in swiperImg"
  342. :key="item.id"
  343. >
  344. <div v-if="item.urlBase" style="width: 100%;height: 96px;background: rgb(68,142,247);color: white">
  345. <span style="white-space:normal; word-break:break-all;overflow:hidden;">{{ item.fileName }}</span>
  346. </div>
  347. <img style="width: 100%;height: 96px"
  348. v-if="!item.urlBase" :src="noDataPng" border="1">
  349. </swiper-slide>
  350. <!-- 点我上传文件按钮-->
  351. <div v-if="lotState.empowerState != 1" class="clearfix">
  352. <a-upload
  353. listType="picture-card"
  354. name="file"
  355. :multiple="false"
  356. :action="importMinioUploadAction"
  357. :customRequest="selfUploadContract"
  358. :headers="tokenHeader"
  359. :showUploadList="false"
  360. :beforeUpload="importBeforeUpload"
  361. @change="importHandleChange"
  362. >
  363. <div v-if="lotData.contractFiles.length < 10">
  364. <a-icon type="plus"/>
  365. <div class="ant-upload-text">点我上传合同</div>
  366. </div>
  367. </a-upload>
  368. </div>
  369. <div class="swiper-button-next swiper-button-white" slot="button-next">
  370. <div>
  371. <!-- <img src="../../../../assets/images/nextImg.png" alt=""/>-->
  372. </div>
  373. </div>
  374. <div class="swiper-button-prev swiper-button-white" slot="button-prev">
  375. <div>
  376. <!-- <img src="../../../../assets/images/prevImg.png" alt=""/>-->
  377. </div>
  378. </div>
  379. </swiper>
  380. </div>
  381. </div>
  382. </div>
  383. </a-card>
  384. <!-- 责任人和经办人身份证-->
  385. <a-card v-if="current == 2" style="margin-bottom:10px">
  386. <div slot="title">
  387. <span style="float: left;position: relative;top: 4px">责任人和经办人身份证</span>
  388. <!-- 操作按钮-->
  389. <div style="position: relative;left: 10px">
  390. <a-button v-if="current < steps.length - 1" type="primary" @click="nextSteps">下一步</a-button>
  391. <a-button
  392. v-if="current == steps.length - 1"
  393. type="primary"
  394. >
  395. 提交
  396. </a-button>
  397. <a-button v-if="current > 0" style="margin-left: 8px" @click="prevSteps">上一步</a-button>
  398. </div>
  399. </div>
  400. <div style="float: left;width: 43%">
  401. <div class="markdown" style="position: relative;top:30px">
  402. <ul>
  403. <li>1)经办人和责任人身份证复印件加盖公章</li>
  404. <li style="color: red" v-if="lotNote.idCardNote != null && lotNote.idCardNote.length > 0">
  405. 稽核结果备注:{{ lotNote.idCardNote }}
  406. </li>
  407. </ul>
  408. </div>
  409. </div>
  410. <div style="width: 50%;float:left;">
  411. <div style="height: 70%">
  412. <div class="thumb-example">
  413. <!-- swiper1 -->
  414. <swiper
  415. class="swiper gallery-top"
  416. :options="swiperOptionTop"
  417. ref="swiperTop"
  418. >
  419. <swiper-slide class="slide-1" v-for="(item, index) in swiperImg" :key="item.id">
  420. <iframe
  421. v-if="item.urlBase"
  422. frameborder="1"
  423. :src="item.urlBase"
  424. ref="ifr"
  425. width="604px"
  426. height="445px"
  427. scrolling="auto">
  428. </iframe>
  429. <img style="width: 70%;height: 70%;border: 1px solid;"
  430. v-if="!item.urlBase" :src="noDataPng" border="1">
  431. <a-button v-if="item.urlBase && lotState.idCardState != 1"
  432. style="display: block;margin-top: 10px;border-color: red;color: red"
  433. danger @click="removeFile(item)">移除
  434. </a-button>
  435. </swiper-slide>
  436. <div
  437. class="swiper-button-next swiper-button-white"
  438. slot="button-next"
  439. ></div>
  440. <div
  441. class="swiper-button-prev swiper-button-white"
  442. slot="button-prev"
  443. ></div>
  444. </swiper>
  445. <!-- swiper2 Thumbs -->
  446. <swiper
  447. class="swiper gallery-thumbs"
  448. :options="swiperOptionThumbs"
  449. ref="swiperThumbs"
  450. >
  451. <swiper-slide
  452. class="slide"
  453. style="width:100px;height:100px;"
  454. v-for="(item, index) in swiperImg"
  455. :key="item.id"
  456. >
  457. <div v-if="item.urlBase" style="width: 100%;height: 96px;background: rgb(68,142,247);color: white">
  458. <span style="white-space:normal; word-break:break-all;overflow:hidden;">{{ item.fileName }}</span>
  459. </div>
  460. <img style="width: 100%;height: 96px"
  461. v-if="!item.urlBase" :src="noDataPng" border="1">
  462. </swiper-slide>
  463. <!-- 点我上传文件按钮-->
  464. <div v-if="lotState.idCardState != 1" class="clearfix">
  465. <a-upload
  466. listType="picture-card"
  467. name="file"
  468. :multiple="false"
  469. :action="importMinioUploadAction"
  470. :customRequest="selfUploadContract"
  471. :headers="tokenHeader"
  472. :showUploadList="false"
  473. :beforeUpload="importBeforeUpload"
  474. @change="importHandleChange"
  475. >
  476. <div v-if="lotData.contractFiles.length < 10">
  477. <a-icon type="plus"/>
  478. <div class="ant-upload-text">点我上传合同</div>
  479. </div>
  480. </a-upload>
  481. </div>
  482. <div class="swiper-button-next swiper-button-white" slot="button-next">
  483. <div>
  484. <!-- <img src="../../../../assets/images/nextImg.png" alt=""/>-->
  485. </div>
  486. </div>
  487. <div class="swiper-button-prev swiper-button-white" slot="button-prev">
  488. <div>
  489. <!-- <img src="../../../../assets/images/prevImg.png" alt=""/>-->
  490. </div>
  491. </div>
  492. </swiper>
  493. </div>
  494. </div>
  495. </div>
  496. </a-card>
  497. <!-- 客户证件扫描-->
  498. <a-card v-if="current == 3" style="margin-bottom:10px">
  499. <div slot="title">
  500. <span style="float: left;position: relative;top: 4px">客户证件扫描</span>
  501. <!-- 操作按钮-->
  502. <div style="position: relative;left: 10px">
  503. <a-button v-if="current < steps.length - 1" type="primary" @click="nextSteps">下一步</a-button>
  504. <a-button
  505. v-if="current == steps.length - 1" @click="handSubmit"
  506. type="primary"
  507. >
  508. 提交
  509. </a-button>
  510. <a-button v-if="current > 0" style="margin-left: 8px" @click="prevSteps">上一步</a-button>
  511. </div>
  512. </div>
  513. <div style="float: left;width: 43%">
  514. <div class="markdown" style="position: relative;top:30px">
  515. <ul>
  516. <li>1)客户证件复印件加盖公章</li>
  517. <li style="color: red" v-if="lotNote.customerIdNote != null && lotNote.customerIdNote.length > 0">
  518. 稽核结果备注:{{ lotNote.customerIdNote }}
  519. </li>
  520. </ul>
  521. </div>
  522. </div>
  523. <div style="width: 50%;float:left;">
  524. <div style="height: 70%">
  525. <div class="thumb-example">
  526. <!-- swiper1 -->
  527. <swiper
  528. class="swiper gallery-top"
  529. :options="swiperOptionTop"
  530. ref="swiperTop"
  531. >
  532. <swiper-slide class="slide-1" v-for="(item, index) in swiperImg" :key="item.id">
  533. <iframe
  534. v-if="item.urlBase"
  535. frameborder="1"
  536. :src="item.urlBase"
  537. ref="ifr"
  538. width="604px"
  539. height="445px"
  540. scrolling="auto">
  541. </iframe>
  542. <img style="width: 70%;height: 70%;border: 1px solid;"
  543. v-if="!item.urlBase" :src="noDataPng" border="1">
  544. <a-button v-if="item.urlBase && lotState.customerIdState != 1"
  545. style="display: block;margin-top: 10px;border-color: red;color: red"
  546. danger @click="removeFile(item)">移除
  547. </a-button>
  548. </swiper-slide>
  549. <div
  550. class="swiper-button-next swiper-button-white"
  551. slot="button-next"
  552. ></div>
  553. <div
  554. class="swiper-button-prev swiper-button-white"
  555. slot="button-prev"
  556. ></div>
  557. </swiper>
  558. <!-- swiper2 Thumbs -->
  559. <swiper
  560. class="swiper gallery-thumbs"
  561. :options="swiperOptionThumbs"
  562. ref="swiperThumbs"
  563. >
  564. <swiper-slide
  565. class="slide"
  566. style="width:100px;height:100px;"
  567. v-for="(item, index) in swiperImg"
  568. :key="item.id"
  569. >
  570. <div v-if="item.urlBase" style="width: 100%;height: 96px;background: rgb(68,142,247);color: white">
  571. <span style="white-space:normal; word-break:break-all;overflow:hidden;">{{ item.fileName }}</span>
  572. </div>
  573. <img style="width: 100%;height: 96px"
  574. v-if="!item.urlBase" :src="noDataPng" border="1">
  575. </swiper-slide>
  576. <!-- 点我上传文件按钮-->
  577. <div v-if="lotState.customerIdState != 1" class="clearfix">
  578. <a-upload
  579. listType="picture-card"
  580. name="file"
  581. :multiple="false"
  582. :action="importMinioUploadAction"
  583. :customRequest="selfUploadContract"
  584. :headers="tokenHeader"
  585. :showUploadList="false"
  586. :beforeUpload="importBeforeUpload"
  587. @change="importHandleChange"
  588. >
  589. <div v-if="lotData.contractFiles.length < 10">
  590. <a-icon type="plus"/>
  591. <div class="ant-upload-text">点我上传合同</div>
  592. </div>
  593. </a-upload>
  594. </div>
  595. <div class="swiper-button-next swiper-button-white" slot="button-next">
  596. <div>
  597. <!-- <img src="../../../../assets/images/nextImg.png" alt=""/>-->
  598. </div>
  599. </div>
  600. <div class="swiper-button-prev swiper-button-white" slot="button-prev">
  601. <div>
  602. <!-- <img src="../../../../assets/images/prevImg.png" alt=""/>-->
  603. </div>
  604. </div>
  605. </swiper>
  606. </div>
  607. </div>
  608. </div>
  609. </a-card>
  610. <!-- 风险评估表-->
  611. <a-card v-if="current == 4 && lotData.blockType == 'model'" style="margin-bottom:10px">
  612. <div slot="title">
  613. <span style="float: left;position: relative;top: 4px">风险评估表</span>
  614. <!-- 操作按钮-->
  615. <div style="position: relative;left: 10px">
  616. <a-button v-if="current < steps.length - 1" type="primary" @click="nextSteps">下一步</a-button>
  617. <a-button
  618. v-if="current == steps.length - 1"
  619. type="primary"
  620. @click="submitLot"
  621. >
  622. 提交
  623. </a-button>
  624. <a-button v-if="current > 0" style="margin-left: 8px" @click="prevSteps">上一步</a-button>
  625. </div>
  626. </div>
  627. <div style="float: left;width: 43%">
  628. <div class="markdown" style="position: relative;top:30px">
  629. <ul>
  630. <li>1)是否进行入网风险评估</li>
  631. <li>2)安全管理能力是否填写最小必要数据</li>
  632. <li>3)是否明确使用场景(与产品形态表一致),如车联网、水表等</li>
  633. <li>4)是否明确开通功能,如语音,短信,流量等</li>
  634. <li>5)是否明确功能限制情况,如定向,机卡绑定,卡片绑定,限额管控,黑名单限制等</li>
  635. <li>6)是否无低级错误,如缺少签字、日期等</li>
  636. <li>7)风险评估表中卡类型需写清三要素:网络制式、商业级或消费级、贴片机或插卡机</li>
  637. <li>8)现场考察部分截图是否清晰</li>
  638. <li>9)合同、入网评估表、系统受理是否一致</li>
  639. <li style="color: red" v-if="lotNote.riskNote != null && lotNote.riskNote.length > 0">
  640. 稽核结果备注:{{ lotNote.riskNote }}
  641. </li>
  642. </ul>
  643. </div>
  644. </div>
  645. <div style="width: 50%;float:left;">
  646. <div style="height: 70%">
  647. <div class="thumb-example">
  648. <!-- swiper1 -->
  649. <swiper
  650. class="swiper gallery-top"
  651. :options="swiperOptionTop"
  652. ref="swiperTop"
  653. >
  654. <swiper-slide class="slide-1" v-for="(item, index) in swiperImg" :key="item.id">
  655. <iframe
  656. v-if="item.urlBase"
  657. frameborder="1"
  658. :src="item.urlBase"
  659. ref="ifr"
  660. width="604px"
  661. height="445px"
  662. scrolling="auto">
  663. </iframe>
  664. <img style="width: 70%;height: 70%;border: 1px solid;"
  665. v-if="!item.urlBase" :src="noDataPng" border="1">
  666. <a-button v-if="item.urlBase && lotState.riskState != 1"
  667. style="display: block;margin-top: 10px;border-color: red;color: red"
  668. danger @click="removeFile(item)">移除
  669. </a-button>
  670. </swiper-slide>
  671. <div
  672. class="swiper-button-next swiper-button-white"
  673. slot="button-next"
  674. ></div>
  675. <div
  676. class="swiper-button-prev swiper-button-white"
  677. slot="button-prev"
  678. ></div>
  679. </swiper>
  680. <!-- swiper2 Thumbs -->
  681. <swiper
  682. class="swiper gallery-thumbs"
  683. :options="swiperOptionThumbs"
  684. ref="swiperThumbs"
  685. >
  686. <swiper-slide
  687. class="slide"
  688. style="width:100px;height:100px;"
  689. v-for="(item, index) in swiperImg"
  690. :key="item.id"
  691. >
  692. <div v-if="item.urlBase" style="width: 100%;height: 96px;background: rgb(68,142,247);color: white">
  693. <span style="white-space:normal; word-break:break-all;overflow:hidden;">{{ item.fileName }}</span>
  694. </div>
  695. <img style="width: 100%;height: 96px"
  696. v-if="!item.urlBase" :src="noDataPng" border="1">
  697. </swiper-slide>
  698. <!-- 点我上传文件按钮-->
  699. <div v-if="lotState.riskState != 1" class="clearfix">
  700. <a-upload
  701. listType="picture-card"
  702. name="file"
  703. :multiple="false"
  704. :action="importMinioUploadAction"
  705. :customRequest="selfUploadContract"
  706. :headers="tokenHeader"
  707. :showUploadList="false"
  708. :beforeUpload="importBeforeUpload"
  709. @change="importHandleChange"
  710. >
  711. <div v-if="lotData.contractFiles.length < 10">
  712. <a-icon type="plus"/>
  713. <div class="ant-upload-text">点我上传合同</div>
  714. </div>
  715. </a-upload>
  716. </div>
  717. <div class="swiper-button-next swiper-button-white" slot="button-next">
  718. <div>
  719. <!-- <img src="../../../../assets/images/nextImg.png" alt=""/>-->
  720. </div>
  721. </div>
  722. <div class="swiper-button-prev swiper-button-white" slot="button-prev">
  723. <div>
  724. <!-- <img src="../../../../assets/images/prevImg.png" alt=""/>-->
  725. </div>
  726. </div>
  727. </swiper>
  728. </div>
  729. </div>
  730. </div>
  731. </a-card>
  732. <!-- 省/集团价格审批表-->
  733. <a-card v-if="current == 5 && lotData.control == 'controlY'" style="margin-bottom:10px">
  734. <div slot="title">
  735. <span style="float: left;position: relative;top: 4px">风险评估表</span>
  736. <!-- 操作按钮-->
  737. <div style="position: relative;left: 10px">
  738. <a-button v-if="current < steps.length - 1" type="primary" @click="nextSteps">下一步</a-button>
  739. <a-button
  740. v-if="current == steps.length - 1"
  741. @click="submitLot"
  742. type="primary"
  743. >
  744. 提交
  745. </a-button>
  746. <a-button v-if="current > 0" style="margin-left: 8px" @click="prevSteps">上一步</a-button>
  747. </div>
  748. </div>
  749. <div style="float: left;width: 43%">
  750. <div class="markdown" style="position: relative;top:30px">
  751. <ul>
  752. <li>1)最终审批价格不低于1元/户/月(对2020年1月1日前签署合同的存量客户,若存量价格审批表中只约定了保底流量无功能费的,按存量审批表执行)</li>
  753. <li>2)不参与打折,最低优惠至1元/户/月(2020年1月1日前签署合同的存量客户,池功能费可以按照池成员流量价格授权同步享受折扣)</li>
  754. <li>3)同客户同项目测试卡数量不得超100张,最高不得超500张。</li>
  755. <li>4)物联网开卡时提供公免卡审批表,开卡张数和公免额度与审批表一致。物联网公免卡的审批人员和流程同大网公免卡一致。</li>
  756. <li>5)累计限免有效期原则上不得大于15个月</li>
  757. <li style="color: red" v-if="lotNote.priceApprovalNote != null && lotNote.priceApprovalNote.length > 0">
  758. 稽核结果备注:{{ lotNote.priceApprovalNote }}
  759. </li>
  760. </ul>
  761. </div>
  762. </div>
  763. <div style="width: 50%;float:left;">
  764. <div style="height: 70%">
  765. <div class="thumb-example">
  766. <!-- swiper1 -->
  767. <swiper
  768. class="swiper gallery-top"
  769. :options="swiperOptionTop"
  770. ref="swiperTop"
  771. >
  772. <swiper-slide class="slide-1" v-for="(item, index) in swiperImg" :key="item.id">
  773. <iframe
  774. v-if="item.urlBase"
  775. frameborder="1"
  776. :src="item.urlBase"
  777. ref="ifr"
  778. width="604px"
  779. height="445px"
  780. scrolling="auto">
  781. </iframe>
  782. <img style="width: 70%;height: 70%;border: 1px solid;"
  783. v-if="!item.urlBase" :src="noDataPng" border="1">
  784. <a-button v-if="item.urlBase && lotState.priceApprovalState != 1"
  785. style="display: block;margin-top: 10px;border-color: red;color: red"
  786. danger @click="removeFile(item)">移除
  787. </a-button>
  788. </swiper-slide>
  789. <div
  790. class="swiper-button-next swiper-button-white"
  791. slot="button-next"
  792. ></div>
  793. <div
  794. class="swiper-button-prev swiper-button-white"
  795. slot="button-prev"
  796. ></div>
  797. </swiper>
  798. <!-- swiper2 Thumbs -->
  799. <swiper
  800. class="swiper gallery-thumbs"
  801. :options="swiperOptionThumbs"
  802. ref="swiperThumbs"
  803. >
  804. <swiper-slide
  805. class="slide"
  806. style="width:100px;height:100px;"
  807. v-for="(item, index) in swiperImg"
  808. :key="item.id"
  809. >
  810. <div v-if="item.urlBase" style="width: 100%;height: 96px;background: rgb(68,142,247);color: white">
  811. <span style="white-space:normal; word-break:break-all;overflow:hidden;">{{ item.fileName }}</span>
  812. </div>
  813. <img style="width: 100%;height: 96px"
  814. v-if="!item.urlBase" :src="noDataPng" border="1">
  815. </swiper-slide>
  816. <!-- 点我上传文件按钮-->
  817. <div v-if="lotState.priceApprovalState != 1" class="clearfix">
  818. <a-upload
  819. listType="picture-card"
  820. name="file"
  821. :multiple="false"
  822. :action="importMinioUploadAction"
  823. :customRequest="selfUploadContract"
  824. :headers="tokenHeader"
  825. :showUploadList="false"
  826. :beforeUpload="importBeforeUpload"
  827. @change="importHandleChange"
  828. >
  829. <div v-if="lotData.contractFiles.length < 10">
  830. <a-icon type="plus"/>
  831. <div class="ant-upload-text">点我上传合同</div>
  832. </div>
  833. </a-upload>
  834. </div>
  835. <div class="swiper-button-next swiper-button-white" slot="button-next">
  836. <div>
  837. <!-- <img src="../../../../assets/images/nextImg.png" alt=""/>-->
  838. </div>
  839. </div>
  840. <div class="swiper-button-prev swiper-button-white" slot="button-prev">
  841. <div>
  842. <!-- <img src="../../../../assets/images/prevImg.png" alt=""/>-->
  843. </div>
  844. </div>
  845. </swiper>
  846. </div>
  847. </div>
  848. </div>
  849. </a-card>
  850. <!--承诺涵-其他材料-非必填-->
  851. <a-card v-if="lotData.isShow.commitmentShow">
  852. <div slot="title">
  853. <span style="float: left;position: relative;top: 4px">其他材料</span>
  854. <!-- 操作按钮-->
  855. <div style="position: relative;left: 10px">
  856. <a-button v-if="current < steps.length - 1" type="primary" @click="nextSteps">下一步</a-button>
  857. <a-button
  858. v-if="current == steps.length - 1"
  859. @click="submitLot"
  860. type="primary"
  861. >
  862. 提交
  863. </a-button>
  864. <a-button v-if="current > 0" style="margin-left: 8px" @click="prevSteps">上一步</a-button>
  865. </div>
  866. </div>
  867. <div style="float: left;width: 43%">
  868. <div class="markdown" style="position: relative;top:30px">
  869. <ul>
  870. <li>1)如有其他材料请进行上传</li>
  871. <li style="color: red" v-if="lotNote.commitmentNote != null && lotNote.commitmentNote.length > 0">
  872. 稽核结果备注:{{ lotNote.commitmentNote }}
  873. </li>
  874. </ul>
  875. </div>
  876. </div>
  877. <div style="width: 50%;float:left;">
  878. <div style="height: 70%">
  879. <div class="thumb-example">
  880. <!-- swiper1 -->
  881. <swiper
  882. class="swiper gallery-top"
  883. :options="swiperOptionTop"
  884. ref="swiperTop"
  885. >
  886. <swiper-slide class="slide-1" v-for="(item, index) in swiperImg" :key="item.id">
  887. <iframe
  888. v-if="item.urlBase"
  889. frameborder="1"
  890. :src="item.urlBase"
  891. ref="ifr"
  892. width="604px"
  893. height="445px"
  894. scrolling="auto">
  895. </iframe>
  896. <img style="width: 70%;height: 70%;border: 1px solid;"
  897. v-if="!item.urlBase" :src="noDataPng" border="1">
  898. <a-button v-if="item.urlBase && lotState.commitmentState != 1"
  899. style="display: block;margin-top: 10px;border-color: red;color: red"
  900. danger @click="removeFile(item)">移除
  901. </a-button>
  902. </swiper-slide>
  903. <div
  904. class="swiper-button-next swiper-button-white"
  905. slot="button-next"
  906. ></div>
  907. <div
  908. class="swiper-button-prev swiper-button-white"
  909. slot="button-prev"
  910. ></div>
  911. </swiper>
  912. <!-- swiper2 Thumbs -->
  913. <swiper
  914. class="swiper gallery-thumbs"
  915. :options="swiperOptionThumbs"
  916. ref="swiperThumbs"
  917. >
  918. <swiper-slide
  919. class="slide"
  920. style="width:100px;height:100px;"
  921. v-for="(item, index) in swiperImg"
  922. :key="item.id"
  923. >
  924. <div v-if="item.urlBase" style="width: 100%;height: 96px;background: rgb(68,142,247);color: white">
  925. <span style="white-space:normal; word-break:break-all;overflow:hidden;">{{ item.fileName }}</span>
  926. </div>
  927. <img style="width: 100%;height: 96px"
  928. v-if="!item.urlBase" :src="noDataPng" border="1">
  929. </swiper-slide>
  930. <!-- 点我上传文件按钮-->
  931. <div v-if="lotState.commitmentState != 1" class="clearfix">
  932. <a-upload
  933. listType="picture-card"
  934. name="file"
  935. :multiple="false"
  936. :action="importMinioUploadAction"
  937. :customRequest="selfUploadContract"
  938. :headers="tokenHeader"
  939. :showUploadList="false"
  940. :beforeUpload="importBeforeUpload"
  941. @change="importHandleChange"
  942. >
  943. <div v-if="lotData.contractFiles.length < 10">
  944. <a-icon type="plus"/>
  945. <div class="ant-upload-text">点我上传其它材料</div>
  946. </div>
  947. </a-upload>
  948. </div>
  949. <div class="swiper-button-next swiper-button-white" slot="button-next">
  950. <div>
  951. <!-- <img src="../../../../assets/images/nextImg.png" alt=""/>-->
  952. </div>
  953. </div>
  954. <div class="swiper-button-prev swiper-button-white" slot="button-prev">
  955. <div>
  956. <!-- <img src="../../../../assets/images/prevImg.png" alt=""/>-->
  957. </div>
  958. </div>
  959. </swiper>
  960. </div>
  961. </div>
  962. </div>
  963. </a-card>
  964. </div>
  965. </template>
  966. <script>
  967. import {JeecgListMixin} from '@/mixins/JeecgListMixin'
  968. import {httpAction, postAction} from '@api/manage'
  969. import {snippetsOutlined, StarFilled, StarTwoTone} from '@ant-design/icons-vue';
  970. /*无数据图片*/
  971. import noDataPng from '@/assets/nodata.png'
  972. let Base64 = require('js-base64').Base64
  973. export default {
  974. name: "TaskUploadData",
  975. mixins: [JeecgListMixin],
  976. inject: ['closeCurrent'],
  977. components: {noDataPng},
  978. data() {
  979. return {
  980. //是否整改
  981. rectificationIs: false,
  982. noDataPng: noDataPng,
  983. //加载状态
  984. loading: false,
  985. //弹窗
  986. previewImage: "",
  987. previewVisible: false,
  988. url: {
  989. updateFile: "/smsCheck/customerData/updateFile",
  990. minioUpload: "/smsCheck/customerData/uploadMinio",
  991. list: "/smsCheck/customerData/list",
  992. addOrEdit: "/smsLot/customerData/edit/info",
  993. lotInfo: "/smsLot/customerData/query/infoId",
  994. checkDataId: "/smsLot/customerData/query/check/dataId",
  995. },
  996. //步骤条数据
  997. current: 0,
  998. steps: "",
  999. stepsControlY: [
  1000. {
  1001. title: '合同',
  1002. content: 'First-content',
  1003. status: "wait"
  1004. },
  1005. {
  1006. title: '责任人和经办人授权书',
  1007. content: 'First-content',
  1008. status: "wait"
  1009. },
  1010. {
  1011. title: '责任人和经办人身份证',
  1012. content: 'First-content',
  1013. status: "wait"
  1014. },
  1015. {
  1016. title: '客户证件扫描',
  1017. content: 'First-content',
  1018. status: "wait"
  1019. },
  1020. {
  1021. title: '风险评估表',
  1022. content: 'First-content',
  1023. status: "wait"
  1024. },
  1025. {
  1026. title: '省/集团价格审批表',
  1027. content: 'First-content',
  1028. status: "wait"
  1029. },
  1030. {
  1031. title: '承诺涵(其他材料-非必填)',
  1032. content: 'First-content',
  1033. id: "commitment",
  1034. status: "wait"
  1035. }
  1036. ],
  1037. stepsControlN: [
  1038. {
  1039. title: '合同',
  1040. content: 'First-content',
  1041. status: "wait"
  1042. },
  1043. {
  1044. title: '责任人和经办人授权书',
  1045. content: 'First-content',
  1046. status: "wait"
  1047. },
  1048. {
  1049. title: '责任人和经办人身份证',
  1050. content: 'First-content',
  1051. status: "wait"
  1052. },
  1053. {
  1054. title: '客户证件扫描',
  1055. content: 'First-content',
  1056. status: "wait"
  1057. },
  1058. {
  1059. title: '风险评估表',
  1060. content: 'First-content',
  1061. status: "wait"
  1062. },
  1063. {
  1064. title: '承诺涵(其他材料-非必填)',
  1065. content: 'First-content',
  1066. id: "commitment",
  1067. status: "wait"
  1068. }
  1069. ],
  1070. //测试卡步骤条
  1071. stepsTest: [
  1072. {
  1073. title: '测试卡申请单',
  1074. content: 'First-content',
  1075. status: "wait"
  1076. },
  1077. {
  1078. title: '责任人和经办人授权书',
  1079. content: 'First-content',
  1080. status: "wait"
  1081. },
  1082. {
  1083. title: '责任人和经办人身份证',
  1084. content: 'First-content',
  1085. status: "wait"
  1086. },
  1087. {
  1088. title: '客户证件扫描',
  1089. content: 'First-content',
  1090. status: "wait"
  1091. },
  1092. {
  1093. title: '承诺涵(其他材料-非必填)',
  1094. id: "commitment",
  1095. content: 'First-content',
  1096. status: "wait"
  1097. }
  1098. ],
  1099. next: "",
  1100. prev: "",
  1101. //客户信息ID
  1102. infoId: "",
  1103. lotData: {
  1104. //卡片是否展示
  1105. isShow: {
  1106. commitmentShow: false,
  1107. },
  1108. //正式卡/测试卡
  1109. blockType: "model",
  1110. //价格管控
  1111. control: "controlN",
  1112. //合同文件
  1113. contractFiles: [],
  1114. //责任人和经办人授权书
  1115. empowerFiles: [],
  1116. //责任人和经办人身份证
  1117. idCardFiles: [],
  1118. //客户证件扫描
  1119. scanningFiles: [],
  1120. //风险评估表
  1121. riskFiles: [],
  1122. //价格审批表
  1123. priceFiles: [],
  1124. //测试卡申请单
  1125. testCardApplication: [],
  1126. //其他材料
  1127. commitmentFiles: [],
  1128. },
  1129. //整改稽核备注
  1130. lotNote: {
  1131. //合同
  1132. contractNote: null,
  1133. //测试卡申请单
  1134. testCardApplicationNote: null,
  1135. //责任人经办人授权书
  1136. empowerNote: null,
  1137. //责任人经办人身份证
  1138. idCardNote: null,
  1139. //客户证件
  1140. customerIdNote: null,
  1141. //风险评估表稽核结果
  1142. riskNote: null,
  1143. //省/集团价格审批表
  1144. priceApprovalNote: null,
  1145. //其他材料
  1146. commitmentNote: null,
  1147. },
  1148. //整改稽核结果
  1149. lotState: {
  1150. //合同
  1151. contractState: null,
  1152. //测试卡申请单
  1153. testCardApplicationState: null,
  1154. //责任人经办人授权书
  1155. empowerState: null,
  1156. //责任人经办人身份证
  1157. idCardState: null,
  1158. //客户证件
  1159. customerIdState: null,
  1160. //风险评估表稽核结果
  1161. riskState: null,
  1162. //省/集团价格审批表
  1163. priceApprovalState: null,
  1164. //其他材料
  1165. commitmentState: null,
  1166. },
  1167. //缩略与大图数据源
  1168. swiperId: 0 + 1,
  1169. swiperImg: [{}],
  1170. //轮播配置
  1171. swiperOptionTop: {
  1172. zoom: true,
  1173. loop: false,
  1174. loopedSlides: 5, // looped slides should be the same
  1175. spaceBetween: 10,
  1176. observer: true, //修改swiper自己或子元素时,自动初始化swiper
  1177. observeParents: true, //修改swiper的父元素时,自动初始化swiper
  1178. // autoplay: { //自动轮播
  1179. // delay: 2000,
  1180. // disableOnInteraction: false
  1181. // },
  1182. navigation: {
  1183. nextEl: '.swiper-button-next',
  1184. prevEl: '.swiper-button-prev'
  1185. }
  1186. },
  1187. swiperOptionThumbs: {
  1188. loop: false,
  1189. loopedSlides: 5, // looped slides should be the same
  1190. spaceBetween: 10,
  1191. centeredSlides: true,
  1192. slidesPerView: 'auto',
  1193. touchRatio: 0.2,
  1194. slideToClickedSlide: true,
  1195. navigation: {
  1196. nextEl: '.swiper-button-next',
  1197. prevEl: '.swiper-button-prev'
  1198. }
  1199. }
  1200. };
  1201. },
  1202. created() {
  1203. this.infoId = this.$route.query.id;
  1204. //是否需要整改
  1205. this.lotInfoById(this.infoId)
  1206. },
  1207. computed: {
  1208. importMinioUploadAction() {
  1209. return window._CONFIG['domianURL'] + this.url.minioUpload;
  1210. },
  1211. },
  1212. props: {
  1213. poster: {
  1214. type: String,
  1215. required: false,
  1216. default: ""
  1217. },
  1218. controls: {
  1219. type: Boolean,
  1220. required: false,
  1221. default: true
  1222. },
  1223. control: {
  1224. type: Boolean,
  1225. required: false,
  1226. default: false
  1227. },
  1228. },
  1229. watch: {
  1230. // 监听操作
  1231. videoData(val, oldVal) {
  1232. const {currentTime, duration} = val;
  1233. if (currentTime && duration && currentTime < duration) {
  1234. this.hintOperate();
  1235. }
  1236. }
  1237. },
  1238. mounted() {
  1239. // 实现swiper双向控制
  1240. this.$nextTick(() => {
  1241. const swiperTop = this.$refs.swiperTop.swiper
  1242. const swiperThumbs = this.$refs.swiperThumbs.swiper
  1243. swiperTop.controller.control = swiperThumbs
  1244. swiperThumbs.controller.control = swiperTop
  1245. })
  1246. let control = this.lotData.control;
  1247. //是否突破价格管控
  1248. if (control == "controlN") {
  1249. this.steps = this.stepsControlN;
  1250. } else {
  1251. this.steps = this.stepsControlY;
  1252. }
  1253. },
  1254. methods: {
  1255. /**获取物联网稽核结果*/
  1256. lotCheckById(id) {
  1257. let that = this;
  1258. let url = this.url.checkDataId;
  1259. let params = {
  1260. infoId: id
  1261. }
  1262. postAction(url, params).then(res => {
  1263. if (res.success) {
  1264. let data = res.result;
  1265. if (data != null) {
  1266. for (var i in that.steps) {
  1267. that.stepsStatus(i, data);
  1268. }
  1269. }
  1270. }
  1271. }).finally(() => {
  1272. })
  1273. },
  1274. stepsStatus(current, data) {
  1275. let that = this;
  1276. //卡类型
  1277. let blockType = that.lotData.blockType;
  1278. switch (current) {
  1279. case '0':
  1280. if (blockType == 0) {
  1281. //测试卡
  1282. that.steps[current].status = data.testCardApplicationState == '0' ? "error" : "finish";
  1283. //备注
  1284. that.lotNote.testCardApplicationNote = data.testCardApplicationNote;
  1285. //稽核结果
  1286. that.lotState.testCardApplicationState = data.testCardApplicationState;
  1287. } else {
  1288. //正式卡
  1289. that.steps[current].status = data.contractState == '0' ? "error" : "finish";
  1290. that.lotNote.contractNote = data.contractNote
  1291. that.lotState.contractState = data.contractState;
  1292. }
  1293. break;
  1294. case '1':
  1295. that.steps[current].status = data.empowerState == '0' ? "error" : "finish";
  1296. that.lotNote.empowerNote = data.empowerNote
  1297. that.lotState.empowerState = data.empowerState;
  1298. break;
  1299. case '2':
  1300. that.steps[current].status = data.idCardState == '0' ? "error" : "finish";
  1301. that.lotNote.idCardNote = data.idCardNote
  1302. that.lotState.idCardState = data.idCardState
  1303. break;
  1304. case '3':
  1305. that.steps[current].status = data.customerIdState == '0' ? "error" : "finish";
  1306. that.lotNote.customerIdNote = data.customerIdNote
  1307. that.lotState.customerIdState = data.customerIdState
  1308. break;
  1309. case '4':
  1310. that.steps[current].status = data.riskState == '0' ? "error" : "finish";
  1311. that.lotNote.riskNote = data.riskNote
  1312. that.lotState.riskState = data.riskState
  1313. break;
  1314. case '5' && that.steps[current].id != "commitment":
  1315. that.steps[current].status = data.priceApprovalState == '0' ? "error" : "finish";
  1316. that.lotNote.priceApprovalNote = data.priceApprovalNote
  1317. that.lotState.priceApprovalState = data.priceApprovalState
  1318. default:
  1319. if (that.steps[current].id == "commitment") {
  1320. that.steps[current].status = data.commitmentState == '0' ? "error" : "finish";
  1321. that.lotNote.commitmentNote = data.commitmentNote;
  1322. that.lotState.commitmentState = data.commitmentState;
  1323. }
  1324. break;
  1325. }
  1326. },
  1327. /**获取物联网文件数据*/
  1328. lotInfoById(id) {
  1329. let that = this;
  1330. let url = this.url.lotInfo;
  1331. let params = {
  1332. infoId: id
  1333. }
  1334. postAction(url, params).then(res => {
  1335. if (res.success) {
  1336. let data = res.result;
  1337. if (data == null || !data) {
  1338. return;
  1339. }
  1340. that.lotDataValue(data);
  1341. }
  1342. }).finally(() => {
  1343. })
  1344. },
  1345. lotDataValue(data) {
  1346. let that = this;
  1347. //为整改
  1348. that.rectificationIs = true;
  1349. //是否突破价格管控 0:未突破;1:突破
  1350. that.lotData.control = data.control == 0 ? "controlN" : "controlY";
  1351. //卡类型 0测试卡;1正式卡,
  1352. that.lotData.blockType = data.blockType == 0 ? "test" : "model";
  1353. //判断步骤类型
  1354. let control = data.control;
  1355. let blockType = data.blockType;
  1356. if (control == 0 && blockType == 1) {
  1357. this.steps = this.stepsControlN;
  1358. } else if (control == 1 && blockType == 1) {
  1359. this.steps = this.stepsControlY;
  1360. } else if (blockType == 0) {
  1361. this.steps = this.stepsTest;
  1362. } else {
  1363. this.steps = this.stepsControlN;
  1364. }
  1365. //材料覆值
  1366. //ID
  1367. that.lotData.id = data.id
  1368. //合同
  1369. that.lotData.contractFiles = that.packageArr(data.contract);
  1370. //责任人经办人授权书
  1371. that.lotData.empowerFiles = that.packageArr(data.empower)
  1372. //责任人经办人身份证
  1373. that.lotData.idCardFiles = that.packageArr(data.idCard)
  1374. //客户证件
  1375. that.lotData.scanningFiles = that.packageArr(data.customerId)
  1376. //风险评估表
  1377. that.lotData.riskFiles = that.packageArr(data.risk)
  1378. //省集团价格审批表
  1379. that.lotData.priceFiles = that.packageArr(data.priceApproval)
  1380. //测试卡申请单
  1381. that.lotData.testCardApplication = that.packageArr(data.testCardApplication)
  1382. //承诺函/其它材料
  1383. that.lotData.commitmentFiles = that.packageArr(data.commitment);
  1384. if (that.lotData.blockType == "model") {
  1385. that.swiperImg = that.lotData.contractFiles
  1386. } else if (that.lotData.blockType == 'test') {
  1387. that.swiperImg = that.lotData.testCardApplication
  1388. }
  1389. //稽核结果
  1390. that.lotCheckById(that.infoId);
  1391. },
  1392. /**包装轮播数据*/
  1393. packageArr(data) {
  1394. let id = 0;
  1395. let newArr = []
  1396. if (data == null) {
  1397. newArr.push({})
  1398. return newArr;
  1399. }
  1400. let splice = data.split(",");
  1401. for (var i in splice) {
  1402. id = id + 1;
  1403. let filePath = splice[i];
  1404. if (filePath == "") {
  1405. break;
  1406. }
  1407. let fileName = filePath.split("/");
  1408. fileName = fileName[fileName.length - 1];
  1409. let swipData = {
  1410. id: id,
  1411. urlBase: window._CONFIG['onlinePreviewDomainURL'] + '?url='
  1412. + encodeURIComponent(
  1413. Base64.encode(
  1414. (filePath)
  1415. )),
  1416. url: filePath,
  1417. fileName: fileName
  1418. }
  1419. newArr.push(swipData);
  1420. }
  1421. return newArr;
  1422. },
  1423. /**卡类型及价格管控监听事件*/
  1424. controlChange(a, event) {
  1425. let blockType = this.lotData.blockType;
  1426. let control = this.lotData.control;
  1427. //是否突破价格管控
  1428. if (control == "controlN" && blockType == "model") {
  1429. this.steps = this.stepsControlN;
  1430. } else if (control == "controlY" && blockType == "model") {
  1431. this.steps = this.stepsControlY;
  1432. } else if (blockType == "test") {
  1433. this.steps = this.stepsTest;
  1434. }
  1435. this.current = 0;
  1436. this.currentFileType(this.current);
  1437. },
  1438. /**移除文件*/
  1439. removeFile(fileData) {
  1440. let that = this;
  1441. //卡类型
  1442. let blockType = this.lotData.blockType;
  1443. //处理轮播数据
  1444. let swiperImg = this.swiperImg;
  1445. let number = swiperImg.indexOf(fileData);
  1446. swiperImg.splice(number, 1)
  1447. if (swiperImg.length == 0) {
  1448. swiperImg.push({})
  1449. }
  1450. this.swiperImg = swiperImg;
  1451. if (that.lotData.isShow.commitmentShow) {
  1452. this.lotData.commitmentFiles = that.swiperImg;
  1453. } else {
  1454. //当前步骤
  1455. let current = this.current;
  1456. switch (current) {
  1457. //合同
  1458. case 0:
  1459. if (blockType == "test") {
  1460. this.lotData.testCardApplication = that.swiperImg;
  1461. } else {
  1462. this.lotData.contractFiles = that.swiperImg;
  1463. }
  1464. break;
  1465. //责任人和经办人授权书
  1466. case 1:
  1467. this.lotData.empowerFiles = that.swiperImg;
  1468. break;
  1469. //责任人和经办人身份证
  1470. case 2:
  1471. this.lotData.idCardFiles = that.swiperImg;
  1472. break;
  1473. //客户证件扫描
  1474. case 3:
  1475. this.lotData.scanningFiles = that.swiperImg;
  1476. break;
  1477. //风险评估表
  1478. case 4:
  1479. this.lotData.riskFiles = that.swiperImg;
  1480. break;
  1481. //价格审批表
  1482. case 5:
  1483. this.lotData.priceFiles = that.swiperImg;
  1484. break;
  1485. }
  1486. }
  1487. },
  1488. /**分割数组*/
  1489. spliceArr(data, fileData) {
  1490. let indexOf = data.indexOf(fileData);
  1491. return data.splice(indexOf, 1)
  1492. },
  1493. /**自定义的上传文件方法*/
  1494. selfUploadContract(data) {
  1495. let that = this;
  1496. if (data.file) {
  1497. let formData = new FormData();
  1498. formData.append('file', data.file)
  1499. postAction(this.url.minioUpload, formData).then((res) => {
  1500. if (res.success) {
  1501. that.swiperId = that.swiperId + 1;
  1502. //文件链接
  1503. let filePath = res.message;
  1504. let swipData = {
  1505. id: that.swiperId,
  1506. urlBase: window._CONFIG['onlinePreviewDomainURL'] + '?url='
  1507. + encodeURIComponent(
  1508. Base64.encode(
  1509. (filePath)
  1510. )),
  1511. url: filePath,
  1512. fileName: data.file.name
  1513. }
  1514. if (that.swiperImg[0].urlBase) {
  1515. that.swiperImg.push(swipData)
  1516. } else {
  1517. //数据发生变化
  1518. that.swiperImg = []
  1519. that.swiperImg[0] = swipData;
  1520. }
  1521. //其他材料-流程最后一步
  1522. if (that.lotData.isShow.commitmentShow) {
  1523. that.lotData.commitmentFiles = that.swiperImg;
  1524. return
  1525. }
  1526. //当前步骤
  1527. let current = this.current;
  1528. switch (current) {
  1529. //合同
  1530. case 0:
  1531. if (that.lotData.blockType == "test") {
  1532. that.lotData.testCardApplication = that.swiperImg;
  1533. } else {
  1534. that.lotData.contractFiles = that.swiperImg;
  1535. }
  1536. break;
  1537. //责任人和经办人授权书
  1538. case 1:
  1539. that.lotData.empowerFiles = that.swiperImg;
  1540. break;
  1541. //责任人和经办人身份证
  1542. case 2:
  1543. that.lotData.idCardFiles = that.swiperImg;
  1544. break;
  1545. //客户证件扫描
  1546. case 3:
  1547. that.lotData.scanningFiles = that.swiperImg;
  1548. break;
  1549. //风险评估表
  1550. case 4:
  1551. that.lotData.riskFiles = that.swiperImg;
  1552. break;
  1553. //价格审批表
  1554. case 5:
  1555. that.lotData.priceFiles = that.swiperImg;
  1556. break;
  1557. }
  1558. }
  1559. })
  1560. }
  1561. },
  1562. /**文件上传成功后回调*/
  1563. importHandleChange(info) {
  1564. },
  1565. /**文件格式限制*/
  1566. importBeforeUpload(file) {
  1567. var fileType = file.type;
  1568. if (fileType === 'image') {
  1569. if (fileType.indexOf('image') < 0) {
  1570. this.$message.warning('请上传图片');
  1571. return false;
  1572. }
  1573. } else if (fileType === 'file') {
  1574. if (fileType.indexOf('image') >= 0) {
  1575. this.$message.warning('请上传文件');
  1576. return false;
  1577. }
  1578. }
  1579. return true
  1580. },
  1581. /**返回上一菜单*/
  1582. goBack() {
  1583. this.$router.go(-1);
  1584. this.closeCurrent();
  1585. },
  1586. /**下一步点击事件*/
  1587. nextSteps() {
  1588. if (this.swiperImg.length == 0) {
  1589. this.$message.warn("请先上传文件!")
  1590. return;
  1591. }
  1592. if (this.swiperImg.length == 1) {
  1593. if (!this.swiperImg[0].urlBase) {
  1594. this.$message.warn("请先上传文件!")
  1595. return;
  1596. }
  1597. }
  1598. if (this.current < this.steps.length) {
  1599. this.current = this.current + 1;
  1600. //其他材料
  1601. if (this.steps[this.current].id == "commitment") {
  1602. this.lotData.isShow.commitmentShow = true;
  1603. } else {
  1604. this.lotData.isShow.commitmentShow = false;
  1605. }
  1606. this.currentFileType(this.current);
  1607. }
  1608. },
  1609. /**上一步骤*/
  1610. prevSteps() {
  1611. if (this.current != 0) {
  1612. this.current = this.current - 1;
  1613. //其他材料
  1614. if (this.steps[this.current].id == "commitment") {
  1615. this.lotData.isShow.commitmentShow = true;
  1616. } else {
  1617. this.lotData.isShow.commitmentShow = false;
  1618. }
  1619. this.currentFileType(this.current);
  1620. }
  1621. },
  1622. /**步骤文件类型对应*/
  1623. currentFileType(current) {
  1624. let that = this;
  1625. this.swiperImg = {}
  1626. //卡类型
  1627. let blockType = that.lotData.blockType;
  1628. //其他材料-承诺涵
  1629. if (that.lotData.isShow.commitmentShow) {
  1630. that.swiperImg = that.lotData.commitmentFiles;
  1631. } else {
  1632. switch (current) {
  1633. case 0:
  1634. if (blockType == "test") {
  1635. that.swiperImg = that.lotData.testCardApplication
  1636. } else {
  1637. that.swiperImg = that.lotData.contractFiles
  1638. }
  1639. break;
  1640. case 1:
  1641. that.swiperImg = that.lotData.empowerFiles
  1642. break;
  1643. case 2:
  1644. that.swiperImg = that.lotData.idCardFiles
  1645. break;
  1646. case 3:
  1647. that.swiperImg = that.lotData.scanningFiles
  1648. break;
  1649. case 4:
  1650. that.swiperImg = that.lotData.riskFiles
  1651. break;
  1652. case 5:
  1653. that.swiperImg = that.lotData.priceFiles
  1654. break;
  1655. }
  1656. }
  1657. //拒绝下标为空 影响轮播样式
  1658. if (that.swiperImg.length == 0) {
  1659. that.swiperImg.push({})
  1660. }
  1661. },
  1662. /**提交稽核*/
  1663. submitLot() {
  1664. //卡类型
  1665. let blockType = this.lotData.blockType;
  1666. //价格突破
  1667. let control = this.lotData.control;
  1668. let data = {};
  1669. //测试卡
  1670. if (blockType == "test") {
  1671. data = {
  1672. //测试卡申请单
  1673. "testCardApplication": this.urlBaseJoin(this.lotData.testCardApplication, "url"),
  1674. //责任人经办人授权书
  1675. "empower": this.urlBaseJoin(this.lotData.empowerFiles, "url"),
  1676. //责任人经办人身份证
  1677. "idCard": this.urlBaseJoin(this.lotData.idCardFiles, "url"),
  1678. //客户证件扫描
  1679. "customerId": this.urlBaseJoin(this.lotData.scanningFiles, "url"),
  1680. //风险评估表
  1681. "risk": this.urlBaseJoin(this.lotData.riskFiles, "url"),
  1682. }
  1683. } else {
  1684. //突破价格管控
  1685. if (control == "controlY") {
  1686. data = {
  1687. //合同文件
  1688. "contract": this.urlBaseJoin(this.lotData.contractFiles, "url"),
  1689. //责任人经办人授权书
  1690. "empower": this.urlBaseJoin(this.lotData.empowerFiles, "url"),
  1691. //责任人经办人身份证
  1692. "idCard": this.urlBaseJoin(this.lotData.idCardFiles, "url"),
  1693. //客户证件扫描
  1694. "customerId": this.urlBaseJoin(this.lotData.scanningFiles, "url"),
  1695. //风险评估表
  1696. "risk": this.urlBaseJoin(this.lotData.riskFiles, "url"),
  1697. //省/集团价格审批
  1698. "priceApproval": this.urlBaseJoin(this.lotData.priceFiles, "url")
  1699. }
  1700. } else {
  1701. data = {
  1702. //合同文件
  1703. "contract": this.urlBaseJoin(this.lotData.contractFiles, "url"),
  1704. //责任人经办人授权书
  1705. "empower": this.urlBaseJoin(this.lotData.empowerFiles, "url"),
  1706. //责任人经办人身份证
  1707. "idCard": this.urlBaseJoin(this.lotData.idCardFiles, "url"),
  1708. //客户证件扫描
  1709. "customerId": this.urlBaseJoin(this.lotData.scanningFiles, "url"),
  1710. //风险评估表
  1711. "risk": this.urlBaseJoin(this.lotData.riskFiles, "url"),
  1712. }
  1713. }
  1714. }
  1715. //其他资料
  1716. this.postLotInfo(data);
  1717. },
  1718. postLotInfo(data) {
  1719. //任务Id
  1720. data["infoId"] = this.infoId;
  1721. //卡类型
  1722. data["blockType"] = this.lotData.blockType == "model" ? 1 : 0;
  1723. //是否突破价格管控
  1724. data["control"] = this.lotData.control == "controlY" ? 1 : 0;
  1725. //其他材料
  1726. data['commitment'] = this.urlBaseJoin(this.lotData.commitmentFiles, "url");
  1727. postAction(this.url.addOrEdit, data).then((res) => {
  1728. if (res.success) {
  1729. this.$message.success("提交成功");
  1730. this.$router.go(-1);
  1731. this.closeCurrent();
  1732. //this.$router.push({path: '/lot/check/task/check', query: {id: record.id}});
  1733. } else {
  1734. this.$message.error(res.message);
  1735. }
  1736. });
  1737. },
  1738. urlBaseJoin(dataArray, name) {
  1739. let newDataArr = [];
  1740. for (var i in dataArray) {
  1741. let dataArrayElementElement = dataArray[i][name];
  1742. newDataArr.push(dataArrayElementElement);
  1743. }
  1744. return newDataArr.toString();
  1745. }
  1746. }
  1747. }
  1748. ;
  1749. </script>
  1750. <style lang="less" scoped>
  1751. h3 {
  1752. margin: 20px 0 0 10px;
  1753. }
  1754. .thumb-example {
  1755. width: 864px;
  1756. margin-top: 20px;
  1757. // background: #000;
  1758. }
  1759. .swiper-slide {
  1760. background-size: cover;
  1761. background-position: center;
  1762. }
  1763. .gallery-top {
  1764. // height: 80% !important;
  1765. /*height: 600px;*/
  1766. width: 100%;
  1767. left: 15%;
  1768. margin-bottom: 50px
  1769. }
  1770. .gallery-thumbs {
  1771. height: 20% !important;
  1772. box-sizing: border-box;
  1773. padding: 10px 0px;
  1774. /* width: 864px;*/
  1775. margin-left: 2px;
  1776. .swiper-button-next {
  1777. right: 0px;
  1778. }
  1779. .swiper-button-prev {
  1780. left: 0px;
  1781. }
  1782. .swiper-button-next,
  1783. .swiper-button-prev {
  1784. background: #fff;
  1785. width: 45px;
  1786. text-align: center;
  1787. height: 101px;
  1788. top: 26%;
  1789. div {
  1790. margin-top: 30px;
  1791. background: rgb(207, 205, 205);
  1792. height: 45px;
  1793. border-radius: 50%;
  1794. img {
  1795. margin: 7px 0 0 2px;
  1796. width: 30px;
  1797. }
  1798. }
  1799. }
  1800. .swiper-button-next:hover div {
  1801. background: rgb(189, 186, 186);
  1802. }
  1803. .swiper-button-prev:hover div {
  1804. background: rgb(189, 186, 186);
  1805. }
  1806. }
  1807. .gallery-thumbs .swiper-slide {
  1808. width: 20%;
  1809. height: 80px;
  1810. // opacity: 0.4;
  1811. }
  1812. .gallery-thumbs .swiper-slide-active {
  1813. border: 2px solid red;
  1814. }
  1815. .markdown ul > li {
  1816. color: #000000d9;
  1817. font-size: 15px;
  1818. line-height: 3;
  1819. margin-left: 20px;
  1820. padding-left: 4px;
  1821. list-style-type: circle;
  1822. }
  1823. </style>