This commit is contained in:
77
2024-04-20 21:04:25 +08:00
parent 30c315b10d
commit d8e131f7ab

View File

@@ -0,0 +1,300 @@
<template>
<el-dialog title="新增用户" :close-on-click-modal="false" :visible.sync="open" width="800px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-col :span="12">
<el-form-item label="用户类型" prop="userType">
<el-select v-model="form.userType" clearable size="small" style="width: 95%">
<el-option
v-for="dict in appUserTypeList"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="手机号" prop="mobile">
<el-input v-model="form.mobile" maxlength="11" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="昵称" prop="nickname">
<el-input v-model="form.nickname" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="头像" prop="avatar">
<image-upload2 v-model="form.avatar"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="性别" prop="gender">
<el-select v-model="form.gender" clearable size="small" style="width: 95%">
<el-option
v-for="dict in genderList"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="生日" prop="birthday" style="width: 95%">
<el-date-picker
v-model="form.birthday"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="身高(cm)" prop="height">
<el-input-number v-model="form.height" controls-position="right" :min="100" style="width: 95%"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="体重(kg)" prop="weight">
<el-input-number v-model="form.weight" controls-position="right" :min="30" style="width: 95%"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="居住地" prop="residenceCode">
<treeselect v-model="form.residenceCode" :normalizer="normalizer" :options="areaOption" :show-count="true" :disable-branch-nodes="true" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="户籍地" prop="addressCode">
<treeselect v-model="form.addressCode" :normalizer="normalizer" :options="areaOption" :show-count="true" :disable-branch-nodes="true" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="学历" prop="education">
<el-select v-model="form.education" clearable size="small" style="width: 95%">
<el-option
v-for="dict in userEducationList"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="婚况" prop="marriage">
<el-select v-model="form.marriage" clearable size="small" style="width: 95%">
<el-option
v-for="dict in userMarriageList"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="职业" prop="profession">
<el-select v-model="form.profession" clearable size="small" style="width: 95%">
<el-option
v-for="dict in professionList"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="年收入" prop="annualIncome">
<el-select v-model="form.annualIncome" clearable size="small" style="width: 95%">
<el-option
v-for="dict in userAnnualIncomeList"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="open = false"> </el-button>
</div>
</el-dialog>
</template>
<script>
import {
appUserTypeList,
booleanList,
finishStatusList,
genderList,
memberTypeList,
onlineStatusList,
professionList,
userAnnualIncomeList,
userCarStatusList,
userChildStatusList,
userCompanyNatureList,
userDrinkStatusList,
userEducationList,
userFamilyBackgroundList,
userFamilyRankingList,
userFindTagList,
userForPersonalsList,
userHousingStatusList,
userLiveAtParentList,
userLoveAtDistanceList,
userMarriageList,
userSignList,
userSmokeStatusList,
userSomatotypeList,
userStatusList,
userWantChildList,
userWhenMarriageList,
userZodiacList,
videoStatusList
} from '@/constant/statusMap'
import Treeselect from '@riophae/vue-treeselect'
import { getTreeAreaCode } from '@/api/xq/areaCode'
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import { addBanner } from '@/api/xq/banner'
import { addUser, getUser, updateUser } from '@/api/xq/user'
export default {
name: "UserInfo",
components: { Treeselect },
data() {
return {
genderList,userStatusList,finishStatusList,userSomatotypeList,userZodiacList,userSignList,
userEducationList,userCompanyNatureList,userAnnualIncomeList,userForPersonalsList,
userHousingStatusList,userCarStatusList,userSmokeStatusList,userMarriageList,
userDrinkStatusList,userChildStatusList,userFamilyBackgroundList,userFamilyRankingList,
userLoveAtDistanceList,userWhenMarriageList,userWantChildList,userLiveAtParentList,
userFindTagList,appUserTypeList,professionList,
videoStatusList,onlineStatusList,memberTypeList,
booleanList,
open:false,
buttonLoading: false,
form:{
annualIncome: undefined,
profession: undefined,
marriage: undefined,
education: undefined,
addressCode: undefined,
residenceCode: undefined,
weight: undefined,
height: undefined,
birthday: undefined,
gender: undefined,
avatar: undefined,
nickname: undefined,
mobile: undefined,
userType: undefined,
},
rules:{
annualIncome: [
{ required: true, message: "数据不能为空", trigger: "blur" }
],
profession: [
{ required: true, message: "数据不能为空", trigger: "blur" }
],
marriage: [
{ required: true, message: "数据不能为空", trigger: "blur" }
],
education: [
{ required: true, message: "数据不能为空", trigger: "blur" }
],
addressCode: [
{ required: true, message: "数据不能为空", trigger: "blur" }
],
residenceCode: [
{ required: true, message: "数据不能为空", trigger: "blur" }
],
weight: [
{ required: true, message: "数据不能为空", trigger: "blur" }
],
height: [
{ required: true, message: "数据不能为空", trigger: "blur" }
],
birthday: [
{ required: true, message: "数据不能为空", trigger: "blur" }
],
gender: [
{ required: true, message: "数据不能为空", trigger: "blur" }
],
avatar: [
{ required: true, message: "数据不能为空", trigger: "blur" }
],
nickname: [
{ required: true, message: "数据不能为空", trigger: "blur" }
],
mobile: [
{ required: true, message: "数据不能为空", trigger: "blur" }
],
userType: [
{ required: true, message: "数据不能为空", trigger: "blur" }
],
},
areaOption: [],
};
},
created() {
getTreeAreaCode().then(response => {
this.areaOption = response.data
})
},
methods: {
normalizer(node){
return {
id: node.id,
label: node.label,
children: node.children && node.children.length > 0 ? node.children : 0,
}
},
options(){
getTreeAreaCode().then(response => {
return response.data
})
},
init(row){
this.form.id = row.id
this.open = true;
this.$nextTick(() => {
this.$refs['form'].resetFields();
getUser(row.id).then(response => {
this.areaOption = response.data
})
})
},
submitForm(){
updateUser(this.form).then(data => {
this.$modal.msgSuccess("新增用户成功");
this.buttonLoading = false;
this.open = false
this.$emit('refreshDataList')
}).finally(() => {
this.buttonLoading = false;
});
}
}
};
</script>