您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372
  1. <template>
  2. <div>
  3. <crud-template ref="crudRef" class="as-weight" :homeData="field" :tableData="tableData" @btnSearch="btnSearch"
  4. @unitClick="unitClick" @handleEdit="handleEdit" @handleInfo="handleInfo" @cancel="cancel"
  5. @CurrentChange="handleCurrentChange" @refreshLeft="refreshLeft" @submit="submit">
  6. <template #search>
  7. <el-input maxlength="60" v-trim clearable v-model="searchForm.customerId" style="width: 200px"
  8. placeholder="请输入用户编号" />
  9. <el-input maxlength="60" v-trim clearable v-model="searchForm.customerName" style="width: 200px"
  10. placeholder="请输入用户名称" />
  11. <el-select clearable v-model="searchForm.customerIdType" style="width: 200px;" placeholder="请选择用户证件号类型">
  12. <el-option v-for="item in CERTIFICATE_TYPE" :key="item.value" :label="item.label" :value="item.value" />
  13. </el-select>
  14. <el-input maxlength="60" v-trim clearable v-model="searchForm.customerIdNum" style="width: 200px"
  15. placeholder="请输入用户证件号码" />
  16. <el-input maxlength="60" v-trim clearable v-model="searchForm.customerTel" style="width: 200px"
  17. placeholder="请输入用户手机号" />
  18. </template>
  19. <template #customerTelSlot>
  20. <el-input maxlength="60" @input="customerTelInput" v-trim clearable v-model="customerTel" style="width: 100%"
  21. placeholder="请输入用户手机号">
  22. <template #append v-if="verificationCodeShow">
  23. <el-button type="primary" class="code-btn" @click="unitClick('', '', customerTel, 1)"
  24. :disabled="rowData[rowId].disabled1">
  25. {{ rowData[rowId].disabled1 ? `获取验证码${rowData[rowId].count1}` : '获取验证码' }}
  26. </el-button>
  27. </template>
  28. </el-input>
  29. </template>
  30. <template #operation="{ scope }">
  31. <el-button v-if="IsPermission(route, 'EDIT_LIST')" type="primary" size="small" class="code-btn" @click="edit(scope.row)">编辑</el-button>
  32. <el-button v-if="IsPermission(route, 'INFO_LIST')" type="success" size="small" class="code-btn" @click="showUserInfo(scope.row)">详情</el-button>
  33. </template>
  34. </crud-template>
  35. <el-dialog title="手机验证" v-model="phoneVerificationDialog" width="30%">
  36. <el-form ref="verificationDialog" :model="verification" label-width="100px" label-position="right">
  37. <el-form-item label="提示:">
  38. <div>填写验证码验证成功使用该功能</div>
  39. </el-form-item>
  40. <el-form-item label="手机号">
  41. <el-input maxlength="60" v-trim clearable :disabled="true"
  42. v-model="verification.mobileDesensitization" :placeholder="`请输入手机验证码`">
  43. </el-input>
  44. <el-button style="margin-top: 10px;position: absolute;right: 0;top: -10px;" type="primary" class="code-btn"
  45. @click="unitClick('', '', verification.mobile, 0)" :disabled="rowData[rowId].disabled">
  46. {{ rowData[rowId].disabled ? `获取验证码${rowData[rowId].count}` : '获取验证码' }}
  47. </el-button>
  48. <!-- <el-button style="margin-top: 10px;position: absolute;right: 0;top: -10px;" type="primary" class="code-btn"
  49. @click="unitClick('', '', verification.mobile)">
  50. 获取验证码
  51. </el-button> -->
  52. </el-form-item>
  53. <el-form-item label="手机验证码">
  54. <el-input maxlength="60" v-trim clearable v-model="verification.code" :placeholder="`请输入手机验证码`">
  55. </el-input>
  56. </el-form-item>
  57. </el-form>
  58. <template #footer>
  59. <el-button @click="phoneVerificationDialog = false">取 消</el-button>
  60. <el-button type="primary" @click="verificationForm(verificationDialog)">确 定</el-button>
  61. </template>
  62. </el-dialog>
  63. <el-dialog title="详情" v-model="userInfoDialog" width="50%">
  64. <el-descriptions direction="vertical" border :column="3">
  65. <template v-for="(value, index) in info" :key="index">
  66. <el-descriptions-item class-name="my-content" :label="value.label" width="33%" v-if="value.type==='text'" :span="1">
  67. <span v-if="value.listData">{{getLabel(value.listData,value.value)}}</span>
  68. <span v-else>{{ value.value ?? '---' }}</span>
  69. </el-descriptions-item>
  70. <el-descriptions-item class-name="my-content" :label="value.label" width="33%" v-else :span="1">
  71. <template v-if="value.value!=='--'">
  72. <el-image class="my-img-box" :src="changeAddress(value.value)" style="width: 100%;max-height: 150px;"
  73. :hide-on-click-modal="true"
  74. :preview-teleported="true"
  75. :preview-src-list="[changeAddress(value.value)]"
  76. />
  77. </template>
  78. <template v-else><sapn>无</sapn></template>
  79. </el-descriptions-item>
  80. </template>
  81. </el-descriptions>
  82. </el-dialog>
  83. <el-dialog title="用户信息变更" v-model="userChangeDialog" width="900">
  84. <div v-loading="submitLoading">
  85. <el-form ref="userChangeFormRef" :model="userChangeForm" label-width="80px" :rules="rules">
  86. <el-row gutter="20">
  87. <el-col :span="12">
  88. <el-form-item label="用户编号">
  89. <el-input disabled readonly v-model="userChangeForm.customerId"/>
  90. </el-form-item>
  91. </el-col>
  92. <el-col :span="12">
  93. <el-form-item label="名称" prop="name">
  94. <el-input maxlength="60" v-model="userChangeForm.name"/>
  95. </el-form-item>
  96. </el-col>
  97. <el-col :span="12">
  98. <el-form-item label="证件号码">
  99. <el-input readonly disabled v-model="userChangeForm.idNo"/>
  100. </el-form-item>
  101. </el-col>
  102. <el-col :span="12">
  103. <el-form-item label="地址" prop="address">
  104. <el-input v-model="userChangeForm.address"/>
  105. </el-form-item>
  106. </el-col>
  107. <el-col :span="12" v-if="userChangeForm.type==='1'">
  108. <el-form-item label="有效期" prop="vld">
  109. <el-input v-model="userChangeForm.vld"/>
  110. </el-form-item>
  111. </el-col>
  112. <el-col :span="12">
  113. <div class="tel-container">
  114. <div class="tel-input" :style="{ width: showVerifyButtons ? '50%' : '100%' }">
  115. <el-form-item label="手机号" prop="tel">
  116. <el-input v-model="userChangeForm.tel" @change="handleTelChange" placeholder="请输入手机号"/>
  117. </el-form-item>
  118. </div>
  119. <div class="tel-verify" :style="{width: showVerifyButtons ? '48%' : '0px',marginLeft: showVerifyButtons?'12px':'0px'}">
  120. <el-button type="primary" style="width: 117.18px;margin-right: 12px">获取验证码</el-button>
  121. <el-form-item label="" prop="verifyCode" label-width="0px" v-if="showVerifyButtons">
  122. <el-input v-model="userChangeForm.verifyCode" placeholder="验证码"/>
  123. <!-- <el-button type="success">验 证</el-button>-->
  124. </el-form-item>
  125. </div>
  126. </div>
  127. </el-col>
  128. </el-row>
  129. <el-row gutter="20" v-if="userChangeForm.type==='2'">
  130. <el-col :span="12" class="img-upload-box">
  131. <el-form-item label="营业执照正面" prop="idCardFront">
  132. <el-upload ref="uploadImgYyzz" class="avatar-uploader"
  133. style="width: 340px;height:214px"
  134. :limit="1" :on-exceed="handleImg" :data="data" accept=".png,.jpg,jpeg"
  135. :before-upload="beforeAvatarImgUpload" :show-file-list="false" :action="BaseService.getFileUploadUrl()"
  136. @success="(response: any, uploadFile: UploadFile) => onSuccess(response, uploadFile, 'idCardFront')">
  137. <img v-if="userChangeForm.idCardFront" :src="userChangeForm.idCardFront" class="avatar" />
  138. <el-icon v-else class="avatar-uploader-icon">
  139. <Plus />
  140. </el-icon>
  141. </el-upload>
  142. </el-form-item>
  143. </el-col>
  144. <el-col :span="12"></el-col>
  145. <el-col :span="12">
  146. <el-form-item label="">
  147. <el-button type="primary" @click="doOcr(5)" :loading="yyzzLoading">识别营业执照</el-button>
  148. </el-form-item>
  149. </el-col>
  150. </el-row>
  151. <el-row gutter="20" v-if="userChangeForm.type==='2'">
  152. <el-col :span="12">
  153. <el-form-item label="经办人姓名" prop="agentName" label-width="110px">
  154. <el-input v-model="userChangeForm.agentName"/>
  155. </el-form-item>
  156. </el-col>
  157. <el-col :span="12">
  158. <el-form-item label="经办人证件号" prop="agentIdNo" label-width="110px">
  159. <el-input v-model="userChangeForm.agentIdNo"/>
  160. </el-form-item>
  161. </el-col>
  162. </el-row>
  163. <el-row gutter="20">
  164. <el-col :span="12" class="img-upload-box">
  165. <el-form-item :label="userChangeForm.type==='1'?'申请人身份证正面':'经办人身份证正面'" :prop="userChangeForm.type==='1'?'idCardFront':'agentIdCardFront'">
  166. <el-upload ref="uploadImg" class="avatar-uploader"
  167. style="width: 340px;height:214px"
  168. :limit="1" :on-exceed="handleImg" :data="data" accept=".png,.jpg,jpeg"
  169. :before-upload="beforeAvatarImgUpload" :show-file-list="false" :action="BaseService.getFileUploadUrl()"
  170. @success="(response: any, uploadFile: UploadFile) => onSuccess(response, uploadFile, userChangeForm.type==='1'?'idCardFront':'agentIdCardFront')">
  171. <img v-if="userChangeForm.type==='1' && userChangeForm.idCardFront" :src="userChangeForm.idCardFront" class="avatar" />
  172. <img v-else-if="userChangeForm.type==='2' && userChangeForm.agentIdCardFront" :src="userChangeForm.agentIdCardFront" class="avatar" />
  173. <el-icon v-else class="avatar-uploader-icon">
  174. <Plus />
  175. </el-icon>
  176. </el-upload>
  177. </el-form-item>
  178. </el-col>
  179. <el-col :span="12" class="img-upload-box">
  180. <el-form-item :label="userChangeForm.type==='1'?'申请人身份证背面':'经办人身份证背面'" :prop="userChangeForm.type==='1'?'idCardBack':'agentIdCardBack'">
  181. <el-upload ref="uploadImgBack" class="avatar-uploader"
  182. style="width: 340px;height:214px"
  183. :limit="1" :on-exceed="handleImgBack" :data="data" accept=".png,.jpg,jpeg"
  184. :before-upload="beforeAvatarImgUpload" :show-file-list="false" :action="BaseService.getFileUploadUrl()"
  185. @success="(response: any, uploadFile: UploadFile) => onSuccess(response, uploadFile, userChangeForm.type==='1'?'idCardBack':'agentIdCardBack')">
  186. <img v-if="userChangeForm.type==='1' && userChangeForm.idCardBack" :src="userChangeForm.idCardBack" class="avatar" />
  187. <img v-else-if="userChangeForm.type==='2' && userChangeForm.agentIdCardBack" :src="userChangeForm.agentIdCardBack" class="avatar" />
  188. <el-icon v-else class="avatar-uploader-icon">
  189. <Plus />
  190. </el-icon>
  191. </el-upload>
  192. </el-form-item>
  193. </el-col>
  194. <el-col :span="12">
  195. <el-form-item label="">
  196. <el-button type="primary" @click="doOcr(1)" :loading="frontLoading">识别正面证件</el-button>
  197. </el-form-item>
  198. </el-col>
  199. <el-col :span="12">
  200. <el-form-item label="" v-if="userChangeForm.type==='1'">
  201. <el-button type="primary" @click="doOcr(2)" :loading="backLoading">识别背面证件</el-button>
  202. </el-form-item>
  203. </el-col>
  204. </el-row>
  205. </el-form>
  206. <div class="btn_btm">
  207. <el-button @click="userChangeDialog = false">取 消</el-button>
  208. <el-button type="primary" @click="submitChange()">确 定</el-button>
  209. </div>
  210. </div>
  211. </el-dialog>
  212. </div>
  213. </template>
  214. <!-- 用户信息查询 -->
  215. <script setup lang="ts">
  216. import { ref, toRaw, onMounted, watch, computed, reactive, onUnmounted } from "vue";
  217. // @ts-ignore crudFrom模板
  218. import CrudTemplate from "@/crud/index.vue";
  219. import $storeinitData from "@/store/initData"; //引入tab vuex
  220. import BaseService from "@/utils/baseService"; //引入接口请求
  221. import {ElMessage, genFileId, UploadInstance, UploadProps, UploadRawFile} from "element-plus"; //提示
  222. import {
  223. userInfoQuery,
  224. userPersonalInfoEdit,
  225. userUnitInfoEdit
  226. } from "@/api/onlineBusinessHall/informationManagement";
  227. import { getCodeApi, checkCodeApi } from "@/api/system/login"
  228. import { useRoute } from 'vue-router';
  229. import { IsPermission } from "@/router/routerUtil";
  230. import { dataDesensitization,changeAddress } from "@/utils/utils";
  231. //或取路由传入过来的对象数据
  232. const route = useRoute();
  233. const crudRef = ref();
  234. //启用状态
  235. const VEHICLE_COLOR_TYPE = computed(() => {
  236. return $storeinitData.state.dictData["VEHICLE_COLOR_TYPE"] || [];
  237. }); //车牌颜色
  238. const CERTIFICATE_TYPE = computed(() => {
  239. return $storeinitData.state.dictData["ID_TYPE"] || [];
  240. }); //用户证件类型
  241. const USER_TYPE = computed(() => {
  242. return $storeinitData.state.dictData["ETC_USER_TYPE"] || [];
  243. }); //用户类型
  244. const AGENCY_TYPE = computed(() => {
  245. return $storeinitData.state.dictData["AGENCY_TYPE"] || [];
  246. }); // 渠道类型
  247. const EMERGENCY_VEHICLE_TYPE = computed(() => {
  248. return $storeinitData.state.dictData["EMERGENCY_VEHICLE_TYPE"] || [];
  249. }); // 应急车标识
  250. //查询参数
  251. const searchForm = ref({
  252. customerId: '', // 用户编号
  253. customerName: '', // 用户名称
  254. customerIdType: '', // 用户证件号类型
  255. customerIdNum: '', // 用户证件号码
  256. customerTel: '', // 用户手机号
  257. });
  258. let tableData: any = ref([]);
  259. const typeOption = ref("");
  260. onMounted(() => {
  261. getList();
  262. });
  263. // 搜索按钮
  264. function btnSearch() {
  265. field.value.paging.currentPage = 1;
  266. getList();
  267. }
  268. const userType = ref() // 用户类型 1个人 2单位
  269. // 普通客服手机验证
  270. const phoneVerificationDialog = ref(false)
  271. const userInfoDialog = ref(false)
  272. const info = ref({})
  273. const verificationDialog = ref()
  274. const verification = reactive({
  275. mobileDesensitization: '',
  276. mobile: '',
  277. code: ''
  278. })
  279. const rowId = ref()
  280. const rowData: any = ref({})
  281. function verificationForm(verificationDialog) {
  282. BaseService.post('/userw/portal/checkmobilecode', { mobile: verification.mobile, code: verification.code }).then((res: any) => {
  283. if (res && res.statusCode === 0) {
  284. ElMessage.success("验证成功");
  285. if (typeOption.value == 'edit') {
  286. crudRef.value.dialogFormVisible = true
  287. } else if (typeOption.value == 'info') {
  288. crudRef.value.dialogInfo = true
  289. }
  290. phoneVerificationDialog.value = false
  291. rowData.value[rowId.value].isVerification = false
  292. rowData.value[rowId.value].disabled = false
  293. rowData.value[rowId.value].count = 60
  294. } else {
  295. ElMessage.error(res.message);
  296. }
  297. });
  298. }
  299. // 编辑按钮
  300. function handleEdit(idx: any, row: any) {
  301. rowId.value = row.customerId
  302. unit.value = '获取验证码'
  303. typeOption.value = "edit";
  304. if (row.userType == 1) {
  305. userType.value = 1
  306. field.value.dialogArray = userPersonalArray
  307. } else if (row.userType == 2) {
  308. userType.value = 2
  309. field.value.dialogArray = userUnitArray
  310. } else {
  311. userType.value = ''
  312. field.value.dialogArray = []
  313. }
  314. customerTel.value = JSON.parse(JSON.stringify(row.customerTel))
  315. oldTel.value = JSON.parse(JSON.stringify(row.customerTel))
  316. customerTelInput(row.customerTel)
  317. // if (IsPermission(route, 'REGULAR_CUSTOMER_SERVICE') && rowData.value[rowId.value].isVerification) {
  318. // crudRef.value.dialogFormVisible = false
  319. // verification.mobile = row.customerTel
  320. // verification.mobileDesensitization = dataDesensitization(row.customerTel)
  321. // verification.code = ''
  322. // phoneVerificationDialog.value = true
  323. // }
  324. }
  325. // 点击验证
  326. function unitClick(e, item, value, type) {
  327. console.log(value, 'value')
  328. //iaw/message/sendMessage
  329. BaseService.post('/iaw/portal/sendCode', { mobile: value }).then((res: any) => {
  330. if (res && res.statusCode === 0) {
  331. ElMessage.success("验证码已发送到手机");
  332. timerHandler(type)
  333. } else {
  334. ElMessage.error(res.message);
  335. }
  336. });
  337. }
  338. let timer: any = {}
  339. let timer1: any = {}
  340. // 倒计时
  341. const timerHandler = (type) => {
  342. if (type == 0) {
  343. rowData.value[rowId.value].count = 60
  344. rowData.value[rowId.value].disabled = true
  345. timer[rowId.value] = setInterval(() => {
  346. if (rowData.value[rowId.value].count > 1 && rowData.value[rowId.value].count <= 60) {
  347. rowData.value[rowId.value].count = rowData.value[rowId.value].count - 1
  348. } else {
  349. rowData.value[rowId.value].disabled = false
  350. clearInterval(timer[rowId.value])
  351. }
  352. }, 2000)
  353. } else {
  354. rowData.value[rowId.value].count1 = 60
  355. rowData.value[rowId.value].disabled1 = true
  356. timer1[rowId.value] = setInterval(() => {
  357. if (rowData.value[rowId.value].count1 > 1 && rowData.value[rowId.value].count1 <= 60) {
  358. rowData.value[rowId.value].count1 = rowData.value[rowId.value].count1 - 1
  359. } else {
  360. rowData.value[rowId.value].disabled1 = false
  361. clearInterval(timer1[rowId.value])
  362. }
  363. }, 2000)
  364. }
  365. }
  366. // 取消
  367. function cancel() {
  368. crudRef.value.reset();
  369. }
  370. //分页
  371. function handleCurrentChange(val: number) {
  372. field.value.paging.currentPage = val;
  373. getList();
  374. }
  375. // 搜索重置
  376. function refreshLeft() {
  377. searchForm.value = {
  378. customerId: '',
  379. customerName: '',
  380. customerIdType: '',
  381. customerIdNum: '',
  382. customerTel: '',
  383. };
  384. field.value.paging.currentPage = 1;
  385. getList();
  386. }
  387. // 详情
  388. function handleInfo(idx: any, row: any) {
  389. rowId.value = row.customerId
  390. typeOption.value = "info";
  391. unit.value = null
  392. if (row.userType == 1) {
  393. userType.value = 1
  394. field.value.dialogArray = userPersonalArray
  395. } else if (row.userType == 2) {
  396. userType.value = 2
  397. field.value.dialogArray = userUnitArray
  398. } else {
  399. userType.value = ''
  400. field.value.dialogArray = []
  401. }
  402. // if (IsPermission(route, 'REGULAR_CUSTOMER_SERVICE') && rowData.value[rowId.value].isVerification) {
  403. // crudRef.value.dialogInfo = false
  404. // verification.mobile = row.customerTel
  405. // verification.mobileDesensitization = dataDesensitization(row.customerTel)
  406. // verification.code = ''
  407. // phoneVerificationDialog.value = true
  408. // }
  409. }
  410. function customerTelInput(value) {
  411. if (oldTel.value === value) {
  412. verificationCodeShow.value = false
  413. field.value.dialogArray.forEach(item => {
  414. if (item.prop === 'newMobileCode') {
  415. item.form.hideEdit = true
  416. }
  417. })
  418. } else {
  419. verificationCodeShow.value = true
  420. field.value.dialogArray.forEach(item => {
  421. if (item.prop === 'newMobileCode') {
  422. item.form.hideEdit = false
  423. }
  424. })
  425. }
  426. }
  427. const customerTel = ref()
  428. const oldTel = ref()
  429. const unit = ref()
  430. const verificationCodeShow = ref(false)
  431. //编辑与添加提交
  432. function submit(data: any) {
  433. let api = ''
  434. if (userType.value == 1) {
  435. api = 'iaw/aftersale/customerInfoChange/changeApply'
  436. } else if (userType.value == 2) {
  437. api = userUnitInfoEdit
  438. }
  439. if (oldTel.value !== customerTel.value) {
  440. data.customerTel = customerTel.value
  441. } else {
  442. data.customerTel = ''
  443. }
  444. // console.log(data, 'datadata')
  445. let datas = JSON.parse(JSON.stringify(toRaw(data)));
  446. BaseService.post(api, datas).then((res: any) => {
  447. if (res && res.statusCode === 0) {
  448. ElMessage.success("操作成功");
  449. getList();
  450. cancel();
  451. } else {
  452. ElMessage.error(res.message);
  453. }
  454. });
  455. }
  456. //获取列表
  457. function getList() {
  458. if(!IsPermission(route, 'QUERY_BASE')){
  459. ElMessage.error('您没有权限,请联系管理员!')
  460. return
  461. }
  462. let falg = false
  463. let params: any = {
  464. pageNo: field.value.paging.currentPage,
  465. pageSize: field.value.paging.pageSize,
  466. }
  467. let searchFormList = { ...searchForm.value };
  468. for (let key in searchFormList) {
  469. if (searchFormList[key]) {
  470. falg = true
  471. params[key] = searchFormList[key];
  472. }
  473. }
  474. // if (!falg) {
  475. // ElMessage.error('请输入查询条件')
  476. // return
  477. // }
  478. // if (!searchForm.value.customerId || !searchForm.value.customerIdNum || !searchForm.value.customerIdType|| !searchForm.value.customerIdNum|| !searchForm.value.customerTel) {
  479. // ElMessage.error('请输入查询信息');
  480. // }
  481. crudRef.value.tableLoding = true;
  482. BaseService.post('/managew/api/baseInfo/queryCustomer', params).then((res: any) => {
  483. if (res && res.statusCode === 0) {
  484. //数据转换
  485. let bizContent = res
  486. let data = bizContent.data.result || [];
  487. //数据渲染
  488. data.forEach(item => {
  489. item.customerIdNumDesensitization = dataDesensitization(item.customerIdNum)
  490. item.customerTelDesensitization = dataDesensitization(item.customerTel)
  491. item.agentIdNumDesensitization = dataDesensitization(item.agentIdNum)
  492. rowData.value[item.customerId] = {
  493. isVerification: true,
  494. count: 60,
  495. disabled: false,
  496. count1: 60,
  497. disabled1: false
  498. }
  499. })
  500. tableData.value = data;
  501. crudRef.value.tableLoding = false;
  502. //分页总数
  503. console.log('分页总数', bizContent.totalCount)
  504. field.value.paging.total = bizContent.data.totalCount;
  505. } else {
  506. crudRef.value.tableLoding = false;
  507. // ElMessage.error(res.message);
  508. }
  509. });
  510. }
  511. function getLabel(item, selectedValue) {
  512. let data = item;
  513. let selectedLabel = "未知";
  514. for (var i = 0; i < data.length; i++) {
  515. if (data[i].code == selectedValue) {
  516. selectedLabel = data[i].name;
  517. break;
  518. }
  519. }
  520. return selectedLabel;
  521. }
  522. //详情信息
  523. function showUserInfo(row: any){
  524. let labels = field.value.field
  525. const result: Record<string, any> = {}; // 临时存储结果
  526. // 遍历 labels,提取 label 和对应的 value
  527. labels.forEach((fieldConfig) => {
  528. const { prop, label, type, listData } = fieldConfig;
  529. // console.log('isShow', isShow)
  530. result[prop] = {
  531. label: label, // 显示名称
  532. value: row[prop] ?? '--', // 对应 row 的值
  533. type: type,
  534. listData: listData
  535. };
  536. });
  537. info.value = result; // 更新响应式数据
  538. // console.log('info.value', info.value)
  539. userInfoDialog.value = true
  540. }
  541. let formLabelWidth = "180px";
  542. const userPersonalArray = [
  543. {
  544. prop: "customerIdType",
  545. label: "证件类型",
  546. listData: CERTIFICATE_TYPE,
  547. form: {
  548. hideEdit: true,
  549. width: '90%',
  550. formLabelWidth: formLabelWidth,
  551. type: 'select',
  552. listData: CERTIFICATE_TYPE,
  553. }
  554. },
  555. {
  556. prop: "customerIdNum",
  557. label: "证件号码",
  558. form: {
  559. hideEdit: true,
  560. width: '90%',
  561. formLabelWidth: formLabelWidth,
  562. type: 'input',
  563. }
  564. },
  565. {
  566. prop: "customerTel",
  567. label: "手机号",
  568. form: {
  569. width: '90%',
  570. formLabelWidth: formLabelWidth,
  571. slotSetEdit: true,
  572. slotSetNameEdit: "customerTelSlot",
  573. }
  574. },
  575. {
  576. prop: "newMobileCode",
  577. label: "手机号验证",
  578. form: {
  579. hideInfo: true,
  580. hideEdit: true,
  581. formLabelWidth: formLabelWidth,
  582. placeholder: '请输入验证码',
  583. width: '90%',
  584. type: 'input',
  585. }
  586. },
  587. {
  588. prop: "customerAddress",
  589. label: "地址",
  590. form: {
  591. formLabelWidth: formLabelWidth,
  592. width: '90%',
  593. type: 'input',
  594. }
  595. },
  596. {
  597. prop: "customerPosImgUrl",
  598. label: "证件照正面照片",
  599. type: 'img',
  600. form: {
  601. width: '90%',
  602. formLabelWidth: formLabelWidth,
  603. type: 'uploadImg',
  604. }
  605. },
  606. {
  607. prop: "customerNegImgUrl",
  608. label: "证件照反面照片",
  609. type: 'img',
  610. form: {
  611. width: '90%',
  612. formLabelWidth: formLabelWidth,
  613. type: 'uploadImg',
  614. }
  615. },
  616. {
  617. prop: "sceneType",
  618. label: "用户协议支撑服务场景",
  619. form: {
  620. formLabelWidth: formLabelWidth,
  621. width: '90%',
  622. type: 'input',
  623. hideEdit: true
  624. }
  625. },
  626. ]
  627. const userUnitArray = [
  628. {
  629. prop: "customerIdType",
  630. label: "证件类型",
  631. listData: CERTIFICATE_TYPE,
  632. form: {
  633. hideEdit: true,
  634. width: '90%',
  635. formLabelWidth: formLabelWidth,
  636. type: 'select',
  637. listData: CERTIFICATE_TYPE,
  638. }
  639. },
  640. {
  641. prop: "customerIdNum",
  642. label: "证件号码",
  643. form: {
  644. hideEdit: true,
  645. width: '90%',
  646. formLabelWidth: formLabelWidth,
  647. type: 'input',
  648. }
  649. },
  650. {
  651. prop: "customerTel",
  652. label: "手机号",
  653. form: {
  654. width: '90%',
  655. formLabelWidth: formLabelWidth,
  656. slotSetEdit: true,
  657. slotSetNameEdit: "customerTelSlot",
  658. }
  659. },
  660. {
  661. prop: "newMobileCode",
  662. label: "手机号验证",
  663. form: {
  664. hideInfo: true,
  665. hideEdit: true,
  666. formLabelWidth: formLabelWidth,
  667. placeholder: '请输入验证码',
  668. width: '90%',
  669. type: 'input',
  670. }
  671. },
  672. {
  673. prop: "customerPosImgUrl",
  674. label: "用户证件号正面照",
  675. type: 'img',
  676. width: '90%',
  677. form: {
  678. formLabelWidth: formLabelWidth,
  679. type: 'uploadImg',
  680. }
  681. },
  682. {
  683. prop: "customerNegImgUrl",
  684. label: "用户证件号反面照",
  685. type: 'img',
  686. form: {
  687. width: '90%',
  688. formLabelWidth: formLabelWidth,
  689. type: 'uploadImg',
  690. }
  691. },
  692. {
  693. prop: "customerAddress",
  694. label: "单位地址",
  695. form: {
  696. formLabelWidth: formLabelWidth,
  697. width: '90%',
  698. type: 'input',
  699. }
  700. },
  701. {
  702. prop: "sceneType",
  703. label: "用户协议支撑服务场景",
  704. form: {
  705. formLabelWidth: formLabelWidth,
  706. width: '90%',
  707. type: 'input',
  708. hideEdit: true
  709. }
  710. },
  711. {
  712. prop: "agentName",
  713. label: "指定经办人姓名",
  714. form: {
  715. formLabelWidth: formLabelWidth,
  716. width: '90%',
  717. type: 'input',
  718. }
  719. },
  720. {
  721. prop: "agentIdType",
  722. label: "指定经办人证件号类型",
  723. listData: CERTIFICATE_TYPE,
  724. form: {
  725. formLabelWidth: formLabelWidth,
  726. listData: CERTIFICATE_TYPE,
  727. width: '90%',
  728. type: 'select',
  729. }
  730. },
  731. {
  732. prop: "agentIdNum",
  733. label: "指定经办人证件号",
  734. form: {
  735. formLabelWidth: formLabelWidth,
  736. width: '90%',
  737. type: 'input',
  738. }
  739. },
  740. {
  741. prop: "agentPosImgUrl",
  742. label: "指定经办人证件正面照",
  743. type: 'img',
  744. form: {
  745. width: '90%',
  746. hideEdit: true,
  747. formLabelWidth: formLabelWidth,
  748. type: 'uploadImg',
  749. }
  750. },
  751. {
  752. prop: "agentNegImgUrl",
  753. label: "指定经办人证件反面照",
  754. type: 'img',
  755. form: {
  756. width: '90%',
  757. hideEdit: true,
  758. formLabelWidth: formLabelWidth,
  759. type: 'uploadImg',
  760. }
  761. },
  762. {
  763. prop: "channelId",
  764. label: "开户渠道编号",
  765. form: {
  766. hideEdit: true,
  767. formLabelWidth: formLabelWidth,
  768. width: '90%',
  769. type: 'input',
  770. }
  771. },
  772. {
  773. prop: "channelType",
  774. label: "渠道类型",
  775. listData: AGENCY_TYPE,
  776. form: {
  777. hideEdit: true,
  778. formLabelWidth: formLabelWidth,
  779. width: '90%',
  780. listData: AGENCY_TYPE,
  781. type: 'select',
  782. }
  783. },
  784. {
  785. prop: "proxyUrl",
  786. label: "委托书",
  787. type: 'img',
  788. form: {
  789. hideEdit: true,
  790. formLabelWidth: formLabelWidth,
  791. width: '90%',
  792. type: 'uploadImg',
  793. }
  794. },
  795. {
  796. prop: "emergencyFlag",
  797. label: "应急车辆用户标识",
  798. listData: EMERGENCY_VEHICLE_TYPE,
  799. form: {
  800. hideEdit: true,
  801. formLabelWidth: formLabelWidth,
  802. width: '90%',
  803. listData: EMERGENCY_VEHICLE_TYPE,
  804. type: 'select',
  805. }
  806. },
  807. ]
  808. //以下为修改客户信息
  809. const submitLoading = ref(false)
  810. const userChangeDialog = ref(false)
  811. const showVerifyButtons = ref(false)
  812. const userChangeFormRef = ref()
  813. const userChangeForm = ref({
  814. type: '',
  815. name: '',
  816. idNo: '',
  817. address: '',
  818. tel: '',
  819. vld: '',
  820. agentName: '',
  821. agentIdNo: '',
  822. agentAddress: '',
  823. verifyCode: '',
  824. idCardFront: '',
  825. idCardBack: '',
  826. agentIdCardFront: '',
  827. agentIdCardBack: '',
  828. mobileChange: '',
  829. })
  830. const originalTel = ref()
  831. const rules = reactive({
  832. name: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
  833. address: [{ required: true, message: '请输入地址', trigger: 'blur' },],
  834. tel: [{ required: true, message: '请输入手机号', trigger: 'blur' },],
  835. vld: [{ required: true, message: '请输入有效期', trigger: 'blur' },],
  836. verifyCode: [{ required: true, message: '请输入验证码', trigger: 'blur' },],
  837. idCardFront: [{ required: true, message: '请上传证件正面照', trigger: 'blur' },],
  838. idCardBack: [{ required: true, message: '请上传证件反面照', trigger: 'blur' },],
  839. agentIdCardFront: [{ required: true, message: '请上传经办人证件正面照', trigger: 'blur' },],
  840. agentIdCardBack: [{ required: true, message: '请上传经办人证件反面照', trigger: 'blur' },],
  841. agentName: [{ required: true, message: '请输入经办人姓名', trigger: 'blur' }],
  842. agentIdNo: [{ required: true, message: '请输入经办人证件号', trigger: 'blur' }],
  843. })
  844. function edit(row: any) {
  845. console.log("===>row", row)
  846. const data = toRaw(row)
  847. originalTel.value = data.customerTel
  848. userChangeForm.value = {
  849. customerId: data.customerId,
  850. //提交数据
  851. type: data.userType==="PERSONAL_USER"?'1':'2',
  852. name: data.customerName,
  853. idNo: data.customerIdNum,
  854. address: data.customerAddress,
  855. tel: data.customerTel,
  856. vld: data.customerVid,
  857. agentName: data.agentName,
  858. agentIdNo: data.agentIdNum,
  859. agentAddress: '',
  860. verifyCode: '',
  861. idCardFront: import.meta.env.VITE_APP_UPLOAD_URL+data.customerPosImgUrl,
  862. idCardBack: import.meta.env.VITE_APP_UPLOAD_URL+data.customerNegImgUrl,
  863. agentIdCardFront: import.meta.env.VITE_APP_UPLOAD_URL+data.agentPosImgUrl,
  864. agentIdCardBack: import.meta.env.VITE_APP_UPLOAD_URL+data.agentNegImgUrl,
  865. mobileChange: '1',
  866. }
  867. userChangeDialog.value = true
  868. }
  869. // 上传成功
  870. function onSuccess(response: any, uploadFile: any, item: any) {
  871. if(response.code == 200){
  872. // console.log("1===>form.value",form.value)
  873. // if (item.prop == 'front') {
  874. // form.value.imagePath = response.data.ossFilePath
  875. // }
  876. userChangeForm.value[item] = import.meta.env.VITE_APP_UPLOAD_URL + response.data.ossFilePath
  877. ElMessage.success(response.msg)
  878. }
  879. }
  880. const data = { bucket: "" };
  881. const uploadImg = ref<UploadInstance>()
  882. const uploadImgBack = ref<UploadInstance>()
  883. const uploadImgYyzz = ref<UploadInstance>()
  884. //覆盖替换上一个文件
  885. const handleImg: UploadProps['onExceed'] = (files) => {
  886. uploadImg.value![0].clearFiles()
  887. const file = files[0] as UploadRawFile
  888. file.uid = genFileId()
  889. uploadImg.value![0].handleStart(file)
  890. uploadImg.value![0].submit()
  891. }
  892. const handleImgBack: UploadProps['onExceed'] = (files) => {
  893. uploadImgBack.value![0].clearFiles()
  894. const file = files[0] as UploadRawFile
  895. file.uid = genFileId()
  896. uploadImgBack.value![0].handleStart(file)
  897. uploadImgBack.value![0].submit()
  898. }
  899. const handleImgYyzz: UploadProps['onExceed'] = (files) => {
  900. uploadImgYyzz.value![0].clearFiles()
  901. const file = files[0] as UploadRawFile
  902. file.uid = genFileId()
  903. uploadImgYyzz.value![0].handleStart(file)
  904. uploadImgYyzz.value![0].submit()
  905. }
  906. const beforeAvatarImgUpload: UploadProps['beforeUpload'] = (rawFile) => {
  907. if (rawFile.size / 1024 / 1024 > 5) {
  908. ElMessage.error('文件大小不能超过 5MB!')
  909. return false
  910. }
  911. return true
  912. }
  913. function submitChange(){
  914. userChangeFormRef.value.validate((valid) => {
  915. console.log("===>userChangeForm",userChangeForm.value)
  916. if (valid) {
  917. submitLoading.value = true
  918. BaseService.postN('/managew/customerInfoChange/apply', userChangeForm.value).then((res) => {
  919. if (res.code == 200) {
  920. ElMessage.success(res.msg)
  921. submitLoading.value = false
  922. userChangeDialog.value = false
  923. }
  924. }).catch((error) => {
  925. submitLoading.value = false
  926. })
  927. }
  928. })
  929. }
  930. // 监听手机号变化
  931. watch(() => userChangeForm.value.tel, (newVal, oldVal) => {
  932. if (newVal !== oldVal) {
  933. handleTelChange()
  934. }
  935. })
  936. const handleTelChange = () => {
  937. showVerifyButtons.value = userChangeForm.value.tel !== originalTel.value
  938. userChangeForm.value.mobileChange = showVerifyButtons.value?'2':'1'
  939. }
  940. const frontLoading = ref(false)
  941. const backLoading = ref(false)
  942. const yyzzLoading = ref(false)
  943. function doOcr(type) {
  944. let img = '';
  945. let changeType = userChangeForm.value.type;
  946. if (changeType === '1') {
  947. if (type === 1) {
  948. frontLoading.value = true
  949. img = userChangeForm.value.idCardFront ?? ''
  950. if (!img) {
  951. ElMessage.error('请上传证件正面');
  952. frontLoading.value = false
  953. return
  954. }
  955. } else if (type === 2) {
  956. backLoading.value = true
  957. img = userChangeForm.value.idCardBack ?? ''
  958. if (!img) {
  959. ElMessage.error('请上传证件背面');
  960. backLoading.value = false
  961. return
  962. }
  963. }
  964. } else if (changeType === '2') {
  965. if (type === 1) {
  966. frontLoading.value = true
  967. img = userChangeForm.value.agentIdCardFront ?? ''
  968. if (!img) {
  969. ElMessage.error('请上传证件正面');
  970. frontLoading.value = false
  971. return
  972. }
  973. } else if (type === 5) {
  974. yyzzLoading.value = true
  975. img = userChangeForm.value.idCardFront ?? ''
  976. if (!img) {
  977. ElMessage.error('请上传营业执照正面');
  978. yyzzLoading.value = false
  979. return
  980. }
  981. }
  982. }
  983. const params = {
  984. type: type,
  985. imagePath: img.replace(import.meta.env.VITE_APP_UPLOAD_URL, '')
  986. }
  987. // console.log("===>params",params)
  988. BaseService.postN('/iaw/api/ocr/do', params).then((res: any) => {
  989. if (res && res.statusCode === 0) {
  990. const data = res.data
  991. // console.log("====>data",data)
  992. if (changeType === '1') {
  993. if (type === 1) {
  994. userChangeForm.value.name = data.name
  995. userChangeForm.value.address = data.address
  996. } else if (type === 2) {
  997. userChangeForm.value.vld = data.enddate
  998. }
  999. }else if (changeType === '2') {
  1000. if (type === 1) {
  1001. userChangeForm.value.agentName = data.name
  1002. userChangeForm.value.agentIdNo = data.address
  1003. } else if (type === 5) {
  1004. userChangeForm.value.name = data.unitName
  1005. userChangeForm.value.address = data.adress
  1006. }
  1007. }
  1008. frontLoading.value = false
  1009. backLoading.value = false
  1010. yyzzLoading.value = false
  1011. ElMessage.success('识别成功');
  1012. }
  1013. }).catch((error) => {
  1014. frontLoading.value = false
  1015. backLoading.value = false
  1016. yyzzLoading.value = false
  1017. })
  1018. }
  1019. //表单数据配置
  1020. let field: any = ref({
  1021. dialogInfo: false, //是否展示详情 (默认false)
  1022. // dialogCustom: true,
  1023. border: true, //是否添加边框(默认false)
  1024. searchShow: IsPermission(route, 'QUERY_BASE'), //搜索展示
  1025. crudChildShow: true,
  1026. operateFixed: true,
  1027. paginStart: true, //是否显示分页查询 (默认false)
  1028. dialogWidth: "60%",
  1029. operateWidth: "140", //操作栏宽度
  1030. operateTitle: '操作', //操作栏标题(默认为"")
  1031. crud: {
  1032. add: false,
  1033. },
  1034. operate: {
  1035. info: false,
  1036. // edit: IsPermission(route, 'EDIT_LIST'), //是否编辑(默认true)
  1037. edit: false,
  1038. delete: false, //是否删除(默认true)
  1039. remark: false, // 查看
  1040. announcement: false, // 公告
  1041. forbidden: false, // 禁用
  1042. enable: false, // 启用
  1043. authorization: false, // 授权
  1044. cancel: false, // 取消订单
  1045. },
  1046. tableSize: -1,
  1047. paging: {
  1048. pageSize: 10,
  1049. currentPage: 1,
  1050. total: 0,
  1051. },
  1052. extend: [
  1053. {
  1054. label: "序号",
  1055. type: "index",
  1056. width: "50px",
  1057. },
  1058. ],
  1059. field: [
  1060. {
  1061. width: '140',
  1062. prop: "customerId",
  1063. label: "用户编号",
  1064. type: 'text',
  1065. form: {
  1066. hideEdit: true,
  1067. width: '90%',
  1068. formLabelWidth: formLabelWidth,
  1069. type: 'input',
  1070. required: true,
  1071. }
  1072. },
  1073. {
  1074. prop: "issuerId",
  1075. label: "发行方编号",
  1076. type: 'text',
  1077. hide: true,
  1078. form: {
  1079. width: '90%',
  1080. formLabelWidth: formLabelWidth,
  1081. type: 'input',
  1082. }
  1083. },
  1084. {
  1085. prop: "registeredDate",
  1086. label: "注册日期",
  1087. type: 'text',
  1088. hide: true,
  1089. form: {
  1090. width: '90%',
  1091. formLabelWidth: formLabelWidth,
  1092. type: 'input',
  1093. }
  1094. },
  1095. {
  1096. prop: "seriseNo",
  1097. label: "流水编号",
  1098. type: 'text',
  1099. form: {
  1100. width: '90%',
  1101. formLabelWidth: formLabelWidth,
  1102. type: 'input',
  1103. }
  1104. },
  1105. {
  1106. prop: "userType",
  1107. label: "用户类型",
  1108. type: 'text',
  1109. listData: USER_TYPE,
  1110. form: {
  1111. width: '90%',
  1112. formLabelWidth: formLabelWidth,
  1113. type: 'select',
  1114. listData: USER_TYPE,
  1115. }
  1116. },
  1117. {
  1118. prop: "customerName",
  1119. label: "用户名称",
  1120. type: 'text',
  1121. form: {
  1122. width: '90%',
  1123. formLabelWidth: formLabelWidth,
  1124. type: 'input',
  1125. }
  1126. },
  1127. {
  1128. prop: "customerIdType",
  1129. label: "证件类型",
  1130. type: 'text',
  1131. // listData: CERTIFICATE_TYPE,
  1132. form: {
  1133. width: '90%',
  1134. formLabelWidth: formLabelWidth,
  1135. type: 'select',
  1136. // listData: CERTIFICATE_TYPE,
  1137. }
  1138. },
  1139. {
  1140. width: '150',
  1141. prop: "customerIdNumDesensitization",
  1142. label: "证件号码",
  1143. type: 'text',
  1144. form: {
  1145. width: '90%',
  1146. formLabelWidth: formLabelWidth,
  1147. type: 'input',
  1148. }
  1149. },
  1150. {
  1151. prop: "customerTelDesensitization",
  1152. label: "手机号",
  1153. type: 'text',
  1154. form: {
  1155. width: '90%',
  1156. formLabelWidth: formLabelWidth,
  1157. type: 'input',
  1158. }
  1159. },
  1160. {
  1161. prop: "customerAddress",
  1162. label: "开户人地址",
  1163. type: 'text',
  1164. form: {
  1165. width: '90%',
  1166. formLabelWidth: formLabelWidth,
  1167. type: 'input',
  1168. }
  1169. },
  1170. {
  1171. prop: "customerPosImgUrl",
  1172. label: "正面图片",
  1173. type: 'img',
  1174. hide: true,
  1175. form: {
  1176. width: '90%',
  1177. formLabelWidth: formLabelWidth,
  1178. type: 'input',
  1179. }
  1180. },
  1181. {
  1182. prop: "customerNegImgUrl",
  1183. label: "反面图片",
  1184. type: 'img',
  1185. hide: true,
  1186. form: {
  1187. width: '90%',
  1188. formLabelWidth: formLabelWidth,
  1189. type: 'input',
  1190. }
  1191. },
  1192. {
  1193. prop: "agentName",
  1194. label: "经办人",
  1195. type: 'text',
  1196. hide: true,
  1197. form: {
  1198. hideEdit: true,
  1199. width: '90%',
  1200. formLabelWidth: formLabelWidth,
  1201. type: 'input',
  1202. }
  1203. },
  1204. {
  1205. prop: "agentIdType",
  1206. label: "经办人证件类型",
  1207. // listData: CERTIFICATE_TYPE,
  1208. type: 'text',
  1209. hide: true,
  1210. form: {
  1211. width: '90%',
  1212. formLabelWidth: formLabelWidth,
  1213. type: 'select',
  1214. // listData: CERTIFICATE_TYPE,
  1215. }
  1216. },
  1217. {
  1218. prop: "agentIdNumDesensitization",
  1219. label: "经办人证件号码",
  1220. type: 'text',
  1221. hide: true,
  1222. form: {
  1223. hideEdit: true,
  1224. width: '90%',
  1225. formLabelWidth: formLabelWidth,
  1226. type: 'input',
  1227. }
  1228. },
  1229. {
  1230. prop: "agentPosImgUrl",
  1231. label: "经办人正面图片",
  1232. type: 'img',
  1233. hide: true,
  1234. form: {
  1235. width: '90%',
  1236. formLabelWidth: formLabelWidth,
  1237. type: 'input',
  1238. }
  1239. },
  1240. {
  1241. prop: "agentNegImgUrl",
  1242. label: "经办人反面图片",
  1243. type: 'img',
  1244. hide: true,
  1245. form: {
  1246. width: '90%',
  1247. formLabelWidth: formLabelWidth,
  1248. type: 'input',
  1249. }
  1250. },
  1251. {
  1252. prop: "customerVid",
  1253. label: "证件过期时间",
  1254. type: 'text',
  1255. form: {
  1256. width: '90%',
  1257. formLabelWidth: formLabelWidth,
  1258. type: 'input',
  1259. }
  1260. },
  1261. {
  1262. prop: "channelId",
  1263. label: "开户渠道编号",
  1264. type: 'text',
  1265. hide: true,
  1266. form: {
  1267. width: '90%',
  1268. formLabelWidth: formLabelWidth,
  1269. type: 'input',
  1270. }
  1271. },
  1272. {
  1273. prop: "department",
  1274. label: "部门",
  1275. type: 'text',
  1276. hide: true,
  1277. form: {
  1278. hideEdit: true,
  1279. width: '90%',
  1280. formLabelWidth: formLabelWidth,
  1281. type: 'input',
  1282. }
  1283. },
  1284. ],
  1285. });
  1286. </script>
  1287. <style scoped>
  1288. :deep(.my-content){
  1289. word-break: break-all;
  1290. }
  1291. ::v-deep .el-upload {
  1292. width: 100%;
  1293. height: 100%;
  1294. }
  1295. ::v-deep .el-upload .avatar-uploader-icon {
  1296. width: 100%;
  1297. height: 100%;
  1298. }
  1299. .avatar-uploader .avatar {
  1300. width: 100%;
  1301. height: 100%;
  1302. display: block;
  1303. }
  1304. .btn_btm{
  1305. text-align: right;
  1306. }
  1307. ::v-deep.img-upload-box .el-form-item__label{
  1308. text-align: right;
  1309. }
  1310. .tel-container {
  1311. display: flex; /* 启用 Flex 布局 */
  1312. width: 100%; /* 确保容器宽度占满 */
  1313. }
  1314. .tel-input,.tel-verify{
  1315. transition: all 0.5s; /* 可选:添加平滑过渡效果 */
  1316. }
  1317. .tel-verify{
  1318. display: flex;
  1319. overflow: hidden
  1320. }
  1321. ::v-deep.my-img-box .el-image__preview{
  1322. width: 100%;
  1323. max-height: 150px;
  1324. object-fit: cover;
  1325. }
  1326. </style>