<template>
|
<FYForm
|
:form-info="_formInfo"
|
:rules="rules"
|
:reset="active"
|
v-model:is-edit="_edit"
|
@submit="submit"
|
@cancel="cancel"
|
>
|
<template #form-item="{ formObj }">
|
<!-- <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-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-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 { getSceneName } from '@/enum/scene';
|
import { enumLocation } from '@/enum/location';
|
import userApi from '@/api/fytz/userApi';
|
import { useMessageBoxTip } from '@/composables/messageBox';
|
|
const props = defineProps({
|
//基本信息
|
formInfo: Object,
|
isEdit: Boolean,
|
create: {
|
type: Boolean,
|
default: false
|
},
|
active: {
|
type: Boolean,
|
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
|
});
|
const rules = reactive({
|
acountname: [
|
{
|
required: true,
|
message: '账户名不能为空',
|
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'
|
}
|
]
|
});
|
|
// 用户基本信息格式化
|
function parseUserInfo(s) {
|
s._usertype = {
|
label: s.usertype,
|
value: s.usertypeid + ''
|
};
|
|
s._scenetype = getSceneName(s.extension2, 1);
|
|
s._locations = [];
|
|
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)
|
.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() {
|
emit('onCancel');
|
}
|
|
watch(
|
() => props.formInfo,
|
(nValue) => {
|
_formInfo.value = parseUserInfo(nValue);
|
_formObject.value = _formInfo.value;
|
}
|
);
|
|
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>
|