用户创建新增字段

This commit is contained in:
lxz 2024-01-12 11:40:56 +08:00
parent c28169ade9
commit a030a96bda
5 changed files with 184 additions and 54 deletions

View File

@ -1,8 +1,8 @@
NODE_ENV = 'development'
VITE_APP_BASE_URL = ''
# VITE_APP_BASE_URL = 'https://new-worker.lihaink.cn/'
#
# VITE_APP_BASE_URL = 'https://ceshi-worker-task.lihaink.cn'
VITE_APP_BASE_URL = 'https://ceshi-new-wokr.lihaink.cn/'
# VITE_APP_BASE_URL = 'https://preview-worker-task.lihaink.cn'

BIN
dist.zip

Binary file not shown.

View File

@ -9,7 +9,7 @@
<div class="headimg">
<el-upload v-model="formData.avatar" class="avatar-uploader-head" :data="{ cid: 1 }"
:headers="{ Token: userStore.token }" :action="base_url + '/upload/image'" :show-file-list="false"
:on-success="handleAvatarSuccessAvatar">
:on-success="handleAvatarSuccessAvatar" :disabled="mode=='detail'">
<img v-if="formData.avatar" :src="formData.avatar" class="avatar" />
<el-icon v-else class="avatar-uploader-icon">
<Plus />
@ -50,15 +50,15 @@
</el-row>
<el-row>
<el-col :span="11">
<el-form-item label="姓名" prop="nickname">
<el-input v-model="formData.nickname" placeholder="请输入姓名" clearable :style="{ width: '100%' }"></el-input>
<el-form-item label="姓名" prop="nickname" >
<el-input v-model="formData.nickname" :readonly="mode=='detail'" placeholder="请输入姓名" clearable :style="{ width: '100%' }"></el-input>
</el-form-item>
</el-col>
<el-col :span="13">
<el-form-item label="角色" prop="group_id">
<el-select v-model="formData.group_id" placeholder="请选择角色" readonly :style="{ width: '100%' }"
@change="formRef?.clearValidate(['group_id'])">
<el-select v-model="formData.group_id" placeholder="请选择角色" :style="{ width: '100%' }"
@change="formRef?.clearValidate(['group_id'])" :disabled="mode=='detail'">
<el-option v-for="(item, index) in roleList" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
@ -80,13 +80,13 @@
<el-col :span="11">
<el-form-item label="联系电话" prop="account">
<el-input v-model="formData.account" placeholder="请输入联系电话" clearable
<el-input v-model="formData.account" :readonly="mode=='detail'" placeholder="请输入联系电话" clearable
:style="{ width: '100%' }"></el-input>
</el-form-item>
</el-col>
<el-col :span="13">
<el-form-item label="身份证号">
<el-input v-model="formData.id_card" placeholder="请输入身份证号" clearable
<el-input v-model="formData.id_card" :readonly="mode=='detail'" placeholder="请输入身份证号" clearable
:style="{ width: '100%' }"></el-input>
</el-form-item>
</el-col>
@ -96,7 +96,7 @@
<el-row>
<el-col :span="11">
<el-form-item label="押金" >
<el-input v-model="formData.deposit" placeholder="请输入押金" clearable type="number"
<el-input v-model="formData.deposit" :readonly="mode=='detail'" placeholder="请输入押金" clearable type="number"
:style="{ width: '100%' }"></el-input>
</el-form-item>
</el-col>
@ -122,7 +122,7 @@
<el-date-picker format="YYYY/MM/DD" value-format="YYYY-MM-DD" v-model="formData.deposit_date" style="width: 150%" placeholder="请选择押金缴纳时间" clearable></el-date-picker>
<el-date-picker :readonly="mode=='detail'" format="YYYY/MM/DD" value-format="YYYY-MM-DD" v-model="formData.deposit_date" style="width: 150%" placeholder="请选择押金缴纳时间" clearable></el-date-picker>
</el-form-item>
<!-- <el-form-item label="性别">
@ -137,13 +137,13 @@
<el-row>
<el-col :span="12">
<el-form-item label="管理户数" prop="user_information_count" label-width="200px">
<el-input v-model="formData.user_information_count" placeholder="管理户数" clearable type="number"
<el-input v-model="formData.user_information_count" placeholder="管理户数" :readonly="mode=='detail'" clearable type="number"
:style="{ width: '100%' }"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="性别">
<el-select v-model="formData.sex" placeholder="请选择性别" :style="{ width: '100%' }"
<el-select v-model="formData.sex" placeholder="请选择性别" :readonly="mode=='detail'" :style="{ width: '100%' }"
@change="formRef?.clearValidate(['sex'])">
<el-option label="男" :value="1" />
<el-option label="女" :value="2" />
@ -168,26 +168,52 @@
</el-form-item>
</el-col> -->
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="注册用户数" prop="register_num" label-width="200px">
<el-input v-model="formData.register_num" :readonly="mode=='detail'" placeholder="请输入" clearable type="number"
:style="{ width: '100%' }"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="入驻商户数" prop="merchant_num" label-width="100px">
<el-input v-model="formData.merchant_num" placeholder="请输入" clearable :readonly="mode=='detail'" type="number"
:style="{ width: '100%' }"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="交易金额" prop="trade_amount" label-width="200px">
<el-input v-model="formData.trade_amount" placeholder="请输入" :readonly="mode=='detail'" clearable type="number"
:style="{ width: '100%' }"></el-input>
</el-form-item>
</el-col>
<el-col :span="12" v-if="mode=='detail'">
<el-form-item label="邀请码" prop="invite_code" >
<el-input v-model="formData.invite_code" placeholder="请输入" clearable type="number"
:style="{ width: '100%' }"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-form-item label="省" prop="province" label-width="200px">
<el-select v-model="formData.province" placeholder="请选择省" clearable @change="province_change"
:style="{ width: '100%' }">
<el-select v-model="formData.province" placeholder="请选择省" :readonly="mode=='detail'" clearable @change="province_change"
:style="{ width: '100%' }" :disabled="mode=='detail'">
<el-option v-for="(item, index) in datas.provinceOptions" :key="index" :label="item.province_name"
:value="item.province_code"></el-option>
</el-select>
</el-form-item>
<el-form-item label="市" prop="city">
<el-select v-model="formData.city" placeholder="请选择市" clearable @change="city_change"
:style="{ width: '100%' }">
:style="{ width: '100%' }" :disabled="mode=='detail'">
<el-option v-for="(item, index) in datas.cityOptions" :key="index" :label="item.city_name"
:value="item.city_code"></el-option>
</el-select>
</el-form-item>
<el-form-item label="区县" prop="area">
<el-select v-model="formData.area" placeholder="请选择区县" clearable @change="area_change"
:style="{ width: '100%' }">
:style="{ width: '100%' }" :disabled="mode=='detail'">
<el-option v-for="(item, index) in datas.areaOptions" :key="index" :label="item.area_name"
:value="item.area_code"></el-option>
</el-select>
@ -195,21 +221,21 @@
<el-form-item label="乡镇" prop="street">
<el-select v-model="formData.street" placeholder="请选择乡镇" clearable @change="street_change"
:style="{ width: '100%' }">
:style="{ width: '100%' }" :disabled="mode=='detail'">
<el-option v-for="(item, index) in datas.streetOptions" :key="index" :label="item.street_name"
:value="item.street_code"></el-option>
</el-select>
</el-form-item>
<el-form-item label="村社" prop="village">
<el-select v-model="formData.village" placeholder="请选择村社" clearable @change="village_change"
:style="{ width: '100%' }">
:style="{ width: '100%' }" :disabled="mode=='detail'">
<el-option v-for="(item, index) in datas.villageOptions" :key="index" :label="item.village_name"
:value="item.village_code"></el-option>
</el-select>
</el-form-item>
<el-form-item label="小队" prop="brigade" label-width="200px">
<el-select v-model="formData.brigade" placeholder="请选择小队" clearable
:style="{ width: '100%' }" @change="brigadeChange">
:style="{ width: '100%' }" @change="brigadeChange" :disabled="mode=='detail'">
<el-option v-for="(item, index) in datas.brigadeOptions" :key="index" :label="item.brigade_name"
:value="item.id"></el-option>
</el-select>
@ -224,7 +250,7 @@
<el-form-item label="身份证">
<el-upload v-model="formData.qualification.id_card" class="pl-3 avatar-uploader" :data="{ cid: 1 }"
:headers="{ Token: userStore.token }" :action="base_url + '/upload/image'" :show-file-list="false"
:on-success="handleAvatarSuccessIdA">
:on-success="handleAvatarSuccessIdA" :disabled="mode=='detail'">
<img v-if="formData.qualification.id_card" :src="formData.qualification.id_card" class="avatar" />
<el-icon v-else class="avatar-uploader-icon">
<Plus />
@ -232,7 +258,7 @@
</el-upload>
<el-upload v-model="formData.qualification.id_card_b" class="pl-3 avatar-uploader" :data="{ cid: 1 }"
:headers="{ Token: userStore.token }" :action="base_url + '/upload/image'" :show-file-list="false"
:on-success="handleAvatarSuccessIdB">
:on-success="handleAvatarSuccessIdB" :disabled="mode=='detail'">
<img v-if="formData.qualification.id_card_b" :src="formData.qualification.id_card_b" class="avatar" />
<el-icon v-else class="avatar-uploader-icon">
<Plus />
@ -244,7 +270,7 @@
<el-form-item label="银行卡">
<el-upload v-model="formData.qualification.bank_account" class="pl-3 avatar-uploader" :data="{ cid: 1 }"
:headers="{ Token: userStore.token }" :action="base_url + '/upload/image'" :show-file-list="false"
:on-success="handleAvatarSuccessBankA" :before-upload="beforeAvatarUpload_three">
:on-success="handleAvatarSuccessBankA" :before-upload="beforeAvatarUpload_three" :disabled="mode=='detail'">
<img v-if="formData.qualification.bank_account" :src="formData.qualification.bank_account"
class="avatar" />
<el-icon v-else class="avatar-uploader-icon">
@ -253,7 +279,7 @@
</el-upload>
<el-upload v-model="formData.qualification.bank_account_b" class="pl-3 avatar-uploader" :data="{ cid: 1 }"
:headers="{ Token: userStore.token }" :action="base_url + '/upload/image'" :show-file-list="false"
:on-success="handleAvatarSuccessBankB" :before-upload="beforeAvatarUpload_three">
:on-success="handleAvatarSuccessBankB" :before-upload="beforeAvatarUpload_three" :disabled="mode=='detail'">
<img v-if="formData.qualification.bank_account_b" :src="formData.qualification.bank_account_b"
class="avatar" />
<el-icon v-else class="avatar-uploader-icon">
@ -267,7 +293,7 @@
<el-form-item label="行驶证" prop="car_card">
<el-upload v-model="formData.qualification.car_card" class="pl-3 avatar-uploader" :data="{ cid: 1 }"
:headers="{ Token: userStore.token }" :action="base_url + '/upload/image'" :show-file-list="false"
:on-success="handleAvatarSuccessCarA">
:on-success="handleAvatarSuccessCarA" :disabled="mode=='detail'">
<img v-if="formData.qualification.car_card" :src="formData.qualification.car_card" class="avatar" />
<el-icon v-else class="avatar-uploader-icon">
<Plus />
@ -275,7 +301,7 @@
</el-upload>
<el-upload v-model="formData.qualification.car_card_b" class="pl-3 avatar-uploader" :data="{ cid: 1 }"
:headers="{ Token: userStore.token }" :action="base_url + '/upload/image'" :show-file-list="false"
:on-success="handleAvatarSuccessCarB" :before-upload="beforeAvatarUpload_two">
:on-success="handleAvatarSuccessCarB" :before-upload="beforeAvatarUpload_two" :disabled="mode=='detail'">
<img v-if="formData.qualification.car_card_b" :src="formData.qualification.car_card_b" class="avatar" />
<el-icon v-else class="avatar-uploader-icon">
<Plus />
@ -284,6 +310,8 @@
</el-form-item>
</div>
</div>
<el-button v-if="mode=='edit'" type="primary" @click="submit">修改</el-button>
</el-form>
</el-card>
<!-- <el-dialog v-model="showCompany">
@ -304,6 +332,7 @@ import {
getUserDetail,
userEdit,
creatContact,
getRolelist,
initiateContact,
upContact,
} from "@/api/consumer";
@ -364,6 +393,26 @@ const formData = reactive({
},
avatar: "",
multipoint_login: 1,
register_num:"",
merchant_num:"",
trade_amount :"",
invite_code:""
});
const rules = ref({
company_name: [{ required: true, message: "请选择公司", trigger: "blur" }],
group_id: [{ required: true, message: "请选择角色", trigger: "blur" }],
nickname: [{ required: true, message: "请输入姓名", trigger: "blur" }],
// sex: [{ required: true, message: "", trigger: "blur" }],
// id_card: [{ required: true, message: "", trigger: "blur" }],
account: [{ required: true, message: "请输入联系电话", trigger: "blur" }],
// "qualification.bank_account": [
// { required: true, message: "", trigger: "blur" },
// ],
// "qualification.id_card": [
// { required: true, message: "", trigger: "blur" },
// ],
});
const disabledPartyA = ref(false);
@ -389,7 +438,11 @@ const isEdit = ref(false);
const isCompany = ref(false);
const userStore = useUserStore();
//
const roleList = ref([]);
getRolelist({}).then((res: any) => {
roleList.value = res;
});
function customEvent(data: any) {
isCompany.value = false;
formData.party_b = data.id;
@ -416,7 +469,6 @@ const getDetails = async () => {
});
mode.value = route.query.mode;
formData.brigade=Number(formData.brigade)
formData.contract_type = data.contract?.contract_type;
formData.party_b_name = data.contract?.party_b_name;
formData.party_b = data.contract?.party_b;
@ -445,7 +497,10 @@ const handleEdit = async (value: string, field: string) => {
});
getDetails();
};
const fileList = ref<UploadUserFile[]>([]);
// url
const handleAvatarSuccessIdA: UploadProps["onSuccess"] = (
response,
@ -457,6 +512,8 @@ const handleAvatarSuccessIdA: UploadProps["onSuccess"] = (
}
formData.qualification.id_card = response.data.uri;
};
const handleAvatarSuccessAvatar: UploadProps["onSuccess"] = (
response,
uploadFile
@ -467,6 +524,8 @@ const handleAvatarSuccessAvatar: UploadProps["onSuccess"] = (
}
formData.avatar = response.data.uri;
};
const handleAvatarSuccessIdB: UploadProps["onSuccess"] = (
response,
uploadFile
@ -477,6 +536,8 @@ const handleAvatarSuccessIdB: UploadProps["onSuccess"] = (
}
formData.qualification.id_card_b = response.data.uri;
};
const handleAvatarSuccessCarA: UploadProps["onSuccess"] = (
response,
uploadFile
@ -520,19 +581,19 @@ const handleAvatarSuccessBankB: UploadProps["onSuccess"] = (
}
formData.qualification.bank_account_b = response.data.uri;
};
const handleAvatarSuccess_four: UploadProps["onSuccess"] = (
response,
uploadFile
) => {
if (response.code == 0) {
ElMessage.error(response.msg);
return;
}
formData.file = response.data.uri;
upContact({ file: formData.file, id: route.query.mdoeid }).then((res) => [
(mode.value = false),
]);
};
// const handleAvatarSuccess_four: UploadProps["onSuccess"] = (
// response,
// uploadFile
// ) => {
// if (response.code == 0) {
// ElMessage.error(response.msg);
// return;
// }
// formData.file = response.data.uri;
// upContact({ file: formData.file, id: route.query.mdoeid }).then((res) => [
// (mode.value = false),
// ]);
// };
const beforeAvatarUpload_three: UploadProps["beforeUpload"] = (rawFile) => {
return true;
};
@ -583,14 +644,34 @@ const getBrigadeList = async () => {
// datas["streetOptions"] = data;
};
const handleAdjust = (value: string) => {
adjustState.show = true;
adjustState.value = value;
};
const handleConfirmAdjust = async (value: any) => {
await adjustMoney({ user_id: route.query.id, ...value });
adjustState.show = false;
getDetails();
// const handleAdjust = (value: string) => {
// adjustState.show = true;
// adjustState.value = value;
// };
// const handleConfirmAdjust = async (value: any) => {
// await adjustMoney({ user_id: route.query.id, ...value });
// adjustState.show = false;
// getDetails();
// };
//
const submit = () => {
// if (!formData.avatar) return ElMessage.error("");
formRef.value?.validate((e) => {
if (e) {
// if (!formData.qualification.id_card || !formData.qualification.id_card_b)
// return ElMessage.error("");
// if (
// !formData.qualification.bank_account ||
// !formData.qualification.bank_account_b
// )
// return ElMessage.error("");
userEdit(formData).then(() => {
ElMessage.success("添加成功");
router.back();
});
}
});
};
//
const initiateContactFn = () => {
@ -604,7 +685,10 @@ const initiateContactFn = () => {
};
getDetails();
getProvinceList();
console.log(formData);
console.log(mode.value);
</script>
<style lang="scss">

View File

@ -168,8 +168,34 @@
</el-form-item>
</el-col> -->
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="注册用户数" prop="register_num" label-width="200px">
<el-input v-model="formData.register_num" placeholder="请输入" clearable type="number"
:style="{ width: '100%' }"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="入驻商户数" prop="merchant_num" label-width="100px">
<el-input v-model="formData.merchant_num" placeholder="请输入" clearable type="number"
:style="{ width: '100%' }"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="交易金额" prop="trade_amount" label-width="200px">
<el-input v-model="formData.trade_amount" placeholder="请输入" clearable type="number"
:style="{ width: '100%' }"></el-input>
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="邀请码" prop="invite_code" >
<el-input v-model="formData.invite_code" placeholder="请输入" clearable type="number"
:style="{ width: '100%' }"></el-input>
</el-form-item>
</el-col> -->
</el-row>
<el-row>
<el-form-item label="省" prop="province" label-width="200px">
<el-select v-model="formData.province" placeholder="请选择省" clearable @change="province_change"
@ -363,6 +389,10 @@ const formData = reactive({
},
avatar: "",
multipoint_login: 1,
register_num:"",
merchant_num:"",
trade_amount :"",
invite_code:""
});
const rules = ref({

View File

@ -100,12 +100,28 @@
path: getRoutePath('user.user/detail'),
query: {
id: row.id,
mode:'detail'
},
}"
>
详情
</router-link>
</el-button>
<el-button v-perms="['user.user/detail']" type="primary" link>
<router-link
:to="{
path: getRoutePath('user.user/detail'),
query: {
id: row.id,
mode:'edit'
},
}"
>
编辑
</router-link>
</el-button>
<!-- <template v-if="row.is_contract == 0">
<el-button
v-perms="['user.user/launch']"