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. 新增评估任务界面;

---
 src/views/fytz/user/components/CompUserInfo.vue |  390 +++++++++++++++++++++++++------------------------------
 1 files changed, 176 insertions(+), 214 deletions(-)

diff --git a/src/views/fytz/user/components/CompUserInfo.vue b/src/views/fytz/user/components/CompUserInfo.vue
index 3e48095..1270998 100644
--- a/src/views/fytz/user/components/CompUserInfo.vue
+++ b/src/views/fytz/user/components/CompUserInfo.vue
@@ -1,121 +1,91 @@
 <template>
-  <el-form
-    :inline="false"
-    :model="formObj"
-    ref="formRef"
+  <FYForm
+    :form-info="_formInfo"
     :rules="rules"
-    label-position="right"
-    label-width="150px"
+    :reset="active"
+    v-model:is-edit="_edit"
+    @submit="submit"
+    @cancel="cancel"
   >
-    <!-- <el-form-item label="id" prop="GUID">
-      <el-input clearable v-model="formObj.GUID" placeholder="id" />
-    </el-form-item> -->
-    <!-- <el-form-item label="澶村儚url" prop="HeadIconUrl">
-      <el-input clearable v-model="formObj.HeadIconUrl" placeholder="澶村儚url" />
-    </el-form-item> -->
-    <el-form-item label="璐︽埛鍚�" prop="acountname">
-      <el-input clearable v-model="formObj.acountname" placeholder="璐︽埛鍚�" />
-    </el-form-item>
-    <el-form-item label="鐢ㄦ埛鏄电О" prop="realname">
-      <el-input clearable v-model="formObj.realname" placeholder="鐢ㄦ埛鏄电О" />
-    </el-form-item>
-    <el-form-item label="瀵嗙爜" prop="password">
-      <el-input
-        clearable
-        type="password"
-        v-model="formObj.password"
-        placeholder="榛樿瀵嗙爜123456"
-      />
-    </el-form-item>
-    <!-- <el-form-item label="鐢ㄦ埛绫诲瀷id" prop="UserTypeID">
-      <el-input
-        clearable
-        v-model="formObj.UserTypeID"
-        placeholder="鐢ㄦ埛绫诲瀷id"
-      />
-    </el-form-item> -->
-    <el-form-item label="鐢ㄦ埛绫诲瀷" prop="_usertype">
-      <el-select v-model="formObj._usertype" placeholder="鐢ㄦ埛绫诲瀷">
-        <el-option
-          v-for="s in userTypes"
-          :key="s.value"
-          :label="s.label"
-          :value="s"
+    <template #form-item="{ formObj }">
+      <!-- <el-form-item label="澶村儚url" prop="HeadIconUrl">
+        <el-input
+          clearable
+          v-model="formObj.HeadIconUrl"
+          placeholder="澶村儚url"
         />
-      </el-select>
-    </el-form-item>
-    <el-form-item label="鎵�灞炰紒涓�" prop="departmentname">
-      <el-input
-        clearable
-        v-model="formObj.departmentname"
-        placeholder="鎵�灞炰紒涓�"
-        disabled
-      />
-    </el-form-item>
-    <el-form-item label="鏄惁鍙敤" prop="isenable">
-      <el-switch v-model="formObj.isenable" />
-      <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-form-item>
-    <!-- <el-form-item label="寰俊id" prop="WechatID">
-      <el-input clearable v-model="formObj.WechatID" placeholder="寰俊id" />
-    </el-form-item> -->
-    <el-form-item label="鐪�/甯�/鍖�/闀�" prop="_locations">
-      <el-cascader
-        v-model="formObj._locations"
-        :options="locations"
-        placeholder="鐪�/甯�/鍖�/闀�"
-        :props="locationsProps"
-        style="width: 280px"
-        :disabled="!create"
-      />
-    </el-form-item>
-    <el-form-item label="鍦烘櫙绫诲瀷" prop="_scenetype">
-      <el-select
-        v-model="formObj._scenetype"
-        placeholder="鍦烘櫙绫诲瀷"
-      >
-        <el-option
-          v-for="s in sceneTypes"
-          :key="s.value"
-          :label="s.label"
-          :value="s"
+      </el-form-item> -->
+      <el-form-item label="璐︽埛鍚�" prop="acountname">
+        <el-input clearable v-model="formObj.acountname" placeholder="璐︽埛鍚�" />
+      </el-form-item>
+      <el-form-item label="鐢ㄦ埛鏄电О" prop="realname">
+        <el-input clearable v-model="formObj.realname" placeholder="鐢ㄦ埛鏄电О" />
+      </el-form-item>
+      <el-form-item label="瀵嗙爜" prop="password">
+        <el-col :span="18">
+          <el-input
+            :disabled="true"
+            clearable
+            type="password"
+            v-model="formObj.password"
+            placeholder="榛樿瀵嗙爜123456"
+          />
+        </el-col>
+        <el-col :span="6" v-if="!create">
+          <el-row justify="end">
+            <el-button type="danger" @click="onResetPw" :loading="pwLoading">閲嶇疆瀵嗙爜</el-button>
+          </el-row>
+        </el-col>
+      </el-form-item>
+      <FYOptionUserType
+        :allOption="false"
+        :initValue="false"
+        v-model:value="formObj._usertype"
+      ></FYOptionUserType>
+      <!-- <el-form-item label="鎵�灞炰紒涓�" prop="departmentname">
+        <el-input
+          clearable
+          v-model="formObj.departmentname"
+          placeholder="鎵�灞炰紒涓�"
+          disabled
         />
-      </el-select>
-    </el-form-item>
-    <el-form-item>
-      <el-button
-        :disabled="!edit"
-        type="primary"
-        @click="onSubmit"
-        :loading="loading"
-        >鎻愪氦</el-button
-      >
-      <el-button :disabled="!edit" @click="onReset">閲嶇疆</el-button>
-    </el-form-item>
-  </el-form>
+      </el-form-item> -->
+      <el-form-item label="鏄惁鍙敤" prop="isenable">
+        <el-switch v-model="formObj.isenable" />
+        <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-form-item>
+      <!-- <el-form-item label="鐪�/甯�/鍖�/闀�" prop="_locations">
+        <el-cascader
+          v-model="formObj._locations"
+          :options="locations"
+          placeholder="鐪�/甯�/鍖�/闀�"
+          :props="locationsProps"
+          style="width: 280px"
+          :disabled="!create"
+        />
+      </el-form-item> -->
+      <FYOptionScene
+        :allOption="false"
+        :type="1"
+        :initValue="false"
+        v-model:value="formObj._scenetype"
+      ></FYOptionScene>
+    </template>
+  </FYForm>
 </template>
 
 <script setup>
 import { defineProps, defineEmits, reactive, ref, watch } from 'vue';
-import { useFormConfirm } from '@/composables/formConfirm';
-import { enumUserNA } from '@/enum/user';
-import { enumScene, getSceneName } from '@/enum/scene';
+import { getSceneName } from '@/enum/scene';
 import { enumLocation } from '@/enum/location';
 import userApi from '@/api/fytz/userApi';
+import { useMessageBoxTip } from '@/composables/messageBox';
 
 const props = defineProps({
   //鍩烘湰淇℃伅
@@ -123,150 +93,83 @@
   isEdit: Boolean,
   create: {
     type: Boolean,
-    default: false,
+    default: false
   },
   active: {
     type: Boolean,
-    default: false,
-  },
+    default: false
+  }
 });
 
 const emit = defineEmits(['onSubmit', 'onCancel', 'update:isEdit']);
 
-const { formObj, formRef, edit, onSubmit, onReset } = useFormConfirm({
-  defaultForm: {
-    isenable: true,
-  },
-  submit: {
-    do: submit,
-  },
-  cancel: {
-    do: cancel,
-  },
-});
-
-const userTypes = reactive(enumUserNA());
-const sceneTypes = reactive(enumScene(1, false));
+const _formInfo = ref();
+const _formObject = { value: {} };
+const _edit = ref(false);
 const locations = enumLocation(false);
 const locationsProps = reactive({
-  checkStrictly: true,
+  checkStrictly: true
 });
-const loading = ref(false);
-
 const rules = reactive({
   acountname: [
     {
       required: true,
       message: '璐︽埛鍚嶄笉鑳戒负绌�',
-      trigger: 'blur',
-    },
+      trigger: 'blur'
+    }
   ],
   realname: [
     {
       required: true,
       message: '鐢ㄦ埛鏄电О涓嶈兘涓虹┖',
-      trigger: 'blur',
-    },
+      trigger: 'blur'
+    }
   ],
-  password: [
-    {
-      required: props.create,
-      message: '瀵嗙爜涓嶈兘涓虹┖',
-      trigger: 'blur',
-    },
-  ],
+  // password: [
+  //   {
+  //     required: props.create,
+  //     message: '瀵嗙爜涓嶈兘涓虹┖',
+  //     trigger: 'blur',
+  //   },
+  // ],
   _usertype: [
     {
       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 = {
-    label: getSceneName(s.extension2, 1),
-    value: s.extension2,
-  };
+  s._scenetype = getSceneName(s.extension2, 1);
 
   s._locations = [];
-  // if (s.provincecode && s.provincecode.length > 0)
-  //   s._locations.push([s.provincecode, s.provincename]);
-  // if (s.citycode && s.citycode.length > 0)
-  //   s._locations.push([s.citycode, s.cityname]);
-  // if (s.districtcode && s.districtcode.length > 0)
-  //   s._locations.push([s.districtcode, s.districtname]);
-  // if (s.towncode && s.towncode.length > 0)
-  //   s._locations.push([s.towncode, s.townname]);
 
   return s;
 }
 
-function createUser() {
-  loading.value = true;
-  return userApi
-    .createUser(formObj.value)
-    .then(() => {
-      emit('onSubmit', formObj);
-    })
-    .finally(() => {
-      loading.value = false;
-    });
-}
-
-function updateUser() {
-  loading.value = true;
-  return userApi
-    .updateUserInfo(formObj.value)
-    .then(() => {
-      emit('onSubmit', formObj);
-    })
-    .finally(() => {
-      loading.value = false;
-    });
-}
-
-function submit() {
-  // 琛屾斂鍖哄垝淇℃伅濉厖
-  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];
-  }
-
+function parseUserInfoReverse(formObj) {
   // 鐢ㄦ埛绫诲瀷淇℃伅濉厖
   const b = formObj.value._usertype;
   formObj.value.usertypeid = b.value;
@@ -276,7 +179,56 @@
   const c = formObj.value._scenetype;
   formObj.value.extension2 = c.value;
 
-  return props.create ? createUser() : updateUser();
+  return formObj;
+}
+
+function createUser(formObj, func) {
+  return userApi
+    .createUser(formObj.value)
+    .then(() => {
+      emit('onSubmit', formObj);
+    })
+    .finally(() => {
+      _formObject.value = formObj.value;
+      func();
+    });
+}
+
+function updateUser(formObj, func) {
+  return userApi
+    .updateUserInfo(formObj.value)
+    .then(() => {
+      emit('onSubmit', formObj);
+    })
+    .finally(() => {
+      _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];
+  // }
+
+  parseUserInfoReverse(formObj);
+
+  return props.create ? createUser(formObj, func) : updateUser(formObj, func);
 }
 
 function cancel() {
@@ -286,20 +238,30 @@
 watch(
   () => props.formInfo,
   (nValue) => {
-    formObj.value = parseUserInfo(nValue);
+    _formInfo.value = parseUserInfo(nValue);
+    _formObject.value = _formInfo.value;
   }
 );
 
-watch(
-  () => props.active,
-  (nValue) => {
-    if (!nValue) {
-      onReset();
-    }
-  }
-);
-
-watch(edit, (nValue) => {
+watch(_edit, (nValue) => {
   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