From 24b00a82a34eb11c6ec1bc1ce018a6e969e791d0 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期五, 15 十二月 2023 17:32:11 +0800
Subject: [PATCH] 1. 新增自动评估记录的获取和展示; 2. 新增评估记录排序功能; 3. 新增评估任务界面;

---
 package-lock.json                                     |   24 +
 src/stores/loadingStore.js                            |   21 +
 src/views/fysp/evaluation/ResultManage.vue            |  129 ++++++++++--
 src/components.d.ts                                   |    3 
 src/constants/envCreditCode.js                        |   26 ++
 src/constants/index.js                                |    3 
 src/views/fytz/user/components/CompUserInfo.vue       |  126 +++++++-----
 src/views/fytz/user/UserInfo.vue                      |   29 +-
 src/components/form/FYForm.vue                        |   20 +-
 src/constants/menu.js                                 |    4 
 src/views/fysp/evaluation/DataSource.vue              |   22 +
 src/components/table/FYTable.vue                      |    1 
 src/views/baseinfo/fysp/scene/SceneInfo.vue           |    2 
 package.json                                          |    2 
 src/views/fysp/evaluation/components/CompPreCheck.vue |  176 ++++++-----------
 src/components/core/SiderMenu.vue                     |    2 
 .prettierrc.json                                      |    2 
 17 files changed, 338 insertions(+), 254 deletions(-)

diff --git a/.prettierrc.json b/.prettierrc.json
index 66e2335..5eb97e4 100644
--- a/.prettierrc.json
+++ b/.prettierrc.json
@@ -1,6 +1,6 @@
 {
   "$schema": "https://json.schemastore.org/prettierrc",
-  "semi": false,
+  "semi": true,
   "tabWidth": 2,
   "singleQuote": true,
   "printWidth": 100,
diff --git a/package-lock.json b/package-lock.json
index 19baa43..9407446 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -13,7 +13,7 @@
         "@vueuse/core": "^9.7.0",
         "axios": "^1.2.1",
         "dayjs": "^1.11.10",
-        "element-plus": "^2.2.26",
+        "element-plus": "^2.4.3",
         "pinia": "^2.0.26",
         "vue": "^3.2.45",
         "vue-router": "^4.1.6"
@@ -1838,8 +1838,9 @@
       }
     },
     "node_modules/@element-plus/icons-vue": {
-      "version": "2.0.10",
-      "license": "MIT",
+      "version": "2.3.1",
+      "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
+      "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==",
       "peerDependencies": {
         "vue": "^3.2.0"
       }
@@ -3729,11 +3730,12 @@
       "license": "ISC"
     },
     "node_modules/element-plus": {
-      "version": "2.2.26",
-      "license": "MIT",
+      "version": "2.4.3",
+      "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.4.3.tgz",
+      "integrity": "sha512-b3q26j+lM4SBqiyzw8HybybGnP2pk4MWgrnzzzYW5qKQUgV6EG1Zg7nMCfgCVccI8tNvZoTiUHb2mFaiB9qT8w==",
       "dependencies": {
         "@ctrl/tinycolor": "^3.4.1",
-        "@element-plus/icons-vue": "^2.0.6",
+        "@element-plus/icons-vue": "^2.3.1",
         "@floating-ui/dom": "^1.0.1",
         "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
         "@types/lodash": "^4.14.182",
@@ -8693,7 +8695,9 @@
       }
     },
     "@element-plus/icons-vue": {
-      "version": "2.0.10",
+      "version": "2.3.1",
+      "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
+      "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==",
       "requires": {}
     },
     "@eslint-community/eslint-utils": {
@@ -9942,10 +9946,12 @@
       "dev": true
     },
     "element-plus": {
-      "version": "2.2.26",
+      "version": "2.4.3",
+      "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.4.3.tgz",
+      "integrity": "sha512-b3q26j+lM4SBqiyzw8HybybGnP2pk4MWgrnzzzYW5qKQUgV6EG1Zg7nMCfgCVccI8tNvZoTiUHb2mFaiB9qT8w==",
       "requires": {
         "@ctrl/tinycolor": "^3.4.1",
-        "@element-plus/icons-vue": "^2.0.6",
+        "@element-plus/icons-vue": "^2.3.1",
         "@floating-ui/dom": "^1.0.1",
         "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
         "@types/lodash": "^4.14.182",
diff --git a/package.json b/package.json
index 647b599..50001b6 100644
--- a/package.json
+++ b/package.json
@@ -18,7 +18,7 @@
     "@vueuse/core": "^9.7.0",
     "axios": "^1.2.1",
     "dayjs": "^1.11.10",
-    "element-plus": "^2.2.26",
+    "element-plus": "^2.4.3",
     "pinia": "^2.0.26",
     "vue": "^3.2.45",
     "vue-router": "^4.1.6"
diff --git a/src/components.d.ts b/src/components.d.ts
index b1cd8a8..0f89be9 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -10,7 +10,6 @@
     BaseContentLayout: typeof import('./components/core/BaseContentLayout.vue')['default']
     BasePanelLayout: typeof import('./components/core/BasePanelLayout.vue')['default']
     Content: typeof import('./components/core/Content.vue')['default']
-    copy: typeof import('./components/search-option/FYOptionScene copy.vue')['default']
     ElAside: typeof import('element-plus/es')['ElAside']
     ElAvatar: typeof import('element-plus/es')['ElAvatar']
     ElBacktop: typeof import('element-plus/es')['ElBacktop']
@@ -56,6 +55,7 @@
     ElTabPane: typeof import('element-plus/es')['ElTabPane']
     ElTabs: typeof import('element-plus/es')['ElTabs']
     ElTag: typeof import('element-plus/es')['ElTag']
+    ElText: typeof import('element-plus/es')['ElText']
     ElTooltip: typeof import('element-plus/es')['ElTooltip']
     ElTransfer: typeof import('element-plus/es')['ElTransfer']
     ElTree: typeof import('element-plus/es')['ElTree']
@@ -72,7 +72,6 @@
     FYTable: typeof import('./components/table/FYTable.vue')['default']
     Header: typeof import('./components/core/Header.vue')['default']
     MenuItems: typeof import('./components/core/MenuItems.vue')['default']
-    ProblemCard: typeof import('./components/ProblemCard.vue')['default']
     RouterLink: typeof import('vue-router')['RouterLink']
     RouterView: typeof import('vue-router')['RouterView']
     SearchBar: typeof import('./components/SearchBar.vue')['default']
diff --git a/src/components/core/SiderMenu.vue b/src/components/core/SiderMenu.vue
index 1cbb4b5..d4541a2 100644
--- a/src/components/core/SiderMenu.vue
+++ b/src/components/core/SiderMenu.vue
@@ -60,7 +60,7 @@
 </template>
 
 <script>
-import { MENU_FYSP, MENU_FYTZ, MENU_FYPW } from '../../constants/index'
+import { MENU_FYSP, MENU_FYTZ, MENU_FYPW } from '@/constants/index'
 
 export default {
   name: 'CoreSiderMenu',
diff --git a/src/components/form/FYForm.vue b/src/components/form/FYForm.vue
index 0d68089..c4919dd 100644
--- a/src/components/form/FYForm.vue
+++ b/src/components/form/FYForm.vue
@@ -8,12 +8,8 @@
     label-width="150px"
   >
     <slot name="form-item" :formObj="formObj"></slot>
-    <el-form-item>
-      <el-button
-        :disabled="!edit"
-        type="primary"
-        @click="onSubmit"
-        :loading="loading"
+    <el-form-item v-if="showButtons">
+      <el-button :disabled="!edit" type="primary" @click="onSubmit" :loading="loading"
         >鎻愪氦</el-button
       >
       <el-button :disabled="!edit" @click="onReset">閲嶇疆</el-button>
@@ -38,12 +34,16 @@
   formInfo: Object,
   //琛ㄥ崟妫�楠岃鍒�
   rules: Object,
+  showButtons: {
+    type: Boolean,
+    default: true
+  },
   //鍙栨秷鎸夐挳鏄惁鍙敤
   enableCancelBtn: Boolean,
   //瑙﹀彂閲嶇疆
   reset: Boolean,
   //閫氱煡缂栬緫鐘舵��
-  isEdit: Boolean,
+  isEdit: Boolean
 });
 
 //瑙﹀彂鍑芥暟锛屾彁浜ゅ拰鍙栨秷
@@ -52,11 +52,11 @@
 //琛ㄥ崟鎿嶄綔鍑芥暟
 const { formObj, formRef, edit, onSubmit, onCancel, onReset } = useFormConfirm({
   submit: {
-    do: submit,
+    do: submit
   },
   cancel: {
-    do: cancel,
-  },
+    do: cancel
+  }
 });
 
 //鍔犺浇鐘舵��
diff --git a/src/components/table/FYTable.vue b/src/components/table/FYTable.vue
index 0e6e982..c519077 100644
--- a/src/components/table/FYTable.vue
+++ b/src/components/table/FYTable.vue
@@ -15,6 +15,7 @@
     table-layout="fixed"
     :row-class-name="tableRowClassName"
     :height="tableHeight"
+    border
   >
     <slot name="table-column"></slot>
   </el-table>
diff --git a/src/constants/envCreditCode.js b/src/constants/envCreditCode.js
new file mode 100644
index 0000000..184d7af
--- /dev/null
+++ b/src/constants/envCreditCode.js
@@ -0,0 +1,26 @@
+// 鐜俊鐮佽浆鎹�
+
+function envCreditCode(score) {
+  const s = parseInt(score)
+  if (s <= 59) {
+    return {
+      value: 2,
+      name: '绾㈢爜',
+      color: '#db2828'
+    };
+  } else if (s <= 89) {
+    return {
+      value: 1,
+      name: '榛勭爜',
+      color: '#f7a62c'
+    };
+  } else {
+    return {
+      value: 0,
+      name: '缁跨爜',
+      color: '#21ba45'
+    };
+  }
+}
+
+export { envCreditCode };
diff --git a/src/constants/index.js b/src/constants/index.js
index 51c825e..293b045 100644
--- a/src/constants/index.js
+++ b/src/constants/index.js
@@ -1 +1,2 @@
-export { MENU_FYSP, MENU_FYTZ, MENU_FYPW } from './menu'
+export { MENU_FYSP, MENU_FYTZ, MENU_FYPW } from './menu';
+export { envCreditCode } from './envCreditCode';
diff --git a/src/constants/menu.js b/src/constants/menu.js
index edc83a5..afb67dd 100644
--- a/src/constants/menu.js
+++ b/src/constants/menu.js
@@ -36,12 +36,12 @@
       {
         path: '/fysp/evaluation/datasource',
         icon: 'MessageBox',
-        name: '璇勪及鏁版嵁婧�',
+        name: '璇勪及浠诲姟',
       },
       {
         path: '/fysp/evaluation/resultManage',
         icon: 'Tickets',
-        name: '璇勪及绠$悊',
+        name: '璇勪及璁板綍',
       },
     ],
   },
diff --git a/src/stores/loadingStore.js b/src/stores/loadingStore.js
index d8b2d1c..d69e666 100644
--- a/src/stores/loadingStore.js
+++ b/src/stores/loadingStore.js
@@ -1,23 +1,26 @@
 // 鍔犺浇鐘舵�佺殑閫昏緫绠$悊
 
-import { defineStore } from 'pinia'
+import { defineStore } from 'pinia';
 
 export const useLoadingStore = defineStore('loading', {
   state: () => {
     return {
       loadingStatus: []
-    }
+    };
   },
   actions: {
+    pushLoading(func) {
+      const timeout = setTimeout(func, 3000);
+      this.loadingStatus.push({ t: timeout, f: func });
+    },
     clearLoading() {
-      this.loadingStatus.forEach(l => {
-        if (typeof l === 'function') {
-          l()
-        }
-      });
       if (this.loadingStatus.length > 0) {
-        this.loadingStatus = []        
+        this.loadingStatus.forEach((obj) => {
+          clearTimeout(obj.t)
+          obj.f()
+        });
+        this.loadingStatus = [];
       }
     }
   }
-})
\ No newline at end of file
+});
diff --git a/src/views/baseinfo/fysp/scene/SceneInfo.vue b/src/views/baseinfo/fysp/scene/SceneInfo.vue
index 535e602..b3e7682 100644
--- a/src/views/baseinfo/fysp/scene/SceneInfo.vue
+++ b/src/views/baseinfo/fysp/scene/SceneInfo.vue
@@ -107,7 +107,7 @@
     },
     itemEdit(scope) {
       scope.row.loading1 = true;
-      this.loadingStore.loadingStatus.push(() => (scope.row.loading1 = false));
+      this.loadingStore.pushLoading(() => (scope.row.loading1 = false));
       this.$router.push(`sceneEdit/${scope.row.guid}`);
     },
     itemActive(scope) {
diff --git a/src/views/fysp/evaluation/DataSource.vue b/src/views/fysp/evaluation/DataSource.vue
index 9f57df9..61476d4 100644
--- a/src/views/fysp/evaluation/DataSource.vue
+++ b/src/views/fysp/evaluation/DataSource.vue
@@ -1,14 +1,28 @@
 <template>
-  <div>DataSource</div>
+  <el-row :gutter="16">
+    <el-col :span="16">
+      <CompPreCheck></CompPreCheck>
+    </el-col>
+    <el-col :span="8">
+      <div class="radius"></div>
+    </el-col>
+  </el-row>
 </template>
 
 <script>
+import CompPreCheck from "./components/CompPreCheck.vue";
 export default {
   name: 'DataSource',
+  components: { CompPreCheck },
   data() {
-    return {
-      
-    }
+    return {};
   }
 };
 </script>
+<style scoped>
+.radius {
+  height: 80vh;
+  border: 1px solid var(--el-border-color);
+  border-radius: var(--el-border-radius-base);
+}
+</style>
diff --git a/src/views/fysp/evaluation/ResultManage.vue b/src/views/fysp/evaluation/ResultManage.vue
index 0a3a198..da2c668 100644
--- a/src/views/fysp/evaluation/ResultManage.vue
+++ b/src/views/fysp/evaluation/ResultManage.vue
@@ -1,7 +1,7 @@
 <template>
   <!-- <CompPreCheck @pre-check="autoEvaluate"></CompPreCheck> -->
 
-  <FYTable @search="onSearch" :pagination="false">
+  <FYTable @search="onSearch" :pagination="false" ref="tableRef">
     <template #options>
       <!-- 鍖哄幙 -->
       <FYOptionLocation
@@ -25,14 +25,8 @@
     </template>
 
     <template #table-column>
-      <el-table-column
-        type="index"
-        fixed="left"
-        prop="sceneName"
-        label="鍚嶇О"
-        width="400"
-      >
-        <template #default="{row}">
+      <el-table-column type="index" fixed="left" prop="sceneName" label="鍚嶇О" width="300">
+        <template #default="{ row }">
           <el-tooltip
             effect="dark"
             :content="row.sceneName"
@@ -43,42 +37,78 @@
           </el-tooltip>
         </template>
       </el-table-column>
-      
+      <el-table-column
+        prop="subTaskTime"
+        label="宸℃煡鏃ユ湡"
+        width="110"
+        sortable
+        :formatter="timeFormat"
+      />
+      <el-table-column
+        prop="evaluation.resultscorebef"
+        label="寰楀垎"
+        width="90"
+        sortable
+        :sort-method="sortScore"
+      />
+      <el-table-column prop="evaluation.resultscorebef" label="鐜俊鐮�" width="100">
+        <template #default="{ row }">
+          <span :style="`color: ${toCode(row).color};`">{{ toCode(row).name }}</span>
+        </template>
+      </el-table-column>
+
       <el-table-column prop="dname" label="鍖哄幙" width="90" />
-      <el-table-column prop="tname" label="琛楅亾" width="110" />
+      <el-table-column
+        prop="tname"
+        label="琛楅亾"
+        width="110"
+        :filters="townFilters"
+        :filter-method="filterHandler"
+      />
       <el-table-column prop="evaluation.scenseaddress" label="鍦板潃" />
       <!-- <el-table-column prop="biArea" label="闆嗕腑鍖�" width="110" />
       <el-table-column prop="biManagementCompany" label="鐗╀笟" min-width="110"/> -->
-      <el-table-column prop="evaluation.resultscorebef" label="寰楀垎" width="110" />
+      <el-table-column fixed="right" align="right" label="鎿嶄綔" width="160">
+        <template #header>
+          <el-button icon="DocumentAdd" size="default" type="success" @click="drawer = true"
+            >鑷姩璇勪及</el-button
+          >
+        </template>
+        <template #default="{ row }">
+          <el-button type="primary" size="small" @click="editRow(row)">鏌ョ湅</el-button>
+        </template>
+      </el-table-column>
     </template>
   </FYTable>
 </template>
 
 <script>
-import CompPreCheck from './components/CompPreCheck.vue'
-import evaluateApi from '@/api/fysp/evaluateApi'
-import dayjs from 'dayjs'
-import CompQuickSet from './components/CompQuickSet.vue'
+import dayjs from 'dayjs';
+import evaluateApi from '@/api/fysp/evaluateApi';
+import { envCreditCode } from '@/constants/index';
+import CompQuickSet from './components/CompQuickSet.vue';
 
 export default {
   name: 'ResultManage',
-  components: { CompPreCheck, CompQuickSet },
+  components: { CompQuickSet },
   data() {
     return {
       formSearch: {
         locations: {},
         scenetype: {},
         time: dayjs().add(-1, 'M').date(1).toDate()
-      }
-    }
+      },
+      townFilters: []
+    };
   },
   methods: {
     setOptions(param) {
-      this.formSearch.locations = param.locations
-      this.formSearch.scenetype = param.scenetype
+      this.formSearch.locations = param.locations;
+      this.formSearch.scenetype = param.scenetype;
+      this.$refs.tableRef.onSearch()
     },
     onSearch(page, func) {
-      const { locations, scenetype, time } = this.formSearch
+      const { locations, scenetype, time } = this.formSearch;
       const area = {
         provincecode: locations.pCode,
         provincename: locations.pName,
@@ -88,15 +118,56 @@
         districtname: locations.dName,
         starttime: dayjs(time).format('YYYY-MM-DD'),
         scensetypeid: scenetype.value
-      }
+      };
       evaluateApi.fetchAutoEvaluation(area).then((res) => {
-        if (res) {
-          func({
-            data: res.data
-          })
+        if (typeof func === 'function') {
+          func({ data: res.data });
         }
-      })
+        if (res.data) {
+          this.getFilters(res.data);
+        }
+      });
+    },
+    getFilters(data) {
+      const townList = [];
+      data.forEach((e) => {
+        if (townList.indexOf(e.tname) == -1) {
+          townList.push(e.tname);
+        }
+      });
+      this.townFilters = townList.map((v) => {
+        return { text: v, value: v };
+      });
+    },
+    toCode(row, column) {
+      if (row.evaluation) {
+        return envCreditCode(row.evaluation.resultscorebef);
+      } else {
+        return '';
+      }
+    },
+    timeFormat(row, column) {
+      const time = row.subTaskTime;
+      if (time) {
+        return dayjs(time).format('MM-DD');
+      } else {
+        return '';
+      }
+    },
+    filterHandler(value, row, column) {
+      const property = column['property'];
+      return row[property] === value;
+    },
+    sortScore(a, b) {
+      const s1 = a.evaluation ? parseInt(a.evaluation.resultscorebef) : 0;
+      const s2 = b.evaluation ? parseInt(b.evaluation.resultscorebef) : 0;
+      return s1 - s2;
     }
   }
-}
+};
 </script>
+<style scoped>
+.a {
+  color: #f7a62c;
+}
+</style>
diff --git a/src/views/fysp/evaluation/components/CompPreCheck.vue b/src/views/fysp/evaluation/components/CompPreCheck.vue
index 0199703..f99b60b 100644
--- a/src/views/fysp/evaluation/components/CompPreCheck.vue
+++ b/src/views/fysp/evaluation/components/CompPreCheck.vue
@@ -1,117 +1,76 @@
 <template>
-  <FYSearchBar @search="preCheck">
-    <template #options>
-      <!-- 鍖哄幙 -->
-      <FYOptionLocation
-        :allOption="false"
-        :level="3"
-        :checkStrictly="false"
-        v-model:value="formSearch.locations"
-      ></FYOptionLocation>
-      <!-- 鍦烘櫙绫诲瀷 -->
-      <FYOptionScene
-        :allOption="false"
-        :type="2"
-        v-model:value="formSearch.scenetype"
-      ></FYOptionScene>
-      <!-- 鏃堕棿 -->
-      <FYOptionTime :initValue="false" type="month" v-model:value="formSearch.time"></FYOptionTime>
+  <el-steps :active="stepIndex" finish-status="success" style="" align-center>
+    <el-step title="璇勪及鑼冨洿" />
+    <el-step title="鏁版嵁婧愭鏌�" />
+    <el-step title="璞佸厤鏉$洰" />
+    <el-step title="鑷姩璇勪及" />
+  </el-steps>
+
+  <el-card v-if="stepIndex == 0" shadow="never">
+    <template #header>
+      <div><el-text tag="b" size="large">閫夋嫨璇勪及鑼冨洿</el-text></div>
+      <el-text size="small" type="info">鍖呮嫭鍖哄幙銆佸満鏅被鍨嬩互鍙婃湀浠�</el-text>
     </template>
-  </FYSearchBar>
-  <el-row>
-    <span>蹇嵎閫夋嫨</span>
-    <el-button v-for="(v, i) in quickSetting" :key="i" type="primary" @click="quickSet(v)">{{
-      v.name
-    }}</el-button>
-  </el-row>
+    <FYForm :form-info="evaConditon" :rules="evaConditionRules" :showButtons="false">
+      <template #form-item="{ formObj }">
+        <!-- 鍖哄幙 -->
+        <FYOptionLocation
+          :allOption="false"
+          :level="3"
+          :checkStrictly="false"
+          v-model:value="formObj.locations"
+        ></FYOptionLocation>
+        <!-- 鍦烘櫙绫诲瀷 -->
+        <FYOptionScene
+          :allOption="false"
+          :type="2"
+          v-model:value="formObj.scenetype"
+        ></FYOptionScene>
+        <!-- 鏃堕棿 -->
+        <FYOptionTime
+          :initValue="true"
+          type="month"
+          v-model:value="formObj.time"
+        ></FYOptionTime>
+      </template>
+    </FYForm>
+    <template #footer>
+      <el-row justify="space-around">
+        <el-button type="primary" size="default">涓嬩竴姝�</el-button>
+      </el-row>
+    </template>
+  </el-card>
+  <el-card v-if="stepIndex == 1" shadow="never"> Never2 </el-card>
+  <el-card v-if="stepIndex == 2" shadow="never"> Never3 </el-card>
+  <el-card v-if="stepIndex == 3" shadow="never"> Never4 </el-card>
 </template>
 
 <script>
-import dayjs from 'dayjs'
+import dayjs from 'dayjs';
 
 /**
  * 鑷姩璇勪及鏉′欢鍚堣鎬ф鏌�
  */
 export default {
   name: 'CompPreCheck',
-  props: {
-    quickSetting: {
-      type: Array,
-      default: () => {
-        return [
-          {
-            name: '闈欏畨宸ュ湴',
-            locations: {
-              pCode: '31',
-              pName: '涓婃捣甯�',
-              cCode: '3100',
-              cName: '涓婃捣甯�',
-              dCode: '310106',
-              dName: '闈欏畨鍖�'
-            },
-            scenetype: { label: '宸ュ湴', value: '1' }
-          },
-          {
-            name: '寰愭眹椁愰ギ',
-            locations: {
-              pCode: '31',
-              pName: '涓婃捣甯�',
-              cCode: '3100',
-              cName: '涓婃捣甯�',
-              dCode: '310104',
-              dName: '寰愭眹鍖�'
-            },
-            scenetype: { label: '椁愰ギ', value: '5' }
-          },
-          {
-            name: '閲戝北宸ュ湴',
-            locations: {
-              pCode: '31',
-              pName: '涓婃捣甯�',
-              cCode: '3100',
-              cName: '涓婃捣甯�',
-              dCode: '310116',
-              dName: '閲戝北鍖�'
-            },
-            scenetype: { label: '宸ュ湴', value: '1' }
-          },
-          {
-            name: '閲戝北鐮佸ご',
-            locations: {
-              pCode: '31',
-              pName: '涓婃捣甯�',
-              cCode: '3100',
-              cName: '涓婃捣甯�',
-              dCode: '310116',
-              dName: '閲戝北鍖�'
-            },
-            scenetype: { label: '鐮佸ご', value: '2' }
-          },
-          {
-            name: '閲戝北鎼呮媽绔�',
-            locations: {
-              pCode: '31',
-              pName: '涓婃捣甯�',
-              cCode: '3100',
-              cName: '涓婃捣甯�',
-              dCode: '310116',
-              dName: '閲戝北鍖�'
-            },
-            scenetype: { label: '鎼呮媽绔�', value: '3' }
-          }
-        ]
-      }
-    }
-  },
+  props: {},
   emits: ['preCheck'],
   data() {
     return {
-      formSearch: {
-        locations: {},
-        scenetype: {},
-        time: dayjs().add(-1, 'M').date(1).toDate()
+      // 鎿嶄綔姝ラ涓嬫爣
+      stepIndex: 0,
+      // 璇勪及浠诲姟鑼冨洿
+      evaConditon: {},
+      evaConditionRules: {
+        acountname: [
+          {
+            required: true,
+            message: '璐︽埛鍚嶄笉鑳戒负绌�',
+            trigger: 'blur'
+          }
+        ]
       }
-    }
+    };
   },
   methods: {
     /**
@@ -119,23 +78,8 @@
      * 妫�鏌ユ墍閫夎寖鍥村唴鍚勯」璇勪及鏁版嵁婧愭槸鍚﹀畬鏁�
      */
     preCheck() {
-      const param = {
-        locations: this.formSearch.locations,
-        scenetype: this.formSearch.scenetype,
-        time: dayjs(this.formSearch.time).format('YYYY-MM-DD')
-      }
-      this.$emit('preCheck', param)
-    },
-
-    /**
-     * 蹇�熻缃潯浠�
-     */
-    quickSet(set) {
-      this.formSearch.locations = set.locations
-      this.formSearch.scenetype = set.scenetype
-
-      // this.preCheck()
+      // this.$emit('preCheck', param)
     }
   }
-}
+};
 </script>
diff --git a/src/views/fytz/user/UserInfo.vue b/src/views/fytz/user/UserInfo.vue
index 27d814e..2d9bcd2 100644
--- a/src/views/fytz/user/UserInfo.vue
+++ b/src/views/fytz/user/UserInfo.vue
@@ -52,7 +52,7 @@
         </template>
       </el-table-column>
       <el-table-column prop="userInfo.usertype" label="鐢ㄦ埛绫诲瀷" width="90" />
-      <el-table-column fixed="right" align="right" label="鎿嶄綔" width="140">
+      <el-table-column fixed="right" align="right" label="鎿嶄綔" width="160">
         <template #header>
           <el-button
             icon="DocumentAdd"
@@ -70,13 +70,13 @@
             @click="editRow(scope)"
             >鏌ョ湅</el-button
           >
-          <!-- <el-button
+          <el-button
             :loading="scope.row.loading2"
-            :type="scope.row.extension1 != '0' ? 'danger' : 'primary'"
+            :type="scope.row.userInfo.isenable != '0' ? 'danger' : 'primary'"
             size="small"
             @click="itemActive(scope)"
-            >{{ scope.row.extension1 != '0' ? '涓嬬嚎' : '涓婄嚎' }}</el-button
-          > -->
+            >{{ scope.row.userInfo.isenable != '0' ? '涓嬬嚎' : '涓婄嚎' }}</el-button
+          >
         </template>
       </el-table-column>
     </template>
@@ -147,24 +147,25 @@
     },
     editRow(scope) {
       scope.row.loading1 = true;
-      this.loadingStore.loadingStatus.push(() => (scope.row.loading1 = false));
-      this.$router.push(`userEdit/${scope.row.biGuid}`);
+      this.loadingStore.pushLoading(() => (scope.row.loading1 = false));
+      this.$router.push(`userEdit/${scope.row.userInfo.guid}`);
     },
     itemActive(scope) {
-      const rb = {};
-      rb.guid = scope.row.guid;
-      rb.extension1 = scope.row.extension1 != '0' ? '0' : '1';
-      const msg = scope.row.extension1 != '0' ? '涓嬬嚎' : '涓婄嚎';
+      const param = {
+        guid: scope.row.userInfo.guid,
+        isenable: !scope.row.userInfo.isenable
+      }
+      const msg = scope.row.userInfo.isenable ? '涓嬬嚎' : '涓婄嚎';
       useMessageBoxTip({
         confirmMsg: `纭${msg}璇ュ満鏅紵`,
         confirmTitle: msg,
         onConfirm: () => {
           scope.row.loading2 = true;
           return userApi
-            .updateScene(rb)
+            .updateUserInfo(param)
             .then((res) => {
-              if (res == 1) {
-                scope.row.extension1 = rb.extension1;
+              if (res.success) {
+                scope.row.userInfo.isenable = param.isenable;
               }
             })
             .finally(() => {
diff --git a/src/views/fytz/user/components/CompUserInfo.vue b/src/views/fytz/user/components/CompUserInfo.vue
index e8be54c..1270998 100644
--- a/src/views/fytz/user/components/CompUserInfo.vue
+++ b/src/views/fytz/user/components/CompUserInfo.vue
@@ -33,9 +33,7 @@
         </el-col>
         <el-col :span="6" v-if="!create">
           <el-row justify="end">
-            <el-button type="danger" @click="onResetPw" :loading="pwLoading"
-              >閲嶇疆瀵嗙爜</el-button
-            >
+            <el-button type="danger" @click="onResetPw" :loading="pwLoading">閲嶇疆瀵嗙爜</el-button>
           </el-row>
         </el-col>
       </el-form-item>
@@ -54,20 +52,13 @@
       </el-form-item> -->
       <el-form-item label="鏄惁鍙敤" prop="isenable">
         <el-switch v-model="formObj.isenable" />
-        <span style="margin-left: 16px">{{
-          formObj.isenable ? '鍙敤' : '涓嶅彲鐢�'
-        }}</span>
+        <span style="margin-left: 16px">{{ formObj.isenable ? '鍙敤' : '涓嶅彲鐢�' }}</span>
       </el-form-item>
       <el-form-item label="宸ュ彿" prop="workno">
         <el-input clearable v-model="formObj.workno" placeholder="宸ュ彿" />
       </el-form-item>
       <el-form-item label="鎵嬫満" prop="telephone">
-        <el-input
-          clearable
-          type="tel"
-          v-model="formObj.telephone"
-          placeholder="鎵嬫満"
-        />
+        <el-input clearable type="tel" v-model="formObj.telephone" placeholder="鎵嬫満" />
       </el-form-item>
       <!-- <el-form-item label="鐪�/甯�/鍖�/闀�" prop="_locations">
         <el-cascader
@@ -94,6 +85,7 @@
 import { getSceneName } from '@/enum/scene';
 import { enumLocation } from '@/enum/location';
 import userApi from '@/api/fytz/userApi';
+import { useMessageBoxTip } from '@/composables/messageBox';
 
 const props = defineProps({
   //鍩烘湰淇℃伅
@@ -101,36 +93,37 @@
   isEdit: Boolean,
   create: {
     type: Boolean,
-    default: false,
+    default: false
   },
   active: {
     type: Boolean,
-    default: false,
-  },
+    default: false
+  }
 });
 
 const emit = defineEmits(['onSubmit', 'onCancel', 'update:isEdit']);
 
 const _formInfo = ref();
+const _formObject = { value: {} };
 const _edit = ref(false);
 const locations = enumLocation(false);
 const locationsProps = reactive({
-  checkStrictly: true,
+  checkStrictly: true
 });
 const rules = reactive({
   acountname: [
     {
       required: true,
       message: '璐︽埛鍚嶄笉鑳戒负绌�',
-      trigger: 'blur',
-    },
+      trigger: 'blur'
+    }
   ],
   realname: [
     {
       required: true,
       message: '鐢ㄦ埛鏄电О涓嶈兘涓虹┖',
-      trigger: 'blur',
-    },
+      trigger: 'blur'
+    }
   ],
   // password: [
   //   {
@@ -143,30 +136,30 @@
     {
       required: true,
       message: '鐢ㄦ埛绫诲瀷涓嶈兘涓虹┖',
-      trigger: 'change',
-    },
+      trigger: 'change'
+    }
   ],
   _locations: [
     {
       required: props.create,
       message: '鐪�/甯�/鍖�/闀囦笉鑳戒负绌�',
-      trigger: 'change',
-    },
+      trigger: 'change'
+    }
   ],
   _scenetype: [
     {
       required: true,
       message: '鍦烘櫙绫诲瀷涓嶈兘涓虹┖',
-      trigger: 'change',
-    },
-  ],
+      trigger: 'change'
+    }
+  ]
 });
 
 // 鐢ㄦ埛鍩烘湰淇℃伅鏍煎紡鍖�
 function parseUserInfo(s) {
   s._usertype = {
     label: s.usertype,
-    value: s.usertypeid + '',
+    value: s.usertypeid + ''
   };
 
   s._scenetype = getSceneName(s.extension2, 1);
@@ -176,6 +169,19 @@
   return s;
 }
 
+function parseUserInfoReverse(formObj) {
+  // 鐢ㄦ埛绫诲瀷淇℃伅濉厖
+  const b = formObj.value._usertype;
+  formObj.value.usertypeid = b.value;
+  formObj.value.usertype = b.label;
+
+  // 鍦烘櫙绫诲瀷淇℃伅濉厖
+  const c = formObj.value._scenetype;
+  formObj.value.extension2 = c.value;
+
+  return formObj;
+}
+
 function createUser(formObj, func) {
   return userApi
     .createUser(formObj.value)
@@ -183,6 +189,7 @@
       emit('onSubmit', formObj);
     })
     .finally(() => {
+      _formObject.value = formObj.value;
       func();
     });
 }
@@ -194,38 +201,32 @@
       emit('onSubmit', formObj);
     })
     .finally(() => {
-      func();
+      _formObject.value = formObj.value;
+      if (func) func();
     });
 }
 
 function submit(formObj, func) {
   // 琛屾斂鍖哄垝淇℃伅濉厖
-  const a = formObj.value._locations;
-  if (a[0]) {
-    formObj.value.provincecode = a[0][0];
-    formObj.value.provincename = a[0][1];
-  }
-  if (a[1]) {
-    formObj.value.citycode = a[1][0];
-    formObj.value.cityname = a[1][1];
-  }
-  if (a[2]) {
-    formObj.value.districtcode = a[2][0];
-    formObj.value.extension1 = a[2][1];
-  }
-  if (a[3]) {
-    formObj.value.towncode = a[3][0];
-    formObj.value.townname = a[3][1];
-  }
+  // const a = formObj.value._locations;
+  // if (a[0]) {
+  //   formObj.value.provincecode = a[0][0];
+  //   formObj.value.provincename = a[0][1];
+  // }
+  // if (a[1]) {
+  //   formObj.value.citycode = a[1][0];
+  //   formObj.value.cityname = a[1][1];
+  // }
+  // if (a[2]) {
+  //   formObj.value.districtcode = a[2][0];
+  //   formObj.value.extension1 = a[2][1];
+  // }
+  // if (a[3]) {
+  //   formObj.value.towncode = a[3][0];
+  //   formObj.value.townname = a[3][1];
+  // }
 
-  // 鐢ㄦ埛绫诲瀷淇℃伅濉厖
-  const b = formObj.value._usertype;
-  formObj.value.usertypeid = b.value;
-  formObj.value.usertype = b.label;
-
-  // 鍦烘櫙绫诲瀷淇℃伅濉厖
-  const c = formObj.value._scenetype;
-  formObj.value.extension2 = c.value;
+  parseUserInfoReverse(formObj);
 
   return props.create ? createUser(formObj, func) : updateUser(formObj, func);
 }
@@ -238,6 +239,7 @@
   () => props.formInfo,
   (nValue) => {
     _formInfo.value = parseUserInfo(nValue);
+    _formObject.value = _formInfo.value;
   }
 );
 
@@ -245,5 +247,21 @@
   emit('update:isEdit', nValue);
 });
 
+
+// 閲嶇疆瀵嗙爜
+
 const pwLoading = ref(false);
+
+function onResetPw() {
+  useMessageBoxTip({
+    confirmMsg: '鏄惁閲嶇疆璇ュ満鏅瘑鐮侊紵',
+    confirmTitle: '閲嶇疆瀵嗙爜',
+    onConfirm: async () => {
+      pwLoading.value = true
+      _formObject.value.password = '123456';
+      await updateUser(_formObject);
+      pwLoading.value = false
+    }
+  });
+}
 </script>

--
Gitblit v1.9.3