TaskCheckDetails.vue 49 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517
  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 disabled="true" 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 disabled="true" v-model="model.materialLabel" button-style="solid">
  58. <a-radio-button value="0">材料不全(有特审)</a-radio-button>
  59. <a-radio-button 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 disabled="true" v-model="model.shutdownLabel" button-style="solid">
  66. <a-radio-button value="0">安防停机(高危漫游地)</a-radio-button>
  67. <a-radio-button value="1">安防关停(紫名单)</a-radio-button>
  68. <a-radio-button value="2">安防停机(专班研判)</a-radio-button>
  69. <a-radio-button value="3">安防停机(可复开)</a-radio-button>
  70. <a-radio-button value="4">沉默移动卡保护性单停</a-radio-button>
  71. <a-radio-button value="5">集团一点停复机(单停)</a-radio-button>
  72. <a-radio-button value="6">大数据保护停机单停</a-radio-button>
  73. <a-radio-button value="7">工信部断卡单停</a-radio-button>
  74. <a-radio-button 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. <a-upload
  89. listType="picture-card"
  90. :fileList="nameFindCompliance"
  91. :beforeUpload="beforeUploadNameFindCompliance"
  92. :multiple="true"
  93. :remove="handleRemoveNameFindCompliance"
  94. @preview="handlePreview"
  95. >
  96. </a-upload>
  97. <!-- 放大预览窗口 -->
  98. <a-modal :visible="previewVisible" :footer="null" @cancel="handleCancel">
  99. <img alt="example" style="width: 100%" :src="previewImage"/>
  100. </a-modal>
  101. <a-form-model-item label="实名制截图备注:" v-bind="labelCol1Plus">
  102. <p>{{nameFindComplianceRemark}}</p>
  103. <!-- :auto-size="{ minRows: 3, maxRows: 5 }"-->
  104. </a-form-model-item>
  105. <!-- 备注-->
  106. <li style="color: red" v-if="specialResult.nameFindComplianceState == 0 && specialResult.nameFindComplianceNote != null">
  107. 稽核结果备注:{{ specialResult.nameFindComplianceNote}}
  108. </li>
  109. </div>
  110. </a-card>
  111. <!-- 材料齐不全有特审核-->
  112. <a-card v-if="model.materialLabel == '0'" :bordered="true">
  113. <div slot="title">
  114. 特审单
  115. <span v-show="specialResult.specialReviewFormState == '1'">✅</span>
  116. <span v-show="specialResult.specialReviewFormState == '0'">❌</span>
  117. </div>
  118. <div class="clearfix">
  119. <a-upload
  120. listType="picture-card"
  121. :fileList="specialReviewForm"
  122. :beforeUpload="beforeUploadSpecialReviewForm"
  123. :multiple="true"
  124. :remove="handleRemoveSpecialReviewForm"
  125. @preview="handlePreview"
  126. >
  127. </a-upload>
  128. <!-- 放大预览窗口 -->
  129. <a-modal :visible="previewVisible" :footer="null" @cancel="handleCancel">
  130. <img alt="example" style="width: 100%" :src="previewImage"/>
  131. </a-modal>
  132. <!-- 备注-->
  133. <li style="color: red" v-if="specialResult.specialReviewFormState == 0 && specialResult.specialReviewFormNote != null">
  134. 稽核结果备注:{{ specialResult.specialReviewFormNote}}
  135. </li>
  136. </div>
  137. </a-card>
  138. <!-- 附件资料 -->
  139. <a-card :bordered="true">
  140. <div slot="title">
  141. 身份证照片/正反面
  142. <span v-show="specialResult.idCardState == '1'">✅</span>
  143. <span v-show="specialResult.idCardState == '0'">❌</span>
  144. </div>
  145. <div class="clearfix">
  146. <a-upload
  147. listType="picture-card"
  148. :fileList="fileListIdCard"
  149. :beforeUpload="beforeUploadIdCard"
  150. :multiple="true"
  151. :remove="handleRemoveIdCard"
  152. @preview="handlePreview"
  153. >
  154. </a-upload>
  155. <!-- 放大预览窗口 -->
  156. <a-modal :visible="previewVisible" :footer="null" @cancel="handleCancel">
  157. <img alt="example" style="width: 100%" :src="previewImage"/>
  158. </a-modal>
  159. <!-- 备注-->
  160. <li style="color: red" v-if="specialResult.idCardState == 0 && specialResult.idCardNote != null">
  161. 稽核结果备注:{{ specialResult.idCardNote}}
  162. </li>
  163. </div>
  164. </a-card>
  165. <!-- 手持证件半身照片-->
  166. <a-card :bordered="true">
  167. <div slot="title">
  168. 手持证件半身照片
  169. <span v-show="specialResult.handCertificateState == '1'">✅</span>
  170. <span v-show="specialResult.handCertificateState == '0'">❌</span>
  171. </div>
  172. <div class="clearfix">
  173. <a-upload
  174. listType="picture-card"
  175. :fileList="fileListHandCertificate"
  176. :beforeUpload="beforeUploadCertificate"
  177. :multiple="true"
  178. :remove="handleRemoveCertificate"
  179. @preview="handlePreview"
  180. >
  181. </a-upload>
  182. <!-- 备注-->
  183. <li style="color: red" v-if="specialResult.handCertificateState == 0 && specialResult.handCertificateNote != null">
  184. 稽核结果备注:{{ specialResult.handCertificateNote}}
  185. </li>
  186. </div>
  187. </a-card>
  188. <!-- 号卡照片-->
  189. <a-card v-if="model.userLable == '0'" :bordered="true">
  190. <div slot="title">
  191. 号卡照片
  192. <span v-show="specialResult.numberCardState == '1'">✅</span>
  193. <span v-show="specialResult.numberCardState == '0'">❌</span>
  194. </div>
  195. <div class="clearfix">
  196. <a-upload
  197. listType="picture-card"
  198. :fileList="fileListNumberCard"
  199. :beforeUpload="beforeUploadNumberCard"
  200. :multiple="true"
  201. :remove="handleRemoveNumberCard"
  202. @preview="handlePreview"
  203. >
  204. </a-upload>
  205. <!-- 放大预览窗口 -->
  206. <a-modal :visible="previewVisible" :footer="null" @cancel="handleCancel">
  207. <img alt="example" style="width: 100%" :src="previewImage"/>
  208. </a-modal>
  209. <!-- 备注-->
  210. <li style="color: red" v-if="specialResult.numberCardState == 0 && specialResult.numberCardNote != null">
  211. 稽核结果备注:{{ specialResult.numberCardNote}}
  212. </li>
  213. </div>
  214. </a-card>
  215. <!-- 使用人证件-->
  216. <a-card v-if="model.userLable == '1'" :bordered="true">
  217. <div slot="title">
  218. 使用人证件
  219. <span v-show="specialResult.userCertificateState == '1'">✅</span>
  220. <span v-show="specialResult.userCertificateState == '0'">❌</span>
  221. </div>
  222. <div class="clearfix">
  223. <a-upload
  224. listType="picture-card"
  225. :fileList="fileListUserCertificate"
  226. :beforeUpload="beforeUploadUserCertificate"
  227. :multiple="true"
  228. :remove="handleRemoveUserCertificate"
  229. @preview="handlePreview"
  230. >
  231. </a-upload>
  232. <!-- 放大预览窗口 -->
  233. <a-modal :visible="previewVisible" :footer="null" @cancel="handleCancel">
  234. <img alt="example" style="width: 100%" :src="previewImage"/>
  235. </a-modal>
  236. <!-- 备注-->
  237. <li style="color: red" v-if="specialResult.userCertificateState == 0 && specialResult.userCertificateNote != null">
  238. 稽核结果备注:{{ specialResult.userCertificateNote}}
  239. </li>
  240. </div>
  241. </a-card>
  242. <!-- 营业执照副本(盖公章)-->
  243. <a-card v-if="model.userLable == '1'" :bordered="true">
  244. <div slot="title">
  245. 营业执照副本(盖公章)
  246. <span v-show="specialResult.businessLicenseState == '1'">✅</span>
  247. <span v-show="specialResult.businessLicenseState == '0'">❌</span>
  248. </div>
  249. <div class="clearfix">
  250. <a-upload
  251. listType="picture-card"
  252. :fileList="fileListBusiness"
  253. :beforeUpload="beforeUploadBusiness"
  254. :multiple="true"
  255. :remove="handleRemoveBusiness"
  256. @preview="handlePreview"
  257. >
  258. </a-upload>
  259. <!-- 放大预览窗口 -->
  260. <a-modal :visible="previewVisible" :footer="null" @cancel="handleCancel">
  261. <img alt="example" style="width: 100%" :src="previewImage"/>
  262. </a-modal>
  263. <!-- 备注-->
  264. <li style="color: red" v-if="specialResult.businessLicenseState == 0 && specialResult.businessLicenseNote != null">
  265. 稽核结果备注:{{ specialResult.businessLicenseNote}}
  266. </li>
  267. </div>
  268. </a-card>
  269. <!-- 介绍信-->
  270. <a-card v-if="model.userLable == '1'" :bordered="true">
  271. <div slot="title">
  272. 介绍信
  273. <span v-show="specialResult.letterIntroductionState == '1'">✅</span>
  274. <span v-show="specialResult.letterIntroductionState == '0'">❌</span>
  275. </div>
  276. <div class="clearfix">
  277. <a-upload
  278. listType="picture-card"
  279. :fileList="fileListIntroduction"
  280. :beforeUpload="beforeUploadIntroduction"
  281. :multiple="true"
  282. :remove="handleRemoveIntroduction"
  283. @preview="handlePreview"
  284. >
  285. </a-upload>
  286. <!-- 放大预览窗口 -->
  287. <a-modal :visible="previewVisible" :footer="null" @cancel="handleCancel">
  288. <img alt="example" style="width: 100%" :src="previewImage"/>
  289. </a-modal>
  290. <!-- 备注-->
  291. <li style="color: red" v-if="specialResult.letterIntroductionState == 0 && specialResult.letterIntroductionNote != null">
  292. 稽核结果备注:{{ specialResult.letterIntroductionNote}}
  293. </li>
  294. </div>
  295. </a-card>
  296. <!-- 防诈骗承诺涵(使用人签署)-->
  297. <a-card :bordered="true">
  298. <div slot="title">
  299. 防诈骗承诺涵(使用人签署)
  300. <span v-show="specialResult.fraudPreventionState == '1'">✅</span>
  301. <span v-show="specialResult.fraudPreventionState == '0'">❌</span>
  302. </div>
  303. <div class="clearfix">
  304. <a-upload
  305. listType="picture-card"
  306. :fileList="fileListLetter"
  307. :beforeUpload="beforeUploadLetter"
  308. :multiple="true"
  309. :remove="handleRemoveLetter"
  310. @preview="handlePreview"
  311. >
  312. </a-upload>
  313. <!-- 放大预览窗口 -->
  314. <a-modal :visible="previewVisible" :footer="null" @cancel="handleCancel">
  315. <img alt="example" style="width: 100%" :src="previewImage"/>
  316. </a-modal>
  317. <!-- 备注-->
  318. <li style="color: red" v-if="specialResult.fraudPreventionState == 0 && specialResult.fraudPreventionNote != null">
  319. 稽核结果备注:{{ specialResult.fraudPreventionNote}}
  320. </li>
  321. </div>
  322. </a-card>
  323. <!-- 消费凭证-->
  324. <a-card v-if="model.shutdownLabel == '0'" :bordered="true">
  325. <div slot="title">
  326. 消费凭证
  327. <span v-show="specialResult.consumptionVoucherState == '1'">✅</span>
  328. <span v-show="specialResult.consumptionVoucherState == '0'">❌</span>
  329. </div>
  330. <div class="clearfix">
  331. <a-upload
  332. listType="picture-card"
  333. :fileList="fileListVoucher"
  334. :beforeUpload="beforeUploadVoucher"
  335. :multiple="true"
  336. :remove="handleRemoveVoucher"
  337. @preview="handlePreview"
  338. >
  339. </a-upload>
  340. <!-- 放大预览窗口 -->
  341. <a-modal :visible="previewVisible" :footer="null" @cancel="handleCancel">
  342. <img alt="example" style="width: 100%" :src="previewImage"/>
  343. </a-modal>
  344. <!-- 备注-->
  345. <li style="color: red" v-if="specialResult.consumptionVoucherState == 0 && specialResult.consumptionVoucherNote != null">
  346. 稽核结果备注:{{ specialResult.consumptionVoucherNote}}
  347. </li>
  348. </div>
  349. </a-card>
  350. <!-- 承诺视频-->
  351. <a-card v-if="model.shutdownLabel == '5'" title="承诺视频" :bordered="true">
  352. <div slot="title">
  353. 承诺视频
  354. <span v-show="specialResult.commitmentVideoState == '1'">✅</span>
  355. <span v-show="specialResult.commitmentVideoState == '0'">❌</span>
  356. </div>
  357. <div class="clearfix">
  358. <a-upload
  359. listType="picture-card"
  360. :fileList="fileListVideo"
  361. :beforeUpload="beforeUploadVideo"
  362. :multiple="true"
  363. :remove="handleRemoveVideo"
  364. @preview="handlePreviewVideo"
  365. >
  366. </a-upload>
  367. <!-- 放大预览窗口 -->
  368. <a-modal :visible="previewVideo" :footer="null" @cancel="handleVideoCancel">
  369. <!-- <img alt="example" style="width: 100%" :src="previewImage"/>-->
  370. <video
  371. ref="myVideo"
  372. :poster="poster"
  373. :src="previewImage"
  374. :controls="controls"
  375. oncontextmenu="return false"
  376. @timeupdate="timeupdate"
  377. controlslist="nodownload"
  378. class="video-box"
  379. style="width: 470px;height:330px"
  380. ></video>
  381. </a-modal>
  382. <!-- 备注-->
  383. <li style="color: red" v-if="specialResult.commitmentVideoState == 0 && specialResult.commitmentVideoNote != null">
  384. 稽核结果备注:{{ specialResult.commitmentVideoNote}}
  385. </li>
  386. </div>
  387. </a-card>
  388. </a-form-model>
  389. </a-card>
  390. </div>
  391. </a-spin>
  392. </template>
  393. <script>
  394. import reqwest from 'reqwest';
  395. import {httpAction, postAction} from "@api/manage";
  396. import dayjs, {Dayjs} from 'dayjs';
  397. import VueAMap from "vue-amap";
  398. export default {
  399. name: 'TaskUploadData',
  400. inject: ['closeCurrent'],
  401. data() {
  402. return {
  403. //结果
  404. specialResult: {},
  405. //上级传参
  406. query: {},
  407. //客户信息ID
  408. infoId: "",
  409. //客户资料ID
  410. dataId: "",
  411. model: {
  412. "shutdownLabel": "0",
  413. "materialLabel": "0",
  414. "userLable": "0",
  415. "openingNumber": ""
  416. },
  417. //系统实名制截图
  418. nameFindCompliance: [],
  419. //系统实名制截图备注
  420. nameFindComplianceRemark: "",
  421. //特审单
  422. specialReviewForm: [],
  423. //身份证正反面
  424. fileListIdCard: [],
  425. //手持证件照片
  426. fileListHandCertificate: [],
  427. //号卡照片
  428. fileListNumberCard: [],
  429. //防诈骗承诺涵
  430. fileListLetter: [],
  431. //营业执照副本
  432. fileListBusiness: [],
  433. //介绍信
  434. fileListIntroduction: [],
  435. //使用人证件
  436. fileListUserCertificate: [],
  437. //消费凭证
  438. fileListVoucher: [],
  439. //承诺视频
  440. fileListVideo: [],
  441. //表单验证
  442. rules: {
  443. openingNumber: [
  444. {required: true, message: '必须输入手机号'},
  445. ],
  446. customerName: [
  447. {required: true, message: '必须输入客户名称'},
  448. ],
  449. shutdownTime: [
  450. {required: true, message: '必须选择关停时间'},
  451. ]
  452. },
  453. previewVisible: false,
  454. previewVideo: false,
  455. previewImage: "",
  456. uploading: false,
  457. formState: {},
  458. labelCol: {span: 1},
  459. wrapperCol: {span: 23},
  460. // 1列
  461. labelCol1: {
  462. labelCol: {
  463. xs: {span: 24},
  464. sm: {span: 2},
  465. },
  466. wrapperCol: {
  467. xs: {span: 24},
  468. sm: {span: 21},
  469. }
  470. },
  471. // 2列
  472. labelCol2: {
  473. labelCol: {
  474. xs: {span: 24},
  475. sm: {span: 4},
  476. },
  477. wrapperCol: {
  478. xs: {span: 24},
  479. sm: {span: 18},
  480. }
  481. },
  482. labelCol1Plus: {
  483. labelCol: {
  484. xs: {span: 24},
  485. sm: {span: 2},
  486. },
  487. wrapperCol: {
  488. xs: {span: 24},
  489. sm: {span: 15},
  490. }
  491. },
  492. url: {
  493. importExcel: window._CONFIG['domainURL'] + "/smsCheck/task/importCustomerExcel",
  494. minioUpload: "/special/examination/upload/files",
  495. findById: "/special/examination/find/id",
  496. findCheckState: "/special/examination/find/check/log",
  497. },
  498. videoState: false, // 视频播放状态
  499. // 学时
  500. studyTime: {
  501. currentTime: 0, // 当前已学时长
  502. duration: 0 // 总时长
  503. },
  504. timer: {}, // 定时器
  505. pauseTimer: {} // 暂停定时器
  506. }
  507. },
  508. props: {
  509. taskInfo: {
  510. type: Object,
  511. require: true
  512. },
  513. poster: {
  514. type: String,
  515. required: false,
  516. default: ""
  517. },
  518. src: {
  519. type: String,
  520. required: true
  521. },
  522. controls: {
  523. type: Boolean,
  524. required: false,
  525. default: true
  526. },
  527. control: {
  528. type: Boolean,
  529. required: false,
  530. default: false
  531. },
  532. videoData: {
  533. type: Object,
  534. required: true
  535. }
  536. },
  537. watch: {
  538. // 监听操作
  539. videoData(val, oldVal) {
  540. const {currentTime, duration} = val;
  541. if (currentTime && duration && currentTime < duration) {
  542. this.hintOperate();
  543. }
  544. }
  545. },
  546. created() {
  547. this.infoId = this.$route.query.id;
  548. this.query.data = this.$route.query.data;
  549. //复开号码
  550. this.model.openingNumber = this.query.data.smsNumber
  551. //客户名称
  552. this.model.customerName = this.query.data.customerName
  553. //关停时间
  554. this.model.shutdownTime = this.query.data.shutdownLabelDate
  555. this.findById(this.infoId);
  556. },
  557. mounted() {
  558. // 监听视频播放
  559. this.$refs.myVideo.addEventListener("play", () => {
  560. this.openTimer();
  561. });
  562. // 监听视频暂停
  563. this.$refs.myVideo.addEventListener("pause", () => {
  564. this.closeTimer();
  565. });
  566. },
  567. methods: {
  568. /**获取稽核结果*/
  569. findCheckState(id) {
  570. let that = this;
  571. let model = {
  572. "dataId": id,
  573. }
  574. postAction(this.url.findCheckState, model)
  575. .then((res) => {
  576. if (res.success) {
  577. that.specialResult = res.result;
  578. }
  579. })
  580. },
  581. /**整改操作获取回填信息*/
  582. findById(id) {
  583. let that = this;
  584. let model = {
  585. "infoId": id,
  586. }
  587. postAction(this.url.findById, model)
  588. .then((res) => {
  589. if (res.success) {
  590. this.result = res.result;
  591. that.dataId = this.result.id;
  592. //获取稽核结果
  593. that.findCheckState(that.dataId)
  594. this.model.userLable = this.result.userLable.toString();
  595. this.model.openingNumber = this.result.openingNumber;
  596. this.model.customerName = this.result.customerName;
  597. this.model.unitName = this.result.unitName;
  598. this.model.shutdownTime = this.result.shutdownTime
  599. this.model.reasonReopening = this.result.reasonReopening == null ? '无' : this.result.reasonReopening
  600. this.model.materialLabel = this.result.materialLabel.toString();
  601. this.model.shutdownLabel = this.result.shutdownLabel.toString();
  602. this.specialNote = this.result.specialNote;
  603. this.model.status = this.result.status;
  604. // //身份证正反面
  605. if (this.result.idCard != null) {
  606. let fileListIdCard = this.result.idCard.split(",");
  607. for (var i in fileListIdCard) {
  608. let data = {
  609. uid: "-" + i,
  610. name: 'image.png',
  611. status: 'done',
  612. url: fileListIdCard[i],
  613. }
  614. this.fileListIdCard.push(data)
  615. }
  616. }
  617. //手持证件照片
  618. if (this.result.handCertificate != null) {
  619. let handCertificate = this.result.handCertificate.split(",");
  620. for (var i in handCertificate) {
  621. let data = {
  622. uid: "-" + i,
  623. name: 'image.png',
  624. status: 'done',
  625. url: handCertificate[i],
  626. }
  627. this.fileListHandCertificate.push(data)
  628. }
  629. }
  630. //号卡照片
  631. if (this.result.numberCard != null) {
  632. let numberCard = this.result.numberCard.split(",");
  633. for (var i in numberCard) {
  634. let data = {
  635. uid: "-" + i,
  636. name: 'image.png',
  637. status: 'done',
  638. url: numberCard[i],
  639. }
  640. this.fileListNumberCard.push(data)
  641. }
  642. }
  643. //使用人证件
  644. if (this.result.userCertificate != null) {
  645. let userCertificate = this.result.userCertificate.split(",");
  646. for (var i in userCertificate) {
  647. let data = {
  648. uid: "-" + i,
  649. name: 'image.png',
  650. status: 'done',
  651. url: userCertificate[i],
  652. }
  653. this.fileListUserCertificate.push(data)
  654. }
  655. }
  656. //营业执照副本
  657. if (this.result.businessLicense != null) {
  658. let businessLicense = this.result.businessLicense.split(",");
  659. for (var i in businessLicense) {
  660. let data = {
  661. uid: "-" + i,
  662. name: 'image.png',
  663. status: 'done',
  664. url: businessLicense[i],
  665. }
  666. this.fileListBusiness.push(data)
  667. }
  668. }
  669. //介绍信
  670. if (this.result.letterIntroduction != null) {
  671. let letterIntroduction = this.result.letterIntroduction.split(",");
  672. for (var i in letterIntroduction) {
  673. let data = {
  674. uid: "-" + i,
  675. name: 'image.png',
  676. status: 'done',
  677. url: letterIntroduction[i],
  678. }
  679. this.fileListIntroduction.push(data)
  680. }
  681. }
  682. //防诈骗承诺涵
  683. if (this.result.letterCommitment != null) {
  684. let letterCommitment = this.result.letterCommitment.split(",");
  685. for (var i in letterCommitment) {
  686. let data = {
  687. uid: "-" + i,
  688. name: 'image.png',
  689. status: 'done',
  690. url: letterCommitment[i],
  691. }
  692. this.fileListLetter.push(data)
  693. }
  694. }
  695. //消费凭证
  696. if (this.result.consumptionVoucher != null) {
  697. let consumptionVoucher = this.result.consumptionVoucher.split(",");
  698. for (var i in consumptionVoucher) {
  699. let data = {
  700. uid: "-" + i,
  701. name: 'image.png',
  702. status: 'done',
  703. url: consumptionVoucher[i],
  704. }
  705. this.fileListVoucher.push(data)
  706. }
  707. }
  708. //承诺视频
  709. if (this.result.commitmentVideo != null) {
  710. let commitmentVideo = this.result.commitmentVideo.split(",");
  711. for (var i in commitmentVideo) {
  712. let data = {
  713. uid: "-" + i,
  714. name: 'image.png',
  715. status: 'done',
  716. url: commitmentVideo[i],
  717. }
  718. this.fileListVideo.push(data)
  719. }
  720. }
  721. //系统实名制截图
  722. if (this.result.nameFindCompliance != null) {
  723. let nameFindCompliance = this.result.nameFindCompliance.split(",");
  724. for (var i in nameFindCompliance) {
  725. let data = {
  726. uid: "-" + i,
  727. name: 'image.png',
  728. status: 'done',
  729. url: nameFindCompliance[i],
  730. }
  731. this.nameFindCompliance.push(data)
  732. }
  733. }
  734. if (this.result.nameFindComplianceRemark != null) {
  735. this.nameFindComplianceRemark = this.result.nameFindComplianceRemark
  736. }
  737. //特审单截图
  738. if (this.result.specialReviewForm != null) {
  739. let specialReviewForm = this.result.specialReviewForm.split(",");
  740. for (var i in specialReviewForm) {
  741. let data = {
  742. uid: "-" + i,
  743. name: 'image.png',
  744. status: 'done',
  745. url: specialReviewForm[i],
  746. }
  747. this.specialReviewForm.push(data)
  748. }
  749. }
  750. } else {
  751. this.$message.error("查询失败");
  752. }
  753. }).finally(() => {
  754. })
  755. },
  756. // 开启定时器
  757. openTimer() {
  758. this.timer = setInterval(() => {
  759. this.$emit("videoStudyTime", this.studyTime);
  760. }, 5000);
  761. },
  762. // 关闭定时器
  763. closeTimer() {
  764. clearInterval(this.timer);
  765. this.$emit("videoStudyTime", this.studyTime);
  766. },
  767. // 开启暂停定时器
  768. openPauseTimer() {
  769. this.pauseTimer = setInterval(() => {
  770. this.hintOperate();
  771. }, 600000);
  772. },
  773. // 关闭暂停定时器
  774. closePauseTimer() {
  775. clearInterval(this.pauseTimer);
  776. },
  777. // 提示操作
  778. hintOperate() {
  779. this.operateVideo();
  780. this.$alert("请点击确认继续学习", "提示", {
  781. confirmButtonText: "确定",
  782. confirmButtonClass: "hint-btn",
  783. showClose: false,
  784. callback: action => {
  785. this.$refs.myVideo.currentTime = this.videoData.currentTime;
  786. this.operateVideo();
  787. this.openPauseTimer();
  788. }
  789. });
  790. },
  791. // 获取当前播放位置
  792. timeupdate(e) {
  793. this.studyTime.currentTime = e.target.currentTime;
  794. this.studyTime.duration = e.target.duration ? e.target.duration : 0;
  795. },
  796. // 操作视频播放、暂停
  797. operateVideo() {
  798. if (!this.src) {
  799. this.$message({message: "暂无视频资源,请查看其他视频!"});
  800. return false;
  801. }
  802. if (this.$refs.myVideo.paused) {
  803. this.$refs.myVideo.play();
  804. this.videoState = true;
  805. } else {
  806. this.$refs.myVideo.pause();
  807. this.videoState = false;
  808. }
  809. },
  810. beforeUploadNameFindCompliance(file) {
  811. if (this.nameFindCompliance.length > 2) {//判断上传的图片数量
  812. return false
  813. }
  814. this.exeBaseSpecialNameFindCompliance(file)
  815. return false
  816. },
  817. beforeUploadSpecialReviewForm(file) {
  818. if (this.specialReviewForm.length > 2) {//判断上传的图片数量
  819. return false
  820. }
  821. this.exeBaseSpecialReviewForm(file)
  822. return false
  823. },
  824. beforeUploadIdCard(file) {
  825. if (this.fileListIdCard.length > 2) {//判断上传的图片数量
  826. return false
  827. }
  828. this.exeBaseIdCard(file)
  829. return false
  830. },
  831. beforeUploadCertificate(file) {
  832. if (this.fileListHandCertificate.length > 1) {//判断上传的图片数量
  833. return false
  834. }
  835. this.exeBaseCertificate(file)
  836. return false
  837. },
  838. beforeUploadNumberCard(file) {
  839. if (this.fileListNumberCard.length > 1) {//判断上传的图片数量
  840. return false
  841. }
  842. this.exeBaseNumberCard(file)
  843. return false
  844. },
  845. beforeUploadLetter(file) {
  846. if (this.fileListLetter.length > 1) {//判断上传的图片数量
  847. return false
  848. }
  849. this.exeBaseLetter(file)
  850. return false
  851. },
  852. beforeUploadBusiness(file) {
  853. if (this.fileListBusiness.length > 1) {//判断上传的图片数量
  854. return false
  855. }
  856. this.exeBaseBusiness(file)
  857. return false
  858. },
  859. beforeUploadIntroduction(file) {
  860. if (this.fileListIntroduction.length > 1) {//判断上传的图片数量
  861. return false
  862. }
  863. this.exeBaseIntroduction(file)
  864. return false
  865. },
  866. beforeUploadUserCertificate(file) {
  867. if (this.fileListUserCertificate.length > 1) {//判断上传的图片数量
  868. return false
  869. }
  870. this.exeBaseUserCertificate(file)
  871. return false
  872. },
  873. beforeUploadVoucher(file) {
  874. if (this.fileListVoucher.length > 1) {//判断上传的图片数量
  875. return false
  876. }
  877. this.exeBaseVocher(file)
  878. return false
  879. },
  880. beforeUploadVideo(file) {
  881. if (this.fileListVideo.length > 1) {//判断上传的图片数量
  882. return false
  883. }
  884. this.exeBaseVideo(file)
  885. return false
  886. },
  887. async exeBaseSpecialNameFindCompliance(file) {
  888. await this.getBase64(file, (imageUrl) => {
  889. if (this.nameFindCompliance.length < 2 && this.preventSpecialNameFindCompliance(imageUrl)) {//判断图片数量及去重
  890. const file2 = file
  891. file2.url = imageUrl
  892. this.nameFindCompliance = [...this.nameFindCompliance, file]
  893. this.loading = false
  894. }
  895. }).then((result) => {
  896. console.log(result)
  897. })
  898. },
  899. async exeBaseSpecialReviewForm(file) {
  900. await this.getBase64(file, (imageUrl) => {
  901. if (this.specialReviewForm.length < 2 && this.preventSpecialReviewForm(imageUrl)) {//判断图片数量及去重
  902. const file2 = file
  903. file2.url = imageUrl
  904. this.specialReviewForm = [...this.specialReviewForm, file]
  905. this.loading = false
  906. }
  907. }).then((result) => {
  908. console.log(result)
  909. })
  910. },
  911. async exeBaseIdCard(file) {
  912. await this.getBase64(file, (imageUrl) => {
  913. if (this.fileListIdCard.length < 2 && this.preventRepeatIdCard(imageUrl)) {//判断图片数量及去重
  914. const file2 = file
  915. file2.url = imageUrl
  916. this.fileListIdCard = [...this.fileListIdCard, file]
  917. this.loading = false
  918. }
  919. }).then((result) => {
  920. console.log(result)
  921. })
  922. },
  923. async exeBaseCertificate(file) {
  924. await this.getBase64(file, (imageUrl) => {
  925. if (this.fileListHandCertificate.length < 1 && this.preventRepeatCertificate(imageUrl)) {//判断图片数量及去重
  926. const file2 = file
  927. file2.url = imageUrl
  928. this.fileListHandCertificate = [...this.fileListHandCertificate, file]
  929. this.loading = false
  930. }
  931. }).then((result) => {
  932. console.log(result)
  933. })
  934. },
  935. async exeBaseNumberCard(file) {
  936. await this.getBase64(file, (imageUrl) => {
  937. if (this.fileListNumberCard.length < 1 && this.preventRepeatNumberCard(imageUrl)) {//判断图片数量及去重
  938. const file2 = file
  939. file2.url = imageUrl
  940. this.fileListNumberCard = [...this.fileListNumberCard, file]
  941. this.loading = false
  942. }
  943. }).then((result) => {
  944. console.log(result)
  945. })
  946. },
  947. async exeBaseLetter(file) {
  948. await this.getBase64(file, (imageUrl) => {
  949. if (this.fileListLetter.length < 1 && this.preventRepeatLetter(imageUrl)) {//判断图片数量及去重
  950. const file2 = file
  951. file2.url = imageUrl
  952. this.fileListLetter = [...this.fileListLetter, file]
  953. this.loading = false
  954. }
  955. }).then((result) => {
  956. console.log(result)
  957. })
  958. },
  959. async exeBaseBusiness(file) {
  960. await this.getBase64(file, (imageUrl) => {
  961. if (this.fileListBusiness.length < 1 && this.preventRepeatBusiness(imageUrl)) {//判断图片数量及去重
  962. const file2 = file
  963. file2.url = imageUrl
  964. this.fileListBusiness = [...this.fileListBusiness, file]
  965. this.loading = false
  966. }
  967. }).then((result) => {
  968. console.log(result)
  969. })
  970. },
  971. async exeBaseIntroduction(file) {
  972. await this.getBase64(file, (imageUrl) => {
  973. if (this.fileListIntroduction.length < 1 && this.preventRepeatIntroduction(imageUrl)) {//判断图片数量及去重
  974. const file2 = file
  975. file2.url = imageUrl
  976. this.fileListIntroduction = [...this.fileListIntroduction, file]
  977. this.loading = false
  978. }
  979. }).then((result) => {
  980. console.log(result)
  981. })
  982. },
  983. async exeBaseUserCertificate(file) {
  984. await this.getBase64(file, (imageUrl) => {
  985. if (this.fileListUserCertificate.length < 1 && this.preventRepeatUserCertificate(imageUrl)) {//判断图片数量及去重
  986. const file2 = file
  987. file2.url = imageUrl
  988. this.fileListUserCertificate = [...this.fileListUserCertificate, file]
  989. this.loading = false
  990. }
  991. }).then((result) => {
  992. console.log(result)
  993. })
  994. },
  995. async exeBaseVocher(file) {
  996. await this.getBase64(file, (imageUrl) => {
  997. if (this.fileListVoucher.length < 1 && this.preventRepeatVoucher(imageUrl)) {//判断图片数量及去重
  998. const file2 = file
  999. file2.url = imageUrl
  1000. this.fileListVoucher = [...this.fileListVoucher, file]
  1001. this.loading = false
  1002. }
  1003. }).then((result) => {
  1004. console.log(result)
  1005. })
  1006. },
  1007. async exeBaseVideo(file) {
  1008. await this.getBase64(file, (imageUrl) => {
  1009. if (this.fileListVideo.length < 1 && this.preventRepeatVideo(imageUrl)) {//判断图片数量及去重
  1010. const file2 = file
  1011. file2.url = imageUrl
  1012. this.fileListVideo = [...this.fileListVideo, file]
  1013. this.loading = false
  1014. }
  1015. }).then((result) => {
  1016. console.log(result)
  1017. })
  1018. },
  1019. //删除实名制截图
  1020. handleRemoveNameFindCompliance(file) {//删除图片
  1021. const index = this.nameFindCompliance.indexOf(file)
  1022. const newFileList = this.nameFindCompliance.slice()
  1023. newFileList.splice(index, 1)
  1024. this.nameFindCompliance = newFileList
  1025. },
  1026. //删除特审单
  1027. handleRemoveSpecialReviewForm(file) {//删除图片
  1028. const index = this.specialReviewForm.indexOf(file)
  1029. const newFileList = this.specialReviewForm.slice()
  1030. newFileList.splice(index, 1)
  1031. this.specialReviewForm = newFileList
  1032. },
  1033. //删除身份证
  1034. handleRemoveIdCard(file) {//删除图片
  1035. const index = this.fileListIdCard.indexOf(file)
  1036. const newFileList = this.fileListIdCard.slice()
  1037. newFileList.splice(index, 1)
  1038. this.fileListIdCard = newFileList
  1039. },
  1040. //删除手持身份证
  1041. handleRemoveCertificate(file) {//删除图片
  1042. const index = this.fileListHandCertificate.indexOf(file)
  1043. const newFileList = this.fileListHandCertificate.slice()
  1044. newFileList.splice(index, 1)
  1045. this.fileListHandCertificate = newFileList
  1046. },
  1047. //删除号卡
  1048. handleRemoveNumberCard(file) {
  1049. const index = this.fileListNumberCard.indexOf(file)
  1050. const newFileList = this.fileListNumberCard.slice()
  1051. newFileList.splice(index, 1)
  1052. this.fileListNumberCard = newFileList
  1053. },
  1054. //删除防诈骗承诺涵
  1055. handleRemoveLetter(file) {
  1056. const index = this.fileListLetter.indexOf(file)
  1057. const newFileList = this.fileListLetter.slice()
  1058. newFileList.splice(index, 1)
  1059. this.fileListLetter = newFileList
  1060. },
  1061. //删除营业执照副本
  1062. handleRemoveBusiness(file) {
  1063. const index = this.fileListBusiness.indexOf(file)
  1064. const newFileList = this.fileListBusiness.slice()
  1065. newFileList.splice(index, 1)
  1066. this.fileListBusiness = newFileList
  1067. },
  1068. //删除介绍信
  1069. handleRemoveIntroduction(file) {
  1070. const index = this.fileListIntroduction.indexOf(file)
  1071. const newFileList = this.fileListIntroduction.slice()
  1072. newFileList.splice(index, 1)
  1073. this.fileListIntroduction = newFileList
  1074. },
  1075. //删除使用人证件
  1076. handleRemoveUserCertificate(file) {
  1077. const index = this.fileListUserCertificate.indexOf(file)
  1078. const newFileList = this.fileListUserCertificate.slice()
  1079. newFileList.splice(index, 1)
  1080. this.fileListUserCertificate = newFileList
  1081. },
  1082. //消费凭证
  1083. handleRemoveVoucher(file) {
  1084. const index = this.fileListVoucher.indexOf(file)
  1085. const newFileList = this.fileListVoucher.slice()
  1086. newFileList.splice(index, 1)
  1087. this.fileListVoucher = newFileList
  1088. },
  1089. //承诺视频
  1090. handleRemoveVideo(file) {
  1091. const index = this.fileListVideo.indexOf(file)
  1092. const newFileList = this.fileListVideo.slice()
  1093. newFileList.splice(index, 1)
  1094. this.fileListVideo = newFileList
  1095. },
  1096. //排除相同图片
  1097. preventRepeatCertificate(url) {
  1098. // 排除相同图片
  1099. for (let i = 0, len = this.fileListHandCertificate.length; i < len; i++) {
  1100. if (this.fileListIdCard[i].url === url) {
  1101. return false
  1102. }
  1103. }
  1104. return true
  1105. },
  1106. //排除相同图片
  1107. preventSpecialNameFindCompliance(url) {
  1108. // 排除相同图片
  1109. for (let i = 0, len = this.nameFindCompliance.length; i < len; i++) {
  1110. if (this.nameFindCompliance[i].url === url) {
  1111. return false
  1112. }
  1113. }
  1114. return true
  1115. },
  1116. //排除相同图片
  1117. preventSpecialReviewForm(url) {
  1118. // 排除相同图片
  1119. for (let i = 0, len = this.specialReviewForm.length; i < len; i++) {
  1120. if (this.specialReviewForm[i].url === url) {
  1121. return false
  1122. }
  1123. }
  1124. return true
  1125. },
  1126. //排除相同图片
  1127. preventRepeatIdCard(url) {
  1128. // 排除相同图片
  1129. for (let i = 0, len = this.fileListIdCard.length; i < len; i++) {
  1130. if (this.fileListIdCard[i].url === url) {
  1131. return false
  1132. }
  1133. }
  1134. return true
  1135. },
  1136. //排除相同图片
  1137. preventRepeatNumberCard(url) {
  1138. // 排除相同图片
  1139. for (let i = 0, len = this.fileListNumberCard.length; i < len; i++) {
  1140. if (this.fileListNumberCard[i].url === url) {
  1141. return false
  1142. }
  1143. }
  1144. return true
  1145. },
  1146. //排除相同图片
  1147. preventRepeatLetter(url) {
  1148. // 排除相同图片
  1149. for (let i = 0, len = this.fileListLetter.length; i < len; i++) {
  1150. if (this.fileListLetter[i].url === url) {
  1151. return false
  1152. }
  1153. }
  1154. return true
  1155. },
  1156. preventRepeatBusiness(url) {
  1157. // 排除相同图片
  1158. for (let i = 0, len = this.fileListBusiness.length; i < len; i++) {
  1159. if (this.fileListBusiness[i].url === url) {
  1160. return false
  1161. }
  1162. }
  1163. return true
  1164. },
  1165. preventRepeatIntroduction(url) {
  1166. // 排除相同图片
  1167. for (let i = 0, len = this.fileListIntroduction.length; i < len; i++) {
  1168. if (this.fileListIntroduction[i].url === url) {
  1169. return false
  1170. }
  1171. }
  1172. return true
  1173. },
  1174. preventRepeatUserCertificate(url) {
  1175. // 排除相同图片
  1176. for (let i = 0, len = this.fileListUserCertificate.length; i < len; i++) {
  1177. if (this.fileListUserCertificate[i].url === url) {
  1178. return false
  1179. }
  1180. }
  1181. return true
  1182. },
  1183. preventRepeatVoucher(url) {
  1184. // 排除相同图片
  1185. for (let i = 0, len = this.fileListVoucher.length; i < len; i++) {
  1186. if (this.fileListVoucher[i].url === url) {
  1187. return false
  1188. }
  1189. }
  1190. return true
  1191. },
  1192. preventRepeatVideo(url) {
  1193. // 排除相同图片
  1194. for (let i = 0, len = this.fileListVideo.length; i < len; i++) {
  1195. if (this.fileListVideo[i].url === url) {
  1196. return false
  1197. }
  1198. }
  1199. return true
  1200. },
  1201. getBase64(file, callback) {
  1202. return new Promise((resolve) => {
  1203. let reader = new FileReader()
  1204. reader.readAsDataURL(file)
  1205. reader.onload = () => {
  1206. callback(reader.result)
  1207. resolve('成功')
  1208. }
  1209. })
  1210. },
  1211. //点击关闭图片预览
  1212. handleCancel() {//点击关闭图片预览
  1213. this.previewVisible = false;
  1214. },
  1215. handleVideoCancel() {
  1216. this.previewVideo = false;
  1217. },
  1218. //点击查看大图
  1219. async handlePreview(file) {//点击查看大图
  1220. if (!file.url && !file.preview) {
  1221. file.preview = await this.getBase64(file.originFileObj);
  1222. }
  1223. this.previewImage = file.url || file.preview;
  1224. this.previewVisible = true;
  1225. },
  1226. //点击查看视频大图
  1227. async handlePreviewVideo(file) {//点击查看大图
  1228. if (!file.url && !file.preview) {
  1229. file.preview = await this.getBase64(file.originFileObj);
  1230. }
  1231. this.previewImage = file.url || file.preview;
  1232. this.previewVideo = true;
  1233. },
  1234. //提交申请
  1235. handleUpload() {
  1236. //材料不全有特审
  1237. if (this.model.materialLabel == '0') {
  1238. if (this.specialReviewForm.length == 0) {
  1239. this.$message.error("材料不全请上特审单");
  1240. return
  1241. }
  1242. }
  1243. //系统实名制截图
  1244. if (this.nameFindCompliance.length == 0 && this.nameFindComplianceRemark.length == 0) {
  1245. this.$message.error("请上传系统实名制截图,如没有截图则填写备注信息");
  1246. return
  1247. }
  1248. if (this.model.materialLabel == '1' && (this.fileListIdCard.length == 0 ||
  1249. this.fileListHandCertificate.length == 0 || this.fileListNumberCard.length == 0
  1250. || this.fileListLetter.length == 0 || this.fileListVoucher.length == 0)) {
  1251. this.$message.error("无特审,请上传全部材料");
  1252. return
  1253. }
  1254. const formData = new FormData();
  1255. formData.append('infoId', this.infoId)
  1256. //身份证正反面
  1257. this.fileListIdCard.forEach(file => {
  1258. formData.append('fileListIdCard', file)
  1259. });
  1260. //手持证件照片
  1261. this.fileListHandCertificate.forEach(file => {
  1262. formData.append('fileListHandCertificate', file)
  1263. });
  1264. //号卡照片
  1265. this.fileListNumberCard.forEach(file => {
  1266. formData.append('fileListNumberCard', file)
  1267. });
  1268. //防诈骗承诺涵
  1269. this.fileListLetter.forEach(file => {
  1270. formData.append('fileListLetter', file)
  1271. });
  1272. //营业执照副本
  1273. this.fileListBusiness.forEach(file => {
  1274. formData.append('fileListBusiness', file)
  1275. });
  1276. //介绍信
  1277. this.fileListIntroduction.forEach(file => {
  1278. formData.append('fileListIntroduction', file)
  1279. });
  1280. //使用人证件
  1281. this.fileListUserCertificate.forEach(file => {
  1282. formData.append('fileListUserCertificate', file)
  1283. });
  1284. //消费凭证
  1285. this.fileListVoucher.forEach(file => {
  1286. formData.append('fileListVoucher', file)
  1287. });
  1288. //承诺视频
  1289. this.fileListVideo.forEach(file => {
  1290. formData.append('fileListVideo', file)
  1291. });
  1292. //系统实名制截图
  1293. this.nameFindCompliance.forEach(file => {
  1294. formData.append('nameFindCompliance', file)
  1295. });
  1296. //系统实名制截图备注
  1297. formData.append('nameFindComplianceRemark', this.nameFindComplianceRemark)
  1298. //特审单
  1299. this.specialReviewForm.forEach(file => {
  1300. formData.append('specialReviewForm', file)
  1301. });
  1302. //基础信息
  1303. for (var i in this.model) {
  1304. let modelElement = this.model[i];
  1305. formData.append(i, modelElement)
  1306. }
  1307. this.uploading = true;
  1308. httpAction(this.url.minioUpload, formData, "POST")
  1309. .then((res) => {
  1310. if (res.success) {
  1311. this.uploading = false;
  1312. this.$message.success("提交成功");
  1313. this.$router.go(-1);
  1314. this.closeCurrent();
  1315. } else {
  1316. this.uploading = false;
  1317. this.$message.error(res.message);
  1318. }
  1319. }).finally(() => {
  1320. this.uploading = false;
  1321. })
  1322. },
  1323. //用户选择点击事件
  1324. changeUserLable() {
  1325. /* //身份证正反面
  1326. this.cfileListIdCard = []
  1327. //手持证件照片
  1328. this.fileListHandCertificate= []
  1329. //号卡照片
  1330. this.fileListNumberCard = []
  1331. //防诈骗承诺涵
  1332. this.fileListLetter = []
  1333. //营业执照副本
  1334. this.fileListBusiness = []
  1335. //介绍信
  1336. this.fileListIntroduction = []
  1337. //使用人证件
  1338. this.fileListUserCertificate= []
  1339. //消费凭证
  1340. this.fileListVoucher = []
  1341. //承诺视频
  1342. this.fileListVideo = []*/
  1343. },
  1344. //提交特殊申请
  1345. applySpecial() {
  1346. }
  1347. }
  1348. }
  1349. </script>
  1350. <style lang="less">
  1351. #common-video {
  1352. position: relative;
  1353. .video-box {
  1354. box-sizing: border-box;
  1355. border: 0;
  1356. display: block;
  1357. width: 470px;
  1358. height: 500px;
  1359. outline: none !important;
  1360. }
  1361. .isShow {
  1362. //进度条
  1363. video::-webkit-media-controls-timeline {
  1364. display: none;
  1365. }
  1366. }
  1367. video::-webkit-media-controls-play-button {
  1368. visibility: hidden;
  1369. }
  1370. .operate-btn {
  1371. display: block;
  1372. width: 60px;
  1373. height: 60px;
  1374. position: absolute;
  1375. top: calc(50% - 30px);
  1376. left: calc(50% - 30px);
  1377. }
  1378. .operate-btn:hover {
  1379. opacity: 0.8;
  1380. }
  1381. .fade-out {
  1382. opacity: 0;
  1383. }
  1384. }
  1385. </style>