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