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