| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422 |
- <template>
- <!-- 平安客户资料 -->
- <a-modal class="add-custom" :title="isAdd() ? '新增客户资料' : '修改客户资料'" v-model:visible="visible" @cancel="cancel" centered :maskClosable="false" v-if="isPingAnOem()" width="890px">
- <template #footer>
- <a-button key="submit" class="cancelBtn" :loading="loading" :disabled="loading" @click="submit(1)">完成 </a-button>
- </template>
- <a-form class="inlineForm" ref="formRef" :model="formState" :rules="rules">
- <a-row :gutter="24">
- <a-col :span="12">
- <a-form-item label="客户类型" name="userinfotype">
- <a-select class="typeSelect" style="width: 200px" v-model:value="formState.userinfotype" placeholder="请选择客户类型">
- <a-select-option value="1"> 个人 </a-select-option>
- <a-select-option value="2"> 企业 </a-select-option>
- </a-select>
- </a-form-item>
- </a-col>
- <template v-if="!isPersonal()">
- <a-col :span="12">
- <a-form-item label="企业名称" name="customername">
- <a-input class="dialogInput" v-model:value="formState.customername" style="width: 200px" placeholder="请输入企业名称" />
- </a-form-item>
- </a-col>
- </template>
- <template v-else>
- <a-col :span="12">
- <a-form-item label="姓名" name="username">
- <a-input class="dialogInput" style="width: 200px" v-model:value="formState.username" placeholder="请输入姓名" />
- </a-form-item>
- </a-col>
- </template>
- <a-col :span="12">
- <a-form-item label="点价联系人" name="contactname">
- <a-input class="dialogInput" style="width: 200px" v-model:value="formState.contactname" placeholder="请输入联系人" />
- </a-form-item>
- </a-col>
- <a-col :span="12">
- <a-form-item label="联系人手机号" name="mobilephone">
- <a-input class="dialogInput" style="width: 200px" v-model:value="formState.mobilephone" placeholder="请输入联系人手机号" />
- </a-form-item>
- </a-col>
- </a-row>
- </a-form>
- </a-modal>
- <!-- 其他项目客户资料 -->
- <a-modal class="add-custom" v-else :title="isAdd() ? '新增客户资料' : '修改客户资料'" v-model:visible="visible" @cancel="cancel" centered :maskClosable="false" width="890px">
- <template #footer>
- <a-button key="submit" class="cancelBtn" :loading="loading" :disabled="loading" @click="submit(1)">保存草稿 </a-button>
- <a-button key="submit" type="primary" :loading="loading" :disabled="loading" @click="submit(2)">提交审核 </a-button>
- </template>
- <a-form class="inlineForm" ref="formRef" :model="formState" :rules="rules">
- <a-row :gutter="24">
- <template v-if="isQianHaiJin()">
- <a-col :span="12">
- <a-form-item label="所属机构" name="areaid">
- <a-select class="typeSelect" style="width: 200px" v-model:value="formState.areaid" placeholder="请选择所属机构">
- <a-select-option v-for="item in areaList" :key="item.userid">
- {{ item.accountname }}
- </a-select-option>
- </a-select>
- </a-form-item>
- </a-col>
- <a-col :span="12">
- <a-form-item label="所属客户经理" name="teammanageruserid">
- <a-select class="typeSelect" style="width: 200px" v-model:value="formState.teammanageruserid" placeholder="请选择所属客户经理">
- <a-select-option v-for="item in brokerList" :key="item.userid">
- {{ item.customername }}
- </a-select-option>
- </a-select>
- </a-form-item>
- </a-col>
- <a-col :span="12" v-if="isAdd()">
- <a-form-item label="登录账号" name="logincode">
- <a-input class="dialogInput" v-model:value="formState.logincode" style="width: 200px" placeholder="请选择登录账号" />
- </a-form-item>
- </a-col>
- <a-col :span="12" v-if="isAdd()">
- <a-form-item label="登录密码" name="loginpwd">
- <a-input class="dialogInput" v-model:value="formState.loginpwd" style="width: 200px" placeholder="请选择登录密码" />
- </a-form-item>
- </a-col>
- </template>
- <a-col :span="12">
- <a-form-item label="客户类型" name="userinfotype">
- <a-select class="typeSelect" style="width: 200px" v-model:value="formState.userinfotype" placeholder="请选择客户类型">
- <a-select-option value="1"> 个人 </a-select-option>
- <a-select-option value="2"> 企业 </a-select-option>
- </a-select>
- </a-form-item>
- </a-col>
- <template v-if="!isPersonal()">
- <a-col :span="12">
- <a-form-item label="企业名称" name="customername">
- <a-input class="dialogInput" v-model:value="formState.customername" style="width: 200px" placeholder="请输入企业名称" />
- </a-form-item>
- </a-col>
- <a-col :span="12">
- <a-form-item label="企业简称" name="nickname">
- <a-input class="dialogInput" style="width: 200px" v-model:value="formState.nickname" placeholder="请输入企业简称" />
- </a-form-item>
- </a-col>
- <a-col :span="12">
- <a-form-item label="证件类型" name="cardtype">
- <a-select class="inlineFormSelect" v-model:value="formState.cardtype" style="width: 200px" placeholder="请选择证件类型">
- <a-select-option :value="item.enumitemname" v-for="item in cardTypeList" :key="item.autoid">
- {{ item.enumdicname }}
- </a-select-option>
- </a-select>
- </a-form-item>
- </a-col>
- <a-col :span="12">
- <a-form-item label="法定代表人" name="legalpersonname">
- <a-input class="dialogInput" style="width: 200px" v-model:value="formState.legalpersonname" placeholder="请输入法定代表人" />
- </a-form-item>
- </a-col>
- <a-col :span="12">
- <a-form-item label="证件号码" name="cardnum">
- <a-input class="dialogInput" style="width: 200px" v-model:value="formState.cardnum" placeholder="请输入证件号码" />
- </a-form-item>
- </a-col>
- <a-col :span="12">
- <a-form-item label="纳税人识别号" name="taxpayernum">
- <a-input class="dialogInput" style="width: 200px" v-model:value="formState.taxpayernum" placeholder="请输入纳税人识别号" />
- </a-form-item>
- </a-col>
- <a-col :span="12">
- <a-form-item label="营业执照">
- <UploadImg :visible="visible" :imgList="attachmentImgList" @upload="attachmentUpLoad" />
- </a-form-item>
- </a-col>
- <a-col :span="12">
- <a-form-item label="联系人" name="contactname">
- <a-input class="dialogInput" style="width: 200px" v-model:value="formState.contactname" placeholder="请输入联系人" />
- </a-form-item>
- </a-col>
- <a-col :span="12">
- <a-form-item label="联系人手机号" name="mobilephone">
- <a-input class="dialogInput" style="width: 200px" v-model:value="formState.mobilephone" placeholder="请输入联系人手机号" />
- </a-form-item>
- </a-col>
- <a-col :span="12">
- <a-form-item label="联系电话" name="telphone">
- <a-input class="dialogInput" style="width: 200px" v-model:value="formState.telphone" placeholder="请输入联系电话" />
- </a-form-item>
- </a-col>
- </template>
- <template v-else>
- <a-col :span="12">
- <a-form-item label="姓名" name="username">
- <a-input class="dialogInput" style="width: 200px" v-model:value="formState.username" placeholder="请输入姓名" />
- </a-form-item>
- </a-col>
- <a-col :span="12">
- <a-form-item label="身份证号码" name="cardnum">
- <a-input class="dialogInput" style="width: 200px" v-model:value="formState.cardnum" placeholder="请输入身份证号码" />
- </a-form-item>
- </a-col>
- <a-col :span="12">
- <a-form-item label="手机号码" name="mobilephone">
- <a-input class="dialogInput" style="width: 200px" v-model:value="formState.mobilephone" placeholder="请输入手机号码" />
- </a-form-item>
- </a-col>
- <a-col :span="12">
- <a-form-item label="身份证正面照" name="cardbackphotourl">
- <UploadImg :visible="visible" :imgList="cardfrontImgList" @upload="cardfrontphotourlUpLoad" />
- </a-form-item>
- </a-col>
- <a-col :span="12">
- <a-form-item label="邮箱" name="email">
- <a-input class="dialogInput" style="width: 200px" v-model:value="formState.email" placeholder="请输入邮箱" />
- </a-form-item>
- </a-col>
- <a-col :span="12">
- <a-form-item label="身份证反面照" name="cardfrontphotourl">
- <UploadImg :visible="visible" :imgList="cardbackImgList" @upload="cardbackphotourlUpLoad" />
- </a-form-item>
- </a-col>
- <a-col :span="12">
- <a-form-item label="联系电话" name="telphone">
- <a-input class="dialogInput" style="width: 200px" v-model:value="formState.telphone" placeholder="请输入联系电话" />
- </a-form-item>
- </a-col>
- <a-col :span="12" v-if="isQianHaiJin()">
- <a-form-item label="性别" name="sex">
- <a-select class="inlineFormSelect" v-model:value="formState.sex" style="width: 200px" placeholder="请选择性别">
- <a-select-option :value="item.id" v-for="item in sexList" :key="item.id">
- {{ item.value }}
- </a-select-option>
- </a-select>
- <!-- <a-input class="dialogInput"
- style="width: 200px"
- v-model:value="formState.sex"
- placeholder="请选择性别" /> -->
- </a-form-item>
- </a-col>
- <a-col :span="12" v-if="isQianHaiJin()">
- <a-form-item label="生日" name="birthday">
- <a-date-picker v-model:value="formState.birthday" :allowClear="false" style="width: 200px" placeholder="请选择生日" class="commonDatePicker" />
- <!-- <a-input class="dialogInput"
- style="width: 200px"
- v-model:value="formState.birthday"
- placeholder="请选择性别" /> -->
- </a-form-item>
- </a-col>
- <a-col :span="12">
- <a-form-item> </a-form-item>
- </a-col>
- </template>
- <a-col :span="24">
- <a-form-item label="通讯地址">
- <a-select class="inlineFormSelect" style="width: 205px" v-model:value="formState.provinceid" @change="getCityList" placeholder="请选择省">
- <a-select-option v-for="item in provinceList" :key="item.autoid" :value="item.autoid">
- {{ item.divisionname }}
- </a-select-option>
- </a-select>
- <a-select class="inlineFormSelect ml9" style="width: 205px" v-model:value="formState.cityid" @change="getDistrictList" placeholder="请选择市">
- <a-select-option v-for="item in cityList" :key="item.autoid" :value="item.autoid">
- {{ item.divisionname }}
- </a-select-option>
- </a-select>
- <a-select class="inlineFormSelect ml9" v-model:value="formState.districtid" style="width: 205px" placeholder="请选择县(区)">
- <a-select-option v-for="item in districtList" :key="item.autoid" :value="item.autoid">
- {{ item.divisionname }}
- </a-select-option>
- </a-select>
- </a-form-item>
- </a-col>
- <a-col :span="24">
- <a-form-item label=" " name="cardaddress">
- <a-input class="dialogInput" style="width: 635px" v-model:value="formState.cardaddress" placeholder="请输入详细地址" />
- </a-form-item>
- </a-col>
- <a-col :span="24">
- <a-form-item label="备注" name="remark">
- <a-input class="dialogInput" style="width: 635px" v-model:value="formState.remark" placeholder="请输入备注" />
- </a-form-item>
- </a-col>
- </a-row>
- </a-form>
- </a-modal>
- </template>
- <script lang="ts">
- import UploadImg from '@/common/components/uploadImg/index.vue';
- import { isPingAnOem, isQianHaiJin } from '@/common/config/projectName';
- import { requestResultLoadingAndInfo } from '@/common/methods/request/resultInfo';
- import { validateAction } from '@/common/setup/form';
- import { _closeModal } from '@/common/setup/modal/modal';
- import { getUploadImg } from '@/common/setup/upload';
- import { getUserId } from '@/services/bus/user';
- import { getAddress } from '@/services/go/adress';
- import { AllEnums } from '@/services/go/commonService/interface';
- import { QhjCustomer } from '@/services/go/ermcp/qhj/interface';
- import { addCustomerInfoOperate } from '@/services/proto/accountinfo';
- import { CustomerInfoOperateReq } from '@/services/proto/accountinfo/interface';
- import { mergeTwoObj } from '@/utils/objHandle';
- import { toBase64String } from '@/utils/storage/base64';
- import { defineComponent, PropType, ref } from 'vue';
- import { FormState } from './interface';
- import { getCardType, handleAreaList, handleBrokerApplyt, handleForm } from './setup';
- import moment, { Moment } from 'moment';
- export default defineComponent({
- name: 'add-custom',
- emits: ['cancel', 'update'],
- components: { UploadImg },
- props: {
- selectedRow: {
- default: {},
- type: Object as PropType<QhjCustomer>,
- },
- },
- setup(props, context) {
- // 控制关闭弹窗
- const { visible, cancel } = _closeModal(context);
- const loading = ref<boolean>(false);
- // 证件类型
- const cardTypeList = ref<AllEnums[]>(getCardType());
- // 表单
- const { formRef, formState, rules } = handleForm();
- // 地址
- const { cityList, districtList, provinceList, getCityList, getDistrictList } = getAddress();
- // 营业执照
- const { getFirstImg: getAttachmentImg, uploadImgAction: attachmentUpLoad, uploadImgList: attachmentImgList, handleImg: attachmentHandle } = getUploadImg();
- // 背面证件照地址
- const { getFirstImg: getBackImg, uploadImgAction: cardbackphotourlUpLoad, uploadImgList: cardbackImgList, handleImg: cardbackHandle } = getUploadImg();
- // 正面证件照地址
- const { getFirstImg: getFrontImg, uploadImgAction: cardfrontphotourlUpLoad, uploadImgList: cardfrontImgList, handleImg: cardfrontHandle } = getUploadImg();
- //查询所属机构列表
- const { areaList, getAreaList } = handleAreaList();
- // 查询客户经理
- const { brokerList, getBrokerApply } = handleBrokerApplyt();
- if (isQianHaiJin()) {
- Promise.all([getAreaList(loading), getBrokerApply(loading)]);
- }
- // 性别
- const sexList = [
- { id: 0, value: '女' },
- { id: 1, value: '男' },
- ];
- function isPersonal(): boolean {
- return formState.userinfotype === '1';
- }
- const isAdd = () => !props.selectedRow.userinfotype;
- const isN = (value: string) => value === '--';
- // 修改 客户资料的逻辑
- if (!isAdd()) {
- console.log('修改::::::::::::::::::::::::::');
- mergeTwoObj(formState, props.selectedRow);
- formState.userinfotype = formState.userinfotype.toString();
- if (isPersonal()) {
- formState.username = props.selectedRow.customername;
- } else {
- formState.username = props.selectedRow.username;
- }
- const { provinceid, cityid, address, mobile, memberuserid, brokerid, cardfrontphotourl, cardbackphotourl } = props.selectedRow;
- formState.cardaddress = isN(address) ? '' : address;
- formState.mobilephone = mobile;
- formState.areaid = memberuserid;
- formState.teammanageruserid = brokerid ? brokerid : undefined;
- provinceid ? getCityList(provinceid) : (formState.provinceid = undefined);
- cityid ? getDistrictList(cityid) : ((formState.cityid = undefined), (formState.districtid = undefined));
- if (cardfrontphotourl && !isN(cardfrontphotourl)) {
- // 营业执照
- attachmentImgList.value = attachmentHandle(cardfrontphotourl);
- }
- if (cardbackphotourl && !isN(cardbackphotourl)) {
- // 背面证件照地址
- cardbackImgList.value = cardbackHandle(cardbackphotourl);
- }
- if (cardbackphotourl && !isN(cardbackphotourl)) {
- // 正面证件照地址
- cardfrontImgList.value = cardfrontHandle(cardbackphotourl);
- }
- }
- function submit(OperateType: 1 | 2) {
- validateAction<FormState>(formRef, formState).then((param) => {
- console.log(props.selectedRow);
- const reqParam: CustomerInfoOperateReq = {
- operatetype: isAdd() ? 1 : 2, // 1: 新增 2:修改
- userid: getUserId(), // 必填
- areaid: getUserId(),
- userinfotype: Number(param.userinfotype),
- username: Number(param.userinfotype) === 1 ? param.username : param.customername,
- userstate: OperateType, // 1: 保存草稿 2: 新增
- // 以上必填
- cardtype: (param.cardtype as number) !== undefined ? (param.cardtype as number) : 0, // 证件类型
- cardnum: param.cardnum, // 证件号码
- nickname: param.nickname, // 昵称
- remark: param.remark, // 备注
- mobilephone: param.mobilephone, // 手机号码
- telphone: param.telphone, // 电话
- cardfrontphotourl: isPersonal() ? getFrontImg() : getAttachmentImg(), // 正面照片
- cardbackphotourl: isPersonal() ? getBackImg() : '', // 背面证件照地址
- ipaddress: param.cardaddress, // 证件地址
- cityid: (param.cityid as number) !== undefined ? (param.cityid as number) : 0, //城市
- districtid: (param.districtid as number) !== undefined ? (param.districtid as number) : 0, // 地区
- // countryid: param.,9
- provinceid: (param.provinceid as number) !== undefined ? (param.provinceid as number) : 0, //省
- contactname: param.contactname, // 联系人
- legalpersonname: param.legalpersonname, // 法人姓名(企业)
- taxpayernum: param.taxpayernum, // 纳税人识别号
- email: param.email, // email
- proxystatementurl: '',
- };
- if (isQianHaiJin()) {
- // 千海金
- reqParam.areaid = param.areaid as number;
- reqParam.logincode = param.logincode;
- reqParam.teammanageruserid = param.teammanageruserid ? param.teammanageruserid : 0;
- if (isPersonal()) {
- reqParam.sex = param.sex;
- if (param.birthday) {
- reqParam.birthday = moment(param.birthday).format('YYYY-MM-DD');
- }
- }
- reqParam.loginpwd = toBase64String(toBase64String(param.loginpwd));
- reqParam.userstate = 2;
- }
- debugger;
- requestResultLoadingAndInfo(addCustomerInfoOperate, reqParam, loading, OperateType === 1 ? ['保存草稿成功', '保存草稿失败:'] : ['新增客户资料成功', '新增客户资料失败:']).then(() => {
- cancel(true);
- });
- });
- }
- return {
- formState,
- rules,
- formRef,
- cardTypeList,
- isPersonal,
- visible,
- cancel,
- submit,
- loading,
- cityList,
- districtList,
- provinceList,
- areaList,
- brokerList,
- attachmentImgList,
- cardbackImgList,
- cardfrontImgList,
- sexList,
- getCityList,
- getDistrictList,
- attachmentUpLoad,
- cardbackphotourlUpLoad,
- cardfrontphotourlUpLoad,
- isPingAnOem,
- isQianHaiJin,
- isAdd,
- };
- },
- });
- </script>
|