| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705 |
- <template>
- <div>
- <div style="padding: 10px 20px 10px 20px;border-bottom: 1px solid #dadada;">
- <el-page-header
- @back="onCancel"
- :content="payType == 'create' ? '创建账号' : '修改账号'"
- ></el-page-header>
- </div>
- <div class="formContainer">
- <el-form
- :model="form"
- ref="accountForm"
- label-position="right"
- label-width="180px"
- >
- <el-form-item
- label="分部"
- prop="organId"
- :rules="[
- { required: true, message: '请选择分部', trigger: 'change' }
- ]"
- >
- <el-select
- class="multiple"
- style="width: 180px !important"
- v-model.trim="form.organId"
- filterable
- clearable
- placeholder="请选择分部"
- >
- <el-option
- v-for="(item, index) in organList"
- :key="index"
- :label="item.name"
- :value="item.id"
- ></el-option>
- </el-select>
- </el-form-item>
- <el-card>
- <el-alert
- title="企业信息"
- :closable="false"
- type="warning"
- ></el-alert>
- <el-form-item
- label="公司名称"
- prop="name"
- :rules="[
- { required: true, message: '请输入公司名称', trigger: 'blur' }
- ]"
- >
- <el-input
- v-model="form.name"
- placeholder="请输入公司名称"
- ></el-input>
- </el-form-item>
- <el-form-item
- label="统一社会信用码"
- prop="socialCreditCode"
- :rules="[
- {
- required: true,
- message: '请输入统一社会信用码',
- trigger: 'blur'
- }
- ]"
- >
- <el-input
- v-model="form.socialCreditCode"
- placeholder="请输入统一社会信用码"
- ></el-input>
- </el-form-item>
- <el-form-item
- label="商户证件照片"
- prop="licenceUrl"
- :rules="[
- {
- required: true,
- message: '请上传商户证件照片',
- trigger: 'change'
- }
- ]"
- >
- <el-upload
- class="avatar-upload"
- ref="upload"
- :action="ossUploadUrl"
- :on-change="$event => handleChange($event, 'licenceUrl')"
- :on-remove="() => handleRemove('licenceUrl')"
- accept="image/*"
- :multiple="false"
- :limit="1"
- :auto-upload="false"
- >
- <el-button slot="trigger" type="primary" size="small"
- >选择文件</el-button
- >
- <div
- style="display: inline; padding-left: 20px"
- class="el-upload__tip"
- >
- 请上传商户证件照片。 最大限制为 9 M。
- </div>
- </el-upload>
- </el-form-item>
- <el-form-item
- label="开户许可证照片"
- prop="openAccountLicenceUrl"
- :rules="[
- {
- required: true,
- message: '请上传开户许可证照片',
- trigger: 'change'
- }
- ]"
- >
- <el-upload
- class="avatar-upload"
- ref="upload"
- :action="ossUploadUrl"
- :on-remove="() => handleRemove('openAccountLicenceUrl')"
- :on-change="
- $event => handleChange($event, 'openAccountLicenceUrl')
- "
- accept="image/*"
- :multiple="false"
- :limit="1"
- :auto-upload="false"
- >
- <el-button slot="trigger" type="primary" size="small"
- >选择文件</el-button
- >
- <div
- style="display: inline; padding-left: 20px"
- class="el-upload__tip"
- >
- 请上传开户许可证照片。 最大限制为 9 M。
- </div>
- </el-upload>
- </el-form-item>
- <el-form-item
- label="省市区"
- required
- prop="provCode"
- :rules="[
- {
- required: true,
- message: '请选择省市区',
- trigger: 'change'
- }
- ]"
- >
- <el-cascader
- placeholder="请选择省市区"
- style="width: 100%"
- :options="cityOptions"
- @change="changeCity"
- ></el-cascader>
- </el-form-item>
- <el-form-item
- label="详细地址"
- prop="address"
- :rules="[
- {
- required: true,
- message: '请选择省市区',
- trigger: 'blur'
- }
- ]"
- >
- <el-input v-model="form.address" placeholder="详细地址"></el-input>
- </el-form-item>
- </el-card>
- <el-card>
- <el-alert title="法人设置" :closable="false" type="warning">
- </el-alert>
- <el-form-item
- label="公司法人"
- prop="legalPerson"
- :rules="[
- {
- required: true,
- message: '请输入公司法人',
- trigger: 'blur'
- }
- ]"
- >
- <el-input
- v-model="form.legalPerson"
- placeholder="请输入公司法人"
- ></el-input>
- </el-form-item>
- <el-form-item
- label="公司法人手机号"
- prop="legalMp"
- :rules="[
- {
- required: true,
- message: '请输入公司法人手机号',
- trigger: 'blur'
- },
- {
- pattern: /^1[2-9][0-9]\d{8}$/,
- message: '请输入正确的手机号',
- trigger: 'blur'
- }
- ]"
- >
- <el-input
- v-model="form.legalMp"
- maxlength="11"
- placeholder="请输入公司法人手机号"
- ></el-input>
- </el-form-item>
- <el-form-item
- label="法人证件类型"
- prop="legalLicenceType"
- :rules="[
- {
- required: true,
- message: '请选择法人证件类型',
- trigger: 'change'
- }
- ]"
- >
- <el-select
- v-model="form.legalLicenceType"
- placeholder="请选择法人证件类型"
- >
- <el-option label="身份证" value="ID_CARD"></el-option>
- <el-option label="护照" value="PASSPORT"></el-option>
- <el-option
- label="港澳居民往来内地通行证"
- value="HM_VISITORPASS"
- ></el-option>
- </el-select>
- </el-form-item>
- <el-form-item
- label="法人身份证号"
- prop="legalCertId"
- :rules="[
- {
- required: true,
- message: '请输入法人身份证号',
- trigger: 'blur'
- }
- ]"
- >
- <el-input
- v-model="form.legalCertId"
- placeholder="请输入法人身份证号"
- ></el-input>
- </el-form-item>
- <el-form-item
- label="法人证件人像面照片"
- prop="legalLicenceFrontUrl"
- :rules="[
- {
- required: true,
- message: '请上传法人证件人像面照片',
- trigger: 'change'
- }
- ]"
- >
- <el-upload
- class="avatar-upload"
- ref="upload"
- :action="ossUploadUrl"
- :on-change="
- $event => handleChange($event, 'legalLicenceFrontUrl')
- "
- :on-remove="() => handleRemove('legalLicenceFrontUrl')"
- accept="image/*"
- :multiple="false"
- :limit="1"
- :auto-upload="false"
- >
- <el-button slot="trigger" type="primary" size="small"
- >选取文件</el-button
- >
- <div
- style="display: inline; padding-left: 20px"
- class="el-upload__tip"
- >
- 请上传法人证件人像面照片。 最大限制为9 M。
- </div>
- </el-upload>
- </el-form-item>
- <el-form-item
- label="法人证件非人像面照片"
- prop="legalLicenceBackUrl"
- :rules="[
- {
- required: true,
- message: '请上传法人证件非人像面照片',
- trigger: 'change'
- }
- ]"
- >
- <el-upload
- class="avatar-upload"
- ref="upload"
- :action="ossUploadUrl"
- :on-change="$event => handleChange($event, 'legalLicenceBackUrl')"
- :on-remove="() => handleRemove('legalLicenceBackUrl')"
- accept="image/*"
- :multiple="false"
- :limit="1"
- :auto-upload="false"
- >
- <el-button slot="trigger" type="primary" size="small"
- >选取文件</el-button
- >
- <div
- style="display: inline; padding-left: 20px"
- class="el-upload__tip"
- >
- 请上传法人证件非人像面照片。 最大限制为9 M。
- </div>
- </el-upload>
- </el-form-item>
- </el-card>
- <el-card>
- <el-alert title="联系人设置" :closable="false" type="warning">
- </el-alert>
- <el-form-item
- label="联系人姓名"
- prop="contactName"
- :rules="[
- {
- required: true,
- message: '请输入联系人姓名',
- trigger: 'blur'
- }
- ]"
- >
- <el-input
- v-model="form.contactName"
- placeholder="请输入联系人姓名"
- ></el-input>
- </el-form-item>
- <el-form-item
- label="联系人证件号码"
- prop="contactLicenseNo"
- :rules="[
- {
- required: true,
- message: '请输入联系人证件号码',
- trigger: 'blur'
- }
- ]"
- >
- <el-input
- v-model="form.contactLicenseNo"
- placeholder="请输入联系人证件号码"
- ></el-input>
- </el-form-item>
- <el-form-item
- label="联系人手机号码"
- prop="contactMobile"
- :rules="[
- {
- required: true,
- message: '请输入联系人手机号码',
- trigger: 'blur'
- },
- {
- pattern: /^1[2-9][0-9]\d{8}$/,
- message: '请输入正确的手机号',
- trigger: 'blur'
- }
- ]"
- >
- <el-input
- v-model="form.contactMobile"
- placeholder="请输入联系人手机号码"
- ></el-input>
- </el-form-item>
- <el-form-item
- label="联系人邮箱"
- prop="contactEmail"
- :rules="[
- {
- required: true,
- message: '请输入联系人邮箱',
- trigger: 'blur'
- }
- ]"
- >
- <el-input
- v-model="form.contactEmail"
- placeholder="请输入联系人邮箱"
- ></el-input>
- </el-form-item>
- </el-card>
- <el-card>
- <el-alert title="账户设置" :closable="false" type="warning">
- </el-alert>
- <el-form-item
- label="银行卡号"
- prop="cardNo"
- :rules="[
- {
- required: true,
- message: '请输入银行卡号',
- trigger: 'blur'
- }
- ]"
- >
- <el-input
- v-model="form.cardNo"
- placeholder="请输入银行卡号"
- ></el-input>
- </el-form-item>
- <el-form-item
- label="所属银行"
- prop="bankCode"
- :rules="[
- {
- required: true,
- message: '请选择所属银行',
- trigger: 'change'
- }
- ]"
- >
- <el-select
- v-model="form.bankCode"
- placeholder="请选择所属银行"
- filterable
- >
- <el-option
- v-for="(item, index) in backList"
- :key="index"
- :label="item.title"
- :value="item.value"
- ></el-option>
- </el-select>
- </el-form-item>
- <el-form-item
- label="银行账户类型"
- prop="bankAcctType"
- :rules="[
- {
- required: true,
- message: '请选择银行账户类型',
- trigger: 'change'
- }
- ]"
- >
- <el-select
- v-model="form.bankAcctType"
- placeholder="请选择银行账户类型"
- >
- <el-option
- label="单位结算卡"
- value="UNIT_SETTLEMENT_CARD"
- ></el-option>
- <el-option
- label="对公账户"
- value="ENTERPRISE_ACCOUNT"
- ></el-option>
- <el-option label="借记卡" value="DEBIT_CARD"></el-option>
- <el-option label="存折" value="PASSBOOK"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item>
- <el-button type="primary" @click="onSubmit('accountForm')"
- >确 定</el-button
- >
- <el-button @click="onCancel">取 消</el-button>
- </el-form-item>
- </el-card>
- </el-form>
- </div>
- </div>
- </template>
- <script>
- import { yizhifuJson, cityJson } from "../../utils/cityJson";
- import { yiBankJson } from "../../utils/bankJson";
- import { yeepayUpload, addSubMerchant, updateMember } from "./api.js";
- import { getToken, getTenantId } from "@/utils/auth";
- import { policy } from "@/api/appTenant";
- import { getEmployeeOrgan } from "@/api/buildTeam";
- export default {
- name: "AYePayAccount",
- props: {
- row: {
- type: Object,
- default: () => {}
- }
- },
- data() {
- return {
- payType: "create",
- backList: yiBankJson,
- cityList: cityJson,
- cityOptions: yizhifuJson,
- selectListCity: [],
- organList: [],
- headers: {
- Authorization: getToken()
- },
- fileList: [],
- files: null, // 上传对象
- id: null, // 编号
- form: {
- memberId: null,
- organId: null, // 分部
- name: null, // 公司名称
- socialCreditCode: null, // 统一社会信用码
- licenceUrl: null, // 商户证件照
- openAccountLicenceUrl: null, // 开户许可证照片
- legalPerson: null, // 公司法人
- legalMp: null, // 公司法人手机号
- legalLicenceType: null, // 法人证件类型
- legalCertId: null, // 法人身份证号
- legalLicenceFrontUrl: null, // 法人证件人像面照片
- legalLicenceBackUrl: null, // 法人证件非人像面照片
- address: null, // 详细地址
- contactName: null, // 联系人姓名
- contactLicenseNo: null, // 联系人证件号码
- contactMobile: null, // 联系人手机号码
- contactEmail: null, // 联系人邮箱
- cardNo: null, // 银行卡号
- bankCode: null, // 所属银行
- bankAcctType: null, // 银行账户类型
- provCode: null, // 省份
- areaCode: null, // 城市
- districtCode: null // 区县
- },
- ossUploadUrl: `/api-web/yeepay/upload`,
- dataObj: {
- multipartFile: ""
- }
- };
- },
- mounted() {
- console.log(this.row);
- this.__init();
- getEmployeeOrgan().then(res => {
- if (res.code == 200) {
- this.organList = res.data;
- }
- });
- },
- methods: {
- __init() {
- // this.payType = query.type;
- if (this.payType == "update") {
- const row = this.row;
- this.id = row.id;
- this.form = {
- organId: row.organId,
- memberId: row.memberId,
- name: row.name,
- legalPerson: row.legalPerson,
- legalMp: row.legalMp,
- legalCertId: row.legalCertId,
- cardNo: row.cardNo,
- bankCode: row.bankCode,
- provCode: row.provCode,
- areaCode: row.areaCode,
- socialCreditCode: row.socialCreditCode,
- address: row.address,
- bankAcctType: row.bankAcctType
- };
- // this.cityList.forEach(item => {
- // if (item.value == row.provCode) {
- // this.selectListCity = item.cities;
- // }
- // });
- } else if (this.payType == "create") {
- this.$refs["accountForm"].resetFields();
- }
- },
- async onSubmit(formName) {
- this.$refs[formName].validate(valid => {
- if (valid) {
- const form = this.form;
- let formData = new FormData();
- Object.entries(form).forEach(item => {
- formData.append(item[0], item[1]);
- });
- if (this.payType == "create") {
- addSubMerchant(formData).then(res => {
- if (res.code == 200) {
- this.$message.success("保存成功");
- this.onCancel();
- } else {
- this.$message.error(res.msg);
- }
- });
- }
- // else if (this.payType == "update") {
- // formData.append("id", this.id);
- // updateMember(formData).then(res => {
- // if (res.code == 200) {
- // this.$message.success("保存成功");
- // this.onCancel();
- // } else {
- // this.$message.error(res.msg);
- // }
- // });
- // }
- } else {
- this.$nextTick(() => {
- let isError = document.getElementsByClassName("is-error");
- isError[0].scrollIntoView({
- block: "center",
- behavior: "smooth"
- });
- });
- return false;
- }
- });
- },
- successed(response, file, fileList) {
- this.uploading = false;
- let url = this.ossUploadUrl + "/" + file.raw.key;
- if (url) {
- this.uploaded.push({
- url,
- name: file.name.split(".").shift(),
- clientShow: "YES"
- });
- } else {
- this.$message.error(res.data?.message || res.msg || "上传失败");
- }
- console.log(response, file, fileList);
- },
- async handleChange(file, form_key) {
- console.log("🚀 ~ file, key:", file, form_key);
- const isLt2M = file.size / 1024 / 1024 < 9;
- if (!isLt2M) {
- this.$message.error(`上传文件大小不能超过 ${9}MB!`);
- this.fileList = [];
- return;
- }
- console.log("🚀 ~ file:", file);
- let formData = new FormData();
- formData.append("multipartFile", file.raw);
- const res = await yeepayUpload(formData);
- console.log("🚀 ~ res:", res, form_key);
- if (res.data) {
- this.$message.success(`上传成功`);
- } else {
- this.$message.error(`上传失败`);
- }
- this.form[form_key] = res.data;
- this.$refs["accountForm"].validateField(form_key);
- return true;
- },
- handleRemove(form_key) {
- this.form[form_key] = null;
- },
- onCancel() {
- this.files = null;
- this.fileList = [];
- this.$emit("close");
- },
- /** 省市区改变 */
- changeCity(value) {
- console.log(value);
- this.form.provCode = value[0];
- this.form.areaCode = value[1];
- this.form.districtCode = value[2];
- }
- }
- };
- </script>
- <style lang="scss" scoped>
- .el-input,
- .el-textarea,
- .el-select {
- width: 100% !important;
- }
- .el-button--primary {
- color: #fff;
- &:hover,
- &:active,
- &:focus {
- color: #fff;
- }
- }
- .formContainer {
- min-width: 600px;
- height: calc(100vh - 45px);
- overflow-y: auto;
- padding: 10px;
- .el-alert,
- .el-card {
- margin-bottom: 20px;
- }
- }
- </style>
|