From d4e7c11e06b643c9353444c839cec40c25945219 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期三, 30 十月 2024 17:37:05 +0800
Subject: [PATCH] 1. 场景报告模块编写(暂存)
---
src/views/fytz/user/components/CompUserInfo.vue | 451 ++++++++++++++++++++++++-------------------------------
1 files changed, 198 insertions(+), 253 deletions(-)
diff --git a/src/views/fytz/user/components/CompUserInfo.vue b/src/views/fytz/user/components/CompUserInfo.vue
index 3e48095..aece522 100644
--- a/src/views/fytz/user/components/CompUserInfo.vue
+++ b/src/views/fytz/user/components/CompUserInfo.vue
@@ -1,305 +1,250 @@
<template>
- <el-form
- :inline="false"
- :model="formObj"
- ref="formRef"
+ <FYForm
+ :form-info="formInfo"
:rules="rules"
- label-position="right"
- label-width="150px"
+ :doClear="active"
+ :useCancel="create"
+ :useReset="!create"
+ @update:isEdit="(v) => $emit('updateEdit', v)"
+ @submit="submit"
+ @cancel="$emit('onCancel')"
>
- <!-- <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
+ prop="_usertype"
+ :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>
+ <FYOptionLocation
+ v-if="create"
+ prop="_locations"
+ :allOption="false"
+ :level="5"
+ :checkStrictly="true"
+ :initValue="false"
+ v-model:value="formObj._locations"
+ ></FYOptionLocation>
+ <FYOptionScene
+ prop="_scenetype"
+ :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 { enumLocation } from '@/enum/location';
+import { defineProps, defineEmits, reactive, ref, watch, computed } from 'vue';
+import { getSceneName } from '@/enum/scene';
import userApi from '@/api/fytz/userApi';
+import { useMessageBoxTip } from '@/composables/messageBox';
const props = defineProps({
//鍩烘湰淇℃伅
- formInfo: Object,
- isEdit: Boolean,
+ model: {
+ type: Object
+ // default: () => {
+ // return { isenable: true };
+ // }
+ },
create: {
type: Boolean,
- default: false,
+ default: false
},
active: {
type: Boolean,
- default: false,
- },
+ default: false
+ }
});
-const emit = defineEmits(['onSubmit', 'onCancel', 'update:isEdit']);
+const formInfo = ref({ isenable: true });
-const { formObj, formRef, edit, onSubmit, onReset } = useFormConfirm({
- defaultForm: {
- isenable: true,
- },
- submit: {
- do: submit,
- },
- cancel: {
- do: cancel,
- },
-});
+watch(
+ () => props.model,
+ (nValue) => {
+ formInfo.value = parseUserInfo(nValue);
+ }
+);
-const userTypes = reactive(enumUserNA());
-const sceneTypes = reactive(enumScene(1, false));
-const locations = enumLocation(false);
-const locationsProps = reactive({
- checkStrictly: true,
-});
-const loading = ref(false);
+const emit = defineEmits(['onSubmit', 'onCancel', 'updateEdit']);
const rules = reactive({
acountname: [
{
required: true,
message: '璐︽埛鍚嶄笉鑳戒负绌�',
- trigger: 'blur',
- },
+ trigger: 'blur'
+ }
],
realname: [
{
required: true,
message: '鐢ㄦ埛鏄电О涓嶈兘涓虹┖',
- trigger: 'blur',
- },
- ],
- password: [
- {
- required: props.create,
- message: '瀵嗙爜涓嶈兘涓虹┖',
- trigger: 'blur',
- },
- ],
- _usertype: [
- {
- required: true,
- message: '鐢ㄦ埛绫诲瀷涓嶈兘涓虹┖',
- trigger: 'change',
- },
- ],
- _locations: [
- {
- required: props.create,
- message: '鐪�/甯�/鍖�/闀囦笉鑳戒负绌�',
- trigger: 'change',
- },
- ],
- _scenetype: [
- {
- required: true,
- message: '鍦烘櫙绫诲瀷涓嶈兘涓虹┖',
- trigger: 'change',
- },
- ],
+ trigger: 'blur'
+ }
+ ]
+ // password: [
+ // {
+ // required: props.create,
+ // message: '瀵嗙爜涓嶈兘涓虹┖',
+ // trigger: 'blur',
+ // },
+ // ],
});
// 鐢ㄦ埛鍩烘湰淇℃伅鏍煎紡鍖�
function parseUserInfo(s) {
- s._usertype = {
- label: s.usertype,
- value: s.usertypeid + '',
- };
+ if (s.usertype && s.usertypeid) {
+ s._usertype = {
+ label: s.usertype,
+ value: s.usertypeid + ''
+ };
+ }
- s._scenetype = {
- label: getSceneName(s.extension2, 1),
- value: s.extension2,
- };
+ if (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]);
+ s._locations = {};
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() {
+function parseUserInfoReverse(v) {
// 琛屾斂鍖哄垝淇℃伅濉厖
- 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 = v._locations;
+ v.extension1 = a.dName;
// 鐢ㄦ埛绫诲瀷淇℃伅濉厖
- const b = formObj.value._usertype;
- formObj.value.usertypeid = b.value;
- formObj.value.usertype = b.label;
+ const b = v._usertype;
+ v.usertypeid = b.value;
+ v.usertype = b.label;
// 鍦烘櫙绫诲瀷淇℃伅濉厖
- const c = formObj.value._scenetype;
- formObj.value.extension2 = c.value;
+ const c = v._scenetype;
+ v.extension2 = c.value;
- return props.create ? createUser() : updateUser();
+ return v;
}
-function cancel() {
- emit('onCancel');
-}
-
-watch(
- () => props.formInfo,
- (nValue) => {
- formObj.value = parseUserInfo(nValue);
- }
-);
-
-watch(
- () => props.active,
- (nValue) => {
- if (!nValue) {
- onReset();
+function createUser(v, success, fail) {
+ const l = v._locations;
+ const params = {
+ userInfo: v,
+ baseInfo: {
+ biProvinceCode: l.pCode,
+ biProvinceName: l.pName,
+ biCityCode: l.cCode,
+ biCityName: l.cName,
+ biDistrictCode: l.dCode,
+ biDistrictName: l.dName,
+ biTownCode: l.tCode,
+ biTownName: l.tName,
+ biAreaCode: l.aCode,
+ biArea: l.aName
+ // biManagementCompanyId:
+ // biManagementCompany:
+ // biContact
+ // biTelephone
+ // biAddress
}
- }
-);
+ };
+ return userApi
+ .createUser(params)
+ .then(() => {
+ emit('onSubmit', params);
+ success();
+ })
+ .catch((err) => {
+ fail(err);
+ });
+}
-watch(edit, (nValue) => {
- emit('update:isEdit', nValue);
-});
+function updateUser(v, success, fail) {
+ return userApi
+ .updateUserInfo(v)
+ .then(() => {
+ emit('onSubmit', v);
+ if (success) success();
+ })
+ .catch((err) => {
+ if (fail) fail(err);
+ });
+}
+
+function submit(v, success, fail) {
+ parseUserInfoReverse(v.value);
+
+ return props.create ? createUser(v.value, success, fail) : updateUser(v.value, success, fail);
+ // parseUserInfoReverse(props.formInfo);
+
+ // return props.create
+ // ? createUser(props.formInfo, success, fail)
+ // : updateUser(props.formInfo, success, fail);
+}
+
+// 閲嶇疆瀵嗙爜
+const pwLoading = ref(false);
+
+function onResetPw() {
+ useMessageBoxTip({
+ confirmMsg: '鏄惁閲嶇疆璇ュ満鏅瘑鐮侊紵',
+ confirmTitle: '閲嶇疆瀵嗙爜',
+ onConfirm: async () => {
+ pwLoading.value = true;
+ return userApi.resetPassword(formInfo.value.guid).finally(() => {
+ pwLoading.value = false;
+ });
+ }
+ });
+}
</script>
--
Gitblit v1.9.3