|
|
@@ -12,20 +12,24 @@
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="10">
|
|
|
<el-form-item prop="typeAttr" label="业务员类型">
|
|
|
- <el-select v-model="operationForm.typeAttr" placeholder="请选择业务员类型">
|
|
|
- <el-option key="1" value="1" label="前线人员"></el-option>
|
|
|
+ <el-select v-model="operationForm.typeAttr" placeholder="请选择业务员类型" @change="typeAttrChange">
|
|
|
+ <el-option key="1" value="6" label="个代"></el-option>
|
|
|
+ <el-option key="2" value="8" label="渠道"></el-option>
|
|
|
+ <el-option key="3" value="5" label="团队"></el-option>
|
|
|
+ <el-option key="4" value="7" label="电销组"></el-option>
|
|
|
+ <!--<el-option key="1" value="1" label="前线人员"></el-option>
|
|
|
<el-option key="2" value="2" label="后线人员"></el-option>
|
|
|
<el-option key="3" value="3" label="合伙人"></el-option>
|
|
|
<el-option key="4" value="4" label="工作室管理员"></el-option>
|
|
|
- <el-option key="5" value="5" label="团队长"></el-option>
|
|
|
+ <el-option key="5" value="5" label="团队"></el-option>
|
|
|
<el-option key="6" value="6" label="个代"></el-option>
|
|
|
<el-option key="7" value="7" label="电销"></el-option>
|
|
|
- <el-option key="8" value="8" label="渠道"></el-option>
|
|
|
+ <el-option key="8" value="8" label="渠道"></el-option>-->
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="10">
|
|
|
- <el-form-item prop="deptId" label="所属团队">
|
|
|
+ <el-form-item prop="deptId" label="所属团队" v-if="operationForm.typeAttr!='6'">
|
|
|
<el-select v-model="operationForm.organizationId" placeholder="请选择所属团队" @change="deptChange">
|
|
|
<el-option v-for="item in teamList" :key="item.id" :value="item.id" :label="item.name"></el-option>
|
|
|
</el-select>
|
|
|
@@ -35,25 +39,25 @@
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="10">
|
|
|
<el-form-item prop="name" label="姓名">
|
|
|
- <el-input v-model="operationForm.name" placeholder="请填写姓名"></el-input>
|
|
|
+ <el-input v-model="operationForm.name" placeholder="请填写姓名" maxlength="20"></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="10">
|
|
|
<el-form-item prop="mobile" label="手机号">
|
|
|
- <el-input v-model="operationForm.mobile" placeholder="请填写手机号"></el-input>
|
|
|
+ <el-input type="number" oninput="if(value.length>11)value=value.slice(0,11)" v-model="operationForm.mobile" placeholder="请填写手机号"></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="10">
|
|
|
<el-form-item prop="organization" label="所属机构">
|
|
|
- <el-input disabled v-model="operationForm.organization"></el-input>
|
|
|
-<!-- <el-cascader style="width: 100%" v-model="operationForm.organization" placeholder="请选择所属机构" :options="option" :props="cascaderProps"></el-cascader>-->
|
|
|
+ <el-input v-if="operationForm.typeAttr!='6'" disabled v-model="operationForm.organization"></el-input>
|
|
|
+ <el-cascader v-else style="width: 100%" v-model="operationForm.organization" placeholder="请选择所属机构" :options="deptOption" :props="optionProps"></el-cascader>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="10">
|
|
|
<el-form-item prop="identity" label="证件号">
|
|
|
- <el-input v-model="operationForm.identity" placeholder="请填写证件号"></el-input>
|
|
|
+ <el-input v-model="operationForm.identity" placeholder="请填写身份证号"></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
@@ -66,6 +70,7 @@
|
|
|
placeholder="请选择"
|
|
|
format="YYYY-MM-DD"
|
|
|
value-format="YYYY-MM-DD"
|
|
|
+ :disabled-date="disabledDateStart"
|
|
|
style="width: 100%"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
@@ -78,6 +83,7 @@
|
|
|
placeholder="请选择"
|
|
|
format="YYYY-MM-DD"
|
|
|
value-format="YYYY-MM-DD"
|
|
|
+ :disabled-date="disabledDateEnd"
|
|
|
style="width: 100%"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
@@ -107,7 +113,7 @@
|
|
|
<el-col :span="10">
|
|
|
<el-form-item prop="referrerId" label="推荐人">
|
|
|
<el-select v-model="operationForm.referrerId" filterable placeholder="请选择推荐人" @change="(e) => {operationForm.referrerNumber = e}">
|
|
|
- <el-option v-for="(item, index) in userList" :key="item.id" :value="item.id" :label="item.name"></el-option>
|
|
|
+ <el-option v-for="(item, index) in recommendList" :key="item.id" :value="item.id" :label="item.name"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
@@ -123,7 +129,7 @@
|
|
|
<el-descriptions title="资料附件">
|
|
|
<el-descriptions-item>
|
|
|
<template #default>
|
|
|
- <el-form-item prop="" label="身份证(人像面)" label-width="150">
|
|
|
+ <el-form-item prop="IDCardFront" label="身份证(人像面)" label-width="150">
|
|
|
<el-upload action="" v-if="!IDCardFront" :auto-upload="false" :show-file-list="false" accept=".png, .jpg, .jpeg" @change="uploadImage($event, 1)">
|
|
|
<el-button link type="primary">上传</el-button>
|
|
|
</el-upload>
|
|
|
@@ -134,12 +140,12 @@
|
|
|
<el-icon class="btn-icon"><Upload /></el-icon>
|
|
|
</el-upload>
|
|
|
<el-icon class="btn-icon" @click="imageView(1)"><View /></el-icon>
|
|
|
- <el-icon class="btn-icon"><Download /></el-icon>
|
|
|
- <el-icon class="btn-icon"><Delete /></el-icon>
|
|
|
+ <el-icon class="btn-icon" @click="downloadImage(1)"><Download /></el-icon>
|
|
|
+ <el-icon class="btn-icon" @click="deleteImage(1)"><Delete /></el-icon>
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
- <el-form-item prop="" label="身份证(国徽面)" label-width="150">
|
|
|
+ <el-form-item prop="IDCardBack" label="身份证(国徽面)" label-width="150">
|
|
|
<el-upload v-if="!IDCardBack" :auto-upload="false" :show-file-list="false" accept=".png, .jpg, .jpeg" @change="uploadImage($event, 2)">
|
|
|
<el-button link type="primary">上传</el-button>
|
|
|
</el-upload>
|
|
|
@@ -150,8 +156,8 @@
|
|
|
<el-icon class="btn-icon"><Upload /></el-icon>
|
|
|
</el-upload>
|
|
|
<el-icon class="btn-icon" @click="imageView(2)"><View /></el-icon>
|
|
|
- <el-icon class="btn-icon"><Download /></el-icon>
|
|
|
- <el-icon class="btn-icon"><Delete /></el-icon>
|
|
|
+ <el-icon class="btn-icon" @click="downloadImage(2)"><Download /></el-icon>
|
|
|
+ <el-icon class="btn-icon" @click="deleteImage(2)"><Delete /></el-icon>
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
@@ -166,8 +172,8 @@
|
|
|
<el-icon class="btn-icon"><Upload /></el-icon>
|
|
|
</el-upload>
|
|
|
<el-icon class="btn-icon" @click="imageView(3)"><View /></el-icon>
|
|
|
- <el-icon class="btn-icon"><Download /></el-icon>
|
|
|
- <el-icon class="btn-icon"><Delete /></el-icon>
|
|
|
+ <el-icon class="btn-icon" @click="downloadImage(3)"><Download /></el-icon>
|
|
|
+ <el-icon class="btn-icon" @click="deleteImage(3)"><Delete /></el-icon>
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
@@ -374,8 +380,8 @@
|
|
|
<el-icon class="btn-icon"><Upload /></el-icon>
|
|
|
</el-upload>
|
|
|
<el-icon class="btn-icon" @click="imageView(4)"><View /></el-icon>
|
|
|
- <el-icon class="btn-icon"><Download /></el-icon>
|
|
|
- <el-icon class="btn-icon"><Delete /></el-icon>
|
|
|
+ <el-icon class="btn-icon" @click="downloadImage(4)"><Download /></el-icon>
|
|
|
+ <el-icon class="btn-icon" @click="deleteImage(4)"><Delete /></el-icon>
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
@@ -390,8 +396,8 @@
|
|
|
<el-icon class="btn-icon"><Upload /></el-icon>
|
|
|
</el-upload>
|
|
|
<el-icon class="btn-icon" @click="imageView(5)"><View /></el-icon>
|
|
|
- <el-icon class="btn-icon"><Download /></el-icon>
|
|
|
- <el-icon class="btn-icon"><Delete /></el-icon>
|
|
|
+ <el-icon class="btn-icon" @click="downloadImage(5)"><Download /></el-icon>
|
|
|
+ <el-icon class="btn-icon" @click="deleteImage(5)"><Delete /></el-icon>
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
@@ -406,8 +412,8 @@
|
|
|
<el-icon class="btn-icon"><Upload /></el-icon>
|
|
|
</el-upload>
|
|
|
<el-icon class="btn-icon" @click="imageView(6)"><View /></el-icon>
|
|
|
- <el-icon class="btn-icon"><Download /></el-icon>
|
|
|
- <el-icon class="btn-icon"><Delete /></el-icon>
|
|
|
+ <el-icon class="btn-icon" @click="downloadImage(6)"><Download /></el-icon>
|
|
|
+ <el-icon class="btn-icon" @click="deleteImage(6)"><Delete /></el-icon>
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
@@ -422,8 +428,8 @@
|
|
|
<el-icon class="btn-icon"><Upload /></el-icon>
|
|
|
</el-upload>
|
|
|
<el-icon class="btn-icon" @click="imageView(7)"><View /></el-icon>
|
|
|
- <el-icon class="btn-icon"><Download /></el-icon>
|
|
|
- <el-icon class="btn-icon"><Delete /></el-icon>
|
|
|
+ <el-icon class="btn-icon" @click="downloadImage(7)"><Download /></el-icon>
|
|
|
+ <el-icon class="btn-icon" @click="deleteImage(7)"><Delete /></el-icon>
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
@@ -526,7 +532,7 @@ const operationRules = ref<FormRules>({
|
|
|
mobile: [
|
|
|
{ required: true, trigger: "blur", message: "请填写手机号" },
|
|
|
{
|
|
|
- pattern: /^1[34578][0-9]{9}$/,
|
|
|
+ pattern: /^1[0-9]{10}$/,
|
|
|
message: '请填写正确的手机号',
|
|
|
trigger: 'blur'
|
|
|
}
|
|
|
@@ -549,17 +555,23 @@ const operationRules = ref<FormRules>({
|
|
|
{ required: true, trigger: "change", message: "请选择证件有效期止" }
|
|
|
],
|
|
|
leaderId: [
|
|
|
- { required: true, trigger: "change", message: "请选择管理人" }
|
|
|
+ { required: true, trigger: "blur", message: "请选择管理人" }
|
|
|
],
|
|
|
leaderNumber: [
|
|
|
{ required: true, trigger: "blur", message: "请填写管理人工号" }
|
|
|
],
|
|
|
referrerId: [
|
|
|
- { required: true, trigger: "change", message: "请选择推荐人" }
|
|
|
+ { required: true, trigger: "blur", message: "请选择推荐人" }
|
|
|
],
|
|
|
referrerNumber: [
|
|
|
{ required: true, trigger: "blur", message: "请填写推荐人工号" }
|
|
|
],
|
|
|
+ IDCardFront: [
|
|
|
+ { required: true, trigger: "change", message: "请上传身份(人像面)" }
|
|
|
+ ],
|
|
|
+ IDCardBack: [
|
|
|
+ { required: true, trigger: "change", message: "请上传身份(国徽面)" }
|
|
|
+ ],
|
|
|
bankCardId: [
|
|
|
{
|
|
|
pattern: /^([1-9]{1})(\d{15}|\d{16}|\d{18})$/,
|
|
|
@@ -607,6 +619,14 @@ let dimission = ref('')
|
|
|
let imageShow = ref(false)
|
|
|
let imageUrl = ref('')
|
|
|
|
|
|
+// 限制证件日期
|
|
|
+const disabledDateStart = (time: Date) => {
|
|
|
+ return time.getTime() > new Date()
|
|
|
+}
|
|
|
+const disabledDateEnd = (time: Date) => {
|
|
|
+ return time.getTime() < new Date(operationForm.value.identityTimeStart)
|
|
|
+}
|
|
|
+
|
|
|
// 编辑时初始化数据
|
|
|
// 编辑的id
|
|
|
let editId = ref('')
|
|
|
@@ -636,14 +656,6 @@ const initEditData = (id) => {
|
|
|
let applicantImg = formData.fileList.find(item => item.fileType == 'applicant')
|
|
|
let salaryTable = formData.fileList.find(item => item.fileType == 'salary')
|
|
|
let leaveTable = formData.fileList.find(item => item.fileType == 'leave')
|
|
|
- console.log('图片', formData.fileList)
|
|
|
- console.log('身份证1', sfz1)
|
|
|
- console.log('身份证2', sfz1)
|
|
|
- console.log('展业资格证', qualification)
|
|
|
- console.log('劳务合同', contract)
|
|
|
- console.log('应聘表', applicant)
|
|
|
- console.log('定薪表', salaryTable)
|
|
|
- console.log('离职表', leaveTable)
|
|
|
if(sfz1) {
|
|
|
operationForm.value.sfz1 = sfz1.id
|
|
|
IDCardFrontName.value = sfz1.fileName
|
|
|
@@ -682,7 +694,7 @@ const initEditData = (id) => {
|
|
|
}
|
|
|
operationForm.value.address = address
|
|
|
getUser(operationForm.value.deptId)
|
|
|
- console.log(123123123, operationForm.value)
|
|
|
+ getRecommend(operationForm.value.deptId)
|
|
|
} else {
|
|
|
ElMessage({
|
|
|
message: res.msg,
|
|
|
@@ -779,10 +791,92 @@ const imageView = (type) => {
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+// 图片下载
|
|
|
+const download = (url, name) => {
|
|
|
+ let image = new Image();
|
|
|
+ // 解决跨域 Canvas 污染问题
|
|
|
+ image.setAttribute("crossOrigin", "anonymous");
|
|
|
+ image.onload = function () {
|
|
|
+ let canvas = document.createElement("canvas");
|
|
|
+ canvas.width = image.width;
|
|
|
+ canvas.height = image.height;
|
|
|
+ let context = canvas.getContext("2d");
|
|
|
+ context.drawImage(image, 0, 0, image.width, image.height);
|
|
|
+ let url = canvas.toDataURL("image/png"); //得到图片的base64编码数据
|
|
|
+ let a = document.createElement("a"); // 生成一个a元素
|
|
|
+ let event = new MouseEvent("click"); // 创建一个单击事件
|
|
|
+ a.download = name; // 设置图片名称
|
|
|
+ a.href = url; // 将生成的URL设置为a.href属性
|
|
|
+ a.dispatchEvent(event); // 触发a的单击事件
|
|
|
+ }
|
|
|
+ image.src = url
|
|
|
+}
|
|
|
+const downloadImage = (type) => {
|
|
|
+ switch (type) {
|
|
|
+ case 1:
|
|
|
+ download(IDCardFront.value,IDCardFrontName.value)
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ download(IDCardBack.value,IDCardBackName.value)
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ download(certification.value,certificationName.value)
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ download(contract.value,contractName.value)
|
|
|
+ break;
|
|
|
+ case 5:
|
|
|
+ download(applicant.value,applicantName.value)
|
|
|
+ break;
|
|
|
+ case 6:
|
|
|
+ download(decidePay.value,decidePayName.value)
|
|
|
+ break;
|
|
|
+ case 7:
|
|
|
+ download(dimission.value,dimissionName.value)
|
|
|
+ break;
|
|
|
+ }
|
|
|
+}
|
|
|
+// 图片删除
|
|
|
+const deleteImage = (type) => {
|
|
|
+ switch (type) {
|
|
|
+ case 1:
|
|
|
+ IDCardFront.value = ''
|
|
|
+ IDCardFrontName.value = ''
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ IDCardBack.value = ''
|
|
|
+ IDCardBackName.value = ''
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ certification.value = ''
|
|
|
+ certificationName.value = ''
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ contract.value = ''
|
|
|
+ contractName.value = ''
|
|
|
+ break;
|
|
|
+ case 5:
|
|
|
+ applicant.value = ''
|
|
|
+ applicantName.value = ''
|
|
|
+ break;
|
|
|
+ case 6:
|
|
|
+ decidePay.value = ''
|
|
|
+ decidePayName.value = ''
|
|
|
+ break;
|
|
|
+ case 7:
|
|
|
+ dimission.value = ''
|
|
|
+ dimissionName.value = ''
|
|
|
+ break;
|
|
|
+ }
|
|
|
+}
|
|
|
// 管理人/推荐人
|
|
|
let userList = ref([])
|
|
|
+let recommendList = ref([])
|
|
|
const getUser = (id) => {
|
|
|
- api.operationApi.getUser(id).then(res => {
|
|
|
+ api.operationApi.getUser({
|
|
|
+ id: id
|
|
|
+ }).then(res => {
|
|
|
if(res?.code == 200) {
|
|
|
userList.value = res.data
|
|
|
} else {
|
|
|
@@ -793,6 +887,21 @@ const getUser = (id) => {
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
+const getRecommend = (id) => {
|
|
|
+ api.operationApi.getUser({
|
|
|
+ id: id,
|
|
|
+ typeAttr: 2
|
|
|
+ }).then(res => {
|
|
|
+ if(res?.code == 200) {
|
|
|
+ recommendList.value = res.data
|
|
|
+ } else {
|
|
|
+ ElMessage({
|
|
|
+ message: res.msg,
|
|
|
+ type: 'warning'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
// 确定
|
|
|
const onSubmit = async (OperationFormRef: FormInstance, type: number) => {
|
|
|
if(!OperationFormRef) {
|
|
|
@@ -949,15 +1058,27 @@ const getArea = () => {
|
|
|
|
|
|
// 团队数据
|
|
|
let teamList = ref([])
|
|
|
-const getTeamList = async () => {
|
|
|
- const { code, data, msg } = await api.teamApi.teamList({})
|
|
|
- if(code == 200) {
|
|
|
- teamList.value = data
|
|
|
- } else {
|
|
|
- ElMessage({
|
|
|
- message: msg,
|
|
|
- type: 'warning'
|
|
|
+const typeAttrChange = async (e) => {
|
|
|
+ operationForm.value.organization = ''
|
|
|
+ operationForm.value.leaderId = ''
|
|
|
+ operationForm.value.leaderNumber = ''
|
|
|
+ operationForm.value.referrerId = ''
|
|
|
+ operationForm.value.referrerNumber = ''
|
|
|
+ if(e != '6') {
|
|
|
+ const { code, data, msg } = await api.teamApi.teamList({
|
|
|
+ attribute: e,
|
|
|
+ param: ''
|
|
|
})
|
|
|
+ if(code == 200) {
|
|
|
+ teamList.value = data
|
|
|
+ } else {
|
|
|
+ ElMessage({
|
|
|
+ message: msg,
|
|
|
+ type: 'warning'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ institutionList();
|
|
|
}
|
|
|
}
|
|
|
const deptChange = (e) => {
|
|
|
@@ -965,6 +1086,7 @@ const deptChange = (e) => {
|
|
|
operationForm.value.organization = obj.deptName
|
|
|
operationForm.value.deptId = obj.deptId
|
|
|
getUser(obj.deptId)
|
|
|
+ getRecommend(obj.deptId)
|
|
|
}
|
|
|
|
|
|
// 初始化银行数据
|
|
|
@@ -982,10 +1104,30 @@ const initBankCard = () => {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
+let deptOption = ref([])
|
|
|
+const optionProps = {
|
|
|
+ value: 'id',
|
|
|
+ label: 'name',
|
|
|
+ children: 'children',
|
|
|
+ checkStrictly: true,
|
|
|
+}
|
|
|
+// 获取机构数据
|
|
|
+const institutionList = () => {
|
|
|
+ api.institutionApi.institutionList({ name: '', system: '' }).then(res => {
|
|
|
+ if(res?.code == 200) {
|
|
|
+ deptOption.value = res.data
|
|
|
+ } else {
|
|
|
+ ElMessage({
|
|
|
+ message: res.msg,
|
|
|
+ type: 'warning'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
onMounted(() => {
|
|
|
initInfo()
|
|
|
getArea()
|
|
|
- getTeamList()
|
|
|
initBankCard()
|
|
|
})
|
|
|
|
|
|
@@ -1043,4 +1185,16 @@ defineExpose({
|
|
|
border-radius: 5px;
|
|
|
}
|
|
|
}
|
|
|
+:deep(.el-input__inner[type=number]::-webkit-outer-spin-button) {
|
|
|
+ -webkit-appearance: none;
|
|
|
+ margin: 0;
|
|
|
+}
|
|
|
+:deep(.el-input__inner[type=number]::-webkit-inner-spin-button) {
|
|
|
+ -webkit-appearance: none;
|
|
|
+ margin: 0;
|
|
|
+}
|
|
|
+:deep(.el-input__inner[type=number]) {
|
|
|
+ -moz-appearance: textfield;
|
|
|
+}
|
|
|
+
|
|
|
</style>
|