|
|
@@ -1,304 +1,568 @@ |
|
|
|
<template> |
|
|
|
<el-form :model="dataForm" :rules="dataRule" :ref="el => dataFormRef = el" @keyup.enter="dataFormSubmitHandle()" |
|
|
|
label-width="120px" v-loading="formLoding"> |
|
|
|
<div v-loading="formLoding"> |
|
|
|
<el-form :model="dataForm" :rules="dataRule" :ref="el => dataFormRef = el" @keyup.enter="dataFormSubmitHandle()" |
|
|
|
label-width="120px" > |
|
|
|
<h4>基本信息</h4> |
|
|
|
<el-row> |
|
|
|
<el-col :span="8"> |
|
|
|
<el-form-item prop="staffName" label="员工姓名"> |
|
|
|
<el-input maxlength="60" v-trim clearable v-model="dataForm.staffName" type="text" |
|
|
|
placeholder="请输入员工姓名"></el-input> |
|
|
|
<el-input maxlength="60" v-trim clearable v-model="dataForm.staffName" type="text" |
|
|
|
placeholder="请输入员工姓名"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<!-- <el-form-item prop="staffId" label="员工工号"> |
|
|
|
<el-input maxlength="60"v-trim clearable v-model="dataForm.staffId" type="text" placeholder="请输入员工工号"></el-input> |
|
|
|
</el-form-item> --> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
<el-col :span="8"> |
|
|
|
<el-form-item prop="mobile" label="手机号"> |
|
|
|
<el-input maxlength="60" v-trim clearable v-model="dataForm.mobile" type="text" placeholder="请输入手机号" :disabled="disabled"></el-input> |
|
|
|
<el-input maxlength="60" v-trim clearable v-model="dataForm.mobile" type="text" placeholder="请输入手机号" |
|
|
|
:disabled="disabled"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
<el-col :span="8"> |
|
|
|
<el-form-item prop="identityType" label="员工身份标识"> |
|
|
|
<el-select clearable v-model="dataForm.identityType" style="width: 100%" placeholder="请选择员工身份标识"> |
|
|
|
<el-option v-for="item in STAFF_IDENTITY_TYPE" :key="item.value" :label="item.label" :value="item.value" /> |
|
|
|
</el-select> |
|
|
|
<el-select clearable v-model="dataForm.identityType" style="width: 100%" placeholder="请选择员工身份标识"> |
|
|
|
<el-option v-for="item in STAFF_IDENTITY_TYPE" :key="item.value" :label="item.label" :value="item.value"/> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<!-- <el-form-item prop="desensitization" label="是否脱敏"> |
|
|
|
<el-select clearable v-model="dataForm.desensitization" style="width: 100%" placeholder="请选择是否脱敏"> |
|
|
|
<el-option v-for="item in WHETHER_TYPE" :key="item.value" :label="item.label" :value="item.value" /> |
|
|
|
</el-select> |
|
|
|
</el-form-item> --> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
<el-col :span="12"> |
|
|
|
<el-form-item prop="agencyId" label="所属渠道"> |
|
|
|
<el-select @change="agencyIdChange" clearable filterable v-model="dataForm.agencyId" style="width: 100%" |
|
|
|
placeholder="请选择所属渠道"> |
|
|
|
<el-option v-for="item in agencyList" :key="item.value" :label="item.label" :value="item.value" /> |
|
|
|
</el-select> |
|
|
|
<el-select @change="agencyIdChange" clearable filterable v-model="dataForm.agencyId" style="width: 100%" |
|
|
|
placeholder="请选择所属渠道"> |
|
|
|
<el-option v-for="item in agencyList" :key="item.value" :label="item.label" :value="item.value"/> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
<el-col :span="12"> |
|
|
|
<el-form-item prop="serviceHallId" label="所属网点"> |
|
|
|
<el-select clearable :ref="(el) => elSelectRef = el" v-model="dataForm.serviceHallId" style="width: 100%" |
|
|
|
placeholder="请选择所属网点" filterable remote :remote-method="(value) => filterMethod(value, false)" |
|
|
|
v-loading="selectLoading"> |
|
|
|
<el-option v-for="item in pageServiceHallList" :key="item.value" :label="item.label" :value="item.value" /> |
|
|
|
<el-option value="loadMore" key="loadMore" v-if="hasPage && pageServiceHallList.length !== 0"> |
|
|
|
<div @click="($event) => handleLoadMore($event)" class="loadMore">加载更多......</div> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
<el-select clearable :ref="(el) => elSelectRef = el" v-model="dataForm.serviceHallId" style="width: 100%" |
|
|
|
placeholder="请选择所属网点" filterable remote :remote-method="(value) => filterMethod(value, false)" |
|
|
|
v-loading="selectLoading"> |
|
|
|
<el-option v-for="item in pageServiceHallList" :key="item.value" :label="item.label" :value="item.value"/> |
|
|
|
<el-option value="loadMore" key="loadMore" v-if="hasPage && pageServiceHallList.length !== 0"> |
|
|
|
<div @click="($event) => handleLoadMore($event)" class="loadMore">加载更多......</div> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<div class="btn-wrap"> |
|
|
|
<el-button type="primary" @click="cancelHandle">取消</el-button> |
|
|
|
<el-button type="primary" @click="dataFormSubmitHandle">确认</el-button> |
|
|
|
</div> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
</el-form> |
|
|
|
<!--实名信息--> |
|
|
|
<div v-if="!disabled"> |
|
|
|
<h4>实名信息</h4> |
|
|
|
<el-form :model="authForm" :rules="dataRule" ref="authFormRef" @keyup.enter="dataFormSubmitHandle()" |
|
|
|
label-width="120px" > |
|
|
|
<el-row> |
|
|
|
<el-col :span="12"> |
|
|
|
<el-form-item prop="userIdImgUrl" label="身份证正面"> |
|
|
|
<el-upload ref="uploadImg" class="avatar-uploader" |
|
|
|
:style="{ width: '300px', height: '189px' }" |
|
|
|
:limit="1" :on-exceed="handleImg" :data="data" accept=".png,.jpg,jpeg" |
|
|
|
:before-upload="beforeAvatarImgUpload" :show-file-list="false" :action="uploadUrl" |
|
|
|
@success="(response: any, uploadFile: UploadFile) => onSuccess(response, uploadFile, 'userIdImgUrl')"> |
|
|
|
<img v-if="authForm.userIdImgUrl" :src="authForm.userIdImgUrl" class="avatar"/> |
|
|
|
<el-icon v-else class="avatar-uploader-icon"> |
|
|
|
<Plus/> |
|
|
|
</el-icon> |
|
|
|
</el-upload> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
<el-col :span="12"> |
|
|
|
<el-form-item prop="userIdBackImgUrl" label="身份证背面"> |
|
|
|
<el-upload ref="uploadImgBack" class="avatar-uploader" |
|
|
|
:style="{ width: '300px', height: '189px' }" |
|
|
|
:limit="1" :on-exceed="handleImgBack" :data="data" accept=".png,.jpg,jpeg" |
|
|
|
:before-upload="beforeAvatarImgUpload" :show-file-list="false" :action="uploadUrl" |
|
|
|
@success="(response: any, uploadFile: UploadFile) => onSuccess(response, uploadFile,'userIdBackImgUrl')"> |
|
|
|
<img v-if="authForm.uploadImgBack" :src="authForm.uploadImgBack" class="avatar"/> |
|
|
|
<el-icon v-else class="avatar-uploader-icon"> |
|
|
|
<Plus/> |
|
|
|
</el-icon> |
|
|
|
</el-upload> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
<el-col :span="24"> |
|
|
|
<div class="btn-box"> |
|
|
|
<el-button type="primary" @click="identifyingInformation" :loading="buttonLoading">自动识别身份证信息</el-button> |
|
|
|
</div> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
<el-col :span="12"> |
|
|
|
<el-form-item prop="idType" label="证件类型"> |
|
|
|
<el-select clearable v-model="authForm.idType" style="width: 100%" placeholder="请选择证件类型"> |
|
|
|
<el-option v-for="item in USER_ID_TYPE" :key="item.value" :label="item.label" :value="item.value"/> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
<el-col :span="12"> |
|
|
|
<el-form-item prop="idNum" label="证件号"> |
|
|
|
<el-input maxlength="20" v-trim clearable v-model="authForm.idNum" type="text" placeholder="请输入证件号码"/> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
<el-col :span="12"> |
|
|
|
<el-form-item prop="name" label="姓名"> |
|
|
|
<el-input maxlength="20" v-trim clearable v-model="authForm.name" type="text" placeholder="请输入姓名"/> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
<el-col :span="12"> |
|
|
|
<el-form-item prop="gender" label="性别"> |
|
|
|
<el-select clearable v-model="authForm.gender" style="width: 100%" placeholder="请选择性别"> |
|
|
|
<el-option v-for="item in USER_GENDER" :key="item.value" :label="item.label" :value="item.value"/> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
<el-col :span="24"> |
|
|
|
<el-form-item prop="address" label="地址"> |
|
|
|
<el-input v-model="authForm.address" type="text" placeholder="请输入地址"/> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
</el-form> |
|
|
|
</div> |
|
|
|
<div class="btn-wrap"> |
|
|
|
<el-button @click="cancelHandle">取消</el-button> |
|
|
|
<el-button type="primary" @click="dataFormSubmitHandle">确认</el-button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
<script setup lang="ts"> |
|
|
|
import { ref, reactive, nextTick, toRefs, computed } from "vue"; |
|
|
|
import {ref, reactive, nextTick, toRefs, computed} from "vue"; |
|
|
|
import BaseService from "@/utils/baseService"; |
|
|
|
import { ElMessage } from "element-plus"; //消息提示 |
|
|
|
import { useDebounce, isMobile } from "@/utils/utils"; |
|
|
|
import { useRouter } from "vue-router"; |
|
|
|
import { IObject } from "@/types/interface"; |
|
|
|
import {ElMessage, genFileId, UploadInstance, UploadProps, UploadRawFile} from "element-plus"; //消息提示 |
|
|
|
import {useDebounce, isMobile} from "@/utils/utils"; |
|
|
|
import {useRouter} from "vue-router"; |
|
|
|
import {IObject} from "@/types/interface"; |
|
|
|
import $storeinitData from "@/store/initData"; //引入tab vuex |
|
|
|
import { |
|
|
|
addApi, |
|
|
|
updateApi, |
|
|
|
getInfoApi, |
|
|
|
agencyListApi, |
|
|
|
serviceHallListApi, |
|
|
|
serviceHallListBypageApi |
|
|
|
addApi, |
|
|
|
updateApi, |
|
|
|
getInfoApi, |
|
|
|
agencyListApi, |
|
|
|
serviceHallListApi, |
|
|
|
serviceHallListBypageApi |
|
|
|
} from "@/api/system/user"; |
|
|
|
import moment from "moment" |
|
|
|
|
|
|
|
const emit = defineEmits(["closeHandle", "refreshList"]); |
|
|
|
const router = useRouter(); |
|
|
|
const elSelectRef = ref(); |
|
|
|
const AuthenticationVisible = ref(false) |
|
|
|
const STAFF_IDENTITY_TYPE = computed(() => { |
|
|
|
return $storeinitData.state.dictData['STAFF_IDENTITY_TYPE'] || [] |
|
|
|
return $storeinitData.state.dictData['STAFF_IDENTITY_TYPE'] || [] |
|
|
|
}) |
|
|
|
const WHETHER_TYPE = computed(() => { |
|
|
|
return $storeinitData.state.dictData['WHETHER_TYPE'] || [] |
|
|
|
return $storeinitData.state.dictData['WHETHER_TYPE'] || [] |
|
|
|
}) |
|
|
|
const USER_ID_TYPE = computed(() => { |
|
|
|
return $storeinitData.state.dictData['ID_TYPE'] || [] |
|
|
|
}) |
|
|
|
|
|
|
|
const USER_GENDER = computed(() => { |
|
|
|
return $storeinitData.state.dictData['USER_GENDER'] || [] |
|
|
|
}) |
|
|
|
const initItem = { |
|
|
|
id: "", //id |
|
|
|
staffName: "", //名字 |
|
|
|
desensitization: "", //名字 |
|
|
|
identityType: "", //员工身份标识 |
|
|
|
//staffId: "", //员工工号 |
|
|
|
agencyId: "", //所属渠道id |
|
|
|
serviceHallId: "", // 所属网点id |
|
|
|
mobile: "", // |
|
|
|
staffType: 1,// 后端目前没有定义好类型有哪些,新增时默认为1 |
|
|
|
status: 1, // 后端目前没有定义好类型有哪些,新增时默认为1 |
|
|
|
releaseTime: "" |
|
|
|
id: "", //id |
|
|
|
staffName: "", //名字 |
|
|
|
desensitization: "", //名字 |
|
|
|
identityType: "", //员工身份标识 |
|
|
|
//staffId: "", //员工工号 |
|
|
|
agencyId: "", //所属渠道id |
|
|
|
serviceHallId: "", // 所属网点id |
|
|
|
mobile: "", // |
|
|
|
staffType: 1,// 后端目前没有定义好类型有哪些,新增时默认为1 |
|
|
|
status: 1, // 后端目前没有定义好类型有哪些,新增时默认为1 |
|
|
|
releaseTime: "" |
|
|
|
}; |
|
|
|
//定义一个父组件传来的参数 |
|
|
|
const props = defineProps({ |
|
|
|
disabled: { |
|
|
|
type: Boolean, |
|
|
|
default: false |
|
|
|
}, |
|
|
|
type: Boolean, |
|
|
|
default: false |
|
|
|
}, |
|
|
|
}) |
|
|
|
const state = reactive({ |
|
|
|
dataForm: { |
|
|
|
...initItem |
|
|
|
}, |
|
|
|
formLoding: false, |
|
|
|
agencyList: [] as IObject[], |
|
|
|
serviceHallList: [] as IObject[], |
|
|
|
pageServiceHallList: [] as IObject[], |
|
|
|
selectLoading: false, |
|
|
|
selectPage: { |
|
|
|
pageNo: 1, |
|
|
|
pageSize: 16, |
|
|
|
name: "", |
|
|
|
agencyId: '' |
|
|
|
}, |
|
|
|
hasPage: true |
|
|
|
dataForm: { |
|
|
|
...initItem |
|
|
|
}, |
|
|
|
formLoding: false, |
|
|
|
agencyList: [] as IObject[], |
|
|
|
serviceHallList: [] as IObject[], |
|
|
|
pageServiceHallList: [] as IObject[], |
|
|
|
selectLoading: false, |
|
|
|
selectPage: { |
|
|
|
pageNo: 1, |
|
|
|
pageSize: 16, |
|
|
|
name: "", |
|
|
|
agencyId: '' |
|
|
|
}, |
|
|
|
hasPage: true |
|
|
|
}) |
|
|
|
|
|
|
|
//实名相关 |
|
|
|
const uploadImg = ref<UploadInstance>() |
|
|
|
const uploadImgBack = ref<UploadInstance>() |
|
|
|
const handleImg: UploadProps['onExceed'] = (files) => { |
|
|
|
uploadImg.value.clearFiles() |
|
|
|
const file = files[0] as UploadRawFile |
|
|
|
file.uid = genFileId() |
|
|
|
uploadImg.value.handleStart(file) |
|
|
|
uploadImg.value.submit() |
|
|
|
} |
|
|
|
const handleImgBack: UploadProps['onExceed'] = (files) => { |
|
|
|
uploadImgBack.value.clearFiles() |
|
|
|
const file = files[0] as UploadRawFile |
|
|
|
file.uid = genFileId() |
|
|
|
uploadImgBack.value.handleStart(file) |
|
|
|
uploadImgBack.value.submit() |
|
|
|
} |
|
|
|
const uploadUrl = "/minIo/upload" |
|
|
|
const data = {bucket: ""}; |
|
|
|
|
|
|
|
function onSuccess(response: any, uploadFile: any, item: any) { |
|
|
|
if (response.code == 200) { |
|
|
|
// console.log("1===>form.value",form.value) |
|
|
|
authForm.value[item] = response.data.ossFilePath |
|
|
|
ElMessage.success(response.msg) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
const authForm = ref({ |
|
|
|
userIdImgUrl: '', |
|
|
|
userIdImgUrlBack: '', |
|
|
|
idType: '', |
|
|
|
idNum: '', |
|
|
|
name: '', |
|
|
|
gender: '' |
|
|
|
}) |
|
|
|
|
|
|
|
const buttonLoading = ref(false) |
|
|
|
|
|
|
|
function identifyingInformation() { |
|
|
|
buttonLoading.value = true |
|
|
|
if (authForm.value.userIdImgUrl === '' || authForm.value.userIdImgUrl === null || authForm.value.userIdImgUrl === undefined) { |
|
|
|
ElMessage.error('请上传身份证正面图片'); |
|
|
|
buttonLoading.value = false |
|
|
|
return |
|
|
|
} |
|
|
|
const params = { |
|
|
|
type: 1, |
|
|
|
imagePath: authForm.value.userIdImgUrl |
|
|
|
} |
|
|
|
BaseService.postN('/iaw/api/ocr/do', params).then((res: any) => { |
|
|
|
if (res && res.statusCode === 0) { |
|
|
|
const data = res.data |
|
|
|
authForm.value.idType = 'SFZ' // 暂时转换后期整体更改 |
|
|
|
authForm.value.idNum = data.idno |
|
|
|
authForm.value.name = data.name |
|
|
|
authForm.value.gender = data.gender == '男' ? 'MALE' : data.gender == '女' ? 'FEMALE' : 'UNKOWN' // 暂时转换后期整体更改 |
|
|
|
authForm.value.address = data.address |
|
|
|
buttonLoading.value = false |
|
|
|
ElMessage.success('识别成功'); |
|
|
|
} |
|
|
|
}).catch((error) => { |
|
|
|
buttonLoading.value = false |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
function submitAuth(openId:string) { |
|
|
|
authFormRef.value.validate((valid) => { |
|
|
|
if (valid) { |
|
|
|
const params = { |
|
|
|
userType: 'PERSONAL', |
|
|
|
userIdImgUrl: authForm.value.userIdImgUrl, |
|
|
|
userIdBackImgUrl: authForm.value.userIdBackImgUrl, |
|
|
|
idNum: authForm.value.idNum, |
|
|
|
userName: authForm.value.name, |
|
|
|
address: authForm.value.address, |
|
|
|
idType: 'SFZ', |
|
|
|
gender: authForm.value.gender, |
|
|
|
openId: openId |
|
|
|
} |
|
|
|
BaseService.postN('/userw/account/realnameauthentication', params).then((res: any) => { |
|
|
|
if (res && res.code === 0) { |
|
|
|
ElMessage.success('操作成功') |
|
|
|
formLoding.value = false; |
|
|
|
emit("closeHandle"); |
|
|
|
emit("refreshList"); |
|
|
|
} |
|
|
|
}).catch((error) => { |
|
|
|
formLoding.value = false; |
|
|
|
}) |
|
|
|
} |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
const dataFormRef = ref(); |
|
|
|
const { dataForm, formLoding, agencyList, serviceHallList, pageServiceHallList, selectLoading, selectPage, hasPage } = toRefs(state); |
|
|
|
const authFormRef = ref(); |
|
|
|
const { |
|
|
|
dataForm, |
|
|
|
formLoding, |
|
|
|
agencyList, |
|
|
|
serviceHallList, |
|
|
|
pageServiceHallList, |
|
|
|
selectLoading, |
|
|
|
selectPage, |
|
|
|
hasPage |
|
|
|
} = toRefs(state); |
|
|
|
const dataRule = computed(() => { |
|
|
|
const validateMobile = (rule: any, value: string, callback: (e?: Error) => any): any => { |
|
|
|
if (value && !isMobile(value)) { |
|
|
|
return callback(new Error("请输入正确的手机号!")); |
|
|
|
} |
|
|
|
callback(); |
|
|
|
}; |
|
|
|
return { |
|
|
|
mobile: [{ required: true, validator: validateMobile, message: "请输入正确的手机号", trigger: "blur" }], |
|
|
|
staffName: [{ required: true, message: "请输入员工名字", trigger: "blur" }], |
|
|
|
identityType: [{ required: true, message: "请输入员工身份标识", trigger: "blur" }], |
|
|
|
agencyId: [{ required: true, message: "请输入所属渠道", trigger: "blur" }], |
|
|
|
serviceHallId: [{ required: true, message: "请输入所属网点", trigger: "blur" }], |
|
|
|
//staffId: [{ required: true, message: "请输入员工编号", trigger: "blur" }], |
|
|
|
const validateMobile = (rule: any, value: string, callback: (e?: Error) => any): any => { |
|
|
|
if (value && !isMobile(value)) { |
|
|
|
return callback(new Error("请输入正确的手机号!")); |
|
|
|
} |
|
|
|
callback(); |
|
|
|
}; |
|
|
|
return { |
|
|
|
mobile: [{required: true, validator: validateMobile, message: "请输入正确的手机号", trigger: "blur"}], |
|
|
|
staffName: [{required: true, message: "请输入员工名字", trigger: "blur"}], |
|
|
|
identityType: [{required: true, message: "请输入员工身份标识", trigger: "blur"}], |
|
|
|
agencyId: [{required: true, message: "请输入所属渠道", trigger: "blur"}], |
|
|
|
serviceHallId: [{required: true, message: "请输入所属网点", trigger: "blur"}], |
|
|
|
//staffId: [{ required: true, message: "请输入员工编号", trigger: "blur" }], |
|
|
|
userIdImgUrl: [{required: true, message: "请上传身份证正面", trigger: "blur"}], |
|
|
|
userIdBackImgUrl: [{required: true, message: "请上传身份证反面", trigger: "blur"}], |
|
|
|
idType: [{required: true, message: "请输入证件类型", trigger: "change"}], |
|
|
|
idNum: [{required: true, message: "请输入证件号码", trigger: "blur"}], |
|
|
|
name: [{required: true, message: "请输入姓名", trigger: "blur"}], |
|
|
|
gender: [{required: true, message: "请输入性别", trigger: "change"}], |
|
|
|
address: [{required: true, message: "请输入地址", trigger: "blur"}], |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
function submit() { |
|
|
|
dataFormRef.value.validate((valid) => { |
|
|
|
if (!valid) { |
|
|
|
return false; |
|
|
|
} |
|
|
|
let params: any = { |
|
|
|
...dataForm.value |
|
|
|
} |
|
|
|
let api = '/userw/staff/add'; |
|
|
|
if (dataForm.value.id) { |
|
|
|
api = '/userw/staff/change'; |
|
|
|
} else { |
|
|
|
delete params.id; |
|
|
|
params.releaseTime = moment().format("YYYY-MM-DD HH:mm:ss"); |
|
|
|
} |
|
|
|
BaseService.postN(api, params).then((res: any) => { |
|
|
|
if (res && res.code === 0) { |
|
|
|
ElMessage.success("操作成功"); |
|
|
|
emit("closeHandle"); |
|
|
|
emit("refreshList"); |
|
|
|
formLoding.value = true; |
|
|
|
dataFormRef.value.validate((valid1) => { |
|
|
|
if (!valid1) { |
|
|
|
formLoding.value = false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
authFormRef.value.validate((valid2) => { |
|
|
|
if (!valid2) { |
|
|
|
formLoding.value = false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
let params: any = { |
|
|
|
...dataForm.value |
|
|
|
} |
|
|
|
let api = '/userw/staff/add'; |
|
|
|
if (dataForm.value.id) { |
|
|
|
api = '/userw/staff/change'; |
|
|
|
} else { |
|
|
|
delete params.id; |
|
|
|
params.releaseTime = moment().format("YYYY-MM-DD HH:mm:ss"); |
|
|
|
} |
|
|
|
BaseService.postN(api, params).then((res: any) => { |
|
|
|
if (res && res.code === 0) { |
|
|
|
if (api === '/userw/staff/add') { |
|
|
|
if (res.data.openId === '' || res.data.openId === null || res.data.openId === undefined) { |
|
|
|
ElMessage.success("员工新增操作成功!"); |
|
|
|
ElMessage.warning("员工实名认证失败,请稍后重试!") |
|
|
|
formLoding.value = false; |
|
|
|
emit("closeHandle"); |
|
|
|
emit("refreshList"); |
|
|
|
} else { |
|
|
|
ElMessage.error(res.message) |
|
|
|
submitAuth(res.data.openId) |
|
|
|
} |
|
|
|
}) |
|
|
|
} else { |
|
|
|
ElMessage.success("操作成功"); |
|
|
|
emit("closeHandle"); |
|
|
|
emit("refreshList"); |
|
|
|
} |
|
|
|
} |
|
|
|
}).catch((error) => { |
|
|
|
formLoding.value = false; |
|
|
|
}) |
|
|
|
}) |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
const dataFormSubmitHandle = useDebounce(submit); |
|
|
|
|
|
|
|
function cancelHandle() { |
|
|
|
dataForm.value = { |
|
|
|
...initItem |
|
|
|
} |
|
|
|
emit("closeHandle"); |
|
|
|
dataForm.value = { |
|
|
|
...initItem |
|
|
|
} |
|
|
|
emit("closeHandle"); |
|
|
|
} |
|
|
|
|
|
|
|
function init(row: any) { |
|
|
|
if (row && row.id) { |
|
|
|
getRow(row.id); |
|
|
|
//处理回显数据 |
|
|
|
pageServiceHallList.value = [ |
|
|
|
{ |
|
|
|
label: row.serviceHallName, |
|
|
|
value: row.serviceHallId |
|
|
|
} |
|
|
|
] |
|
|
|
} |
|
|
|
getAgencyList(); |
|
|
|
//getServiceList(); |
|
|
|
getPageServiceList(); |
|
|
|
if (row && row.id) { |
|
|
|
getRow(row.id); |
|
|
|
//处理回显数据 |
|
|
|
pageServiceHallList.value = [ |
|
|
|
{ |
|
|
|
label: row.serviceHallName, |
|
|
|
value: row.serviceHallId |
|
|
|
} |
|
|
|
] |
|
|
|
} |
|
|
|
getAgencyList(); |
|
|
|
//getServiceList(); |
|
|
|
getPageServiceList(); |
|
|
|
} |
|
|
|
|
|
|
|
function getRow(id: string) { |
|
|
|
BaseService.postN('/userw/staff/query', { id: id }).then((res: any) => { |
|
|
|
if (res && res.code === 0) { |
|
|
|
let data = res.data || {}; |
|
|
|
dataForm.value = { |
|
|
|
...data, |
|
|
|
}; |
|
|
|
} else { |
|
|
|
ElMessage.error(res.message); |
|
|
|
} |
|
|
|
formLoding.value = false; |
|
|
|
}); |
|
|
|
BaseService.postN('/userw/staff/query', {id: id}).then((res: any) => { |
|
|
|
if (res && res.code === 0) { |
|
|
|
let data = res.data || {}; |
|
|
|
dataForm.value = { |
|
|
|
...data, |
|
|
|
}; |
|
|
|
} else { |
|
|
|
ElMessage.error(res.message); |
|
|
|
} |
|
|
|
formLoding.value = false; |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
// 获取所有渠道 |
|
|
|
function getAgencyList() { |
|
|
|
BaseService.postN('/userw/agency/agencyqueryall').then((res: any) => { |
|
|
|
if (res && res.code === 0) { |
|
|
|
let bizContent = res.data |
|
|
|
let data = bizContent || []; |
|
|
|
let list = [] as IObject[]; |
|
|
|
data.map((item) => { |
|
|
|
list.push({ |
|
|
|
label: item.name, |
|
|
|
value: item.agencyId |
|
|
|
}) |
|
|
|
}) |
|
|
|
agencyList.value = list; |
|
|
|
} else { |
|
|
|
ElMessage.error(res.message); |
|
|
|
} |
|
|
|
}); |
|
|
|
BaseService.postN('/userw/agency/agencyqueryall').then((res: any) => { |
|
|
|
if (res && res.code === 0) { |
|
|
|
let bizContent = res.data |
|
|
|
let data = bizContent || []; |
|
|
|
let list = [] as IObject[]; |
|
|
|
data.map((item) => { |
|
|
|
list.push({ |
|
|
|
label: item.name, |
|
|
|
value: item.agencyId |
|
|
|
}) |
|
|
|
}) |
|
|
|
agencyList.value = list; |
|
|
|
} else { |
|
|
|
ElMessage.error(res.message); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
// 获取所有网点 |
|
|
|
function getServiceList() { |
|
|
|
formLoding.value = true; |
|
|
|
BaseService.post(serviceHallListApi).then((res: any) => { |
|
|
|
if (res && res.code === 0) { |
|
|
|
let bizContent = JSON.parse(res.bizContent); |
|
|
|
let data = bizContent.serviceHallList || []; |
|
|
|
let list = [] as IObject[]; |
|
|
|
data.map((item) => { |
|
|
|
list.push({ |
|
|
|
label: item.name, |
|
|
|
value: item.serviceHallId |
|
|
|
}) |
|
|
|
}) |
|
|
|
formLoding.value = false; |
|
|
|
serviceHallList.value = list; |
|
|
|
|
|
|
|
} else { |
|
|
|
formLoding.value = false; |
|
|
|
ElMessage.error(res.message); |
|
|
|
} |
|
|
|
}); |
|
|
|
formLoding.value = true; |
|
|
|
BaseService.post(serviceHallListApi).then((res: any) => { |
|
|
|
if (res && res.code === 0) { |
|
|
|
let bizContent = JSON.parse(res.bizContent); |
|
|
|
let data = bizContent.serviceHallList || []; |
|
|
|
let list = [] as IObject[]; |
|
|
|
data.map((item) => { |
|
|
|
list.push({ |
|
|
|
label: item.name, |
|
|
|
value: item.serviceHallId |
|
|
|
}) |
|
|
|
}) |
|
|
|
formLoding.value = false; |
|
|
|
serviceHallList.value = list; |
|
|
|
|
|
|
|
} else { |
|
|
|
formLoding.value = false; |
|
|
|
ElMessage.error(res.message); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
const agencyIdChange = (value) => { |
|
|
|
selectPage.value.agencyId = value |
|
|
|
filterMethod(null, false) |
|
|
|
selectPage.value.agencyId = value |
|
|
|
filterMethod(null, false) |
|
|
|
} |
|
|
|
|
|
|
|
// 分页获取网点,处理网点过多,加载过慢问题 |
|
|
|
function filterMethod(name, isAdd) { |
|
|
|
if (isAdd) { |
|
|
|
selectPage.value.pageNo = selectPage.value.pageNo + 1 |
|
|
|
} |
|
|
|
if (name) { |
|
|
|
selectPage.value.name = name |
|
|
|
selectPage.value.pageNo = 1 |
|
|
|
} |
|
|
|
if (selectPage.value.agencyId) { |
|
|
|
selectPage.value.pageNo = 1 |
|
|
|
} |
|
|
|
getPageServiceList(); |
|
|
|
if (isAdd) { |
|
|
|
selectPage.value.pageNo = selectPage.value.pageNo + 1 |
|
|
|
} |
|
|
|
if (name) { |
|
|
|
selectPage.value.name = name |
|
|
|
selectPage.value.pageNo = 1 |
|
|
|
} |
|
|
|
if (selectPage.value.agencyId) { |
|
|
|
selectPage.value.pageNo = 1 |
|
|
|
} |
|
|
|
getPageServiceList(); |
|
|
|
} |
|
|
|
|
|
|
|
async function getPageServiceList() { |
|
|
|
selectLoading.value = true; |
|
|
|
let params = {} |
|
|
|
let searchFormList = { ...selectPage.value }; |
|
|
|
for (let key in searchFormList) { |
|
|
|
if (searchFormList[key]) { |
|
|
|
params[key] = searchFormList[key]; |
|
|
|
} |
|
|
|
selectLoading.value = true; |
|
|
|
let params = {} |
|
|
|
let searchFormList = {...selectPage.value}; |
|
|
|
for (let key in searchFormList) { |
|
|
|
if (searchFormList[key]) { |
|
|
|
params[key] = searchFormList[key]; |
|
|
|
} |
|
|
|
await BaseService.postN('/userw/staff/serviceHallListPage', searchFormList).then((res: any) => { |
|
|
|
if (res && res.code === 0) { |
|
|
|
let bizContent = res.data |
|
|
|
let data = bizContent.result || []; |
|
|
|
let list = [] as IObject[]; |
|
|
|
|
|
|
|
console.log(data + '---------==========---------'); |
|
|
|
|
|
|
|
|
|
|
|
data.map((item) => { |
|
|
|
list.push({ |
|
|
|
label: item.name, |
|
|
|
value: item.serviceHallId |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
if (selectPage.value.pageNo !== 1) { |
|
|
|
pageServiceHallList.value = [...pageServiceHallList.value, ...list] |
|
|
|
} else { |
|
|
|
pageServiceHallList.value = list |
|
|
|
} |
|
|
|
selectLoading.value = false; |
|
|
|
hasPage.value = bizContent.pageCount === selectPage.value.pageNo ? false : true; |
|
|
|
} else { |
|
|
|
selectLoading.value = false; |
|
|
|
ElMessage.error(res.message); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
await BaseService.postN('/userw/staff/serviceHallListPage', searchFormList).then((res: any) => { |
|
|
|
if (res && res.code === 0) { |
|
|
|
let bizContent = res.data |
|
|
|
let data = bizContent.result || []; |
|
|
|
let list = [] as IObject[]; |
|
|
|
|
|
|
|
console.log(data + '---------==========---------'); |
|
|
|
|
|
|
|
|
|
|
|
data.map((item) => { |
|
|
|
list.push({ |
|
|
|
label: item.name, |
|
|
|
value: item.serviceHallId |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
if (selectPage.value.pageNo !== 1) { |
|
|
|
pageServiceHallList.value = [...pageServiceHallList.value, ...list] |
|
|
|
} else { |
|
|
|
pageServiceHallList.value = list |
|
|
|
} |
|
|
|
selectLoading.value = false; |
|
|
|
hasPage.value = bizContent.pageCount === selectPage.value.pageNo ? false : true; |
|
|
|
} else { |
|
|
|
selectLoading.value = false; |
|
|
|
ElMessage.error(res.message); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
// 加载更多 |
|
|
|
function handleLoadMore($event) { |
|
|
|
$event.stopPropagation() |
|
|
|
filterMethod(null, true) |
|
|
|
$event.stopPropagation() |
|
|
|
filterMethod(null, true) |
|
|
|
} |
|
|
|
|
|
|
|
defineExpose({ |
|
|
|
init |
|
|
|
init |
|
|
|
}); |
|
|
|
</script> |
|
|
|
<style lang="scss" scoped> |
|
|
|
.btn-wrap { |
|
|
|
position: absolute; |
|
|
|
bottom: 20px; |
|
|
|
right: 20px; |
|
|
|
text-align: right; |
|
|
|
} |
|
|
|
|
|
|
|
h4 { |
|
|
|
color: #303133; |
|
|
|
} |
|
|
|
|
|
|
|
::v-deep .el-upload { |
|
|
|
width: 100%; |
|
|
|
height: 100%; |
|
|
|
} |
|
|
|
|
|
|
|
::v-deep .el-upload .avatar-uploader-icon { |
|
|
|
width: 100%; |
|
|
|
height: 100%; |
|
|
|
} |
|
|
|
|
|
|
|
.avatar-uploader .avatar { |
|
|
|
width: 100%; |
|
|
|
height: 100%; |
|
|
|
display: block; |
|
|
|
} |
|
|
|
|
|
|
|
.btn-box { |
|
|
|
margin: 0 0 20px 120px; |
|
|
|
} |
|
|
|
</style> |