From a26af4a8afc3c1b59a33c0642cd07778a89e5813 Mon Sep 17 00:00:00 2001 From: wjt <1797368093@qq.com> Date: 星期六, 22 六月 2024 21:04:50 +0800 Subject: [PATCH] 投书处理天机 --- src/views/system/user/index.vue | 4 src/views/infomanger/companymanger/components/judge.vue | 2 src/views/infomanger/complating/index.vue | 104 ++++++++- src/api/system/company/company.ts | 43 +++ src/utils/dict.ts | 19 + src/views/infomanger/enforcement/index.vue | 182 +++++++++++++-- src/views/infomanger/enforcement/component/details.vue | 252 ++++++++++++++++++---- src/views/infomanger/complating/component/index.vue | 38 ++ src/main.ts | 4 src/permission.ts | 1 10 files changed, 539 insertions(+), 110 deletions(-) diff --git a/src/api/system/company/company.ts b/src/api/system/company/company.ts index 9dc0f5e..fbe9a50 100644 --- a/src/api/system/company/company.ts +++ b/src/api/system/company/company.ts @@ -181,4 +181,47 @@ method: 'post', data: data }) +} +// 鎶曡瘔澶勭悊 /enforce/complaint/log/list +export function listComplaint(data) { + return request({ + url: `/enforce/complaint/log/list`, + method: 'get', + params: data + }) +} +// 浼佷笟鎵ф硶璁板綍 /enforce/order/companyList + +export function companyListEnforce(data) { + return request({ + url: `/enforce/order/commonList`, + method: 'get', + params: data + }) +} + +// 鏌ョ湅鎵ф硶鍗曡鎯� /enforce/order/{orderId} +export function getOrder(data) { + return request({ + url: `/enforce/order/${data.orderId}`, + method: 'get', + params: data + }) +} +// 鍝嶅簲 /enforce/complaint/log/inComplaint +export function inComplaintLog(data) { + return request({ + url: `/enforce/complaint/log/inComplaint`, + method: 'post', + data: data + }) +} +// 淇敼鎶曡瘔璁板綍 /enforce/complaint/log/upd + +export function updComplaintLog(data) { + return request({ + url: `/enforce/complaint/log/upd`, + method: 'post', + data: data + }) } \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index e74fcf7..410f049 100644 --- a/src/main.ts +++ b/src/main.ts @@ -25,7 +25,7 @@ import "./permission"; // permission control -import { useDict } from "@/utils/dict"; +import { useDict, useDictPer } from "@/utils/dict"; import { parseTime, resetForm, addDateRange, handleTree, selectDictLabel, selectDictLabels } from "@/utils/ruoyi"; // 鍒嗛〉缁勪欢 @@ -49,6 +49,8 @@ // 鍏ㄥ眬鏂规硶鎸傝浇 app.config.globalProperties.useDict = useDict; +app.config.globalProperties.useDictPer = useDictPer; + // app.config.globalProperties.useDict = (e: any): ToRefs<Dict.resDictType> => { // return useDict(e); // }; diff --git a/src/permission.ts b/src/permission.ts index 3e5eaa2..01a2216 100644 --- a/src/permission.ts +++ b/src/permission.ts @@ -32,7 +32,6 @@ usePermissionStore() .generateRoutes() .then((accessRoutes) => { - console.log(accessRoutes) // 鏍规嵁roles鏉冮檺鐢熸垚鍙闂殑璺敱琛� accessRoutes.forEach((route: any) => { if (!isHttp(route.path)) { diff --git a/src/utils/dict.ts b/src/utils/dict.ts index 8673968..01b0d91 100644 --- a/src/utils/dict.ts +++ b/src/utils/dict.ts @@ -21,7 +21,24 @@ return toRefs(res.value); })(); } - +export function useDictPer(...args: string[]) { + const res = ref<Dict.resDictType>({}); + return (() => { + args.forEach((dictName: string, index: number) => { + res.value[dictName] = [] as Array<Dict.dictType>; + const dicts: Array<Dict.dictType> = useDictStore().getDict(dictName); + if (dicts) { + res.value[dictName] = dicts; + } else { + getDicts(dictName).then((resp) => { + res.value[dictName] = resp.data.map((p: any) => ({ label: p.dictLabel, value: p.dictCode, elTagType: p.listClass, elTagClass: p.cssClass })); + useDictStore().setDict(dictName, res.value[dictName]); + }); + } + }); + return toRefs(res.value); + })(); +} // export default { // install(app: App<Element>) { // app.config.globalProperties.$useDict = useDict; diff --git a/src/views/infomanger/companymanger/components/judge.vue b/src/views/infomanger/companymanger/components/judge.vue index 730f788..d86aaee 100644 --- a/src/views/infomanger/companymanger/components/judge.vue +++ b/src/views/infomanger/companymanger/components/judge.vue @@ -34,7 +34,7 @@ const info = ref({}) const emit:any = defineEmits() const form: any = reactive({ - checkStatus: '' + checkStatus: '1' }) const cloaseDialog = () => { dialogVisible.value = false diff --git a/src/views/infomanger/complating/component/index.vue b/src/views/infomanger/complating/component/index.vue index 3ad8d9f..89cb8d9 100644 --- a/src/views/infomanger/complating/component/index.vue +++ b/src/views/infomanger/complating/component/index.vue @@ -1,31 +1,55 @@ <template> <el-dialog title="鎵ф硶璇︽儏" width="1000px" v-model="dialogVisible" @close="closeDialog"> - <el-form> + <el-form label-width="80px"> <el-form-item label="鎶曡瘔鍐呭"> - + <div> + {{ info.complaintReason }} + </div> </el-form-item> <el-form-item label="鍔炵粨"> - <el-radio-group> - <el-radio>椹冲洖</el-radio> - <el-radio>鍔炵粨</el-radio> + <el-radio-group v-model="form.complaintStatus"> + <el-radio value="-1">椹冲洖</el-radio> + <el-radio value="2">鍔炵粨</el-radio> </el-radio-group> </el-form-item> <el-form-item label="椹冲洖鍘熷洜"> - <el-input type="textarea" placeholder="璇疯緭鍏�"></el-input> + <el-input type="textarea" placeholder="璇疯緭鍏�" v-model="form.returnReason"></el-input> </el-form-item> </el-form> <template #footer> <el-button @click="closeDialog">鍏� 闂�</el-button> + <el-button @click="updateStatus" type="primary">纭</el-button> </template> </el-dialog> </template> <script setup lang="ts"> +import { ElMessage } from 'element-plus' +import { updComplaintLog } from "@/api/system/company/company" const dialogVisible = ref(false) - function openDialog() { + const info = ref({}) + const form = ref({ + complaintStatus: "-1" + }) + function openDialog(item) { + info.value = item dialogVisible.value = true } function closeDialog() { dialogVisible.value = false } + function updateStatus() { + if(form.value.complaintStatus == "-1" && !form.value.returnReason) { + ElMessage.error("璇疯緭鍏ラ┏鍥炲師鍥�") + return + } + info.value.complaintStatus = form.value.complaintStatus + info.value.returnReason = form.value.returnReason + updComplaintLog(info.value).then(val => { + if(val.code == 200){ + ElMessage.success("鎿嶄綔鎴愬姛") + } + }) + } + defineExpose({ openDialog, closeDialog }) </script> \ No newline at end of file diff --git a/src/views/infomanger/complating/index.vue b/src/views/infomanger/complating/index.vue index 276397a..8d33215 100644 --- a/src/views/infomanger/complating/index.vue +++ b/src/views/infomanger/complating/index.vue @@ -1,8 +1,8 @@ <template> <div class="app-container"> - <el-form inline ref="formRef" :model="form.queryParams" label-width="80px"> + <el-form inline ref="formRef" :model="form.quparams" label-width="80px"> <el-form-item label="鎶曡瘔鍐呭" prop="content"> - <el-input placeholder="璇疯緭鍏�" v-model="form.queryParams.content"></el-input> + <el-input placeholder="璇疯緭鍏�" v-model="form.quparams.content"></el-input> </el-form-item> <el-form-item label="鎶曡瘔瀵硅薄"> <el-input placeholder="璇疯緭鍏�"></el-input> @@ -26,31 +26,111 @@ <el-button icon="Download" type="primary" plain>瀵煎嚭</el-button> </el-col> </el-row> - <el-table> - <el-table-column label="鎶曡瘔浼佷笟"></el-table-column> - <el-table-column label="鎶曡瘔瀵硅薄"></el-table-column> - <el-table-column label="鎶曡瘔绫诲瀷"></el-table-column> - <el-table-column label="鎶曡瘔鍐呭"></el-table-column> - <el-table-column label="鎵ф硶涓婚"></el-table-column> - <el-table-column label="鍔炵悊鐘舵��"></el-table-column> - <el-table-column label="鎿嶄綔"></el-table-column> + <el-table :data="form.tableData"> + <el-table-column label="鎶曡瘔浼佷笟" prop="companyName"></el-table-column> + <el-table-column label="鎶曡瘔瀵硅薄" prop="executeDeptName"> + <template #default="scope"> + {{ scope.row.executeUser }} ({{ scope.row.executeDeptName }}) + </template> + </el-table-column> + <el-table-column label="鎶曡瘔绫诲瀷"> + <template #default="scope"> + {{ complaint_type[scope.row.complaintType] }} + </template> + </el-table-column> + <el-table-column label="鎶曡瘔鍐呭" prop="complaintReason"></el-table-column> + <el-table-column label="鎵ф硶涓婚" prop="enforceReason"> + <template #default="scope"> + <el-link type="primary" @click="look(scope.row)">{{ scope.row.enforceReason }}</el-link> + </template> + </el-table-column> + <el-table-column label="鍔炵悊鐘舵��" prop="complaintStatus"> + <template #default="scope"> + {{ form.status[scope.row.complaintStatus] }} + </template> + </el-table-column> + <el-table-column label="鎿嶄綔"> + <template #default="scope"> + <el-link type="primary" v-if="scope.row.complaintStatus == 2 || scope.row.complaintStatus == -1" @click="look(scope.row)">鏌ョ湅</el-link> + <el-link type="primary" v-if="scope.row.complaintStatus == 0" @click="inComplaintLogHandler(scope.row)">鍝嶅簲</el-link> + <el-link type="primary" @click="handlerRes(scope.row)" v-if="scope.row.complaintStatus == 1">鍔炵粨</el-link> + </template> + </el-table-column> </el-table> + <pagination v-show="form.quparams.total > 0" :total="form.quparams.total" v-model:page="form.quparams.pageNum" v-model:limit="form.quparams.pageSize" @pagination="getList" /> + <handlerCom ref="handlerComRef"></handlerCom> + <orderDetails ref="orderDetailsRef"></orderDetails> </div> </template> <script lang="ts" setup> +import { listComplaint, inComplaintLog } from '@/api/system/company/company' +import { ElMessageBox } from 'element-plus' +import handlerCom from './component/index.vue' +import orderDetails from '@/views/infomanger/enforcement/component/details.vue' +const { proxy } = getCurrentInstance() +const { complaint_type } = proxy.useDictPer("complaint_type"); +const handlerComRef = ref() +const orderDetailsRef = ref() const formRef = ref() const form = reactive({ - queryParams: { - content: '' + quparams: { + content: '', + pageSize: 10, + pageNum: 1, + total: 0 + }, + tableData: [], + status: { + "-1":"宸查┏鍥�",0:"寰呭搷搴�",1:"澶勭悊涓�",2:"宸插姙缁�" } }) +const dispImgType = (e: string) => { + return complaint_type.value.find((f: any) => f.value == e)?.label; +}; function handleQuery() { } function resetQuery() { formRef.value.resetFields() } +function listComplaintHttp() { + listComplaint().then((res: any) => { + console.log(res.rows) + form.tableData = res.rows + }) +} +function handlerRes(item) { + handlerComRef.value.openDialog(item) +} +function look(item) { + orderDetailsRef.value.openDialog(item) +} +function inComplaintLogHandler(item) { + ElMessageBox.confirm( + '纭鍝嶅簲璇ユ潯鏁版嵁?', + '鎻愮ず', + { + confirmButtonText: '纭', + cancelButtonText: '鍙栨秷', + type: 'warning', + } + ) + .then(() => { + inComplaintLog({id: item.id}).then((res: any) => { + // console.log(res) + listComplaintHttp() + }) + }) + + +} +function getList(e: { limit: number; page: number }) { + form.quparams.pageSize = e.limit + form.quparams.pageNum = e.page + listComplaintHttp() +} +listComplaintHttp() </script> <style scoped lang="scss"> diff --git a/src/views/infomanger/enforcement/component/details.vue b/src/views/infomanger/enforcement/component/details.vue index d4778c2..599b03d 100644 --- a/src/views/infomanger/enforcement/component/details.vue +++ b/src/views/infomanger/enforcement/component/details.vue @@ -1,75 +1,115 @@ <template> - <el-dialog title="鎵ф硶璇︽儏" width="1000px" v-model="dialogVisible" @close="closeDialog"> - <div> + <el-dialog title="鎵ф硶璇︽儏" width="900px" v-model="dialogVisible" @close="closeDialog"> + <div v-loading="loading"> <div class="title">鎵ф硶淇℃伅</div> - <div> + <div class="content"> <el-row> <el-col :span="12"> - <div class="label">鎵ф硶绫诲瀷</div> <div class="value">鍙告硶妫�鏌�</div> + <div class="label">鎵ф硶绫诲瀷</div> + <div class="value">鍙告硶妫�鏌�</div> </el-col> <el-col :span="12"> - <div class="label">鎵ф硶閮ㄩ棬</div> <div class="value">鍙告硶妫�鏌�</div> + <div class="label">鎵ф硶閮ㄩ棬</div> + <div class="value">{{ details.applyDeptName }}</div> </el-col> <el-col :span="12"> - <div class="label">浼佷笟</div> <div class="value">鍙告硶妫�鏌�</div> + <div class="label">浼佷笟</div> + <div class="value">{{ details.companyName }}</div> </el-col> <el-col :span="12"> - <div class="label">鎵ф硶浜哄憳</div> <div class="value">鍙告硶妫�鏌�</div> + <div class="label">鎵ф硶浜哄憳</div> + <div class="value">{{ details.executeUser || details.applyUser }}</div> </el-col> <el-col :span="12"> - <div class="label">闅忚浜哄憳</div> <div class="value">鍙告硶妫�鏌�</div> + <div class="label">闅忚浜哄憳</div> + <div class="value"> + <div v-for="(item, index) in details.peers" :key="index"> + {{ item.peerUser }} ({{ item.peerDeptName }}) + </div> + </div> </el-col> <el-col :span="12"> - <div class="label">鐢宠鏃堕棿</div> <div class="value">鍙告硶妫�鏌�</div> + <div class="label">鐢宠鏃堕棿</div> + <div class="value">{{ details.applyTime || "" }}</div> </el-col> <el-col :span="12"> - <div class="label">鎵ф硶鏃堕棿</div> <div class="value">鍙告硶妫�鏌�</div> + <div class="label">鎵ф硶鏃堕棿</div> + <div class="value">{{ details.executeTime || details.planTime }}</div> </el-col> <el-col :span="12"> - <div class="label">鐘舵��</div> <div class="value">鍙告硶妫�鏌�</div> + <div class="label">鐘舵��</div> + <div class="value">{{ status.orderStatusMap[details.orderStatus] }}</div> </el-col> <el-col :span="24"> - <div class="label">鎵ф硶鍐呭</div> <div class="value">1.鐏伨闅愭偅鏁存敼鎯呭喌浠ュ強闃茶寖鎺柦鐨勮惤瀹炴儏鍐点�� - -2.瀹夊叏鐤忔暎閫氶亾銆佺枏鏁f寚绀烘爣蹇椼�佸簲鎬ョ収鏄庡拰瀹夊叏鍑哄彛鎯呭喌銆� - -3.娑堥槻杞﹂�氶亾銆佹秷闃叉按婧愭儏鍐点��</div> + <div class="label">鎵ф硶鍐呭</div> + <div class="value">{{ details.enforceContent || "--" }}</div> </el-col> </el-row> </div> - <div class="title">鎵ф硶璁板綍</div> - <div> - <el-row> - <el-col :span="12"> - <div class="label">鎵ф硶涓婚</div> <div class="value">鍙告硶妫�鏌�</div> - </el-col> - <el-col :span="12"> - <div class="label">鏄惁閫氱煡浼佷笟</div> <div class="value">鍙告硶妫�鏌�</div> - </el-col> - <el-col :span="24"> - <div class="label">鎵ф硶杩囩▼</div> <div class="value">鍙告硶妫�鏌�</div> - </el-col> - <el-col :span="12"> - <div class="label">鎵ф硶缁撴灉</div> <div class="value">鍙告硶妫�鏌�</div> - </el-col> - </el-row> + <div v-if="details.orderStatus == 4"> + <div class="title">鎵ф硶璁板綍</div> + <div class="content"> + <el-row> + <el-col :span="12"> + <div class="label">鎵ф硶涓婚</div> + <div class="value">{{ details.enforceReason || '' }}</div> + </el-col> + <el-col :span="12"> + <div class="label">鏄惁閫氱煡浼佷笟</div> + <div class="value">{{ status.isNoticeCompany[details.isNoticeCompany] }}</div> + </el-col> + <el-col :span="24"> + <div class="label">鎵ф硶杩囩▼</div> + <div class="value"> + <div> + <img :src="baseUrl + item" alt="" class="image" v-for="(item, index) in details.regionImgs" + :key="index" /> + </div> + <div> + {{ details.regionReason }} + </div> + </div> + </el-col> + <el-col :span="12"> + <div class="label">鎵ф硶缁撴灉</div> + <div class="value"> + {{ status.regionStatus[details.regionStatus] }} + </div> + </el-col> + </el-row> + </div> </div> - <div class="title">鎵ф硶璇勪环</div> - <div> - <el-row> - <el-col :span="12"> - <div class="label">鎵ф硶涓撲笟鎬�</div> <div class="value">鍙告硶妫�鏌�</div> - </el-col> - <el-col :span="12"> - <div class="label">鎵ф硶鍚堢悊鎬�</div> <div class="value">鍙告硶妫�鏌�</div> - </el-col> - <el-col :span="24"> - <div class="label">鎵ф硶璁ょ湡绋嬪害</div> <div class="value">鍙告硶妫�鏌�</div> - </el-col> - <el-col :span="12"> - <div class="label">鎵ф硶缁撴灉婊℃剰搴�</div> <div class="value">鍙告硶妫�鏌�</div> - </el-col> - </el-row> + <div v-if="details.orderStatus == 4"> + <div class="title">鎵ф硶璇勪环</div> + <div class=" end-content" v-if="details.evaluateVo"> + <!-- <el-row> --> + <div v-for="(item,index) in details.evaluateVo.questionList" :key="index"> + <div class="label" >{{item.questionName}}</div> + <div class="value" v-if="item.questionType == 2"><el-rate v-model="item.questionScore" disabled></el-rate></div> + <div class="value" v-if="item.questionType == 1" style="margin: 10px;"> + <!-- <el-raido-group v-model="item.remark" > + <el-radio v-for="(ele,inde) in item.answerList" :key="inde" :value="ele.answerId"> + {{ ele.answerName }} {{ele.answerId}} {{item.remark}} + </el-radio> + </el-raido-group> --> + {{ item.answerList.find((ele) => ele.answerId == item.remark).answerName }} + </div> + + </div> + <!-- <el-col :span="12"> + <div class="label">鎵ф硶鍚堢悊鎬�</div> + <div class="value">鍙告硶妫�鏌�</div> + </el-col> + <el-col :span="24"> + <div class="label">鎵ф硶璁ょ湡绋嬪害</div> + <div class="value">鍙告硶妫�鏌�</div> + </el-col> + <el-col :span="12"> + <div class="label">鎵ф硶缁撴灉婊℃剰搴�</div> + <div class="value">鍙告硶妫�鏌�</div> + </el-col> --> + <!-- </el-row> --> + </div> </div> </div> <template #footer> @@ -79,11 +119,115 @@ </template> <script setup lang="ts"> - const dialogVisible = ref(false) - function openDialog() { - dialogVisible.value = true +import { getOrder } from '@/api/system/company/company' +const dialogVisible = ref(false) +const details:any = ref({ + evaluateVo: { + questionList: [] } - function closeDialog() { - dialogVisible.value = false +}) +const loading = ref(false) +const status = { + orderStatusMap: { + '-1': '鎷掔粷', + 0: '寰呮彁浜�', + 1: '宸叉彁浜�', + 2: '寰呮墽琛�', + 3: '寰呬笂鎶�', + 4: '宸茬粨鏉�', + }, + regionStatus: { + 0: '姝e父', + 1: '鍋滀笟鏁撮】', + }, + isNoticeCompany: { + 0: '鍚�', + 1: '鏄�', } -</script> \ No newline at end of file +} +const baseUrl = import.meta.env.VITE_APP_BASE_API +function getDetails(orderId) { + getOrder({ orderId }).then(val => { + if (val.data.regionImgs) { + val.data.regionImgs = val.data.regionImgs.split(',') + } + if(val.data.evaluateVo && val.data.evaluateVo.questionList) { + val.data.evaluateVo.questionList.map(item => { + item.remark = Number(item.remark) + }) + } + details.value = val.data + console.log(details.value) + loading.value = false + }).catch(err => { + loading.value = false + }) +} +function openDialog(item: any) { + // console.log() + loading.value = true + getDetails(item.orderId) + dialogVisible.value = true +} + + +function closeDialog() { + dialogVisible.value = false +} +defineExpose({ openDialog, closeDialog }) +</script> + +<style lang="scss" scoped> +.title { + font-size: 16px; + background-color: #f6f6f6; + padding: 10px; + margin-bottom: 14px; +} + +.el-col { + display: flex; + justify-content: flex-start; + align-items: flex-start; + margin-bottom: 15px +} + +.content { + margin-bottom: 14px; + + .label { + font-size: 14px; + color: #999; + width: 110px; + text-align: justify; + text-align-last: justify; + margin-right: 30px; + } + + .value { + font-size: 14px; + color: #333; + width: calc(100% - 120px); + } +} +.end-content{ + margin-bottom: 14px; + .label { + font-size: 14px; + color: #999; + margin-right: 30px; + } + + .value { + font-size: 14px; + color: #333; + } +} +.image { + width: 80px; + height: 80px; + display: inline-block; + margin-right: 20px; + margin-bottom: 20px +} +</style> \ No newline at end of file diff --git a/src/views/infomanger/enforcement/index.vue b/src/views/infomanger/enforcement/index.vue index 98136e1..d52eeb4 100644 --- a/src/views/infomanger/enforcement/index.vue +++ b/src/views/infomanger/enforcement/index.vue @@ -1,67 +1,187 @@ <template> <div class="app-container"> - <el-form inline class="evenly-distributed-labels" ref="formRef" :model="form.queryParams" label-width="80px"> - <el-form-item label="鎵ф硶璁板綍" prop="content"> - <el-input placeholder="璇疯緭鍏�" v-model="form.queryParams.content"></el-input> + <el-form inline class="evenly-distributed-labels" ref="formRef" :model="refValue.queryParams" label-width="80px"> + <el-form-item label="鎵ф硶璁板綍" prop="enforceReason"> + <el-input placeholder="璇疯緭鍏�" v-model="refValue.quparams.enforceReason" ></el-input> </el-form-item> - <el-form-item label="鎵ф硶绫诲瀷"> - <el-input placeholder="璇疯緭鍏�"></el-input> + <el-form-item label="鎵ф硶绫诲瀷" prop="enforceType"> + <el-select v-model="refValue.quparams.enforceType" placeholder="璇烽�夋嫨" style="width: 170px;"> + <el-option v-for="(item,index) in enforce_type" :label="item.label" :value="item.value" :key="index"></el-option> + </el-select> </el-form-item> - <el-form-item label="鎵ф硶鏃堕棿"> - <el-input placeholder="璇疯緭鍏�"></el-input> + <el-form-item label="鎵ф硶鏃堕棿" prop="enforceType"> + <el-date-picker + v-model="refValue.quparams.pertime" + @change="timeChange" + format="YYYY-MM-DD" + value-format="YYYY-MM-DD" + type="daterange" + range-separator="鑷�" + start-placeholder="寮�濮嬫椂闂�" + end-placeholder="缁撴潫鏃堕棿" + /> </el-form-item> - <el-form-item label="浼佷笟"> - <el-input placeholder="璇疯緭鍏�"></el-input> + <el-form-item label="浼佷笟" prop="companyName"> + <el-input placeholder="璇疯緭鍏�" v-model="refValue.quparams.companyName"></el-input> </el-form-item> - <el-form-item label="鎵ф硶閮ㄩ棬"> - <el-input placeholder="璇疯緭鍏�"></el-input> + <el-form-item label="鎵ф硶閮ㄩ棬" prop="applyDeptName"> + <el-input placeholder="璇疯緭鍏�" v-model="refValue.quparams.applyDeptName"></el-input> </el-form-item> - <el-form-item label="鐘舵��"> - <el-input placeholder="璇疯緭鍏�"></el-input> + <el-form-item label="鐘舵��" prop="orderStatus"> + <!-- <el-input placeholder="璇疯緭鍏�" ></el-input> --> + <el-select v-model="refValue.quparams.orderStatus" placeholder="璇烽�夋嫨" style="width: 170px;"> + <el-option v-for="(item,index) in refValue.orderStatusMap" :lable="index" :value="item"></el-option> + </el-select> </el-form-item> - <el-form-item label="鎵ф硶缁撴灉"> - <el-input placeholder="璇疯緭鍏�"></el-input> + <el-form-item label="鎵ф硶缁撴灉" prop="enforceResult"> + <el-select style="width: 170px;" v-model="refValue.quparams.enforceResult" placeholder="璇烽�夋嫨"> + <el-option label="姝e父" value="0"></el-option> + <el-option label="鍋滀笟鏁撮】" value="1"></el-option> + </el-select> </el-form-item> - <el-form-item label="鏄惁閫氱煡"> - <el-input placeholder="璇疯緭鍏�"></el-input> + <el-form-item label="鏄惁閫氱煡" prop="isNoticeCompany"> + <el-select v-model="refValue.quparams.isNoticeCompany" placeholder="璇烽�夋嫨" style="width: 170px;"> + <el-option label="鍚�" value="0"></el-option> + <el-option label="鏄�" value="1"></el-option> + </el-select> </el-form-item> <el-form-item> <el-button type="primary" icon="Search" @click="handleQuery">鎼滅储</el-button> <el-button icon="Refresh" @click="resetQuery">閲嶇疆</el-button> </el-form-item> </el-form> - <el-row class="mt20 mb10"> + <!-- <el-row class="mt20 mb10"> <el-col> <el-button icon="Download" type="primary" plain>瀵煎嚭</el-button> </el-col> - </el-row> - <el-table> - <el-table-column label="浼佷笟"></el-table-column> - <el-table-column label="鎵ф硶閮ㄩ棬"></el-table-column> - <el-table-column label="鎵ф硶浜�"></el-table-column> - <el-table-column label="鎵ф硶绫诲瀷"></el-table-column> - <el-table-column label="鎵ф硶涓婚"></el-table-column> - <el-table-column label="鐢宠鏃堕棿"></el-table-column> - <el-table-column label="鎵ф硶鏃堕棿"></el-table-column> - <el-table-column label="鐘舵��"></el-table-column> - <el-table-column label="鎵ф硶缁撴灉"></el-table-column> - <el-table-column label="鏄惁閫氱煡浼佷笟"></el-table-column> + </el-row> --> + <el-table :data="refValue.tableData"> + <el-table-column label="浼佷笟" prop="companyName"></el-table-column> + <el-table-column label="鎵ф硶閮ㄩ棬" prop="applyDeptName"></el-table-column> + <el-table-column label="鎵ф硶浜�" prop="applyUser"></el-table-column> + <el-table-column label="鎵ф硶绫诲瀷" prop="enforceType"> + <template #default="scope"> + {{dispImgType(scope.row.enforceType)}} + </template> + </el-table-column> + <el-table-column label="鎵ф硶涓婚" prop="enforceReason"> + <template #default="scope"> + <el-link type="primary" @click="openDetails(scope.row)">{{ scope.row.enforceReason }}</el-link> + </template> + </el-table-column> + <el-table-column label="鐢宠鏃堕棿" prop="applyTime" width="180"></el-table-column> + <el-table-column label="鎵ф硶鏃堕棿" prop="planTime" width="180"></el-table-column> + <el-table-column label="鐘舵��" prop="orderStatus" width="100"> + <template #default="scope"> + {{ refValue.orderStatusMap[scope.row.orderStatus] }} + </template> + </el-table-column> + <el-table-column label="鎵ф硶缁撴灉" prop="regionStatus" width="100"> + <template #default="scope"> + {{ refValue.regionStatus[scope.row.regionStatus] }} + </template> + </el-table-column> + <el-table-column label="鏄惁閫氱煡浼佷笟" prop="isNoticeCompany" width="120"> + <template #default="scope"> + {{ refValue.isNoticeCompany[scope.row.isNoticeCompany] }} + </template> + </el-table-column> </el-table> + <pagination v-show="refValue.quparams.total > 0" :total="refValue.quparams.total" v-model:page="refValue.quparams.pageNum" v-model:limit="refValue.quparams.pageSize" @pagination="getList" /> + <detailsCom ref="refDetails"></detailsCom> </div> </template> <script lang="ts" setup> +import { companyListEnforce } from '@/api/system/company/company' +import detailsCom from './component/details.vue' const formRef = ref() +const refDetails = ref() +const { proxy } = getCurrentInstance() +const { enforce_type } = proxy.useDictPer("enforce_type"); +const time = ref("") +const refValue: any = reactive({ + tableData: [], + total: 1, + quparams: { + pageNum: 1, + pageSize: 10, + total: 1, + companyName: '', + enforceType: '', + applyDeptName: '', + orderStatus: "", + enforceReason: "", + isNoticeCompany: "", + enforceTime: "", + begineTime: "", + endTime: "", + }, + orderStatusMap: { + '-1': '鎷掔粷', + 0: '寰呮彁浜�', + 1: '宸叉彁浜�', + 2: '寰呮墽琛�', + 3: '寰呬笂鎶�', + 4: '宸茬粨鏉�', + }, + regionStatus: { + 0: '姝e父', + 1: '鍋滀笟鏁撮】', + }, + isNoticeCompany: { + 0: '鍚�', + 1: '鏄�', + } +}) const form = reactive({ queryParams: { content: '' } }) +const dispImgType = (e: string) => { + return enforce_type.value.find((f: any) => f.value == e)?.label; +}; +function getList(e: { limit: number; page: number }) { + refValue.quparams.pageSize = e.limit + refValue.quparams.pageNum = e.page + companyListEnforceHandle() +} +function companyListEnforceHandle() { + companyListEnforce(refValue.quparams).then(res => { + refValue.tableData = res.rows + refValue.quparams.total = res.total + }) +} +companyListEnforceHandle() function handleQuery() { - + refValue.quparams.pageNum = 1 + companyListEnforceHandle() +} +function timeChange(e: string[]) { + refValue.quparams.begineTime = e[0] + " " + "00:00:00" + refValue.quparams.endTime = e[1] + " " + "23:59:59" +} +function openDetails(item: any) { + refDetails.value.openDialog(item) } function resetQuery() { + refValue.quparams = { + pageNum: 1, + pageSize: 10, + total: 1, + companyName: '', + enforceType: '', + applyDeptName: '', + orderStatus: "", + enforceReason: "", + isNoticeCompany: "", + begineTime: "", + endTime: "", + } formRef.value.resetFields() + companyListEnforceHandle() + } </script> diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index e4668bb..2131c45 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -100,9 +100,9 @@ <el-tooltip content="鍒嗛厤瑙掕壊" placement="top" v-if="scope.row.userId !== 1"> <el-button link type="success" icon="CircleCheck" @click="handleAuthRole(scope.row)" v-hasPermi="['system:user:edit']"></el-button> </el-tooltip> - <el-tooltip content="閲嶇疆鏀粯瀵嗙爜" placement="top" v-if="scope.row.userId !== 1"> + <!-- <el-tooltip content="閲嶇疆鏀粯瀵嗙爜" placement="top" v-if="scope.row.userId !== 1"> <el-button link type="danger" icon="Key" @click="handlePayPwd(scope.row)" v-hasPermi="['system:user:resetPwd']"></el-button> - </el-tooltip> + </el-tooltip> --> </template> </el-table-column> </el-table> -- Gitblit v1.9.1