| | |
| | | :form-info="_formInfo" |
| | | :rules="rules" |
| | | :reset="active" |
| | | :useCancel="create" |
| | | :useReset="!create" |
| | | :clearAftSubmit="create" |
| | | v-model:is-edit="_edit" |
| | | @submit="submit" |
| | | @cancel="cancel" |
| | |
| | | </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> |
| | | <FYOptionUserType |
| | | prop="_usertype" |
| | | :allOption="false" |
| | | :initValue="false" |
| | | v-model:value="formObj._usertype" |
| | |
| | | </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 |
| | | v-model="formObj._locations" |
| | | :options="locations" |
| | | placeholder="省/市/区/镇" |
| | | :props="locationsProps" |
| | | style="width: 280px" |
| | | :disabled="!create" |
| | | /> |
| | | </el-form-item> --> |
| | | <FYOptionLocation |
| | | v-if="create" |
| | | prop="_locations" |
| | | :allOption="false" |
| | | :level="4" |
| | | :checkStrictly="false" |
| | | :initValue="false" |
| | | v-model:value="formObj._locations" |
| | | ></FYOptionLocation> |
| | | <FYOptionScene |
| | | prop="_scenetype" |
| | | :allOption="false" |
| | | :type="1" |
| | | :initValue="false" |
| | |
| | | <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({ |
| | | //基本信息 |
| | |
| | | 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 _formInfo = ref({ isenable: true }); |
| | | const _edit = ref(false); |
| | | const locations = enumLocation(false); |
| | | const locationsProps = reactive({ |
| | | checkStrictly: true, |
| | | }); |
| | | const rules = reactive({ |
| | | acountname: [ |
| | | { |
| | | required: true, |
| | | message: '账户名不能为空', |
| | | trigger: 'blur', |
| | | }, |
| | | trigger: 'blur' |
| | | } |
| | | ], |
| | | realname: [ |
| | | { |
| | | required: true, |
| | | message: '用户昵称不能为空', |
| | | trigger: 'blur', |
| | | }, |
| | | trigger: 'blur' |
| | | } |
| | | ], |
| | | // password: [ |
| | | // { |
| | |
| | | { |
| | | 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); |
| | |
| | | return s; |
| | | } |
| | | |
| | | function createUser(formObj, func) { |
| | | return userApi |
| | | .createUser(formObj.value) |
| | | .then(() => { |
| | | emit('onSubmit', formObj); |
| | | }) |
| | | .finally(() => { |
| | | func(); |
| | | }); |
| | | } |
| | | |
| | | function updateUser(formObj, func) { |
| | | return userApi |
| | | .updateUserInfo(formObj.value) |
| | | .then(() => { |
| | | emit('onSubmit', formObj); |
| | | }) |
| | | .finally(() => { |
| | | func(); |
| | | }); |
| | | } |
| | | |
| | | function submit(formObj, func) { |
| | | function parseUserInfoReverse(formObj) { |
| | | // 行政区划信息填充 |
| | | 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]; |
| | | } |
| | | |
| | | formObj.value.provincecode = a.pCode; |
| | | formObj.value.provincename = a.pName; |
| | | formObj.value.citycode = a.cCode; |
| | | formObj.value.cityname = a.cName; |
| | | formObj.value.districtcode = a.dCode; |
| | | formObj.value.extension1 = a.dName; |
| | | formObj.value.towncode = a.tCode; |
| | | formObj.value.townname = a.tName; |
| | | // 用户类型信息填充 |
| | | const b = formObj.value._usertype; |
| | | formObj.value.usertypeid = b.value; |
| | |
| | | const c = formObj.value._scenetype; |
| | | formObj.value.extension2 = c.value; |
| | | |
| | | return props.create ? createUser(formObj, func) : updateUser(formObj, func); |
| | | return formObj; |
| | | } |
| | | |
| | | function createUser(formObj, success, fail) { |
| | | const params = { |
| | | userInfo: formObj.value, |
| | | baseInfo: { |
| | | biProvinceCode: formObj.value.provincecode, |
| | | biProvinceName: formObj.value.provincename, |
| | | biCityCode: formObj.value.citycode, |
| | | biCityName: formObj.value.cityname, |
| | | biDistrictCode: formObj.value.districtcode, |
| | | biDistrictName: formObj.value.extension1, |
| | | biTownCode: formObj.value.towncode, |
| | | biTownName: formObj.value.townname |
| | | // biAreaCode |
| | | // biArea |
| | | // biManagementCompanyId |
| | | // biManagementCompany |
| | | // biContact |
| | | // biTelephone |
| | | // biAddress |
| | | } |
| | | }; |
| | | return userApi |
| | | .createUser(params) |
| | | .then(() => { |
| | | emit('onSubmit', params); |
| | | success(); |
| | | }) |
| | | .catch((err) => { |
| | | fail(err); |
| | | }); |
| | | } |
| | | |
| | | function updateUser(formObj, success, fail) { |
| | | return userApi |
| | | .updateUserInfo(formObj.value) |
| | | .then(() => { |
| | | emit('onSubmit', formObj); |
| | | if (success) success(); |
| | | }) |
| | | .catch((err) => { |
| | | if (fail) fail(err); |
| | | }); |
| | | } |
| | | |
| | | function submit(formObj, success, fail) { |
| | | parseUserInfoReverse(formObj); |
| | | |
| | | return props.create ? createUser(formObj, success, fail) : updateUser(formObj, success, fail); |
| | | } |
| | | |
| | | function cancel() { |
| | |
| | | } |
| | | ); |
| | | |
| | | // watch( |
| | | // () => props.create, |
| | | // (nValue) => { |
| | | // if (nValue) { |
| | | |
| | | // } |
| | | // }, |
| | | // {immediate:true} |
| | | // ); |
| | | |
| | | watch(_edit, (nValue) => { |
| | | emit('update:isEdit', nValue); |
| | | }); |
| | | |
| | | // 重置密码 |
| | | |
| | | const pwLoading = ref(false); |
| | | |
| | | function onResetPw() { |
| | | useMessageBoxTip({ |
| | | confirmMsg: '是否重置该场景密码?', |
| | | confirmTitle: '重置密码', |
| | | onConfirm: async () => { |
| | | pwLoading.value = true; |
| | | return userApi.resetPassword(props.formInfo.guid).finally(() => { |
| | | pwLoading.value = false; |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | </script> |