123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567 |
- <!-- -->
- <template>
- <div class="m-container">
- <h2>
- <el-page-header
- @back="onCancel"
- :content="payType == 'create' ? '创建账号' : '修改账号'"
- ></el-page-header>
- </h2>
- <div class="m-core" style="overflow: hidden">
- <el-col :span="12" :lg="14" :md="20" :sm="20" :xs="24">
- <el-form
- :model="form"
- :rules="rules"
- ref="accountForm"
- label-position="right"
- label-width="180px"
- >
- <el-form-item label="商户号" prop="memberId">
- <el-input
- v-model="form.memberId"
- :disabled="payType == 'update' ? true : false"
- placeholder="请输入商户号"
- ></el-input>
- </el-form-item>
- <el-form-item label="公司名称" prop="name">
- <el-input
- v-model="form.name"
- placeholder="请输入公司名称"
- ></el-input>
- </el-form-item>
- <el-form-item label="公司法人" prop="legalPerson">
- <el-input
- v-model="form.legalPerson"
- placeholder="请输入公司法人"
- ></el-input>
- </el-form-item>
- <el-form-item label="公司法人手机号" prop="legalMp">
- <el-input
- v-model="form.legalMp"
- maxlength="11"
- placeholder="请输入公司法人手机号"
- ></el-input>
- </el-form-item>
- <el-form-item label="法人身份证号" prop="legalCertId">
- <el-input
- v-model="form.legalCertId"
- placeholder="请输入法人身份证号"
- ></el-input>
- </el-form-item>
- <el-form-item label="身份证有效期" prop="legalCertIdExpires">
- <el-date-picker
- v-model="form.legalCertIdExpires"
- :picker-options="{ firstDayOfWeek: 1 }"
- value-format="yyyyMMdd"
- type="date"
- placeholder="请选择身份证有效期"
- >
- </el-date-picker>
- </el-form-item>
- <el-form-item label="银行卡号" prop="cardNo">
- <el-input
- v-model="form.cardNo"
- placeholder="请输入银行卡号"
- ></el-input>
- </el-form-item>
- <el-form-item label="所属银行" prop="bankCode">
- <el-select v-model="form.bankCode" placeholder="请选择所属银行">
- <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">
- <el-select
- v-model="form.bankAcctType"
- placeholder="请选择银行账户类型"
- >
- <el-option label="对公" value="1"></el-option>
- <el-option label="对私" value="2"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="银行卡对应的户名" prop="cardName">
- <el-input
- v-model="form.cardName"
- placeholder="请输入银行卡对应的户名"
- ></el-input>
- </el-form-item>
- <el-form-item label="省市" required>
- <el-row>
- <el-col :span="12">
- <el-form-item prop="provCode" style="margin-bottom: 0">
- <el-select
- v-model="form.provCode"
- style="width: 98% !important"
- @change="onProvChange"
- placeholder="请选择省份"
- >
- <el-option
- v-for="(item, index) in cityList"
- :key="index"
- :label="item.title"
- :value="item.value"
- ></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item prop="areaCode" style="margin-bottom: 0">
- <el-select
- v-model="form.areaCode"
- style="width: 100% !important"
- placeholder="请选择城市"
- >
- <el-option
- v-for="(item, index) in selectListCity"
- :key="index"
- :label="item.title"
- :value="item.value"
- ></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form-item>
- <el-form-item label="统一社会信用码" prop="socialCreditCode">
- <el-input
- v-model="form.socialCreditCode"
- placeholder="请输入统一社会信用码"
- ></el-input>
- </el-form-item>
- <el-form-item
- label="统一社会信用码有效期"
- prop="socialCreditCodeExpires"
- >
- <el-date-picker
- v-model="form.socialCreditCodeExpires"
- :picker-options="{ firstDayOfWeek: 1 }"
- value-format="yyyyMMdd"
- type="date"
- placeholder="请选择统一社会信用码有效期"
- >
- </el-date-picker>
- </el-form-item>
- <el-form-item label="经营范围" prop="businessScope">
- <!-- <el-input v-model="form.businessScope" placeholder="请输入经营范围"></el-input> -->
- <el-input
- type="textarea"
- :rows="3"
- v-model="form.businessScope"
- placeholder="请输入经营范围"
- ></el-input>
- </el-form-item>
- <el-form-item label="公司地址" prop="address">
- <el-input
- v-model="form.address"
- placeholder="请输入公司地址"
- ></el-input>
- </el-form-item>
- <el-form-item label="证照文件" prop="multipartFile">
- <template slot="label">
- 证照文件
- <el-tooltip placement="top" popper-class="mTooltip">
- <div slot="content">
- 内容须包含三证合一证件照、法人身份证正面照、法人身份证反面照、开户银行许可证照。
- 压缩 zip包后上传。最大限制为 9 M。
- <!-- 最大限制为 9 M。 -->
- </div>
- <i
- class="el-icon-question micon el-tooltip"
- style="
- font-size: 18px;
- color: #f56c6c;
- top: 2px;
- position: relative;
- "
- ></i>
- </el-tooltip>
- </template>
- <!-- <el-input type="file" class="uploadFile" v-model="form.multipartFile"></el-input> -->
- <el-upload
- class="avatar-upload"
- ref="upload"
- action="/api-web/uploadFile"
- :headers="headers"
- :on-preview="handlePreview"
- :on-remove="handleRemove"
- :on-change="handleChange"
- :file-list="fileList"
- accept=".zip"
- :multiple="false"
- :limit="1"
- :auto-upload="false"
- >
- <el-button slot="trigger" type="primary">选取文件</el-button>
- <!-- ,且不超过500kb -->
- <div
- slot="tip"
- style="display: inline; padding-left: 20px"
- class="el-upload__tip"
- >
- 只能上传一个文件
- </div>
- </el-upload>
- <!-- <el-upload class="avatar-uploader"
- action="/api-web/uploadFile"
- :headers="headers"
- :show-file-list="false"
- :on-success="handleAvatarSuccess"
- :before-upload="beforeAvatarUpload">
- <img v-if="form.multipartFile"
- :src="form.coverImg"
- class="avatar" />
- <i v-else
- class="el-icon-plus avatar-uploader-icon"></i>
- </el-upload> -->
- </el-form-item>
- <el-form-item label="邮编" prop="zipCode">
- <el-input
- v-model="form.zipCode"
- placeholder="请输入邮编"
- ></el-input>
- </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-form>
- </el-col>
- </div>
- </div>
- </template>
- <script>
- import { cityJson } from "../../utils/cityJson";
- import { bankJson } from "../../utils/bankJson";
- import { getToken } from "@/utils/auth";
- import load from "@/utils/loading";
- import { createMember, updateMember } from "./api.js";
- import { isvalidPhone } from "@/utils/validate";
- let validPhone = (rule, value, callback) => {
- if (!value) {
- callback(new Error("请输入公司法人手机号"));
- } else if (!isvalidPhone(value)) {
- callback(new Error("请输入正确的11位手机号码"));
- } else {
- callback();
- }
- };
- export default {
- name: "ADaPayAccount",
- data() {
- const query = this.$route.query;
- return {
- payType: query.type,
- row: query.row ? JSON.parse(query.row) : {},
- backList: bankJson,
- cityList: cityJson,
- selectListCity: [],
- headers: {
- Authorization: getToken(),
- },
- fileList: [],
- files: null, // 上传对象
- id: null, // 编号
- form: {
- memberId: null,
- name: null,
- legalPerson: null,
- legalMp: null,
- legalCertId: null,
- legalCertIdExpires: null,
- cardNo: null,
- bankCode: null,
- provCode: null,
- areaCode: null,
- socialCreditCode: null,
- socialCreditCodeExpires: null,
- businessScope: null,
- address: null,
- multipartFile: null,
- zipCode: null,
- bankAcctType: null,
- cardName: null,
- },
- rules: {
- memberId: [
- { required: true, message: "请输入商户号", trigger: "blur" },
- ],
- name: [{ required: true, message: "请输入公司名称", trigger: "blur" }],
- legalPerson: [
- { required: true, message: "请输入公司法人", trigger: "blur" },
- ],
- legalMp: [
- {
- type: "number",
- required: true,
- validator: validPhone,
- trigger: "blur",
- },
- ],
- legalCertId: [
- { required: true, message: "请输入法人身份证号", trigger: "blur" },
- ],
- legalCertIdExpires: [
- { required: true, message: "请选择身份证有效期", trigger: "change" },
- ],
- cardNo: [
- { required: true, message: "请输入银行卡号", trigger: "blur" },
- ],
- bankCode: [
- { required: true, message: "请选择所属银行", trigger: "change" },
- ],
- provCode: [
- { required: true, message: "请选择省份", trigger: "change" },
- ],
- areaCode: [
- { required: true, message: "请选择城市", trigger: "change" },
- ],
- socialCreditCode: [
- { required: true, message: "请输入统一社会信用码", trigger: "blur" },
- ],
- socialCreditCodeExpires: [
- {
- required: true,
- message: "请选择统一社会信用码有效期",
- trigger: "change",
- },
- ],
- businessScope: [
- { required: true, message: "请输入经营范围", trigger: "blur" },
- ],
- address: [
- { required: true, message: "请输入公司地址", trigger: "blur" },
- ],
- multipartFile: [
- { required: true, message: "请上传证照文件", trigger: "change" },
- ],
- zipCode: [{ required: true, message: "请输入邮编", trigger: "blur" }],
- cardName: [
- {
- required: true,
- message: "请输入银行卡对应的户名",
- trigger: "blur",
- },
- ],
- bankAcctType: [
- {
- required: true,
- message: "银行账户类型",
- trigger: "blur",
- },
- ],
- },
- };
- },
- mounted() {
- this.__init();
- },
- methods: {
- __init() {
- const query = this.$route.query;
- this.payType = query.type;
- this.row = query.row ? JSON.parse(query.row) : {};
- this.files = null;
- this.fileList = [];
- this.form.multipartFile = null;
- if (this.payType == "update") {
- const row = this.row;
- this.id = row.id;
- this.form = {
- memberId: row.memberId,
- name: row.name,
- legalPerson: row.legalPerson,
- legalMp: row.legalMp,
- legalCertId: row.legalCertId,
- legalCertIdExpires: row.legalCertIdExpires,
- cardNo: row.cardNo,
- bankCode: row.bankCode,
- provCode: row.provCode,
- areaCode: row.areaCode,
- socialCreditCode: row.socialCreditCode,
- socialCreditCodeExpires: row.socialCreditCodeExpires,
- businessScope: row.businessScope,
- address: row.address,
- multipartFile: row.multipartFile,
- zipCode: row.zipCode,
- bankAcctType: row.bankAcctType,
- cardName: row.cardName,
- };
- this.cityList.forEach((item) => {
- if (item.value == row.provCode) {
- this.selectListCity = item.cities;
- }
- });
- } else if (this.payType == "create") {
- // this.form = {
- // memberId: null,
- // name: null,
- // legalPerson: null,
- // legalMp: null,
- // legalCertId: null,
- // legalCertIdExpires: null,
- // cardNo: null,
- // bankCode: null,
- // provCode: null,
- // areaCode: null,
- // socialCreditCode: null,
- // socialCreditCodeExpires: null,
- // businessScope: null,
- // address: null,
- // multipartFile: null,
- // zipCode: null
- // }
- this.$refs["accountForm"].resetFields();
- }
- },
- async onSubmit(formName) {
- this.$refs[formName].validate((valid) => {
- if (valid) {
- const form = this.form;
- let formData = new FormData();
- formData.append("memberId", form.memberId);
- formData.append("name", form.name);
- formData.append("legalPerson", form.legalPerson);
- formData.append("legalMp", form.legalMp);
- formData.append("legalCertId", form.legalCertId);
- formData.append("legalCertIdExpires", form.legalCertIdExpires);
- formData.append("cardNo", form.cardNo);
- formData.append("bankCode", form.bankCode);
- formData.append("provCode", form.provCode);
- formData.append("areaCode", form.areaCode);
- formData.append("socialCreditCode", form.socialCreditCode);
- formData.append(
- "socialCreditCodeExpires",
- form.socialCreditCodeExpires
- );
- formData.append("businessScope", form.businessScope);
- formData.append("address", form.address);
- formData.append("multipartFile", form.multipartFile);
- formData.append("zipCode", form.zipCode);
- formData.append("bankAcctType", form.bankAcctType);
- formData.append("cardName", form.cardName);
- if (this.payType == "create") {
- createMember(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;
- }
- });
- },
- handleChange(file) {
- console.log(file);
- const isLt2M = file.size / 1024 / 1024 < 9;
- if (!isLt2M) {
- this.$message.error(`上传文件大小不能超过 ${9}MB!`);
- this.fileList = [];
- return;
- }
- this.files = file;
- this.form.multipartFile = file.raw;
- this.$refs["accountForm"].validateField("multipartFile");
- },
- handleRemove(file, fileList) {
- this.files = null;
- this.form.multipartFile = null;
- },
- handlePreview(file) {
- // (file);
- },
- onProvChange(value) {
- this.form.areaCode = null;
- this.cityList.forEach((item) => {
- if (item.value == value) {
- this.selectListCity = item.cities;
- }
- });
- },
- onCancel() {
- this.files = null;
- this.fileList = [];
- this.form.multipartFile = null;
- this.$store.dispatch("delVisitedViews", this.$route);
- this.$router.push({
- path: "/sysBasics/adapayManager",
- });
- },
- },
- };
- </script>
- <style lang='scss' scoped>
- .el-input,
- .el-textarea,
- .el-select {
- width: 100% !important;
- }
- .el-button--primary {
- color: #fff;
- &:hover,
- &:active,
- &:focus {
- color: #fff;
- }
- }
- /deep/.avatar-uploader {
- .el-upload {
- border: 1px dashed #d9d9d9;
- border-radius: 6px;
- cursor: pointer;
- position: relative;
- overflow: hidden;
- &:hover {
- border-color: #409eff;
- }
- }
- }
- .uploadFile {
- /deep/.el-input__inner {
- padding: 0;
- height: 40px;
- line-height: 32px;
- }
- }
- .avatar-uploader-icon {
- font-size: 28px;
- color: #8c939d;
- width: 178px;
- height: 178px;
- line-height: 178px;
- text-align: center;
- }
- .avatar {
- width: 178px;
- height: 178px;
- display: block;
- }
- </style>
|