TaskCheckDetails.vue 86 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386
  1. <template>
  2. <a-spin :spinning="uploading" size="large" tip="正在提交资料,请勿关闭当前网页...">
  3. <div>
  4. <a-card :bordered="false" :title="'特审复开资料填写'" style="margin-top: 10px;">
  5. <a-form-model
  6. ref="form"
  7. :label-col="labelCol"
  8. :wrapper-col="wrapperCol"
  9. :model="model"
  10. :rules="rules"
  11. >
  12. <!-- 业务基本情况内容 -->
  13. <a-card :bordered="true">
  14. <div slot="title">
  15. 基础信息
  16. <span v-show="specialResult.basicInfoState == '1'">✅</span>
  17. <span v-show="specialResult.basicInfoState == '0'">❌</span>
  18. </div>
  19. <a-row>
  20. <a-col :span="24">
  21. <a-form-model-item label="用户选择" prop="userOpenState" v-bind="labelCol1">
  22. <a-radio-group v-model="model.userLable" button-style="solid" @change="changeUserLable()">
  23. <a-radio-button value="0">个人户</a-radio-button>
  24. <a-radio-button value="1">单位户</a-radio-button>
  25. </a-radio-group>
  26. </a-form-model-item>
  27. </a-col>
  28. <a-col :span="24">
  29. <a-form-model-item label="申请复开号码" prop="openingNumber" v-bind="labelCol1">
  30. <a-input :disabled="true" v-model="model.openingNumber" placeholder="申请复开号码"></a-input>
  31. </a-form-model-item>
  32. </a-col>
  33. <a-col :span="24">
  34. <a-form-model-item label="客户名称(使用人)" prop="customerName" v-bind="labelCol1">
  35. <a-input :disabled="true" v-model="model.customerName" placeholder="客户名称/使用人名称"></a-input>
  36. </a-form-model-item>
  37. </a-col>
  38. <a-col :span="24" v-if="model.userLable == '1'">
  39. <a-form-model-item label="单位名称" prop="customerName" v-bind="labelCol1">
  40. <a-input v-model="model.unitName" placeholder="单位名称"></a-input>
  41. </a-form-model-item>
  42. </a-col>
  43. <a-col :span="24">
  44. <a-form-model-item label="关停时间" prop="shutdownTime" v-bind="labelCol1">
  45. <a-date-picker :disabled="true" :style="{width:'100%'}" v-model="model.shutdownTime"
  46. format="YYYY-MM-DD HH:mm:ss"
  47. showTime valueFormat="YYYY-MM-DD HH:mm:ss"/>
  48. </a-form-model-item>
  49. </a-col>
  50. <a-col :span="24">
  51. <a-form-model-item label="申请复开原因" prop="reasonReopening" v-bind="labelCol1">
  52. <a-input :disabled="true" v-model="model.reasonReopening" placeholder="申请复开原因"></a-input>
  53. </a-form-model-item>
  54. </a-col>
  55. <a-col :span="24">
  56. <a-form-model-item label="材料标签选择" prop="userOpenState" v-bind="labelCol1">
  57. <a-radio-group v-model="model.materialLabel" button-style="solid">
  58. <a-radio-button v-if="model.materialLabel == '0'" value="0">材料不全(有特审)</a-radio-button>
  59. <a-radio-button v-if="model.materialLabel == '1'" value="1">材料齐全(无特审)</a-radio-button>
  60. </a-radio-group>
  61. </a-form-model-item>
  62. </a-col>
  63. <a-col :span="24">
  64. <a-form-model-item label="关停标签选择" prop="userOpenState" v-bind="labelCol1">
  65. <a-radio-group v-model="model.shutdownLabel" button-style="solid">
  66. <a-radio-button v-if="model.shutdownLabel == '0'" value="0">安防停机(高危漫游地)</a-radio-button>
  67. <a-radio-button v-if="model.shutdownLabel == '1'" value="1">安防关停(紫名单)</a-radio-button>
  68. <a-radio-button v-if="model.shutdownLabel == '2'" value="2">安防停机(专班研判)</a-radio-button>
  69. <a-radio-button v-if="model.shutdownLabel == '3'" value="3">安防停机(可复开)</a-radio-button>
  70. <a-radio-button v-if="model.shutdownLabel == '4'" value="4">沉默移动卡保护性单停</a-radio-button>
  71. <a-radio-button v-if="model.shutdownLabel == '5'" value="5">集团一点停复机(单停)</a-radio-button>
  72. <a-radio-button v-if="model.shutdownLabel == '6'" value="6">大数据保护停机单停</a-radio-button>
  73. <a-radio-button v-if="model.shutdownLabel == '7'" value="7">工信部断卡单停</a-radio-button>
  74. <a-radio-button v-if="model.shutdownLabel == '8'" value="8">实人核验未通过关停(单停)</a-radio-button>
  75. </a-radio-group>
  76. </a-form-model-item>
  77. </a-col>
  78. </a-row>
  79. </a-card>
  80. <!-- 系统实名制截图-->
  81. <a-card :bordered="true">
  82. <div slot="title">
  83. 系统实名制截图
  84. <span v-show="specialResult.nameFindComplianceState == '1'">✅</span>
  85. <span v-show="specialResult.nameFindComplianceState == '0'">❌</span>
  86. </div>
  87. <div class="clearfix">
  88. <div style="width: 50%;left: 25%;position: relative">
  89. <!-- swiper1 -->
  90. <swiper
  91. class="swiper gallery-top"
  92. :options="swiperOptionTop"
  93. ref="swiperTop"
  94. >
  95. <swiper-slide class="slide-1" v-for="(item, index) in nameFindCompliance" :key="item.id">
  96. <iframe
  97. v-if="item.urlBase"
  98. frameborder="1"
  99. :src="item.urlBase"
  100. ref="ifr"
  101. width="80%"
  102. height="400px"
  103. scrolling="auto">
  104. </iframe>
  105. <img style="width: 80%;height: 400px;border: 1px solid;"
  106. v-if="!item.urlBase" :src="noDataPng" border="1">
  107. <a-button v-if="item.urlBase && specialResult.nameFindComplianceState != '1'"
  108. style="display: block;margin-top: 10px;border-color: red;color: red"
  109. danger @click="removeFile(item,'nameFindCompliance')">移除
  110. </a-button>
  111. </swiper-slide>
  112. </swiper>
  113. <!-- swiper2 Thumbs -->
  114. <swiper
  115. class="swiper gallery-thumbs"
  116. :options="swiperOptionThumbs"
  117. ref="swiperThumbs"
  118. >
  119. <swiper-slide
  120. class="slide"
  121. style="width:100px;height:100px;"
  122. v-for="(item, index) in nameFindCompliance"
  123. :key="item.id"
  124. >
  125. <div v-if="item.urlBase" style="width: 100%;height: 96px;background: rgb(68,142,247);color: white">
  126. <span style="white-space:normal; word-break:break-all;overflow:hidden;">{{ item.fileName }}</span>
  127. </div>
  128. <img style="width: 100%;height: 96px"
  129. v-if="!item.urlBase" :src="noDataPng" border="1">
  130. </swiper-slide>
  131. <!-- 点我上传文件按钮-->
  132. <div class="clearfix">
  133. <a-upload
  134. v-if="specialResult.nameFindComplianceState != '1'"
  135. listType="picture-card"
  136. name="file"
  137. :multiple="false"
  138. :action="importMinioUploadAction"
  139. :customRequest="e => selfUploadContract(e, 'nameFindCompliance')"
  140. :headers="tokenHeader"
  141. :showUploadList="false"
  142. :beforeUpload="importBeforeUpload"
  143. @change="importHandleChange"
  144. >
  145. <div v-if="nameFindCompliance.length < 10">
  146. <a-icon type="plus"/>
  147. <div class="ant-upload-text">点我上传文件</div>
  148. </div>
  149. </a-upload>
  150. </div>
  151. <div class="swiper-button-next swiper-button-white" slot="button-next">
  152. <div>
  153. <!-- <img src="../../../../assets/images/nextImg.png" alt=""/>-->
  154. </div>
  155. </div>
  156. <div class="swiper-button-prev swiper-button-white" slot="button-prev">
  157. <div>
  158. <!-- <img src="../../../../assets/images/prevImg.png" alt=""/>-->
  159. </div>
  160. </div>
  161. </swiper>
  162. </div>
  163. <a-form-model-item style="left: 20%;width: 80%" label="实名制截图备注:" v-bind="labelCol1Plus">
  164. <a-textarea :disabled="specialResult.nameFindComplianceState == 1 ? true : false" style="height: 50px"
  165. v-model="nameFindComplianceRemark"
  166. placeholder="如没有系统实名制截图,需要说明原因"
  167. />
  168. <!-- :auto-size="{ minRows: 3, maxRows: 5 }"-->
  169. </a-form-model-item>
  170. <!-- 备注-->
  171. <li style="color: red"
  172. v-if="specialResult.nameFindComplianceState == 0 && specialResult.nameFindComplianceNote != null">
  173. 稽核结果备注:{{ specialResult.nameFindComplianceNote }}
  174. </li>
  175. </div>
  176. </a-card>
  177. <!-- 材料齐不全有特审核-->
  178. <a-card v-if="model.materialLabel == '0'" :bordered="true">
  179. <div slot="title">
  180. 特审单
  181. <span v-show="specialResult.specialReviewFormState == '1'">✅</span>
  182. <span v-show="specialResult.specialReviewFormState == '0'">❌</span>
  183. </div>
  184. <div class="clearfix">
  185. <div class="clearfix">
  186. <div style="width: 50%;left: 25%;position: relative">
  187. <!-- swiper1 -->
  188. <swiper
  189. class="swiper gallery-top"
  190. :options="swiperOptionTop"
  191. ref="swiperTop"
  192. >
  193. <swiper-slide class="slide-1" v-for="(item, index) in specialReviewForm" :key="item.id">
  194. <iframe
  195. v-if="item.urlBase"
  196. frameborder="1"
  197. :src="item.urlBase"
  198. ref="ifr"
  199. width="80%"
  200. height="400px"
  201. scrolling="auto">
  202. </iframe>
  203. <img style="width: 80%;height: 400px;border: 1px solid;"
  204. v-if="!item.urlBase" :src="noDataPng" border="1">
  205. <a-button v-if="item.urlBase && specialResult.specialReviewFormState != '1'"
  206. style="display: block;margin-top: 10px;border-color: red;color: red"
  207. danger @click="removeFile(item,'specialReviewForm')">移除
  208. </a-button>
  209. </swiper-slide>
  210. </swiper>
  211. <!-- swiper2 Thumbs -->
  212. <swiper
  213. class="swiper gallery-thumbs"
  214. :options="swiperOptionThumbs"
  215. ref="swiperThumbs"
  216. >
  217. <swiper-slide
  218. class="slide"
  219. style="width:100px;height:100px;"
  220. v-for="(item, index) in specialReviewForm"
  221. :key="item.id"
  222. >
  223. <div v-if="item.urlBase"
  224. style="width: 100%;height: 96px;background: rgb(68,142,247);color: white">
  225. <span style="white-space:normal; word-break:break-all;overflow:hidden;">{{
  226. item.fileName
  227. }}</span>
  228. </div>
  229. <img style="width: 100%;height: 96px"
  230. v-if="!item.urlBase" :src="noDataPng" border="1">
  231. </swiper-slide>
  232. <!-- 点我上传文件按钮-->
  233. <div class="clearfix">
  234. <a-upload
  235. v-if="specialResult.specialReviewFormState != '1'"
  236. listType="picture-card"
  237. name="file"
  238. :multiple="false"
  239. :action="importMinioUploadAction"
  240. :customRequest="e => selfUploadContract(e, 'specialReviewForm')"
  241. :headers="tokenHeader"
  242. :showUploadList="false"
  243. :beforeUpload="importBeforeUpload"
  244. @change="importHandleChange"
  245. >
  246. <div v-if="nameFindCompliance.length < 10">
  247. <a-icon type="plus"/>
  248. <div class="ant-upload-text">点我上传文件</div>
  249. </div>
  250. </a-upload>
  251. </div>
  252. <div class="swiper-button-next swiper-button-white" slot="button-next">
  253. <div>
  254. <!-- <img src="../../../../assets/images/nextImg.png" alt=""/>-->
  255. </div>
  256. </div>
  257. <div class="swiper-button-prev swiper-button-white" slot="button-prev">
  258. <div>
  259. <!-- <img src="../../../../assets/images/prevImg.png" alt=""/>-->
  260. </div>
  261. </div>
  262. </swiper>
  263. </div>
  264. </div>
  265. <!-- 备注-->
  266. <li style="color: red"
  267. v-if="specialResult.specialReviewFormState == 0 && specialResult.specialReviewFormNote != null">
  268. 稽核结果备注:{{ specialResult.specialReviewFormNote }}
  269. </li>
  270. </div>
  271. </a-card>
  272. <!-- 附件资料 -->
  273. <a-card :bordered="true">
  274. <div slot="title">
  275. 身份证照片/正反面
  276. <span v-show="specialResult.idCardState == '1'">✅</span>
  277. <span v-show="specialResult.idCardState == '0'">❌</span>
  278. </div>
  279. <div class="clearfix">
  280. <div style="width: 50%;left: 25%;position: relative">
  281. <!-- swiper1 -->
  282. <swiper
  283. class="swiper gallery-top"
  284. :options="swiperOptionTop"
  285. ref="swiperTop"
  286. >
  287. <swiper-slide class="slide-1" v-for="(item, index) in fileListIdCard" :key="item.id">
  288. <iframe
  289. v-if="item.urlBase"
  290. frameborder="1"
  291. :src="item.urlBase"
  292. ref="ifr"
  293. width="80%"
  294. height="400px"
  295. scrolling="auto">
  296. </iframe>
  297. <img style="width: 80%;height: 400px;border: 1px solid;"
  298. v-if="!item.urlBase" :src="noDataPng" border="1">
  299. <a-button v-if="item.urlBase && specialResult.idCardState != '1'"
  300. style="display: block;margin-top: 10px;border-color: red;color: red"
  301. danger @click="removeFile(item,'fileListIdCard')">移除
  302. </a-button>
  303. </swiper-slide>
  304. </swiper>
  305. <!-- swiper2 Thumbs -->
  306. <swiper
  307. class="swiper gallery-thumbs"
  308. :options="swiperOptionThumbs"
  309. ref="swiperThumbs"
  310. >
  311. <swiper-slide
  312. class="slide"
  313. style="width:100px;height:100px;"
  314. v-for="(item, index) in fileListIdCard"
  315. :key="item.id"
  316. >
  317. <div v-if="item.urlBase"
  318. style="width: 100%;height: 96px;background: rgb(68,142,247);color: white">
  319. <span style="white-space:normal; word-break:break-all;overflow:hidden;">{{
  320. item.fileName
  321. }}</span>
  322. </div>
  323. <img style="width: 100%;height: 96px"
  324. v-if="!item.urlBase" :src="noDataPng" border="1">
  325. </swiper-slide>
  326. <!-- 点我上传文件按钮-->
  327. <div class="clearfix">
  328. <a-upload
  329. v-if="specialResult.idCardState != '1'"
  330. listType="picture-card"
  331. name="file"
  332. :multiple="false"
  333. :action="importMinioUploadAction"
  334. :customRequest="e => selfUploadContract(e, 'fileListIdCard')"
  335. :headers="tokenHeader"
  336. :showUploadList="false"
  337. :beforeUpload="importBeforeUpload"
  338. @change="importHandleChange"
  339. >
  340. <div v-if="fileListIdCard.length < 10">
  341. <a-icon type="plus"/>
  342. <div class="ant-upload-text">点我上传文件</div>
  343. </div>
  344. </a-upload>
  345. </div>
  346. <div class="swiper-button-next swiper-button-white" slot="button-next">
  347. <div>
  348. <!-- <img src="../../../../assets/images/nextImg.png" alt=""/>-->
  349. </div>
  350. </div>
  351. <div class="swiper-button-prev swiper-button-white" slot="button-prev">
  352. <div>
  353. <!-- <img src="../../../../assets/images/prevImg.png" alt=""/>-->
  354. </div>
  355. </div>
  356. </swiper>
  357. </div>
  358. <!-- 备注-->
  359. <li style="color: red" v-if="specialResult.idCardState == 0 && specialResult.idCardNote != null">
  360. 稽核结果备注:{{ specialResult.idCardNote }}
  361. </li>
  362. </div>
  363. </a-card>
  364. <!-- 手持证件半身照片-->
  365. <a-card :bordered="true">
  366. <div slot="title">
  367. 手持证件半身照片
  368. <span v-show="specialResult.handCertificateState == '1'">✅</span>
  369. <span v-show="specialResult.handCertificateState == '0'">❌</span>
  370. </div>
  371. <div class="clearfix">
  372. <div style="width: 50%;left: 25%;position: relative">
  373. <!-- swiper1 -->
  374. <swiper
  375. class="swiper gallery-top"
  376. :options="swiperOptionTop"
  377. ref="swiperTop"
  378. >
  379. <swiper-slide class="slide-1" v-for="(item, index) in fileListHandCertificate" :key="item.id">
  380. <iframe
  381. v-if="item.urlBase"
  382. frameborder="1"
  383. :src="item.urlBase"
  384. ref="ifr"
  385. width="80%"
  386. height="400px"
  387. scrolling="auto">
  388. </iframe>
  389. <img style="width: 80%;height: 400px;border: 1px solid;"
  390. v-if="!item.urlBase" :src="noDataPng" border="1">
  391. <a-button v-if="item.urlBase && specialResult.handCertificateState != '1'"
  392. style="display: block;margin-top: 10px;border-color: red;color: red"
  393. danger @click="removeFile(item,'fileListHandCertificate')">移除
  394. </a-button>
  395. </swiper-slide>
  396. </swiper>
  397. <!-- swiper2 Thumbs -->
  398. <swiper
  399. class="swiper gallery-thumbs"
  400. :options="swiperOptionThumbs"
  401. ref="swiperThumbs"
  402. >
  403. <swiper-slide
  404. class="slide"
  405. style="width:100px;height:100px;"
  406. v-for="(item, index) in fileListHandCertificate"
  407. :key="item.id"
  408. >
  409. <div v-if="item.urlBase"
  410. style="width: 100%;height: 96px;background: rgb(68,142,247);color: white">
  411. <span style="white-space:normal; word-break:break-all;overflow:hidden;">{{
  412. item.fileName
  413. }}</span>
  414. </div>
  415. <img style="width: 100%;height: 96px"
  416. v-if="!item.urlBase" :src="noDataPng" border="1">
  417. </swiper-slide>
  418. <!-- 点我上传文件按钮-->
  419. <div class="clearfix">
  420. <a-upload
  421. v-if="specialResult.handCertificateState != '1'"
  422. listType="picture-card"
  423. name="file"
  424. :multiple="false"
  425. :action="importMinioUploadAction"
  426. :customRequest="e => selfUploadContract(e, 'fileListHandCertificate')"
  427. :headers="tokenHeader"
  428. :showUploadList="false"
  429. :beforeUpload="importBeforeUpload"
  430. @change="importHandleChange"
  431. >
  432. <div v-if="fileListHandCertificate.length < 10">
  433. <a-icon type="plus"/>
  434. <div class="ant-upload-text">点我上传文件</div>
  435. </div>
  436. </a-upload>
  437. </div>
  438. <div class="swiper-button-next swiper-button-white" slot="button-next">
  439. <div>
  440. <!-- <img src="../../../../assets/images/nextImg.png" alt=""/>-->
  441. </div>
  442. </div>
  443. <div class="swiper-button-prev swiper-button-white" slot="button-prev">
  444. <div>
  445. <!-- <img src="../../../../assets/images/prevImg.png" alt=""/>-->
  446. </div>
  447. </div>
  448. </swiper>
  449. </div>
  450. <!-- 备注-->
  451. <li style="color: red"
  452. v-if="specialResult.handCertificateState == 0 && specialResult.handCertificateNote != null">
  453. 稽核结果备注:{{ specialResult.handCertificateNote }}
  454. </li>
  455. </div>
  456. </a-card>
  457. <!-- 号卡照片-->
  458. <a-card v-if="model.userLable == '0'" :bordered="true">
  459. <div slot="title">
  460. 号卡照片
  461. <span v-show="specialResult.numberCardState == '1'">✅</span>
  462. <span v-show="specialResult.numberCardState == '0'">❌</span>
  463. </div>
  464. <div class="clearfix">
  465. <div style="width: 50%;left: 25%;position: relative">
  466. <!-- swiper1 -->
  467. <swiper
  468. class="swiper gallery-top"
  469. :options="swiperOptionTop"
  470. ref="swiperTop"
  471. >
  472. <swiper-slide class="slide-1" v-for="(item, index) in fileListNumberCard" :key="item.id">
  473. <iframe
  474. v-if="item.urlBase"
  475. frameborder="1"
  476. :src="item.urlBase"
  477. ref="ifr"
  478. width="80%"
  479. height="400px"
  480. scrolling="auto">
  481. </iframe>
  482. <img style="width: 80%;height: 400px;border: 1px solid;"
  483. v-if="!item.urlBase" :src="noDataPng" border="1">
  484. <a-button v-if="item.urlBase && specialResult.numberCardState != '1'"
  485. style="display: block;margin-top: 10px;border-color: red;color: red"
  486. danger @click="removeFile(item,'fileListNumberCard')">移除
  487. </a-button>
  488. </swiper-slide>
  489. </swiper>
  490. <!-- swiper2 Thumbs -->
  491. <swiper
  492. class="swiper gallery-thumbs"
  493. :options="swiperOptionThumbs"
  494. ref="swiperThumbs"
  495. >
  496. <swiper-slide
  497. class="slide"
  498. style="width:100px;height:100px;"
  499. v-for="(item, index) in fileListNumberCard"
  500. :key="item.id"
  501. >
  502. <div v-if="item.urlBase"
  503. style="width: 100%;height: 96px;background: rgb(68,142,247);color: white">
  504. <span style="white-space:normal; word-break:break-all;overflow:hidden;">{{
  505. item.fileName
  506. }}</span>
  507. </div>
  508. <img style="width: 100%;height: 96px"
  509. v-if="!item.urlBase" :src="noDataPng" border="1">
  510. </swiper-slide>
  511. <!-- 点我上传文件按钮-->
  512. <div class="clearfix">
  513. <a-upload
  514. v-if="specialResult.numberCardState != '1'"
  515. listType="picture-card"
  516. name="file"
  517. :multiple="false"
  518. :action="importMinioUploadAction"
  519. :customRequest="e => selfUploadContract(e, 'fileListNumberCard')"
  520. :headers="tokenHeader"
  521. :showUploadList="false"
  522. :beforeUpload="importBeforeUpload"
  523. @change="importHandleChange"
  524. >
  525. <div v-if="fileListNumberCard.length < 10">
  526. <a-icon type="plus"/>
  527. <div class="ant-upload-text">点我上传文件</div>
  528. </div>
  529. </a-upload>
  530. </div>
  531. <div class="swiper-button-next swiper-button-white" slot="button-next">
  532. <div>
  533. <!-- <img src="../../../../assets/images/nextImg.png" alt=""/>-->
  534. </div>
  535. </div>
  536. <div class="swiper-button-prev swiper-button-white" slot="button-prev">
  537. <div>
  538. <!-- <img src="../../../../assets/images/prevImg.png" alt=""/>-->
  539. </div>
  540. </div>
  541. </swiper>
  542. </div>
  543. <!-- 备注-->
  544. <li style="color: red" v-if="specialResult.numberCardState == 0 && specialResult.numberCardNote != null">
  545. 稽核结果备注:{{ specialResult.numberCardNote }}
  546. </li>
  547. </div>
  548. </a-card>
  549. <!-- 使用人证件-->
  550. <a-card v-if="model.userLable == '1'" :bordered="true">
  551. <div slot="title">
  552. 使用人证件
  553. <span v-show="specialResult.userCertificateState == '1'">✅</span>
  554. <span v-show="specialResult.userCertificateState == '0'">❌</span>
  555. </div>
  556. <div class="clearfix">
  557. <div style="width: 50%;left: 25%;position: relative"></div>
  558. <!-- swiper1 -->
  559. <swiper
  560. class="swiper gallery-top"
  561. :options="swiperOptionTop"
  562. ref="swiperTop"
  563. >
  564. <swiper-slide class="slide-1" v-for="(item, index) in fileListUserCertificate" :key="item.id">
  565. <iframe
  566. v-if="item.urlBase"
  567. frameborder="1"
  568. :src="item.urlBase"
  569. ref="ifr"
  570. width="80%"
  571. height="400px"
  572. scrolling="auto">
  573. </iframe>
  574. <img style="width: 80%;height: 400px;border: 1px solid;"
  575. v-if="!item.urlBase" :src="noDataPng" border="1">
  576. <a-button v-if="item.urlBase && specialResult.userCertificateState != '1'"
  577. style="display: block;margin-top: 10px;border-color: red;color: red"
  578. danger @click="removeFile(item,'fileListUserCertificate')">移除
  579. </a-button>
  580. </swiper-slide>
  581. </swiper>
  582. <!-- swiper2 Thumbs -->
  583. <swiper
  584. class="swiper gallery-thumbs"
  585. :options="swiperOptionThumbs"
  586. ref="swiperThumbs"
  587. >
  588. <swiper-slide
  589. class="slide"
  590. style="width:100px;height:100px;"
  591. v-for="(item, index) in fileListUserCertificate"
  592. :key="item.id"
  593. >
  594. <div v-if="item.urlBase"
  595. style="width: 100%;height: 96px;background: rgb(68,142,247);color: white">
  596. <span style="white-space:normal; word-break:break-all;overflow:hidden;">{{
  597. item.fileName
  598. }}</span>
  599. </div>
  600. <img style="width: 100%;height: 96px"
  601. v-if="!item.urlBase" :src="noDataPng" border="1">
  602. </swiper-slide>
  603. <!-- 点我上传文件按钮-->
  604. <div class="clearfix">
  605. <a-upload
  606. v-if="specialResult.userCertificateState != '1'"
  607. listType="picture-card"
  608. name="file"
  609. :multiple="false"
  610. :action="importMinioUploadAction"
  611. :customRequest="e => selfUploadContract(e, 'fileListUserCertificate')"
  612. :headers="tokenHeader"
  613. :showUploadList="false"
  614. :beforeUpload="importBeforeUpload"
  615. @change="importHandleChange"
  616. >
  617. <div v-if="fileListUserCertificate.length < 10">
  618. <a-icon type="plus"/>
  619. <div class="ant-upload-text">点我上传文件</div>
  620. </div>
  621. </a-upload>
  622. </div>
  623. <div class="swiper-button-next swiper-button-white" slot="button-next">
  624. <div>
  625. <!-- <img src="../../../../assets/images/nextImg.png" alt=""/>-->
  626. </div>
  627. </div>
  628. <div class="swiper-button-prev swiper-button-white" slot="button-prev">
  629. <div>
  630. <!-- <img src="../../../../assets/images/prevImg.png" alt=""/>-->
  631. </div>
  632. </div>
  633. </swiper>
  634. <!-- 备注-->
  635. <li style="color: red"
  636. v-if="specialResult.userCertificateState == 0 && specialResult.userCertificateNote != null">
  637. 稽核结果备注:{{ specialResult.userCertificateNote }}
  638. </li>
  639. </div>
  640. </a-card>
  641. <!-- 营业执照副本(盖公章)-->
  642. <a-card v-if="model.userLable == '1'" :bordered="true">
  643. <div slot="title">
  644. 营业执照副本(盖公章)
  645. <span v-show="specialResult.businessLicenseState == '1'">✅</span>
  646. <span v-show="specialResult.businessLicenseState == '0'">❌</span>
  647. </div>
  648. <div class="clearfix">
  649. <div style="width: 50%;left: 25%;position: relative">
  650. <!-- swiper1 -->
  651. <swiper
  652. class="swiper gallery-top"
  653. :options="swiperOptionTop"
  654. ref="swiperTop"
  655. >
  656. <swiper-slide class="slide-1" v-for="(item, index) in fileListBusiness" :key="item.id">
  657. <iframe
  658. v-if="item.urlBase"
  659. frameborder="1"
  660. :src="item.urlBase"
  661. ref="ifr"
  662. width="80%"
  663. height="400px"
  664. scrolling="auto">
  665. </iframe>
  666. <img style="width: 80%;height: 400px;border: 1px solid;"
  667. v-if="!item.urlBase" :src="noDataPng" border="1">
  668. <a-button v-if="item.urlBase && specialResult.businessLicenseState != '1'"
  669. style="display: block;margin-top: 10px;border-color: red;color: red"
  670. danger @click="removeFile(item,'fileListBusiness')">移除
  671. </a-button>
  672. </swiper-slide>
  673. </swiper>
  674. <!-- swiper2 Thumbs -->
  675. <swiper
  676. class="swiper gallery-thumbs"
  677. :options="swiperOptionThumbs"
  678. ref="swiperThumbs"
  679. >
  680. <swiper-slide
  681. class="slide"
  682. style="width:100px;height:100px;"
  683. v-for="(item, index) in fileListBusiness"
  684. :key="item.id"
  685. >
  686. <div v-if="item.urlBase"
  687. style="width: 100%;height: 96px;background: rgb(68,142,247);color: white">
  688. <span style="white-space:normal; word-break:break-all;overflow:hidden;">{{
  689. item.fileName
  690. }}</span>
  691. </div>
  692. <img style="width: 100%;height: 96px"
  693. v-if="!item.urlBase" :src="noDataPng" border="1">
  694. </swiper-slide>
  695. <!-- 点我上传文件按钮-->
  696. <div class="clearfix">
  697. <a-upload
  698. v-if="specialResult.businessLicenseState != '1'"
  699. listType="picture-card"
  700. name="file"
  701. :multiple="false"
  702. :action="importMinioUploadAction"
  703. :customRequest="e => selfUploadContract(e, 'fileListBusiness')"
  704. :headers="tokenHeader"
  705. :showUploadList="false"
  706. :beforeUpload="importBeforeUpload"
  707. @change="importHandleChange"
  708. >
  709. <div v-if="fileListBusiness.length < 10">
  710. <a-icon type="plus"/>
  711. <div class="ant-upload-text">点我上传文件</div>
  712. </div>
  713. </a-upload>
  714. </div>
  715. <div class="swiper-button-next swiper-button-white" slot="button-next">
  716. <div>
  717. <!-- <img src="../../../../assets/images/nextImg.png" alt=""/>-->
  718. </div>
  719. </div>
  720. <div class="swiper-button-prev swiper-button-white" slot="button-prev">
  721. <div>
  722. <!-- <img src="../../../../assets/images/prevImg.png" alt=""/>-->
  723. </div>
  724. </div>
  725. </swiper>
  726. </div>
  727. <!-- 备注-->
  728. <li style="color: red"
  729. v-if="specialResult.businessLicenseState == 0 && specialResult.businessLicenseNote != null">
  730. 稽核结果备注:{{ specialResult.businessLicenseNote }}
  731. </li>
  732. </div>
  733. </a-card>
  734. <!-- 介绍信-->
  735. <a-card v-if="model.userLable == '1'" :bordered="true">
  736. <div slot="title">
  737. 介绍信
  738. <span v-show="specialResult.letterIntroductionState == '1'">✅</span>
  739. <span v-show="specialResult.letterIntroductionState == '0'">❌</span>
  740. </div>
  741. <div class="clearfix">
  742. <!-- swiper1 -->
  743. <swiper
  744. class="swiper gallery-top"
  745. :options="swiperOptionTop"
  746. ref="swiperTop"
  747. >
  748. <swiper-slide class="slide-1" v-for="(item, index) in fileListIntroduction" :key="item.id">
  749. <iframe
  750. v-if="item.urlBase"
  751. frameborder="1"
  752. :src="item.urlBase"
  753. ref="ifr"
  754. width="80%"
  755. height="400px"
  756. scrolling="auto">
  757. </iframe>
  758. <img style="width: 80%;height: 400px;border: 1px solid;"
  759. v-if="!item.urlBase" :src="noDataPng" border="1">
  760. <a-button v-if="item.urlBase && specialResult.letterIntroductionState != '1'"
  761. style="display: block;margin-top: 10px;border-color: red;color: red"
  762. danger @click="removeFile(item,'fileListIntroduction')">移除
  763. </a-button>
  764. </swiper-slide>
  765. </swiper>
  766. <!-- swiper2 Thumbs -->
  767. <swiper
  768. class="swiper gallery-thumbs"
  769. :options="swiperOptionThumbs"
  770. ref="swiperThumbs"
  771. >
  772. <swiper-slide
  773. class="slide"
  774. style="width:100px;height:100px;"
  775. v-for="(item, index) in fileListIntroduction"
  776. :key="item.id"
  777. >
  778. <div v-if="item.urlBase"
  779. style="width: 100%;height: 96px;background: rgb(68,142,247);color: white">
  780. <span style="white-space:normal; word-break:break-all;overflow:hidden;">{{
  781. item.fileName
  782. }}</span>
  783. </div>
  784. <img style="width: 100%;height: 96px"
  785. v-if="!item.urlBase" :src="noDataPng" border="1">
  786. </swiper-slide>
  787. <!-- 点我上传文件按钮-->
  788. <div class="clearfix">
  789. <a-upload
  790. v-if="specialResult.letterIntroductionState != '1'"
  791. listType="picture-card"
  792. name="file"
  793. :multiple="false"
  794. :action="importMinioUploadAction"
  795. :customRequest="e => selfUploadContract(e, 'fileListIntroduction')"
  796. :headers="tokenHeader"
  797. :showUploadList="false"
  798. :beforeUpload="importBeforeUpload"
  799. @change="importHandleChange"
  800. >
  801. <div v-if="fileListIntroduction.length < 10">
  802. <a-icon type="plus"/>
  803. <div class="ant-upload-text">点我上传文件</div>
  804. </div>
  805. </a-upload>
  806. </div>
  807. <div class="swiper-button-next swiper-button-white" slot="button-next">
  808. <div>
  809. <!-- <img src="../../../../assets/images/nextImg.png" alt=""/>-->
  810. </div>
  811. </div>
  812. <div class="swiper-button-prev swiper-button-white" slot="button-prev">
  813. <div>
  814. <!-- <img src="../../../../assets/images/prevImg.png" alt=""/>-->
  815. </div>
  816. </div>
  817. </swiper>
  818. <!-- 备注-->
  819. <li style="color: red"
  820. v-if="specialResult.letterIntroductionState == 0 && specialResult.letterIntroductionNote != null">
  821. 稽核结果备注:{{ specialResult.letterIntroductionNote }}
  822. </li>
  823. </div>
  824. </a-card>
  825. <!-- 防诈骗承诺涵(使用人签署)-->
  826. <a-card :bordered="true">
  827. <div slot="title">
  828. 防诈骗承诺涵(使用人签署)
  829. <span v-show="specialResult.fraudPreventionState == '1'">✅</span>
  830. <span v-show="specialResult.fraudPreventionState == '0'">❌</span>
  831. </div>
  832. <div class="clearfix">
  833. <div style="width: 50%;left: 25%;position: relative">
  834. <!-- swiper1 -->
  835. <swiper
  836. class="swiper gallery-top"
  837. :options="swiperOptionTop"
  838. ref="swiperTop"
  839. >
  840. <swiper-slide class="slide-1" v-for="(item, index) in fileListLetter" :key="item.id">
  841. <iframe
  842. v-if="item.urlBase"
  843. frameborder="1"
  844. :src="item.urlBase"
  845. ref="ifr"
  846. width="80%"
  847. height="400px"
  848. scrolling="auto">
  849. </iframe>
  850. <img style="width: 80%;height: 400px;border: 1px solid;"
  851. v-if="!item.urlBase" :src="noDataPng" border="1">
  852. <a-button v-if="item.urlBase && specialResult.fraudPreventionState != '1'"
  853. style="display: block;margin-top: 10px;border-color: red;color: red"
  854. danger @click="removeFile(item,'fileListLetter')">移除
  855. </a-button>
  856. </swiper-slide>
  857. </swiper>
  858. <!-- swiper2 Thumbs -->
  859. <swiper
  860. class="swiper gallery-thumbs"
  861. :options="swiperOptionThumbs"
  862. ref="swiperThumbs"
  863. >
  864. <swiper-slide
  865. class="slide"
  866. style="width:100px;height:100px;"
  867. v-for="(item, index) in fileListLetter"
  868. :key="item.id"
  869. >
  870. <div v-if="item.urlBase"
  871. style="width: 100%;height: 96px;background: rgb(68,142,247);color: white">
  872. <span style="white-space:normal; word-break:break-all;overflow:hidden;">{{
  873. item.fileName
  874. }}</span>
  875. </div>
  876. <img style="width: 100%;height: 96px"
  877. v-if="!item.urlBase" :src="noDataPng" border="1">
  878. </swiper-slide>
  879. <!-- 点我上传文件按钮-->
  880. <div class="clearfix">
  881. <a-upload
  882. v-if="specialResult.fraudPreventionState != '1'"
  883. listType="picture-card"
  884. name="file"
  885. :multiple="false"
  886. :action="importMinioUploadAction"
  887. :customRequest="e => selfUploadContract(e, 'fileListLetter')"
  888. :headers="tokenHeader"
  889. :showUploadList="false"
  890. :beforeUpload="importBeforeUpload"
  891. @change="importHandleChange"
  892. >
  893. <div v-if="fileListLetter.length < 10">
  894. <a-icon type="plus"/>
  895. <div class="ant-upload-text">点我上传文件</div>
  896. </div>
  897. </a-upload>
  898. </div>
  899. <div class="swiper-button-next swiper-button-white" slot="button-next">
  900. <div>
  901. <!-- <img src="../../../../assets/images/nextImg.png" alt=""/>-->
  902. </div>
  903. </div>
  904. <div class="swiper-button-prev swiper-button-white" slot="button-prev">
  905. <div>
  906. <!-- <img src="../../../../assets/images/prevImg.png" alt=""/>-->
  907. </div>
  908. </div>
  909. </swiper>
  910. </div>
  911. <!-- 备注-->
  912. <li style="color: red"
  913. v-if="specialResult.fraudPreventionState == 0 && specialResult.fraudPreventionNote != null">
  914. 稽核结果备注:{{ specialResult.fraudPreventionNote }}
  915. </li>
  916. </div>
  917. </a-card>
  918. <!-- 消费凭证-->
  919. <a-card v-if="model.shutdownLabel == '0'" :bordered="true">
  920. <div slot="title">
  921. 消费凭证
  922. <span v-show="specialResult.consumptionVoucherState == '1'">✅</span>
  923. <span v-show="specialResult.consumptionVoucherState == '0'">❌</span>
  924. </div>
  925. <div class="clearfix">
  926. <div style="width: 50%;left: 25%;position: relative">
  927. <!-- swiper1 -->
  928. <swiper
  929. class="swiper gallery-top"
  930. :options="swiperOptionTop"
  931. ref="swiperTop"
  932. >
  933. <swiper-slide class="slide-1" v-for="(item, index) in fileListVoucher" :key="item.id">
  934. <iframe
  935. v-if="item.urlBase"
  936. frameborder="1"
  937. :src="item.urlBase"
  938. ref="ifr"
  939. width="80%"
  940. height="400px"
  941. scrolling="auto">
  942. </iframe>
  943. <img style="width: 80%;height: 400px;border: 1px solid;"
  944. v-if="!item.urlBase" :src="noDataPng" border="1">
  945. <a-button v-if="item.urlBase && specialResult.consumptionVoucherState != '1'"
  946. style="display: block;margin-top: 10px;border-color: red;color: red"
  947. danger @click="removeFile(item,'fileListVoucher')">移除
  948. </a-button>
  949. </swiper-slide>
  950. </swiper>
  951. <!-- swiper2 Thumbs -->
  952. <swiper
  953. class="swiper gallery-thumbs"
  954. :options="swiperOptionThumbs"
  955. ref="swiperThumbs"
  956. >
  957. <swiper-slide
  958. class="slide"
  959. style="width:100px;height:100px;"
  960. v-for="(item, index) in fileListVoucher"
  961. :key="item.id"
  962. >
  963. <div v-if="item.urlBase"
  964. style="width: 100%;height: 96px;background: rgb(68,142,247);color: white">
  965. <span style="white-space:normal; word-break:break-all;overflow:hidden;">{{
  966. item.fileName
  967. }}</span>
  968. </div>
  969. <img style="width: 100%;height: 96px"
  970. v-if="!item.urlBase" :src="noDataPng" border="1">
  971. </swiper-slide>
  972. <!-- 点我上传文件按钮-->
  973. <div class="clearfix">
  974. <a-upload
  975. v-if="specialResult.consumptionVoucherState != '1'"
  976. listType="picture-card"
  977. name="file"
  978. :multiple="false"
  979. :action="importMinioUploadAction"
  980. :customRequest="e => selfUploadContract(e, 'fileListVoucher')"
  981. :headers="tokenHeader"
  982. :showUploadList="false"
  983. :beforeUpload="importBeforeUpload"
  984. @change="importHandleChange"
  985. >
  986. <div v-if="fileListVoucher.length < 10">
  987. <a-icon type="plus"/>
  988. <div class="ant-upload-text">点我上传文件</div>
  989. </div>
  990. </a-upload>
  991. </div>
  992. <div class="swiper-button-next swiper-button-white" slot="button-next">
  993. <div>
  994. <!-- <img src="../../../../assets/images/nextImg.png" alt=""/>-->
  995. </div>
  996. </div>
  997. <div class="swiper-button-prev swiper-button-white" slot="button-prev">
  998. <div>
  999. <!-- <img src="../../../../assets/images/prevImg.png" alt=""/>-->
  1000. </div>
  1001. </div>
  1002. </swiper>
  1003. </div>
  1004. <!-- 备注-->
  1005. <li style="color: red"
  1006. v-if="specialResult.consumptionVoucherState == 0 && specialResult.consumptionVoucherNote != null">
  1007. 稽核结果备注:{{ specialResult.consumptionVoucherNote }}
  1008. </li>
  1009. </div>
  1010. </a-card>
  1011. <!-- 承诺视频-->
  1012. <a-card v-if="model.shutdownLabel == '5'" title="承诺视频" :bordered="true">
  1013. <div slot="title">
  1014. 承诺视频
  1015. <span v-show="specialResult.commitmentVideoState == '1'">✅</span>
  1016. <span v-show="specialResult.commitmentVideoState == '0'">❌</span>
  1017. </div>
  1018. <div class="clearfix">
  1019. <div style="width: 50%;left: 25%;position: relative">
  1020. <!-- swiper1 -->
  1021. <swiper
  1022. class="swiper gallery-top"
  1023. :options="swiperOptionTop"
  1024. ref="swiperTop"
  1025. >
  1026. <swiper-slide class="slide-1" v-for="(item, index) in fileListVideo" :key="item.id">
  1027. <iframe
  1028. v-if="item.urlBase"
  1029. frameborder="1"
  1030. :src="item.urlBase"
  1031. ref="ifr"
  1032. width="80%"
  1033. height="400px"
  1034. scrolling="auto">
  1035. </iframe>
  1036. <img style="width: 80%;height: 400px;border: 1px solid;"
  1037. v-if="!item.urlBase" :src="noDataPng" border="1">
  1038. <a-button v-if="item.urlBase && specialResult.commitmentVideoState != '1'"
  1039. style="display: block;margin-top: 10px;border-color: red;color: red"
  1040. danger @click="removeFile(item,'fileListVideo')">移除
  1041. </a-button>
  1042. </swiper-slide>
  1043. </swiper>
  1044. <!-- swiper2 Thumbs -->
  1045. <swiper
  1046. class="swiper gallery-thumbs"
  1047. :options="swiperOptionThumbs"
  1048. ref="swiperThumbs"
  1049. >
  1050. <swiper-slide
  1051. class="slide"
  1052. style="width:100px;height:100px;"
  1053. v-for="(item, index) in fileListVideo"
  1054. :key="item.id"
  1055. >
  1056. <div v-if="item.urlBase"
  1057. style="width: 100%;height: 96px;background: rgb(68,142,247);color: white">
  1058. <span style="white-space:normal; word-break:break-all;overflow:hidden;">{{
  1059. item.fileName
  1060. }}</span>
  1061. </div>
  1062. <img style="width: 100%;height: 96px"
  1063. v-if="!item.urlBase" :src="noDataPng" border="1">
  1064. </swiper-slide>
  1065. <!-- 点我上传文件按钮-->
  1066. <div class="clearfix">
  1067. <a-upload
  1068. v-if="specialResult.commitmentVideoState != '1'"
  1069. listType="picture-card"
  1070. name="file"
  1071. :multiple="false"
  1072. :action="importMinioUploadAction"
  1073. :customRequest="e => selfUploadContract(e, 'fileListVideo')"
  1074. :headers="tokenHeader"
  1075. :showUploadList="false"
  1076. :beforeUpload="importBeforeUpload"
  1077. @change="importHandleChange"
  1078. >
  1079. <div v-if="fileListVideo.length < 10">
  1080. <a-icon type="plus"/>
  1081. <div class="ant-upload-text">点我上传文件</div>
  1082. </div>
  1083. </a-upload>
  1084. </div>
  1085. <div class="swiper-button-next swiper-button-white" slot="button-next">
  1086. <div>
  1087. <!-- <img src="../../../../assets/images/nextImg.png" alt=""/>-->
  1088. </div>
  1089. </div>
  1090. <div class="swiper-button-prev swiper-button-white" slot="button-prev">
  1091. <div>
  1092. <!-- <img src="../../../../assets/images/prevImg.png" alt=""/>-->
  1093. </div>
  1094. </div>
  1095. </swiper>
  1096. </div>
  1097. <!-- 备注-->
  1098. <li style="color: red"
  1099. v-if="specialResult.commitmentVideoState == 0 && specialResult.commitmentVideoNote != null">
  1100. 稽核结果备注:{{ specialResult.commitmentVideoNote }}
  1101. </li>
  1102. </div>
  1103. </a-card>
  1104. </a-form-model>
  1105. </a-card>
  1106. </div>
  1107. </a-spin>
  1108. </template>
  1109. <script>
  1110. import {httpAction, postAction} from "@api/manage";
  1111. /*无数据图片*/
  1112. import noDataPng from '@/assets/nodata.png'
  1113. import Vue from "vue";
  1114. import {ACCESS_TOKEN, TENANT_ID} from "@/store/mutation-types";
  1115. let Base64 = require('js-base64').Base64
  1116. export default {
  1117. name: 'TaskUploadData',
  1118. inject: ['closeCurrent'],
  1119. components: {
  1120. noDataPng
  1121. },
  1122. data() {
  1123. return {
  1124. //缩略与大图数据源
  1125. swiperId: 0 + 1,
  1126. //轮播配置
  1127. swiperOptionTop: {
  1128. zoom: true,
  1129. loop: false,
  1130. loopedSlides: 5, // looped slides should be the same
  1131. spaceBetween: 10,
  1132. observer: true, //修改swiper自己或子元素时,自动初始化swiper
  1133. observeParents: true, //修改swiper的父元素时,自动初始化swiper
  1134. // autoplay: { //自动轮播
  1135. // delay: 2000,
  1136. // disableOnInteraction: false
  1137. // },
  1138. navigation: {
  1139. nextEl: '.swiper-button-next',
  1140. prevEl: '.swiper-button-prev'
  1141. }
  1142. },
  1143. swiperOptionThumbs: {
  1144. loop: false,
  1145. loopedSlides: 5, // looped slides should be the same
  1146. spaceBetween: 10,
  1147. centeredSlides: true,
  1148. slidesPerView: 'auto',
  1149. touchRatio: 0.2,
  1150. slideToClickedSlide: true,
  1151. navigation: {
  1152. nextEl: '.swiper-button-next',
  1153. prevEl: '.swiper-button-prev'
  1154. }
  1155. },
  1156. /**无数据图片*/
  1157. noDataPng: noDataPng,
  1158. //结果
  1159. specialResult: {},
  1160. //上级传参
  1161. query: {},
  1162. //客户信息ID
  1163. infoId: "",
  1164. //客户资料ID
  1165. dataId: "",
  1166. model: {
  1167. "shutdownLabel": "0",
  1168. "materialLabel": "0",
  1169. "userLable": "0",
  1170. "openingNumber": ""
  1171. },
  1172. //系统实名制截图
  1173. nameFindCompliance: [{}],
  1174. //系统实名制截图备注
  1175. nameFindComplianceRemark: "",
  1176. //特审单
  1177. specialReviewForm: [{}],
  1178. //身份证正反面
  1179. fileListIdCard: [{}],
  1180. //手持证件照片
  1181. fileListHandCertificate: [{}],
  1182. //号卡照片
  1183. fileListNumberCard: [{}],
  1184. //防诈骗承诺涵
  1185. fileListLetter: [{}],
  1186. //营业执照副本
  1187. fileListBusiness: [{}],
  1188. //介绍信
  1189. fileListIntroduction: [{}],
  1190. //使用人证件
  1191. fileListUserCertificate: [{}],
  1192. //消费凭证
  1193. fileListVoucher: [{}],
  1194. //承诺视频
  1195. fileListVideo: [{}],
  1196. //表单验证
  1197. rules: {
  1198. openingNumber: [
  1199. {required: true, message: '必须输入手机号'},
  1200. ],
  1201. customerName: [
  1202. {required: true, message: '必须输入客户名称'},
  1203. ],
  1204. shutdownTime: [
  1205. {required: true, message: '必须选择关停时间'},
  1206. ]
  1207. },
  1208. previewVisible: false,
  1209. previewVideo: false,
  1210. previewImage: "",
  1211. uploading: false,
  1212. formState: {},
  1213. labelCol: {span: 1},
  1214. wrapperCol: {span: 23},
  1215. // 1列
  1216. labelCol1: {
  1217. labelCol: {
  1218. xs: {span: 24},
  1219. sm: {span: 2},
  1220. },
  1221. wrapperCol: {
  1222. xs: {span: 24},
  1223. sm: {span: 21},
  1224. }
  1225. },
  1226. // 2列
  1227. labelCol2: {
  1228. labelCol: {
  1229. xs: {span: 24},
  1230. sm: {span: 4},
  1231. },
  1232. wrapperCol: {
  1233. xs: {span: 24},
  1234. sm: {span: 18},
  1235. }
  1236. },
  1237. labelCol1Plus: {
  1238. labelCol: {
  1239. xs: {span: 24},
  1240. sm: {span: 2},
  1241. },
  1242. wrapperCol: {
  1243. xs: {span: 24},
  1244. sm: {span: 15},
  1245. }
  1246. },
  1247. url: {
  1248. importExcel: window._CONFIG['domainURL'] + "/smsCheck/task/importCustomerExcel",
  1249. minioUpload: "/smsCheck/customerData/uploadMinio",
  1250. findById: "/special/examination/find/id",
  1251. findCheckState: "/special/examination/find/check/log",
  1252. editInfo:"/special/examination/edit/info"
  1253. },
  1254. videoState: false, // 视频播放状态
  1255. // 学时
  1256. studyTime: {
  1257. currentTime: 0, // 当前已学时长
  1258. duration: 0 // 总时长
  1259. },
  1260. timer: {}, // 定时器
  1261. pauseTimer: {} // 暂停定时器
  1262. }
  1263. },
  1264. computed: {
  1265. importMinioUploadAction() {
  1266. return window._CONFIG['domianURL'] + this.url.minioUpload;
  1267. },
  1268. tokenHeader() {
  1269. let head = {'X-Access-Token': Vue.ls.get(ACCESS_TOKEN)}
  1270. let tenantid = Vue.ls.get(TENANT_ID)
  1271. if (tenantid) {
  1272. head['tenant-id'] = tenantid
  1273. }
  1274. return head;
  1275. }
  1276. },
  1277. props: {
  1278. taskInfo: {
  1279. type: Object,
  1280. require: true
  1281. },
  1282. poster: {
  1283. type: String,
  1284. required: false,
  1285. default: ""
  1286. },
  1287. src: {
  1288. type: String,
  1289. required: true
  1290. },
  1291. controls: {
  1292. type: Boolean,
  1293. required: false,
  1294. default: true
  1295. },
  1296. control: {
  1297. type: Boolean,
  1298. required: false,
  1299. default: false
  1300. },
  1301. videoData: {
  1302. type: Object,
  1303. required: true
  1304. }
  1305. },
  1306. watch: {
  1307. // 监听操作
  1308. videoData(val, oldVal) {
  1309. const {currentTime, duration} = val;
  1310. if (currentTime && duration && currentTime < duration) {
  1311. this.hintOperate();
  1312. }
  1313. }
  1314. },
  1315. created() {
  1316. this.infoId = this.$route.query.id;
  1317. this.query.data = this.$route.query.data;
  1318. //复开号码
  1319. this.model.openingNumber = this.query.data.smsNumber
  1320. //客户名称
  1321. this.model.customerName = this.query.data.customerName
  1322. //关停时间
  1323. this.model.shutdownTime = this.query.data.shutdownLabelDate
  1324. if (this.$route.query.rectification) {
  1325. //整改操作获取回填信息
  1326. this.findById(this.infoId);
  1327. }
  1328. },
  1329. mounted() {
  1330. // 实现swiper双向控制
  1331. this.$nextTick(() => {
  1332. const swiperTop = this.$refs.swiperTop.swiper
  1333. const swiperThumbs = this.$refs.swiperThumbs.swiper
  1334. swiperTop.controller.control = swiperThumbs
  1335. swiperThumbs.controller.control = swiperTop
  1336. })
  1337. /**监听视频拨放*/
  1338. this.$refs.myVideo.addEventListener("play", () => {
  1339. this.openTimer();
  1340. });
  1341. /**监听视频暂停*/
  1342. this.$refs.myVideo.addEventListener("pause", () => {
  1343. this.closeTimer();
  1344. });
  1345. },
  1346. methods: {
  1347. /**文件上传成功后回调*/
  1348. importHandleChange(info) {
  1349. },
  1350. /**文件格式限制*/
  1351. importBeforeUpload(file) {
  1352. var fileType = file.type;
  1353. if (fileType === 'image') {
  1354. if (fileType.indexOf('image') < 0) {
  1355. this.$message.warning('请上传图片');
  1356. return false;
  1357. }
  1358. } else if (fileType === 'file') {
  1359. if (fileType.indexOf('image') >= 0) {
  1360. this.$message.warning('请上传文件');
  1361. return false;
  1362. }
  1363. }
  1364. return true
  1365. },
  1366. /**移除文件*/
  1367. removeFile(fileData, fileAttribute) {
  1368. let that = this;
  1369. //处理轮播数据
  1370. let swiperImg = that[fileAttribute];
  1371. if (swiperImg) {
  1372. let number = swiperImg.indexOf(fileData);
  1373. swiperImg.splice(number, 1)
  1374. if (swiperImg.length == 0) {
  1375. swiperImg.push({})
  1376. }
  1377. that[fileAttribute] = swiperImg
  1378. }
  1379. },
  1380. /**自定义的上传文件方法*/
  1381. selfUploadContract(data, fileAttribute) {
  1382. let that = this;
  1383. if (data.file) {
  1384. let formData = new FormData();
  1385. formData.append('file', data.file)
  1386. postAction(this.url.minioUpload, formData).then((res) => {
  1387. if (res.success) {
  1388. that.swiperId = that.swiperId + 1;
  1389. //文件链接
  1390. let filePath = res.message;
  1391. let swipData = {
  1392. id: that.swiperId,
  1393. urlBase: window._CONFIG['onlinePreviewDomainURL'] + '?url='
  1394. + encodeURIComponent(
  1395. Base64.encode(
  1396. (filePath)
  1397. )),
  1398. url: filePath,
  1399. fileName: data.file.name
  1400. }
  1401. if (that[fileAttribute][0].urlBase) {
  1402. that[fileAttribute].push(swipData)
  1403. } else {
  1404. that[fileAttribute] = []
  1405. //数据发生变化
  1406. that[fileAttribute][0] = swipData;
  1407. }
  1408. console.log(that.nameFindCompliance)
  1409. }
  1410. })
  1411. }
  1412. },
  1413. /**获取稽核结果*/
  1414. findCheckState(id) {
  1415. let that = this;
  1416. let model = {
  1417. "dataId": id,
  1418. }
  1419. postAction(this.url.findCheckState, model)
  1420. .then((res) => {
  1421. if (res.success) {
  1422. that.specialResult = res.result;
  1423. }
  1424. })
  1425. },
  1426. /**包装轮播数据*/
  1427. packageArr(data) {
  1428. let id = 0;
  1429. let newArr = []
  1430. if (data == null) {
  1431. newArr.push({})
  1432. return newArr;
  1433. }
  1434. let splice = data.split(",");
  1435. for (var i in splice) {
  1436. id = id + 1;
  1437. let filePath = splice[i];
  1438. if (filePath == "") {
  1439. break;
  1440. }
  1441. let fileName = filePath.split("/");
  1442. fileName = fileName[fileName.length - 1];
  1443. let swipData = {
  1444. id: id,
  1445. urlBase: window._CONFIG['onlinePreviewDomainURL'] + '?url='
  1446. + encodeURIComponent(
  1447. Base64.encode(
  1448. (filePath)
  1449. )),
  1450. url: filePath,
  1451. fileName: fileName
  1452. }
  1453. newArr.push(swipData);
  1454. }
  1455. return newArr;
  1456. },
  1457. /**整改操作获取回填信息*/
  1458. findById(id) {
  1459. let that = this;
  1460. let model = {
  1461. "infoId": id,
  1462. }
  1463. postAction(this.url.findById, model)
  1464. .then((res) => {
  1465. if (res.success) {
  1466. this.result = res.result;
  1467. that.dataId = this.result.id;
  1468. //获取稽核结果
  1469. that.findCheckState(that.dataId)
  1470. this.model.userLable = this.result.userLable.toString();
  1471. this.model.openingNumber = this.result.openingNumber;
  1472. this.model.customerName = this.result.customerName;
  1473. this.model.unitName = this.result.unitName;
  1474. this.model.shutdownTime = this.result.shutdownTime
  1475. this.model.reasonReopening = this.result.reasonReopening
  1476. this.model.materialLabel = this.result.materialLabel.toString();
  1477. this.model.shutdownLabel = this.result.shutdownLabel.toString();
  1478. this.specialNote = this.result.specialNote;
  1479. this.model.status = this.result.status;
  1480. //身份证正反面
  1481. this.fileListIdCard = this.packageArr(this.result.idCard);
  1482. //手持证件照片
  1483. this.fileListHandCertificate = this.packageArr(this.result.handCertificate);
  1484. //号卡照片
  1485. //号卡照片
  1486. this.fileListNumberCard = this.packageArr(this.result.numberCard);
  1487. //使用人证件
  1488. this.fileListUserCertificate = this.packageArr(this.result.userCertificate);
  1489. //营业执照副本
  1490. this.fileListBusiness = this.packageArr(this.result.businessLicense);
  1491. //介绍信
  1492. this.fileListIntroduction = this.packageArr(this.result.letterIntroduction);
  1493. //防诈骗承诺涵
  1494. this.fileListLetter = this.packageArr(this.result.fraudPrevention);
  1495. //消费凭证
  1496. this.fileListVoucher = this.packageArr(this.result.consumptionVoucher);
  1497. //承诺视频
  1498. this.fileListVideo = this.packageArr(this.result.commitmentVideo);
  1499. //系统实名制截图
  1500. this.nameFindCompliance = this.packageArr(this.result.nameFindCompliance);
  1501. if (this.result.nameFindComplianceRemark != null) {
  1502. this.nameFindComplianceRemark = this.result.nameFindComplianceRemark
  1503. }
  1504. //特审单截图
  1505. this.specialReviewForm = this.packageArr(this.result.specialReviewForm);
  1506. } else {
  1507. this.$message.error("查询失败");
  1508. }
  1509. }).finally(() => {
  1510. })
  1511. },
  1512. // 开启定时器
  1513. openTimer() {
  1514. this.timer = setInterval(() => {
  1515. this.$emit("videoStudyTime", this.studyTime);
  1516. }, 5000);
  1517. },
  1518. // 关闭定时器
  1519. closeTimer() {
  1520. clearInterval(this.timer);
  1521. this.$emit("videoStudyTime", this.studyTime);
  1522. },
  1523. // 开启暂停定时器
  1524. openPauseTimer() {
  1525. this.pauseTimer = setInterval(() => {
  1526. this.hintOperate();
  1527. }, 600000);
  1528. },
  1529. // 关闭暂停定时器
  1530. closePauseTimer() {
  1531. clearInterval(this.pauseTimer);
  1532. },
  1533. // 提示操作
  1534. hintOperate() {
  1535. this.operateVideo();
  1536. this.$alert("请点击确认继续学习", "提示", {
  1537. confirmButtonText: "确定",
  1538. confirmButtonClass: "hint-btn",
  1539. showClose: false,
  1540. callback: action => {
  1541. this.$refs.myVideo.currentTime = this.videoData.currentTime;
  1542. this.operateVideo();
  1543. this.openPauseTimer();
  1544. }
  1545. });
  1546. },
  1547. // 获取当前播放位置
  1548. timeupdate(e) {
  1549. this.studyTime.currentTime = e.target.currentTime;
  1550. this.studyTime.duration = e.target.duration ? e.target.duration : 0;
  1551. },
  1552. // 操作视频播放、暂停
  1553. operateVideo() {
  1554. if (!this.src) {
  1555. this.$message({message: "暂无视频资源,请查看其他视频!"});
  1556. return false;
  1557. }
  1558. if (this.$refs.myVideo.paused) {
  1559. this.$refs.myVideo.play();
  1560. this.videoState = true;
  1561. } else {
  1562. this.$refs.myVideo.pause();
  1563. this.videoState = false;
  1564. }
  1565. },
  1566. beforeUploadNameFindCompliance(file) {
  1567. if (this.nameFindCompliance.length > 2) {//判断上传的图片数量
  1568. return false
  1569. }
  1570. this.exeBaseSpecialNameFindCompliance(file)
  1571. return false
  1572. },
  1573. beforeUploadSpecialReviewForm(file) {
  1574. if (this.specialReviewForm.length > 2) {//判断上传的图片数量
  1575. return false
  1576. }
  1577. this.exeBaseSpecialReviewForm(file)
  1578. return false
  1579. },
  1580. beforeUploadIdCard(file) {
  1581. if (this.fileListIdCard.length > 2) {//判断上传的图片数量
  1582. return false
  1583. }
  1584. this.exeBaseIdCard(file)
  1585. return false
  1586. },
  1587. beforeUploadCertificate(file) {
  1588. if (this.fileListHandCertificate.length > 1) {//判断上传的图片数量
  1589. return false
  1590. }
  1591. this.exeBaseCertificate(file)
  1592. return false
  1593. },
  1594. beforeUploadNumberCard(file) {
  1595. if (this.fileListNumberCard.length > 1) {//判断上传的图片数量
  1596. return false
  1597. }
  1598. this.exeBaseNumberCard(file)
  1599. return false
  1600. },
  1601. beforeUploadLetter(file) {
  1602. if (this.fileListLetter.length > 1) {//判断上传的图片数量
  1603. return false
  1604. }
  1605. this.exeBaseLetter(file)
  1606. return false
  1607. },
  1608. beforeUploadBusiness(file) {
  1609. if (this.fileListBusiness.length > 1) {//判断上传的图片数量
  1610. return false
  1611. }
  1612. this.exeBaseBusiness(file)
  1613. return false
  1614. },
  1615. beforeUploadIntroduction(file) {
  1616. if (this.fileListIntroduction.length > 1) {//判断上传的图片数量
  1617. return false
  1618. }
  1619. this.exeBaseIntroduction(file)
  1620. return false
  1621. },
  1622. beforeUploadUserCertificate(file) {
  1623. if (this.fileListUserCertificate.length > 1) {//判断上传的图片数量
  1624. return false
  1625. }
  1626. this.exeBaseUserCertificate(file)
  1627. return false
  1628. },
  1629. beforeUploadVoucher(file) {
  1630. if (this.fileListVoucher.length > 1) {//判断上传的图片数量
  1631. return false
  1632. }
  1633. this.exeBaseVocher(file)
  1634. return false
  1635. },
  1636. beforeUploadVideo(file) {
  1637. if (this.fileListVideo.length > 1) {//判断上传的图片数量
  1638. return false
  1639. }
  1640. this.exeBaseVideo(file)
  1641. return false
  1642. },
  1643. async exeBaseSpecialNameFindCompliance(file) {
  1644. await this.getBase64(file, (imageUrl) => {
  1645. if (this.nameFindCompliance.length < 2 && this.preventSpecialNameFindCompliance(imageUrl)) {//判断图片数量及去重
  1646. const file2 = file
  1647. file2.url = imageUrl
  1648. this.nameFindCompliance = [...this.nameFindCompliance, file]
  1649. this.loading = false
  1650. }
  1651. }).then((result) => {
  1652. console.log(result)
  1653. })
  1654. },
  1655. async exeBaseSpecialReviewForm(file) {
  1656. await this.getBase64(file, (imageUrl) => {
  1657. if (this.specialReviewForm.length < 2 && this.preventSpecialReviewForm(imageUrl)) {//判断图片数量及去重
  1658. const file2 = file
  1659. file2.url = imageUrl
  1660. this.specialReviewForm = [...this.specialReviewForm, file]
  1661. this.loading = false
  1662. }
  1663. }).then((result) => {
  1664. console.log(result)
  1665. })
  1666. },
  1667. async exeBaseIdCard(file) {
  1668. await this.getBase64(file, (imageUrl) => {
  1669. if (this.fileListIdCard.length < 2 && this.preventRepeatIdCard(imageUrl)) {//判断图片数量及去重
  1670. const file2 = file
  1671. file2.url = imageUrl
  1672. this.fileListIdCard = [...this.fileListIdCard, file]
  1673. this.loading = false
  1674. }
  1675. }).then((result) => {
  1676. console.log(result)
  1677. })
  1678. },
  1679. async exeBaseCertificate(file) {
  1680. await this.getBase64(file, (imageUrl) => {
  1681. if (this.fileListHandCertificate.length < 1 && this.preventRepeatCertificate(imageUrl)) {//判断图片数量及去重
  1682. const file2 = file
  1683. file2.url = imageUrl
  1684. this.fileListHandCertificate = [...this.fileListHandCertificate, file]
  1685. this.loading = false
  1686. }
  1687. }).then((result) => {
  1688. console.log(result)
  1689. })
  1690. },
  1691. async exeBaseNumberCard(file) {
  1692. await this.getBase64(file, (imageUrl) => {
  1693. if (this.fileListNumberCard.length < 1 && this.preventRepeatNumberCard(imageUrl)) {//判断图片数量及去重
  1694. const file2 = file
  1695. file2.url = imageUrl
  1696. this.fileListNumberCard = [...this.fileListNumberCard, file]
  1697. this.loading = false
  1698. }
  1699. }).then((result) => {
  1700. console.log(result)
  1701. })
  1702. },
  1703. async exeBaseLetter(file) {
  1704. await this.getBase64(file, (imageUrl) => {
  1705. if (this.fileListLetter.length < 1 && this.preventRepeatLetter(imageUrl)) {//判断图片数量及去重
  1706. const file2 = file
  1707. file2.url = imageUrl
  1708. this.fileListLetter = [...this.fileListLetter, file]
  1709. this.loading = false
  1710. }
  1711. }).then((result) => {
  1712. console.log(result)
  1713. })
  1714. },
  1715. async exeBaseBusiness(file) {
  1716. await this.getBase64(file, (imageUrl) => {
  1717. if (this.fileListBusiness.length < 1 && this.preventRepeatBusiness(imageUrl)) {//判断图片数量及去重
  1718. const file2 = file
  1719. file2.url = imageUrl
  1720. this.fileListBusiness = [...this.fileListBusiness, file]
  1721. this.loading = false
  1722. }
  1723. }).then((result) => {
  1724. console.log(result)
  1725. })
  1726. },
  1727. async exeBaseIntroduction(file) {
  1728. await this.getBase64(file, (imageUrl) => {
  1729. if (this.fileListIntroduction.length < 1 && this.preventRepeatIntroduction(imageUrl)) {//判断图片数量及去重
  1730. const file2 = file
  1731. file2.url = imageUrl
  1732. this.fileListIntroduction = [...this.fileListIntroduction, file]
  1733. this.loading = false
  1734. }
  1735. }).then((result) => {
  1736. console.log(result)
  1737. })
  1738. },
  1739. async exeBaseUserCertificate(file) {
  1740. await this.getBase64(file, (imageUrl) => {
  1741. if (this.fileListUserCertificate.length < 1 && this.preventRepeatUserCertificate(imageUrl)) {//判断图片数量及去重
  1742. const file2 = file
  1743. file2.url = imageUrl
  1744. this.fileListUserCertificate = [...this.fileListUserCertificate, file]
  1745. this.loading = false
  1746. }
  1747. }).then((result) => {
  1748. console.log(result)
  1749. })
  1750. },
  1751. async exeBaseVocher(file) {
  1752. await this.getBase64(file, (imageUrl) => {
  1753. if (this.fileListVoucher.length < 1 && this.preventRepeatVoucher(imageUrl)) {//判断图片数量及去重
  1754. const file2 = file
  1755. file2.url = imageUrl
  1756. this.fileListVoucher = [...this.fileListVoucher, file]
  1757. this.loading = false
  1758. }
  1759. }).then((result) => {
  1760. console.log(result)
  1761. })
  1762. },
  1763. async exeBaseVideo(file) {
  1764. await this.getBase64(file, (imageUrl) => {
  1765. if (this.fileListVideo.length < 1 && this.preventRepeatVideo(imageUrl)) {//判断图片数量及去重
  1766. const file2 = file
  1767. file2.url = imageUrl
  1768. this.fileListVideo = [...this.fileListVideo, file]
  1769. this.loading = false
  1770. }
  1771. }).then((result) => {
  1772. console.log(result)
  1773. })
  1774. },
  1775. //删除实名制截图
  1776. handleRemoveNameFindCompliance(file) {//删除图片
  1777. const index = this.nameFindCompliance.indexOf(file)
  1778. const newFileList = this.nameFindCompliance.slice()
  1779. newFileList.splice(index, 1)
  1780. this.nameFindCompliance = newFileList
  1781. },
  1782. //删除特审单
  1783. handleRemoveSpecialReviewForm(file) {//删除图片
  1784. const index = this.specialReviewForm.indexOf(file)
  1785. const newFileList = this.specialReviewForm.slice()
  1786. newFileList.splice(index, 1)
  1787. this.specialReviewForm = newFileList
  1788. },
  1789. //删除身份证
  1790. handleRemoveIdCard(file) {//删除图片
  1791. const index = this.fileListIdCard.indexOf(file)
  1792. const newFileList = this.fileListIdCard.slice()
  1793. newFileList.splice(index, 1)
  1794. this.fileListIdCard = newFileList
  1795. },
  1796. //删除手持身份证
  1797. handleRemoveCertificate(file) {//删除图片
  1798. const index = this.fileListHandCertificate.indexOf(file)
  1799. const newFileList = this.fileListHandCertificate.slice()
  1800. newFileList.splice(index, 1)
  1801. this.fileListHandCertificate = newFileList
  1802. },
  1803. //删除号卡
  1804. handleRemoveNumberCard(file) {
  1805. const index = this.fileListNumberCard.indexOf(file)
  1806. const newFileList = this.fileListNumberCard.slice()
  1807. newFileList.splice(index, 1)
  1808. this.fileListNumberCard = newFileList
  1809. },
  1810. //删除防诈骗承诺涵
  1811. handleRemoveLetter(file) {
  1812. const index = this.fileListLetter.indexOf(file)
  1813. const newFileList = this.fileListLetter.slice()
  1814. newFileList.splice(index, 1)
  1815. this.fileListLetter = newFileList
  1816. },
  1817. //删除营业执照副本
  1818. handleRemoveBusiness(file) {
  1819. const index = this.fileListBusiness.indexOf(file)
  1820. const newFileList = this.fileListBusiness.slice()
  1821. newFileList.splice(index, 1)
  1822. this.fileListBusiness = newFileList
  1823. },
  1824. //删除介绍信
  1825. handleRemoveIntroduction(file) {
  1826. const index = this.fileListIntroduction.indexOf(file)
  1827. const newFileList = this.fileListIntroduction.slice()
  1828. newFileList.splice(index, 1)
  1829. this.fileListIntroduction = newFileList
  1830. },
  1831. //删除使用人证件
  1832. handleRemoveUserCertificate(file) {
  1833. const index = this.fileListUserCertificate.indexOf(file)
  1834. const newFileList = this.fileListUserCertificate.slice()
  1835. newFileList.splice(index, 1)
  1836. this.fileListUserCertificate = newFileList
  1837. },
  1838. //消费凭证
  1839. handleRemoveVoucher(file) {
  1840. const index = this.fileListVoucher.indexOf(file)
  1841. const newFileList = this.fileListVoucher.slice()
  1842. newFileList.splice(index, 1)
  1843. this.fileListVoucher = newFileList
  1844. },
  1845. //承诺视频
  1846. handleRemoveVideo(file) {
  1847. const index = this.fileListVideo.indexOf(file)
  1848. const newFileList = this.fileListVideo.slice()
  1849. newFileList.splice(index, 1)
  1850. this.fileListVideo = newFileList
  1851. },
  1852. //排除相同图片
  1853. preventRepeatCertificate(url) {
  1854. // 排除相同图片
  1855. for (let i = 0, len = this.fileListHandCertificate.length; i < len; i++) {
  1856. if (this.fileListIdCard[i].url === url) {
  1857. return false
  1858. }
  1859. }
  1860. return true
  1861. },
  1862. //排除相同图片
  1863. preventSpecialNameFindCompliance(url) {
  1864. // 排除相同图片
  1865. for (let i = 0, len = this.nameFindCompliance.length; i < len; i++) {
  1866. if (this.nameFindCompliance[i].url === url) {
  1867. return false
  1868. }
  1869. }
  1870. return true
  1871. },
  1872. //排除相同图片
  1873. preventSpecialReviewForm(url) {
  1874. // 排除相同图片
  1875. for (let i = 0, len = this.specialReviewForm.length; i < len; i++) {
  1876. if (this.specialReviewForm[i].url === url) {
  1877. return false
  1878. }
  1879. }
  1880. return true
  1881. },
  1882. //排除相同图片
  1883. preventRepeatIdCard(url) {
  1884. // 排除相同图片
  1885. for (let i = 0, len = this.fileListIdCard.length; i < len; i++) {
  1886. if (this.fileListIdCard[i].url === url) {
  1887. return false
  1888. }
  1889. }
  1890. return true
  1891. },
  1892. //排除相同图片
  1893. preventRepeatNumberCard(url) {
  1894. // 排除相同图片
  1895. for (let i = 0, len = this.fileListNumberCard.length; i < len; i++) {
  1896. if (this.fileListNumberCard[i].url === url) {
  1897. return false
  1898. }
  1899. }
  1900. return true
  1901. },
  1902. //排除相同图片
  1903. preventRepeatLetter(url) {
  1904. // 排除相同图片
  1905. for (let i = 0, len = this.fileListLetter.length; i < len; i++) {
  1906. if (this.fileListLetter[i].url === url) {
  1907. return false
  1908. }
  1909. }
  1910. return true
  1911. },
  1912. preventRepeatBusiness(url) {
  1913. // 排除相同图片
  1914. for (let i = 0, len = this.fileListBusiness.length; i < len; i++) {
  1915. if (this.fileListBusiness[i].url === url) {
  1916. return false
  1917. }
  1918. }
  1919. return true
  1920. },
  1921. preventRepeatIntroduction(url) {
  1922. // 排除相同图片
  1923. for (let i = 0, len = this.fileListIntroduction.length; i < len; i++) {
  1924. if (this.fileListIntroduction[i].url === url) {
  1925. return false
  1926. }
  1927. }
  1928. return true
  1929. },
  1930. preventRepeatUserCertificate(url) {
  1931. // 排除相同图片
  1932. for (let i = 0, len = this.fileListUserCertificate.length; i < len; i++) {
  1933. if (this.fileListUserCertificate[i].url === url) {
  1934. return false
  1935. }
  1936. }
  1937. return true
  1938. },
  1939. preventRepeatVoucher(url) {
  1940. // 排除相同图片
  1941. for (let i = 0, len = this.fileListVoucher.length; i < len; i++) {
  1942. if (this.fileListVoucher[i].url === url) {
  1943. return false
  1944. }
  1945. }
  1946. return true
  1947. },
  1948. preventRepeatVideo(url) {
  1949. // 排除相同图片
  1950. for (let i = 0, len = this.fileListVideo.length; i < len; i++) {
  1951. if (this.fileListVideo[i].url === url) {
  1952. return false
  1953. }
  1954. }
  1955. return true
  1956. },
  1957. getBase64(file, callback) {
  1958. return new Promise((resolve) => {
  1959. let reader = new FileReader()
  1960. reader.readAsDataURL(file)
  1961. reader.onload = () => {
  1962. callback(reader.result)
  1963. resolve('成功')
  1964. }
  1965. })
  1966. },
  1967. //点击关闭图片预览
  1968. handleCancel() {//点击关闭图片预览
  1969. this.previewVisible = false;
  1970. },
  1971. handleVideoCancel() {
  1972. this.previewVideo = false;
  1973. },
  1974. //点击查看大图
  1975. async handlePreview(file) {//点击查看大图
  1976. let reader = new FileReader();
  1977. reader.readAsArrayBuffer(file);
  1978. reader.onload = (loadEvent) => {
  1979. let arrayBuffer = loadEvent.target.result;
  1980. this.previewImage = arrayBuffer
  1981. };
  1982. this.previewVisible = true;
  1983. if (!file.url && !file.preview) {
  1984. file.preview = await this.getBase64(file.originFileObj);
  1985. }
  1986. this.previewImage = file.url || file.preview;
  1987. console.log(this.previewImage)
  1988. this.previewVisible = true;
  1989. },
  1990. //点击查看视频大图
  1991. async handlePreviewVideo(file) {//点击查看大图
  1992. if (!file.url && !file.preview) {
  1993. file.preview = await this.getBase64(file.originFileObj);
  1994. }
  1995. this.previewImage = file.url || file.preview;
  1996. this.previewVideo = true;
  1997. },
  1998. //提交申请
  1999. handleUpload() {
  2000. //材料不全有特审
  2001. if (this.model.materialLabel == '0') {
  2002. if (this.specialReviewForm.length == 0 || !this.specialReviewForm[0].urlBase) {
  2003. this.$warning({
  2004. title: '提示',
  2005. content: '材料不全请上特审单',
  2006. })
  2007. return;
  2008. }
  2009. }
  2010. //系统实名制截图
  2011. if ((this.nameFindCompliance.length == 0 || !this.nameFindCompliance[0].urlBase) && this.nameFindComplianceRemark.length == 0) {
  2012. this.$warning({
  2013. title: '提示',
  2014. content: '请上传系统实名制截图,如没有截图则填写备注信息',
  2015. })
  2016. return
  2017. }
  2018. if (this.model.materialLabel == '1' && (this.fileListIdCard.length == 0 || !this.fileListIdCard[0].urlBase ||
  2019. this.fileListHandCertificate.length == 0 || !this.fileListHandCertificate[0].urlBase || this.fileListNumberCard.length == 0
  2020. || !this.fileListNumberCard[0].urlBase
  2021. || this.fileListLetter.length == 0 || !this.fileListLetter[0].urlBase
  2022. || this.fileListVoucher.length == 0 || !this.fileListVoucher[0].urlBase)) {
  2023. this.$warning({
  2024. title: '提示',
  2025. content: '无特审,请上传全部材料',
  2026. })
  2027. return
  2028. }
  2029. let formData = {
  2030. infoId:this.infoId,
  2031. idCard:this.urlBaseJoin(this.fileListIdCard,"url"),
  2032. handCertificate:this.urlBaseJoin(this.fileListHandCertificate,"url"),
  2033. numberCard:this.urlBaseJoin(this.fileListNumberCard,"url"),
  2034. fraudPrevention:this.urlBaseJoin(this.fileListLetter,"url"),
  2035. businessLicense:this.urlBaseJoin(this.fileListBusiness,"url"),
  2036. letterIntroduction:this.urlBaseJoin(this.fileListIntroduction,"url"),
  2037. userCertificate:this.urlBaseJoin(this.fileListUserCertificate,"url"),
  2038. consumptionVoucher:this.urlBaseJoin(this.fileListVoucher,"url"),
  2039. commitmentVideo:this.urlBaseJoin(this.fileListVideo,"url"),
  2040. nameFindCompliance:this.urlBaseJoin(this.nameFindCompliance,"url"),
  2041. nameFindComplianceRemark:this.nameFindComplianceRemark,
  2042. specialReviewForm:this.urlBaseJoin(this.specialReviewForm,"url"),
  2043. };
  2044. //基础信息
  2045. for (var i in this.model) {
  2046. let modelElement = this.model[i];
  2047. formData[i] = modelElement;
  2048. }
  2049. this.uploading = true;
  2050. httpAction(this.url.editInfo, formData, "POST")
  2051. .then((res) => {
  2052. if (res.success) {
  2053. this.uploading = false;
  2054. this.$message.success("提交成功");
  2055. this.$router.go(-1);
  2056. this.closeCurrent();
  2057. } else {
  2058. this.uploading = false;
  2059. this.$error({
  2060. title: '提示',
  2061. content: res.message,
  2062. })
  2063. }
  2064. }).finally(() => {
  2065. this.uploading = false;
  2066. })
  2067. },
  2068. urlBaseJoin(dataArray, name) {
  2069. let newDataArr = [];
  2070. for (var i in dataArray) {
  2071. let dataArrayElementElement = dataArray[i][name];
  2072. newDataArr.push(dataArrayElementElement);
  2073. }
  2074. return newDataArr.toString();
  2075. },
  2076. //用户选择点击事件
  2077. changeUserLable() {
  2078. /* //身份证正反面
  2079. this.cfileListIdCard = []
  2080. //手持证件照片
  2081. this.fileListHandCertificate= []
  2082. //号卡照片
  2083. this.fileListNumberCard = []
  2084. //防诈骗承诺涵
  2085. this.fileListLetter = []
  2086. //营业执照副本
  2087. this.fileListBusiness = []
  2088. //介绍信
  2089. this.fileListIntroduction = []
  2090. //使用人证件
  2091. this.fileListUserCertificate= []
  2092. //消费凭证
  2093. this.fileListVoucher = []
  2094. //承诺视频
  2095. this.fileListVideo = []*/
  2096. },
  2097. //提交特殊申请
  2098. applySpecial() {
  2099. }
  2100. }
  2101. }
  2102. </script>
  2103. <style lang="less">
  2104. #common-video {
  2105. position: relative;
  2106. .video-box {
  2107. box-sizing: border-box;
  2108. border: 0;
  2109. display: block;
  2110. width: 470px;
  2111. height: 500px;
  2112. outline: none !important;
  2113. }
  2114. .isShow {
  2115. //进度条
  2116. video::-webkit-media-controls-timeline {
  2117. display: none;
  2118. }
  2119. }
  2120. video::-webkit-media-controls-play-button {
  2121. visibility: hidden;
  2122. }
  2123. .operate-btn {
  2124. display: block;
  2125. width: 60px;
  2126. height: 60px;
  2127. position: absolute;
  2128. top: calc(50% - 30px);
  2129. left: calc(50% - 30px);
  2130. }
  2131. .operate-btn:hover {
  2132. opacity: 0.8;
  2133. }
  2134. .fade-out {
  2135. opacity: 0;
  2136. }
  2137. }
  2138. .thumb-example {
  2139. width: 864px;
  2140. margin-top: 20px;
  2141. // background: #000;
  2142. }
  2143. .swiper-slide {
  2144. background-size: cover;
  2145. background-position: center;
  2146. }
  2147. .gallery-top {
  2148. // height: 80% !important;
  2149. /*height: 600px;*/
  2150. width: 100%;
  2151. left: 10%;
  2152. margin-bottom: 30px
  2153. }
  2154. .gallery-thumbs {
  2155. height: 20% !important;
  2156. box-sizing: border-box;
  2157. padding: 10px 0px;
  2158. /* width: 864px;*/
  2159. margin-left: 2px;
  2160. .swiper-button-next {
  2161. right: 0px;
  2162. }
  2163. .swiper-button-prev {
  2164. left: 0px;
  2165. }
  2166. .swiper-button-next,
  2167. .swiper-button-prev {
  2168. background: #fff;
  2169. width: 45px;
  2170. text-align: center;
  2171. height: 101px;
  2172. top: 26%;
  2173. div {
  2174. margin-top: 30px;
  2175. background: rgb(207, 205, 205);
  2176. height: 45px;
  2177. border-radius: 50%;
  2178. img {
  2179. margin: 7px 0 0 2px;
  2180. width: 30px;
  2181. }
  2182. }
  2183. }
  2184. .swiper-button-next:hover div {
  2185. background: rgb(189, 186, 186);
  2186. }
  2187. .swiper-button-prev:hover div {
  2188. background: rgb(189, 186, 186);
  2189. }
  2190. }
  2191. .gallery-thumbs .swiper-slide {
  2192. width: 20%;
  2193. height: 80px;
  2194. // opacity: 0.4;
  2195. }
  2196. .gallery-thumbs .swiper-slide-active {
  2197. border: 2px solid red;
  2198. }
  2199. .markdown ul > li {
  2200. color: #000000d9;
  2201. font-size: 15px;
  2202. line-height: 3;
  2203. margin-left: 20px;
  2204. padding-left: 4px;
  2205. list-style-type: circle;
  2206. }
  2207. .ant-form-item-children>span{
  2208. white-space: normal;
  2209. overflow-wrap: break-word;
  2210. }
  2211. </style>