From b538026f2095c82a699c3269bfd6c6925ed4d662 Mon Sep 17 00:00:00 2001 From: zhangwei <1504152376@qq.com> Date: 星期五, 22 八月 2025 15:47:26 +0800 Subject: [PATCH] 用户管理 --- Web/src/theme/app.scss | 4 Web/src/views/Customer/fBS_CusExtend/component/editDialog.vue | 41 + Web/src/views/Customer/fBS_CusExtend/index.vue | 52 +- Web/src/views/Customer/fBS_CusExtendExamine/component/editDialogApply.vue | 66 ++- Web/src/views/Customer/fBS_CusExtend/component/fBS_Customer/editDialog.vue | 262 +++++++++++++++ Web/src/views/Customer/fBS_CusExtend/component/fBS_Customer/index.vue | 310 ++++++++++++++++++ Web/src/api/Customer/fBS_CusExtend.ts | 37 + Web/src/views/Customer/fBS_CusExtendExamine/index.vue | 38 +- Web/src/views/Customer/fBS_CusExtend/component/fBS_Customer/component/editDialog.vue | 151 ++++++++ 9 files changed, 877 insertions(+), 84 deletions(-) diff --git a/Web/src/api/Customer/fBS_CusExtend.ts b/Web/src/api/Customer/fBS_CusExtend.ts index 6c47570..bb74182 100644 --- a/Web/src/api/Customer/fBS_CusExtend.ts +++ b/Web/src/api/Customer/fBS_CusExtend.ts @@ -16,11 +16,40 @@ getParam:()=>baseApi.request({ url: '/api/fBS_CusExtend/getParam', method: 'get', - }, false), - changeSteps:(id: any, step: any, cancel: boolean = false)=>baseApi.request({ - url: `/api/fBS_CusExtend/changeSteps/${id}/${step}`, - method: 'get', + }, false), + //鍒嗛〉鏌ヨ 寰呭鏍镐紒涓氳鑹� + getReviewPage:( data:any,cancel: boolean = false)=>baseApi.request({ + url: `/api/fBS_CusExtend/getReviewPage`, + method: 'post', + data }, cancel), + // 鏇存敼瀹℃牳鐘舵�� + changeSteps:(coutomerExRolesId: any, step: any, cancel: boolean = false)=>baseApi.request({ + url: `/api/fBS_CusExtend/changeSteps/${coutomerExRolesId}/${step}`, + method: 'get', + }, cancel), + // 淇敼鐢ㄦ埛 + upDataCustormerUser:(data: any, cancel: boolean = false)=>baseApi.request({ + url: '/api/fBS_CusExtend/upDataCustormerUser', + method: 'post', + data + }, cancel), + // 鑾峰彇鐢ㄦ埛淇℃伅 + custormerUserInfo:(custormerUserId: any, cancel: boolean = false)=>baseApi.request({ + url: `/api/fBS_CusExtend/custormerUserInfo/${custormerUserId}`, + method: 'get', + }, cancel), + // 鏂板缓鍛樺伐 + careCustormerUser:(data: any, cancel: boolean = false)=>baseApi.request({ + url: '/api/fBS_CusExtend/careCustormerUser', + method: 'post', + data + }, cancel), + // 鍒犻櫎鍛樺伐 + delCustormerUser:(custormerUserId: any, cancel: boolean = false)=>baseApi.request({ + url: `/api/fBS_CusExtend/delCustormerUser/${custormerUserId}`, + method: 'delete', + }, cancel), // 鍒犻櫎浼佷笟璧勬枡 delete: baseApi.delete, // 鎵归噺鍒犻櫎浼佷笟璧勬枡 diff --git a/Web/src/theme/app.scss b/Web/src/theme/app.scss index a86d01a..170cd44 100644 --- a/Web/src/theme/app.scss +++ b/Web/src/theme/app.scss @@ -218,6 +218,10 @@ .flex { display: flex; } +.flex-end { + display: flex; + justify-content: end; +} .flex-auto { flex: 1; overflow: hidden; diff --git a/Web/src/views/Customer/fBS_CusExtend/component/editDialog.vue b/Web/src/views/Customer/fBS_CusExtend/component/editDialog.vue index d260286..c5be1ca 100644 --- a/Web/src/views/Customer/fBS_CusExtend/component/editDialog.vue +++ b/Web/src/views/Customer/fBS_CusExtend/component/editDialog.vue @@ -55,7 +55,7 @@ state.title = title; row = row ?? { }; state.ruleForm = row.id ? await fBS_CusExtendApi.detail(row.id).then(res => res.data.result) : JSON.parse(JSON.stringify(row)); - state.ruleForm.enterpriseType = state.ruleForm.enterpriseType.split(","); + state.ruleForm.enterpriseType = state.ruleForm.enterpriseType&&state.ruleForm.enterpriseType.split(","); state.showDialog = true; }; @@ -160,7 +160,7 @@ <el-input v-model="state.ruleForm.unifiedSocialCreditCode" placeholder="璇疯緭鍏ョ粺涓�绀句細淇$敤浠g爜" show-word-limit clearable /> </el-form-item> </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" class="mb20" > + <!-- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" class="mb20" > <el-form-item label="浜ゆ槗涓讳綋" prop="transactionCode"> <el-select v-model="state.ruleForm.transactionCode" @@ -174,9 +174,8 @@ :value="item.code" /> </el-select> - <!-- <el-input v-model="state.ruleForm.transactionCode" placeholder="璇疯緭鍏ヤ氦鏄撲富浣�" show-word-limit clearable /> --> </el-form-item> - </el-col> + </el-col> --> <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" class="mb20" > <el-form-item label="娉ㄥ唽璧勯噾" prop="registeredCapital"> <el-input v-model="state.ruleForm.registeredCapital" placeholder="璇疯緭鍏ユ敞鍐岃祫閲�" show-word-limit clearable /> @@ -205,6 +204,29 @@ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" > <el-form-item label="浼佷笟涓昏惀涓氬姟" prop="mainBusiness"> <el-input type="textarea" autosize v-model="state.ruleForm.mainBusiness" placeholder="璇疯緭鍏ヤ紒涓氫富钀ヤ笟鍔�" show-word-limit clearable /> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" class="mb20" > + <el-form-item label="寮�鎴疯" prop="bankName"> + <el-input v-model="state.ruleForm.bankName" placeholder="璇疯緭鍏ュ紑鎴疯" show-word-limit clearable /> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8" class="mb20" > + <el-form-item label="閾惰璐﹀彿" prop="bankAccount"> + <el-input v-model="state.ruleForm.bankAccount" placeholder="璇疯緭鍏ラ摱琛岃处鍙�" show-word-limit clearable /> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" > + <el-form-item label="閾惰鏀舵浜岀淮鐮�" prop="bankAccountIMG"> + <el-image + :src="state.ruleForm.bankAccountIMG" + :zoom-rate="1.2" + :preview-src-list="[state.ruleForm.bankAccountIMG]" + preview-teleported + fit="cover" + style="width:200px;height:150px" + /> + <!-- <el-input v-model="state.ruleForm.legalRepresentativeIdCard" placeholder="璇疯緭鍏ユ硶瀹氫唬琛ㄤ汉韬唤璇佹枃浠惰矾寰�" show-word-limit clearable /> --> </el-form-item> </el-col> <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" > @@ -263,16 +285,7 @@ <el-input v-model="state.ruleForm.operatorPhone" placeholder="璇疯緭鍏ヤ笟鍔$粡鍔炰汉鐢佃瘽" show-word-limit clearable /> </el-form-item> </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" class="mb20" > - <el-form-item label="寮�鎴疯" prop="bankName"> - <el-input v-model="state.ruleForm.bankName" placeholder="璇疯緭鍏ュ紑鎴疯" show-word-limit clearable /> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="8" class="mb20" > - <el-form-item label="閾惰璐﹀彿" prop="bankAccount"> - <el-input v-model="state.ruleForm.bankAccount" placeholder="璇疯緭鍏ラ摱琛岃处鍙�" show-word-limit clearable /> - </el-form-item> - </el-col> + <!-- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" class="mb20" > <el-form-item label="瀹℃牳姝ラ" prop="steps"> <g-sys-dict v-model="state.ruleForm.steps" code="CusExtendStep" render-as="select" placeholder="璇烽�夋嫨瀹℃牳姝ラ" clearable filterable /> diff --git a/Web/src/views/Customer/fBS_CusExtend/component/fBS_Customer/component/editDialog.vue b/Web/src/views/Customer/fBS_CusExtend/component/fBS_Customer/component/editDialog.vue new file mode 100644 index 0000000..87689c9 --- /dev/null +++ b/Web/src/views/Customer/fBS_CusExtend/component/fBS_Customer/component/editDialog.vue @@ -0,0 +1,151 @@ +锘�<script lang="ts" name="fBS_Customer" setup> +import { ref, reactive, onMounted } from "vue"; +import { ElMessage } from "element-plus"; +import type { FormRules } from "element-plus"; +import { formatDate } from '/@/utils/formatTime'; +import { useFBS_CustomerApi } from '/@/api/Customer/fBS_Customer'; +import { useFBS_CusExtendApi } from '/@/api/Customer/fBS_CusExtend'; +const fBS_CusExtendApi = useFBS_CusExtendApi(); + +//鐖剁骇浼犻�掓潵鐨勫嚱鏁帮紝鐢ㄤ簬鍥炶皟 +const emit = defineEmits(["reloadTable"]); +const fBS_CustomerApi = useFBS_CustomerApi(); +const ruleFormRef = ref(); + +const state = reactive({ + title: '', + loading: false, + showDialog: false, + ruleForm: {} as any, + stores: {}, + dropdownData: {} as any, +}); + +// 鑷娣诲姞鍏朵粬瑙勫垯 +const rules = ref<FormRules>({ + account: [{required: true, message: '璇烽�夋嫨璐﹀彿锛�', trigger: 'blur',},], + password: [{required: true, message: '璇烽�夋嫨瀵嗙爜锛�', trigger: 'blur',},], + name: [{required: true, message: '璇疯緭鍏ュ鍚嶏紒', trigger: 'blur',},], + phoneNumber: [{required: true, message: '璇疯緭鍏ユ墜鏈哄彿锛�', trigger: 'change',},], + age: [{required: true, message: '璇烽�夋嫨骞撮緞锛�', trigger: 'blur',},], + cardType: [{required: true, message: '璇烽�夋嫨璇佷欢绫诲瀷锛�', trigger: 'change',},], + cultureLevel: [{required: true, message: '璇烽�夋嫨鏂囧寲绋嬪害锛�', trigger: 'change',},], + orderNo: [{required: true, message: '璇烽�夋嫨鎺掑簭锛�', trigger: 'blur',},], + status: [{required: true, message: '璇烽�夋嫨鐘舵�侊紒', trigger: 'change',},], +}); + +// 椤甸潰鍔犺浇鏃� +onMounted(async () => { +}); + +// 鎵撳紑寮圭獥 +const openDialog = async (row: any, title: string, newAdd:any) => { + console.log(newAdd,row); + row = row??{ status: 1,orderNo: 100, }; + state.ruleForm = row.id ? await fBS_CusExtendApi.custormerUserInfo(row.id).then(res => res.data.result) : JSON.parse(JSON.stringify(row)); + state.title = title; + if(title=='鏂板鐢ㄦ埛'){ + state.ruleForm.isEn = true + state.ruleForm.cusExtendId = newAdd.id + } + state.showDialog = true; +}; + +// 鍏抽棴寮圭獥 +const closeDialog = () => { + emit("reloadTable",state.ruleForm); + state.showDialog = false; +}; + +// 鎻愪氦 +const submit = async () => { + ruleFormRef.value.validate(async (isValid: boolean, fields?: any) => { + if (isValid) { + let values = state.ruleForm; + let res = await fBS_CusExtendApi[state.ruleForm.id ? 'upDataCustormerUser' : 'careCustormerUser'](values); + state.ruleForm.id = state.ruleForm.id??res.data.result + closeDialog(); + } else { + ElMessage({ + message: `琛ㄥ崟鏈�${Object.keys(fields).length}澶勯獙璇佸け璐ワ紝璇蜂慨鏀瑰悗鍐嶆彁浜, + type: "error", + }); + } + }); +}; + +//灏嗗睘鎬ф垨鑰呭嚱鏁版毚闇茬粰鐖剁粍浠� +defineExpose({ openDialog }); +</script> +<template> + <div class="fBS_Customer-container"> + <el-dialog v-model="state.showDialog" :width="800" draggable :close-on-click-modal="false"> + <template #header> + <div style="color: #fff"> + <span>{{ state.title }}</span> + </div> + </template> + <el-form :model="state.ruleForm" ref="ruleFormRef" label-width="auto" :rules="rules"> + <el-row :gutter="35"> + <el-form-item v-show="false"> + <el-input v-model="state.ruleForm.id" /> + </el-form-item> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" > + <el-form-item label="濮撳悕" prop="name"> + <el-input v-model="state.ruleForm.name" placeholder="璇疯緭鍏ュ鍚�" show-word-limit clearable /> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" > + <el-form-item label="鎵嬫満鍙风爜" prop="phoneNumber"> + <el-input v-model="state.ruleForm.phoneNumber" placeholder="璇疯緭鍏ユ墜鏈哄彿鐮�" show-word-limit clearable /> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" > + <el-form-item label="鏄惁绠$悊鍛�"> + <el-switch + v-model="state.ruleForm.isManager" + inline-prompt + :active-value="true" + :inactive-value="false" + active-text="鏄�" + inactive-text="鍚�" + /> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" > + <el-form-item label="鏄惁鍚敤"> + <el-switch + v-model="state.ruleForm.isEn" + inline-prompt + :active-value="true" + :inactive-value="false" + active-text="鍚敤" + inactive-text="鍋滅敤" + /> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" > + <el-form-item label="澶囨敞" prop="remarks"> + <el-input + v-model="state.ruleForm.remarks" + placeholder="璇疯緭鍏ュ娉ㄤ俊鎭�" + type="textarea" + /> + </el-form-item> + </el-col> + </el-row> + </el-form> + <template #footer> + <span class="dialog-footer"> + <el-button @click="() => state.showDialog = false">鍙� 娑�</el-button> + <el-button @click="submit" type="primary" v-reclick="1000">纭� 瀹�</el-button> + </span> + </template> + </el-dialog> + </div> +</template> +<style lang="scss" scoped> +:deep(.el-select), :deep(.el-input-number) { + width: 100%; +} +</style> \ No newline at end of file diff --git a/Web/src/views/Customer/fBS_CusExtend/component/fBS_Customer/editDialog.vue b/Web/src/views/Customer/fBS_CusExtend/component/fBS_Customer/editDialog.vue new file mode 100644 index 0000000..3113875 --- /dev/null +++ b/Web/src/views/Customer/fBS_CusExtend/component/fBS_Customer/editDialog.vue @@ -0,0 +1,262 @@ +锘�<script lang="ts" name="fBS_Customer" setup> +import { ref, reactive, onMounted } from "vue"; +import type { FormRules } from "element-plus"; +import { formatDate } from '/@/utils/formatTime'; +import { useFBS_CustomerApi } from '/@/api/Customer/fBS_Customer'; +import { useFBS_CusExtendApi } from '/@/api/Customer/fBS_CusExtend'; +import { auth } from '/@/utils/authFunction'; +import { ElMessageBox, ElMessage } from "element-plus"; +import { downloadStreamFile } from "/@/utils/download"; +import editDialog from '/@/views/Customer/fBS_CusExtend/component/fBS_Customer/component/editDialog.vue' +import printDialog from '/@/views/system/print/component/hiprint/preview.vue' +import ModifyRecord from '/@/components/table/modifyRecord.vue'; +import ImportData from "/@/components/table/importData.vue"; + +const fBS_CusExtendApi = useFBS_CusExtendApi(); + +const fBS_CustomerApi = useFBS_CustomerApi(); +const printDialogRef = ref(); +const editDialogRef = ref(); +const importDataRef = ref(); +const state = reactive({ + title: '', + loading: false, + showDialog: false, + ruleForm: {} as any, + stores: {}, + dropdownData: {} as any, + exportLoading: false, + tableLoading: false, + showAdvanceQueryUI: false, + selectData: [] as any[], + tableQueryParams: {} as any, + tableParams: { + page: 1, + pageSize: 20, + total: 0, + field: 'createTime', // 榛樿鐨勬帓搴忓瓧娈� + order: 'descending', // 鎺掑簭鏂瑰悜 + descStr: 'descending', // 闄嶅簭鎺掑簭鐨勫叧閿瓧绗� + }, + tableData: [], + listRow:{} +}); + +// 椤甸潰鍔犺浇鏃� +onMounted(async () => { +}); + +/** + * 鏍规嵁id瀵规暟缁勫厓绱犺繘琛屾搷浣滐細瀛樺湪鍒欐浛鎹紝涓嶅瓨鍦ㄥ垯娣诲姞锛屾寚瀹氬垹闄ゅ垯绉婚櫎 + * @param {Array} array - 瑕佹搷浣滅殑鍘熸暟缁� + * @param {Object} item - 瑕佹搷浣滅殑鍏冪礌锛屽繀椤诲寘鍚玦d灞炴�� + * @param {boolean} [deleteFlag=false] - 鏄惁鎵ц鍒犻櫎鎿嶄綔 + * @returns {Array} 澶勭悊鍚庣殑鏁扮粍 + */ +function operateByid(array, item, deleteFlag = false) { + // 妫�鏌ュ厓绱犳槸鍚﹀寘鍚玦d + // if (!item || !('id' in item)) { + // console.warn('鍏冪礌蹇呴』鍖呭惈id灞炴��'); + // return [...array]; + // } + + // 鍒涘缓鍘熸暟缁勭殑鍓湰锛岄伩鍏嶇洿鎺ヤ慨鏀瑰師鏁扮粍 + const newArray = [...array]; + // 鏌ユ壘鏁扮粍涓槸鍚﹀瓨鍦ㄧ浉鍚宨d鐨勫厓绱� + const index = newArray.findIndex(i => i.id === item.id); + + if (deleteFlag) { + // 濡傛灉闇�瑕佸垹闄や笖鍏冪礌瀛樺湪锛屽垯浠庢暟缁勪腑绉婚櫎 + if (index !== -1) { + newArray.splice(index, 1); + } + } else { + if (index !== -1) { + // 瀛樺湪鍒欐浛鎹� + newArray[index] = item; + } else { + // 涓嶅瓨鍦ㄥ垯娣诲姞 + newArray.push(item); + } + } + + return newArray; +} +// 鏌ヨ鎿嶄綔 +const handleQuery = async (params: any = {}, deleteFlag:false) => { + state.tableLoading = true; + state.tableData = operateByid(state.tableData,params,deleteFlag) + console.log(params); + + state.tableLoading = false; +}; + +// 鍒楁帓搴� +const sortChange = async (column: any) => { + state.tableParams.field = column.prop; + state.tableParams.order = column.order; + await handleQuery(); +}; + +// 鍒犻櫎 +const delFBS_Customer = (row: any) => { + console.log(row,'rowrow'); + + ElMessageBox.confirm(`纭畾瑕佸垹闄ゅ悧?`, "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + }).then(async () => { + await fBS_CusExtendApi.delCustormerUser(row.id); + handleQuery(row,true); + ElMessage.success("鍒犻櫎鎴愬姛"); + }).catch(() => {}); +}; + +// 鎵归噺鍒犻櫎 +const batchDelFBS_Customer = () => { + ElMessageBox.confirm(`纭畾瑕佸垹闄�${state.selectData.length}鏉¤褰曞悧?`, "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + }).then(async () => { + await fBS_CustomerApi.batchDelete(state.selectData.map(u => ({ id: u.id }) )).then(res => { + ElMessage.success(`鎴愬姛鎵归噺鍒犻櫎${res.data.result}鏉¤褰昤); + handleQuery(); + }); + }).catch(() => {}); +}; + +// // 璁剧疆鐘舵�� +// const changeFBS_CustomerStatus = async (row: any) => { +// await fBS_CusExtendApi.setStatus({ id: row.id, status: row.status }).then(() => ElMessage.success('鐘舵�佽缃垚鍔�')); +// }; + +// 瀵煎嚭鏁版嵁 +const exportFBS_CustomerCommand = async (command: string) => { + try { + state.exportLoading = true; + if (command === 'select') { + const params = Object.assign({}, state.tableQueryParams, state.tableParams, { selectKeyList: state.selectData.map(u => u.id) }); + await fBS_CustomerApi.exportData(params).then(res => downloadStreamFile(res)); + } else if (command === 'current') { + const params = Object.assign({}, state.tableQueryParams, state.tableParams); + await fBS_CustomerApi.exportData(params).then(res => downloadStreamFile(res)); + } else if (command === 'all') { + const params = Object.assign({}, state.tableQueryParams, state.tableParams, { page: 1, pageSize: 99999999 }); + await fBS_CustomerApi.exportData(params).then(res => downloadStreamFile(res)); + } + } finally { + state.exportLoading = false; + } +} + +handleQuery(); +//鐖剁骇浼犻�掓潵鐨勫嚱鏁帮紝鐢ㄤ簬鍥炶皟 +const emit = defineEmits(["reloadTable"]); +const ruleFormRef = ref(); + + + + +// 椤甸潰鍔犺浇鏃� +onMounted(async () => { +}); + +// 鎵撳紑寮圭獥 +const openDialog = async (row: any, title: string) => { + state.title = title; + let res = JSON.parse(JSON.stringify(row)) + state.tableData = res.custormerUsers + state.listRow = row + // state.ruleForm = row.id ? await fBS_CustomerApi.detail(row.id).then(res => res.data.result) : JSON.parse(JSON.stringify(row)); + state.showDialog = true; +}; + +// 鍏抽棴寮圭獥 +const closeDialog = () => { + emit("reloadTable"); + state.showDialog = false; +}; + +// 鎻愪氦 +const submit = async () => { + closeDialog(); +}; + +//灏嗗睘鎬ф垨鑰呭嚱鏁版毚闇茬粰鐖剁粍浠� +defineExpose({ openDialog }); +</script> +<template> + <div class="fBS_Customer-container"> + <el-dialog v-model="state.showDialog" :width="1200" draggable @close="closeDialog" :close-on-click-modal="false"> + <template #header> + <div style="color: #fff"> + <span>{{ state.title }}</span> + </div> + </template> + <div class="flex-end"> + <el-button @click="editDialogRef.openDialog(null, '鏂板鐢ㄦ埛',state.listRow)" v-auth="'fBS_Customer:add'" type="primary" v-reclick="1000">鏂板缓</el-button> + </div> + <el-card class="full-table" shadow="hover" style="margin-top: 5px"> + <el-table :data="state.tableData" @selection-change="(val: any[]) => { state.selectData = val; }" + style="width: 100%" v-loading="state.tableLoading" tooltip-effect="light" row-key="id" + @sort-change="sortChange" border> + <el-table-column type="selection" width="40" align="center" + v-if="false" /> + <!-- <el-table-column type="index" label="搴忓彿" width="55" align="center" /> --> + <el-table-column prop='name' label='濮撳悕' sortable='custom' show-overflow-tooltip /> + <el-table-column prop='isManager' label='瑙掕壊' sortable='custom' show-overflow-tooltip > + <template #default="scope"> + <el-switch + disabled="disabled" + v-model="scope.row.isManager" + :active-value='true' + :inactive-value='false' + active-text="绠$悊鍛�" + inactive-text="鍛樺伐" + size="small" + inline-prompt + /> + </template> + </el-table-column> + <el-table-column prop='phoneNumber' label='鎵嬫満鍙风爜' show-overflow-tooltip /> + <el-table-column prop='isEn' label='鏄惁鍚敤' v-auth="'fBS_Customer:setStatus'" show-overflow-tooltip> + <template #default="scope"> + <el-tag :type="scope.row.isEn?'primary':'error'">{{ scope.row.isEn?'鏄�':'鍚�' }}</el-tag> + </template> + </el-table-column> + <el-table-column prop='remark' label='澶囨敞' show-overflow-tooltip /> + <el-table-column label="鎿嶄綔" width="70" align="center" fixed="right" show-overflow-tooltip + v-if="auth('fBS_Customer:update') || auth('fBS_Customer:delete')"> + <template #default="scope"> + <el-button icon="ele-Edit" size="small" text type="primary" + @click="editDialogRef.openDialog(scope.row, '缂栬緫鐢ㄦ埛淇℃伅')" v-auth="'fBS_Customer:update'"> + </el-button> + <el-button icon="ele-Delete" size="small" text type="primary" + @click="delFBS_Customer(scope.row)" v-auth="'fBS_Customer:delete'"> </el-button> + </template> + </el-table-column> + </el-table> + + <ImportData ref="importDataRef" :import="fBS_CustomerApi.importData" + :download="fBS_CustomerApi.downloadTemplate" v-auth="'fBS_Customer:import'" + @refresh="handleQuery" /> + <printDialog ref="printDialogRef" :title="'鎵撳嵃瀹㈡埛琛�'" @reloadTable="handleQuery" /> + <editDialog ref="editDialogRef" @reloadTable="handleQuery" /> + </el-card> + <template #footer> + <span class="dialog-footer"> + <el-button @click="submit">鍙� 娑�</el-button> + <el-button @click="submit" type="primary" v-reclick="1000">纭� 瀹�</el-button> + </span> + </template> + </el-dialog> + </div> +</template> +<style lang="scss" scoped> +:deep(.el-select), +:deep(.el-input-number) { + width: 100%; +} +</style> \ No newline at end of file diff --git a/Web/src/views/Customer/fBS_CusExtend/component/fBS_Customer/index.vue b/Web/src/views/Customer/fBS_CusExtend/component/fBS_Customer/index.vue new file mode 100644 index 0000000..2eeca98 --- /dev/null +++ b/Web/src/views/Customer/fBS_CusExtend/component/fBS_Customer/index.vue @@ -0,0 +1,310 @@ +锘�<script lang="ts" setup name="fBS_Customer"> +import { ref, reactive, onMounted } from "vue"; +import { auth } from '/@/utils/authFunction'; +import { ElMessageBox, ElMessage } from "element-plus"; +import { downloadStreamFile } from "/@/utils/download"; +import { useFBS_CustomerApi } from '/@/api/Customer/fBS_Customer'; +import editDialog from '/@/views/Customer/fBS_Customer/component/editDialog.vue' +import printDialog from '/@/views/system/print/component/hiprint/preview.vue' +import ModifyRecord from '/@/components/table/modifyRecord.vue'; +import ImportData from "/@/components/table/importData.vue"; + +const fBS_CustomerApi = useFBS_CustomerApi(); +const printDialogRef = ref(); +const editDialogRef = ref(); +const importDataRef = ref(); +const state = reactive({ + exportLoading: false, + tableLoading: false, + stores: {}, + showAdvanceQueryUI: false, + dropdownData: {} as any, + selectData: [] as any[], + tableQueryParams: {} as any, + tableParams: { + page: 1, + pageSize: 20, + total: 0, + field: 'createTime', // 榛樿鐨勬帓搴忓瓧娈� + order: 'descending', // 鎺掑簭鏂瑰悜 + descStr: 'descending', // 闄嶅簭鎺掑簭鐨勫叧閿瓧绗� + }, + tableData: [], +}); + +// 椤甸潰鍔犺浇鏃� +onMounted(async () => { +}); + +// 鏌ヨ鎿嶄綔 +const handleQuery = async (params: any = {}) => { + state.tableLoading = true; + state.tableParams = Object.assign(state.tableParams, params); + const result = await fBS_CustomerApi.page(Object.assign(state.tableQueryParams, state.tableParams)).then(res => res.data.result); + state.tableParams.total = result?.total; + state.tableData = result?.items ?? []; + state.tableLoading = false; +}; + +// 鍒楁帓搴� +const sortChange = async (column: any) => { + state.tableParams.field = column.prop; + state.tableParams.order = column.order; + await handleQuery(); +}; + +// 鍒犻櫎 +const delFBS_Customer = (row: any) => { + ElMessageBox.confirm(`纭畾瑕佸垹闄ゅ悧?`, "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + }).then(async () => { + await fBS_CustomerApi.delete({ id: row.id }); + handleQuery(); + ElMessage.success("鍒犻櫎鎴愬姛"); + }).catch(() => {}); +}; + +// 鎵归噺鍒犻櫎 +const batchDelFBS_Customer = () => { + ElMessageBox.confirm(`纭畾瑕佸垹闄�${state.selectData.length}鏉¤褰曞悧?`, "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + }).then(async () => { + await fBS_CustomerApi.batchDelete(state.selectData.map(u => ({ id: u.id }) )).then(res => { + ElMessage.success(`鎴愬姛鎵归噺鍒犻櫎${res.data.result}鏉¤褰昤); + handleQuery(); + }); + }).catch(() => {}); +}; + +// 璁剧疆鐘舵�� +const changeFBS_CustomerStatus = async (row: any) => { + await fBS_CustomerApi.setStatus({ id: row.id, status: row.status }).then(() => ElMessage.success('鐘舵�佽缃垚鍔�')); +}; + +// 瀵煎嚭鏁版嵁 +const exportFBS_CustomerCommand = async (command: string) => { + try { + state.exportLoading = true; + if (command === 'select') { + const params = Object.assign({}, state.tableQueryParams, state.tableParams, { selectKeyList: state.selectData.map(u => u.id) }); + await fBS_CustomerApi.exportData(params).then(res => downloadStreamFile(res)); + } else if (command === 'current') { + const params = Object.assign({}, state.tableQueryParams, state.tableParams); + await fBS_CustomerApi.exportData(params).then(res => downloadStreamFile(res)); + } else if (command === 'all') { + const params = Object.assign({}, state.tableQueryParams, state.tableParams, { page: 1, pageSize: 99999999 }); + await fBS_CustomerApi.exportData(params).then(res => downloadStreamFile(res)); + } + } finally { + state.exportLoading = false; + } +} + +handleQuery(); +</script> +<template> + <div class="fBS_Customer-container" v-loading="state.exportLoading"> + <el-card shadow="hover" :body-style="{ paddingBottom: '0' }"> + <el-form :model="state.tableQueryParams" ref="queryForm" labelWidth="90"> + <el-row> + <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10"> + <el-form-item label="鍏抽敭瀛�"> + <el-input v-model="state.tableQueryParams.keyword" clearable placeholder="璇疯緭鍏ユā绯婃煡璇㈠叧閿瓧"/> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> + <el-form-item label="璐﹀彿"> + <el-input v-model="state.tableQueryParams.account" clearable placeholder="璇疯緭鍏ヨ处鍙�"/> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> + <el-form-item label="鐪熷疄濮撳悕"> + <el-input v-model="state.tableQueryParams.realName" clearable placeholder="璇疯緭鍏ョ湡瀹炲鍚�"/> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> + <el-form-item label="鏄电О"> + <el-input v-model="state.tableQueryParams.nickName" clearable placeholder="璇疯緭鍏ユ樀绉�"/> + </el-form-item> + </el-col> + <!-- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> + <el-form-item label="璇佷欢绫诲瀷"> + <g-sys-dict v-model="state.tableQueryParams.cardType" code="CardTypeEnum" render-as="select" placeholder="璇烽�夋嫨璇佷欢绫诲瀷" clearable filterable /> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> + <el-form-item label="韬唤璇�"> + <el-input v-model="state.tableQueryParams.idCardPath" clearable placeholder="璇疯緭鍏ヨ韩浠借瘉"/> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> + <el-form-item label="鏂囧寲绋嬪害"> + <g-sys-dict v-model="state.tableQueryParams.cultureLevel" code="CultureLevelEnum" render-as="select" placeholder="璇烽�夋嫨鏂囧寲绋嬪害" clearable filterable /> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> + <el-form-item label="姣曚笟闄㈡牎"> + <el-input v-model="state.tableQueryParams.college" clearable placeholder="璇疯緭鍏ユ瘯涓氶櫌鏍�"/> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> + <el-form-item label="鍔炲叕鐢佃瘽"> + <el-input v-model="state.tableQueryParams.officePhone" clearable placeholder="璇疯緭鍏ュ姙鍏數璇�"/> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> + <el-form-item label="绱ф�ヨ仈绯讳汉"> + <el-input v-model="state.tableQueryParams.emergencyContact" clearable placeholder="璇疯緭鍏ョ揣鎬ヨ仈绯讳汉"/> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> + <el-form-item label="绱ф�ヨ仈绯讳汉鐢佃瘽"> + <el-input v-model="state.tableQueryParams.emergencyPhone" clearable placeholder="璇疯緭鍏ョ揣鎬ヨ仈绯讳汉鐢佃瘽"/> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> + <el-form-item label="绱ф�ヨ仈绯讳汉鍦板潃"> + <el-input v-model="state.tableQueryParams.emergencyAddress" clearable placeholder="璇疯緭鍏ョ揣鎬ヨ仈绯讳汉鍦板潃"/> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> + <el-form-item label="涓汉绠�浠�"> + <el-input v-model="state.tableQueryParams.introduction" clearable placeholder="璇疯緭鍏ヤ釜浜虹畝浠�"/> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> + <el-form-item label="鎺掑簭"> + <el-input-number v-model="state.tableQueryParams.orderNo" clearable placeholder="璇疯緭鍏ユ帓搴�"/> + </el-form-item> + </el-col> --> + <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> + <el-form-item label="鐘舵��"> + <g-sys-dict v-model="state.tableQueryParams.status" code="StatusEnum" render-as="select" placeholder="璇烽�夋嫨鐘舵��" clearable filterable /> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> + <el-form-item label="澶囨敞"> + <el-input v-model="state.tableQueryParams.remark" clearable placeholder="璇疯緭鍏ュ娉�"/> + </el-form-item> + </el-col> + <!-- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> + <el-form-item label="鑱岀骇"> + <el-input v-model="state.tableQueryParams.posLevel" clearable placeholder="璇疯緭鍏ヨ亴绾�"/> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> + <el-form-item label="鑱岀О"> + <el-input v-model="state.tableQueryParams.posTitle" clearable placeholder="璇疯緭鍏ヨ亴绉�"/> + </el-form-item> + </el-col> --> + <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10"> + <el-form-item > + <el-button-group style="display: flex; align-items: center;"> + <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'fBS_Customer:page'" v-reclick="1000"> 鏌ヨ </el-button> + <el-button icon="ele-Refresh" @click="() => state.tableQueryParams = {}"> 閲嶇疆 </el-button> + <el-button icon="ele-ZoomIn" @click="() => state.showAdvanceQueryUI = true" v-if="!state.showAdvanceQueryUI" style="margin-left:5px;"> 楂樼骇鏌ヨ </el-button> + <el-button icon="ele-ZoomOut" @click="() => state.showAdvanceQueryUI = false" v-if="state.showAdvanceQueryUI" style="margin-left:5px;"> 闅愯棌 </el-button> + <el-button type="danger" style="margin-left:5px;" icon="ele-Delete" @click="batchDelFBS_Customer" :disabled="state.selectData.length == 0" v-auth="'fBS_Customer:batchDelete'"> 鍒犻櫎 </el-button> + <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="editDialogRef.openDialog(null, '鏂板瀹㈡埛琛�')" v-auth="'fBS_Customer:add'"> 鏂板 </el-button> + <el-dropdown :show-timeout="70" :hide-timeout="50" @command="exportFBS_CustomerCommand"> + <el-button type="primary" style="margin-left:5px;" icon="ele-FolderOpened" v-reclick="20000" v-auth="'fBS_Customer:export'"> 瀵煎嚭 </el-button> + <template #dropdown> + <el-dropdown-menu> + <el-dropdown-item command="select" :disabled="state.selectData.length == 0">瀵煎嚭閫変腑</el-dropdown-item> + <el-dropdown-item command="current">瀵煎嚭鏈〉</el-dropdown-item> + <el-dropdown-item command="all">瀵煎嚭鍏ㄩ儴</el-dropdown-item> + </el-dropdown-menu> + </template> + </el-dropdown> + <el-button type="warning" style="margin-left:5px;" icon="ele-MostlyCloudy" @click="importDataRef.openDialog()" v-auth="'fBS_Customer:import'"> 瀵煎叆 </el-button> + </el-button-group> + </el-form-item> + </el-col> + </el-row> + </el-form> + </el-card> + <el-card class="full-table" shadow="hover" style="margin-top: 5px"> + <el-table :data="state.tableData" @selection-change="(val: any[]) => { state.selectData = val; }" style="width: 100%" v-loading="state.tableLoading" tooltip-effect="light" row-key="id" @sort-change="sortChange" border> + <el-table-column type="selection" width="40" align="center" v-if="auth('fBS_Customer:batchDelete') || auth('fBS_Customer:export')" /> + <el-table-column type="index" label="搴忓彿" width="55" align="center"/> + <el-table-column prop='account' label='璐﹀彿' sortable='custom' show-overflow-tooltip /> + <!-- <el-table-column prop='password' label='瀵嗙爜' show-overflow-tooltip /> --> + <el-table-column prop='realName' label='鐪熷疄濮撳悕' sortable='custom' show-overflow-tooltip /> + <el-table-column prop='nickName' label='鏄电О' sortable='custom' show-overflow-tooltip /> + <!-- <el-table-column prop='avatar' label='澶村儚' show-overflow-tooltip /> --> + <!-- <el-table-column prop='sex' label='鎬у埆' show-overflow-tooltip> + <template #default="scope"> + <g-sys-dict v-model="scope.row.sex" code="GenderEnum" /> + </template> + </el-table-column> + <el-table-column prop='age' label='骞撮緞' show-overflow-tooltip /> + <el-table-column prop='birthday' label='鍑虹敓鏃ユ湡' show-overflow-tooltip /> + <el-table-column prop='nation' label='姘戞棌' show-overflow-tooltip /> --> + <el-table-column prop='phone' label='鎵嬫満鍙风爜' show-overflow-tooltip /> + <!-- <el-table-column prop='cardType' label='璇佷欢绫诲瀷' show-overflow-tooltip> + <template #default="scope"> + <g-sys-dict v-model="scope.row.cardType" code="CardTypeEnum" /> + </template> + </el-table-column> --> + <!-- <el-table-column prop='idCardNum' label='韬唤璇佸彿' show-overflow-tooltip /> + <el-table-column prop='idCardPath' label='韬唤璇�' show-overflow-tooltip /> + <el-table-column prop='email' label='閭' show-overflow-tooltip /> + <el-table-column prop='address' label='鍦板潃' show-overflow-tooltip /> + <el-table-column prop='cultureLevel' label='鏂囧寲绋嬪害' show-overflow-tooltip> + <template #default="scope"> + <g-sys-dict v-model="scope.row.cultureLevel" code="CultureLevelEnum" /> + </template> + </el-table-column> --> + <!-- <el-table-column prop='politicalOutlook' label='鏀挎不闈㈣矊' show-overflow-tooltip /> --> + <!-- <el-table-column prop='college' label='姣曚笟闄㈡牎' show-overflow-tooltip /> + <el-table-column prop='officePhone' label='鍔炲叕鐢佃瘽' show-overflow-tooltip /> + <el-table-column prop='emergencyContact' label='绱ф�ヨ仈绯讳汉' show-overflow-tooltip /> + <el-table-column prop='emergencyPhone' label='绱ф�ヨ仈绯讳汉鐢佃瘽' show-overflow-tooltip /> + <el-table-column prop='emergencyAddress' label='绱ф�ヨ仈绯讳汉鍦板潃' show-overflow-tooltip /> + <el-table-column prop='introduction' label='涓汉绠�浠�' show-overflow-tooltip /> + <el-table-column prop='orderNo' label='鎺掑簭' show-overflow-tooltip /> --> + <el-table-column prop='status' label='鐘舵��' v-auth="'fBS_Customer:setStatus'" show-overflow-tooltip> + <template #default="scope"> + <el-switch v-model="scope.row.status" :active-value="1" :inactive-value="2" size="small" @change="changeFBS_CustomerStatus(scope.row)" /> + </template> + </el-table-column> + <el-table-column prop='remark' label='澶囨敞' show-overflow-tooltip /> + <!-- <el-table-column prop='posLevel' label='鑱岀骇' show-overflow-tooltip /> + <el-table-column prop='posTitle' label='鑱岀О' show-overflow-tooltip /> --> + <!-- <el-table-column label="淇敼璁板綍" width="100" align="center" show-overflow-tooltip> + <template #default="scope"> + <ModifyRecord :data="scope.row" /> + </template> + </el-table-column> --> + <el-table-column label="鎿嶄綔" width="70" align="center" fixed="right" show-overflow-tooltip v-if="auth('fBS_Customer:update') || auth('fBS_Customer:delete')"> + <template #default="scope"> + <el-button icon="ele-Edit" size="small" text type="primary" @click="editDialogRef.openDialog(scope.row, '缂栬緫瀹㈡埛琛�')" v-auth="'fBS_Customer:update'"> </el-button> + <el-button icon="ele-Delete" size="small" text type="primary" @click="delFBS_Customer(scope.row)" v-auth="'fBS_Customer:delete'"> </el-button> + </template> + </el-table-column> + </el-table> + <el-pagination + v-model:currentPage="state.tableParams.page" + v-model:page-size="state.tableParams.pageSize" + @size-change="(val: any) => handleQuery({ pageSize: val })" + @current-change="(val: any) => handleQuery({ page: val })" + layout="total, sizes, prev, pager, next, jumper" + :page-sizes="[10, 20, 50, 100, 200, 500]" + :total="state.tableParams.total" + size="small" + background /> + <ImportData ref="importDataRef" :import="fBS_CustomerApi.importData" :download="fBS_CustomerApi.downloadTemplate" v-auth="'fBS_Customer:import'" @refresh="handleQuery"/> + <printDialog ref="printDialogRef" :title="'鎵撳嵃瀹㈡埛琛�'" @reloadTable="handleQuery" /> + <editDialog ref="editDialogRef" @reloadTable="handleQuery" /> + </el-card> + </div> +</template> +<style scoped> +:deep(.el-input), :deep(.el-select), :deep(.el-input-number) { + width: 100%; +} +</style> \ No newline at end of file diff --git a/Web/src/views/Customer/fBS_CusExtend/index.vue b/Web/src/views/Customer/fBS_CusExtend/index.vue index 31239c3..c2c962c 100644 --- a/Web/src/views/Customer/fBS_CusExtend/index.vue +++ b/Web/src/views/Customer/fBS_CusExtend/index.vue @@ -5,6 +5,7 @@ import { downloadStreamFile } from "/@/utils/download"; import { useFBS_CusExtendApi } from '/@/api/Customer/fBS_CusExtend'; import editDialog from '/@/views/Customer/fBS_CusExtend/component/editDialog.vue' +import userManagement from '/@/views/Customer/fBS_CusExtend/component/fBS_Customer/editDialog.vue' import printDialog from '/@/views/system/print/component/hiprint/preview.vue' import ModifyRecord from '/@/components/table/modifyRecord.vue'; import ImportData from "/@/components/table/importData.vue"; @@ -16,6 +17,8 @@ const fBS_ExRoleApi = useFBS_ExRoleApi(); const printDialogRef = ref(); const editDialogRef = ref(); +const userManagementRef = ref(); +const dialogVisible = ref(false); const importDataRef = ref(); const state = reactive({ exportLoading: false, @@ -129,6 +132,11 @@ state.exportLoading = false; } } +const openUser=()=>{ + console.log(dialogVisible.value,'dialogVisible.value'); + + dialogVisible.value = true +} handleQuery(); </script> @@ -147,7 +155,7 @@ <el-input v-model="state.tableQueryParams.customerId" clearable placeholder="璇疯緭鍏ョ敤鎴稩D"/> </el-form-item> </el-col> --> - <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> + <!-- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> <el-form-item label="浼佷笟绫诲瀷 "> <el-input v-model="state.tableQueryParams.enterpriseType" clearable placeholder="璇疯緭鍏ヤ紒涓氱被鍨� "/> </el-form-item> @@ -156,7 +164,7 @@ <el-form-item label="浜ゆ槗涓讳綋"> <el-input v-model="state.tableQueryParams.transactionCode" clearable placeholder="璇疯緭鍏ヤ氦鏄撲富浣�"/> </el-form-item> - </el-col> + </el-col> --> <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> <el-form-item label="浼佷笟鍚嶇О"> <el-input v-model="state.tableQueryParams.enterpriseName" clearable placeholder="璇疯緭鍏ヤ紒涓氬悕绉�"/> @@ -220,7 +228,7 @@ <el-button icon="ele-ZoomIn" @click="() => state.showAdvanceQueryUI = true" v-if="!state.showAdvanceQueryUI" style="margin-left:5px;"> 楂樼骇鏌ヨ </el-button> <el-button icon="ele-ZoomOut" @click="() => state.showAdvanceQueryUI = false" v-if="state.showAdvanceQueryUI" style="margin-left:5px;"> 闅愯棌 </el-button> <el-button type="danger" style="margin-left:5px;" icon="ele-Delete" @click="batchDelFBS_CusExtend" :disabled="state.selectData.length == 0" v-auth="'fBS_CusExtend:batchDelete'"> 鍒犻櫎 </el-button> - <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="editDialogRef.openDialog(null, '鏂板浼佷笟璧勬枡')" v-auth="'fBS_CusExtend:add'"> 鏂板 </el-button> + <!-- <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="editDialogRef.openDialog(null, '鏂板浼佷笟璧勬枡')" v-auth="'fBS_CusExtend:add'"> 鏂板 </el-button> --> <el-dropdown :show-timeout="70" :hide-timeout="50" @command="exportFBS_CusExtendCommand"> <el-button type="primary" style="margin-left:5px;" icon="ele-FolderOpened" v-reclick="20000" v-auth="'fBS_CusExtend:export'"> 瀵煎嚭 </el-button> <template #dropdown> @@ -243,14 +251,14 @@ <el-table-column type="selection" width="40" align="center" v-if="auth('fBS_CusExtend:batchDelete') || auth('fBS_CusExtend:export')" /> <el-table-column type="index" label="搴忓彿" width="55" align="center"/> <!-- <el-table-column prop='customerId' label='鐢ㄦ埛ID' show-overflow-tooltip /> --> - <el-table-column prop='enterpriseType' label='浼佷笟绫诲瀷 ' show-overflow-tooltip /> + <!-- <el-table-column prop='enterpriseType' label='浼佷笟绫诲瀷 ' show-overflow-tooltip /> <el-table-column prop='transactionCode' label='浜ゆ槗涓讳綋' show-overflow-tooltip width="100"> <template v-slot="scope"> <span v-for="(item, index) in state.roleList" :key="index"> <span v-if="item.code == scope.row.transactionCode">{{ item.name }}</span> </span> </template> - </el-table-column> + </el-table-column> --> <el-table-column prop='businessLicense' label='钀ヤ笟鎵х収' show-overflow-tooltip width="120"> <template v-slot="scope"> <el-image @@ -303,37 +311,24 @@ <el-table-column prop='operatorPhone' label='涓氬姟缁忓姙浜虹數璇�' show-overflow-tooltip width="120"/> <!-- <el-table-column prop='bankName' label='寮�鎴疯鍚嶇О' show-overflow-tooltip /> --> <!-- <el-table-column prop='bankAccount' label='寮�鎴疯璐﹀彿' show-overflow-tooltip width="120"/> --> - <el-table-column prop='steps' label='瀹℃牳姝ラ' show-overflow-tooltip> + <!-- <el-table-column prop='steps' label='瀹℃牳姝ラ' show-overflow-tooltip> <template v-slot="scope"> <span v-for="(item, index) in state.shenheList" :key="index"> <el-tag v-if="item.value == scope.row.steps">{{ item.description }}</el-tag> </span> </template> - <!-- <template #default="scope"> - - - <el-tag v-if="scope.row.steps==0" type='warning'> - 寰呭鏍� - </el-tag> - <el-tag v-else-if="scope.row.steps==1" type='primary'> - 鏇存敼 - </el-tag> - <el-tag v-else-if="scope.row.steps==2" type='success'> - 閫氳繃 - </el-tag> - <el-tag v-else-if="scope.row.steps==3" type='error'> - 鏈�氳繃 - </el-tag> - </template> --> - </el-table-column> + + </el-table-column> --> <!-- <el-table-column label="淇敼璁板綍" width="100" align="center" show-overflow-tooltip> <template #default="scope"> <ModifyRecord :data="scope.row" /> </template> </el-table-column> --> - <el-table-column label="鎿嶄綔" width="70" align="center" fixed="right" show-overflow-tooltip v-if="auth('fBS_CusExtend:update') || auth('fBS_CusExtend:delete')"> + <el-table-column label="鎿嶄綔" width="100" align="center" fixed="right" show-overflow-tooltip v-if="auth('fBS_CusExtend:update') || auth('fBS_CusExtend:delete')"> <template #default="scope"> <el-button icon="ele-Edit" size="small" text type="primary" @click="editDialogRef.openDialog(scope.row, '缂栬緫浼佷笟璧勬枡', state.qiyeList,state.roleList)" v-auth="'fBS_CusExtend:update'"> </el-button> + <!-- <el-button icon="ele-Check" size="small" text type="primary" @click="editDialogRefApplyRef.openDialog(scope.row, '瀹℃牳浼佷笟璧勬枡', state.qiyeList,state.roleList,state.shenheList)" v-auth="'fBS_CusExtend:update'"> </el-button> --> + <el-button icon="ele-User" size="small" text type="primary" @click="userManagementRef.openDialog(scope.row, '绠$悊浼佷笟鐢ㄦ埛', state.qiyeList,state.roleList,state.shenheList)" v-auth="'fBS_CusExtend:update'"> </el-button> <el-button icon="ele-Delete" size="small" text type="primary" @click="delFBS_CusExtend(scope.row)" v-auth="'fBS_CusExtend:delete'"> </el-button> </template> </el-table-column> @@ -351,7 +346,16 @@ <ImportData ref="importDataRef" :import="fBS_CusExtendApi.importData" :download="fBS_CusExtendApi.downloadTemplate" v-auth="'fBS_CusExtend:import'" @refresh="handleQuery"/> <printDialog ref="printDialogRef" :title="'鎵撳嵃浼佷笟璧勬枡'" @reloadTable="handleQuery" /> <editDialog ref="editDialogRef" @reloadTable="handleQuery" /> + <userManagement ref="userManagementRef" @reloadTable="handleQuery"/> + </el-card> + <el-dialog title="绠$悊浼佷笟鐢ㄦ埛" :visible.sync="dialogVisible" width="width"> + <!-- <userManagement ref="userManagementRef"/> --> + <div slot="footer"> + <el-button @click="dialogVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="dialogVisible = false">纭� 瀹�</el-button> + </div> + </el-dialog> </div> </template> <style scoped> diff --git a/Web/src/views/Customer/fBS_CusExtendExamine/component/editDialog.vue b/Web/src/views/Customer/fBS_CusExtendExamine/component/editDialogApply.vue similarity index 87% rename from Web/src/views/Customer/fBS_CusExtendExamine/component/editDialog.vue rename to Web/src/views/Customer/fBS_CusExtendExamine/component/editDialogApply.vue index b9f7f73..3c20fb5 100644 --- a/Web/src/views/Customer/fBS_CusExtendExamine/component/editDialog.vue +++ b/Web/src/views/Customer/fBS_CusExtendExamine/component/editDialogApply.vue @@ -1,5 +1,6 @@ 锘�<script lang="ts" name="fBS_CusExtend" setup> import { ref, reactive, onMounted } from "vue"; +import { ElMessage } from "element-plus"; import { formatDate } from '/@/utils/formatTime'; import { useFBS_CusExtendApi } from '/@/api/Customer/fBS_CusExtend'; @@ -15,9 +16,10 @@ stores: {}, dropdownData: {} as any, enterpriseList:[], - roleList:[], - shenheList:[], - srcList:[] + roleList:[] as any[], + shenheList:[] as any[], + srcList:[], + listRow:{} }); // 椤甸潰鍔犺浇鏃� @@ -32,6 +34,8 @@ state.title = title; row = row ?? { }; state.ruleForm = row.id ? await fBS_CusExtendApi.detail(row.id).then(res => res.data.result) : JSON.parse(JSON.stringify(row)); + state.ruleForm.exRole = row.exRole + state.listRow = row // state.ruleForm.enterpriseType = state.ruleForm.enterpriseType.split(","); state.showDialog = true; }; @@ -44,8 +48,19 @@ // 鎻愪氦 const submit = async (val:any) => { - let values = state.ruleForm; - await fBS_CusExtendApi.changeSteps(values.id,val); + // let values = state.ruleForm; + let res = await fBS_CusExtendApi.changeSteps(state.listRow.coutomerExRoleId,val); + if(res.data.code==200){ + ElMessage({ + message: `瀹℃牳鎴愬姛锛乣, + type: "success", + }); + }else{ + ElMessage({ + message: res.message||`瀹℃牳澶辫触锛乣, + type: "error", + }); + } closeDialog(); }; const showPreview = ref(false) @@ -89,10 +104,10 @@ <template #label> <div class="cell-item">浜ゆ槗涓讳綋</div> </template> - <!-- {{ state.ruleForm.transactionName }} --> - <span v-for="(item, index) in state.roleList" :key="index"> - <span v-if="item.code == state.ruleForm.transactionCode">{{ item.name }}</span> - </span> + {{ state.ruleForm.exRole.name}} + <!-- <span v-for="(item, index) in state.roleList" :key="index"> + <span v-if="item.code == state.ruleForm.transactionCode">{{ item.name }}</span> + </span> --> </el-descriptions-item> <el-descriptions-item> <template #label> @@ -153,6 +168,26 @@ </el-descriptions-item> <el-descriptions-item> <template #label> + <div class="cell-item">寮�鎴烽摱琛�</div> + </template> + {{ state.ruleForm.bankName }} + </el-descriptions-item> + <el-descriptions-item> + <template #label> + <div class="cell-item">閾惰璐﹀彿</div> + </template> + {{ state.ruleForm.bankAccount }} + </el-descriptions-item> + <el-descriptions-item> + <template #label> + <div class="cell-item">閾惰鏀舵浜岀淮鐮�</div> + </template> + <span @click="showImg('bankAccountIMG')"> + <el-link type="primary" underline>鏌ョ湅閾惰鏀舵浜岀淮鐮�</el-link> + </span> + </el-descriptions-item> + <el-descriptions-item> + <template #label> <div class="cell-item">娉曞畾浠h〃浜�</div> </template> {{ state.ruleForm.legalRepresentativeName }} @@ -199,18 +234,7 @@ </template> {{ state.ruleForm.operatorPhone }} </el-descriptions-item> - <el-descriptions-item> - <template #label> - <div class="cell-item">寮�鎴烽摱琛�</div> - </template> - {{ state.ruleForm.bankName }} - </el-descriptions-item> - <el-descriptions-item> - <template #label> - <div class="cell-item">閾惰璐﹀彿</div> - </template> - {{ state.ruleForm.bankAccount }} - </el-descriptions-item> + </el-descriptions> <template #footer> diff --git a/Web/src/views/Customer/fBS_CusExtendExamine/index.vue b/Web/src/views/Customer/fBS_CusExtendExamine/index.vue index 41b52cf..145aace 100644 --- a/Web/src/views/Customer/fBS_CusExtendExamine/index.vue +++ b/Web/src/views/Customer/fBS_CusExtendExamine/index.vue @@ -4,7 +4,7 @@ import { ElMessageBox, ElMessage } from "element-plus"; import { downloadStreamFile } from "/@/utils/download"; import { useFBS_CusExtendApi } from '/@/api/Customer/fBS_CusExtend'; -import editDialog from '/@/views/Customer/fBS_CusExtendExamine/component/editDialog.vue' +import editDialog from './component/editDialogApply.vue' import printDialog from '/@/views/system/print/component/hiprint/preview.vue' import ModifyRecord from '/@/components/table/modifyRecord.vue'; import ImportData from "/@/components/table/importData.vue"; @@ -64,7 +64,7 @@ const handleQuery = async (params: any = {}) => { state.tableLoading = true; state.tableParams = Object.assign(state.tableParams, params); - const result = await fBS_CusExtendApi.page(Object.assign(state.tableQueryParams, state.tableParams)).then(res => res.data.result); + const result = await fBS_CusExtendApi.getReviewPage(Object.assign(state.tableQueryParams, state.tableParams)).then(res => res.data.result); state.tableParams.total = result?.total; state.tableData = result?.items ?? []; state.tableLoading = false; @@ -133,20 +133,20 @@ </script> <template> <div class="fBS_CusExtend-container" v-loading="state.exportLoading"> - <el-card shadow="hover" :body-style="{ paddingBottom: '0' }"> + <!-- <el-card shadow="hover" :body-style="{ paddingBottom: '0' }"> <el-form :model="state.tableQueryParams" ref="queryForm" labelWidth="120"> <el-row> <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10"> <el-form-item label="鍏抽敭瀛�"> <el-input v-model="state.tableQueryParams.keyword" clearable placeholder="璇疯緭鍏ユā绯婃煡璇㈠叧閿瓧"/> </el-form-item> - </el-col> + </el-col> --> <!-- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> <el-form-item label="鐢ㄦ埛ID"> <el-input v-model="state.tableQueryParams.customerId" clearable placeholder="璇疯緭鍏ョ敤鎴稩D"/> </el-form-item> </el-col> --> - <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> + <!-- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> <el-form-item label="浼佷笟绫诲瀷 "> <el-input v-model="state.tableQueryParams.enterpriseType" clearable placeholder="璇疯緭鍏ヤ紒涓氱被鍨� "/> </el-form-item> @@ -165,7 +165,7 @@ <el-form-item label="缁熶竴绀句細淇$敤浠g爜"> <el-input v-model="state.tableQueryParams.unifiedSocialCreditCode" clearable placeholder="璇疯緭鍏ョ粺涓�绀句細淇$敤浠g爜"/> </el-form-item> - </el-col> + </el-col> --> <!-- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> <el-form-item label="娉ㄥ唽璧勯噾"> <el-input v-model="state.tableQueryParams.registeredCapital" clearable placeholder="璇疯緭鍏ユ敞鍐岃祫閲�"/> @@ -181,11 +181,11 @@ <el-input v-model="state.tableQueryParams.residence" clearable placeholder="璇疯緭鍏ヤ紒涓氫綇鎵�"/> </el-form-item> </el-col> --> - <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> + <!-- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> <el-form-item label="浼佷笟鑱旂郴鐢佃瘽"> <el-input v-model="state.tableQueryParams.enterprisePhone" clearable placeholder="璇疯緭鍏ヤ紒涓氳仈绯荤數璇�"/> </el-form-item> - </el-col> + </el-col> --> <!-- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> <el-form-item label="浼佷笟鎴愮珛鏃堕棿"> <el-date-picker type="daterange" v-model="state.tableQueryParams.establishmentTimeRange" value-format="YYYY-MM-DD HH:mm:ss" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" /> @@ -201,26 +201,26 @@ <el-input v-model="state.tableQueryParams.enterpriseEmail" clearable placeholder="璇疯緭鍏ヤ紒涓氶偖绠�"/> </el-form-item> </el-col> --> - <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> + <!-- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> <el-form-item label="涓氬姟缁忓姙浜�"> <el-input v-model="state.tableQueryParams.operatorName" clearable placeholder="璇疯緭鍏ヤ笟鍔$粡鍔炰汉"/> </el-form-item> - </el-col> + </el-col> --> <!-- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10" v-if="state.showAdvanceQueryUI"> <el-form-item label="瀹℃牳姝ラ"> <g-sys-dict v-model="state.tableQueryParams.steps" code="CusExtendStep" render-as="select" placeholder="璇烽�夋嫨瀹℃牳姝ラ" clearable filterable /> </el-form-item> </el-col> --> - <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10"> + <!-- <el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="4" class="mb10"> <el-form-item > <el-button-group style="display: flex; align-items: center;"> <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'fBS_CusExtend:page'" v-reclick="1000"> 鏌ヨ </el-button> <el-button icon="ele-Refresh" @click="() => state.tableQueryParams = {}"> 閲嶇疆 </el-button> <el-button icon="ele-ZoomIn" @click="() => state.showAdvanceQueryUI = true" v-if="!state.showAdvanceQueryUI" style="margin-left:5px;"> 楂樼骇鏌ヨ </el-button> - <el-button icon="ele-ZoomOut" @click="() => state.showAdvanceQueryUI = false" v-if="state.showAdvanceQueryUI" style="margin-left:5px;"> 闅愯棌 </el-button> + <el-button icon="ele-ZoomOut" @click="() => state.showAdvanceQueryUI = false" v-if="state.showAdvanceQueryUI" style="margin-left:5px;"> 闅愯棌 </el-button> --> <!-- <el-button type="danger" style="margin-left:5px;" icon="ele-Delete" @click="batchDelFBS_CusExtend" :disabled="state.selectData.length == 0" v-auth="'fBS_CusExtend:batchDelete'"> 鍒犻櫎 </el-button> --> <!-- <el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="editDialogRef.openDialog(null, '鏂板浼佷笟璧勬枡')" v-auth="'fBS_CusExtend:add'"> 鏂板 </el-button> --> - <el-dropdown :show-timeout="70" :hide-timeout="50" @command="exportFBS_CusExtendCommand"> + <!-- <el-dropdown :show-timeout="70" :hide-timeout="50" @command="exportFBS_CusExtendCommand"> <el-button type="primary" style="margin-left:5px;" icon="ele-FolderOpened" v-reclick="20000" v-auth="'fBS_CusExtend:export'"> 瀵煎嚭 </el-button> <template #dropdown> <el-dropdown-menu> @@ -233,21 +233,17 @@ <el-button type="warning" style="margin-left:5px;" icon="ele-MostlyCloudy" @click="importDataRef.openDialog()" v-auth="'fBS_CusExtend:import'"> 瀵煎叆 </el-button> </el-button-group> </el-form-item> - </el-col> - </el-row> + </el-col> --> + <!-- </el-row> </el-form> - </el-card> + </el-card> --> <el-card class="full-table" shadow="hover" style="margin-top: 5px"> <el-table :data="state.tableData" @selection-change="(val: any[]) => { state.selectData = val; }" fit style="width: 100%" v-loading="state.tableLoading" tooltip-effect="light" row-key="id" @sort-change="sortChange" border> <el-table-column type="selection" width="40" align="center" v-if="auth('fBS_CusExtend:batchDelete') || auth('fBS_CusExtend:export')" /> <el-table-column type="index" label="搴忓彿" width="55" align="center"/> <!-- <el-table-column prop='customerId' label='鐢ㄦ埛ID' show-overflow-tooltip /> --> - <el-table-column prop='enterpriseType' label='浼佷笟绫诲瀷 ' show-overflow-tooltip /> <el-table-column prop='transactionCode' label='浜ゆ槗涓讳綋' show-overflow-tooltip width="100"> - <template v-slot="scope"> - <span v-for="(item, index) in state.roleList" :key="index"> - <span v-if="item.code == scope.row.transactionCode">{{ item.name }}</span> - </span> + <template v-slot="scope"><span >{{ scope.row.exRole.name }}</span> </template> </el-table-column> <el-table-column prop='businessLicense' label='钀ヤ笟鎵х収' show-overflow-tooltip width="120"> -- Gitblit v1.9.1