Commit 399771c6 authored by caimeng's avatar caimeng

编辑产品

parent cd33ef55
BASE_URL=''
VUE_APP_API_PATH=http://crm.newbuytek.com
VUE_APP_API_PATH=https://friday.rockstect.com
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -4,6 +4,7 @@
<meta charset="utf-8" />
<meta content="IE=edge" http-equiv="X-UA-Compatible" />
<meta content="width=device-width,initial-scale=1.0" name="viewport" />
<script src="./aliyun-oss-sdk.min.js"></script>
<link href="<%= BASE_URL %>favicon.ico" rel="icon" />
<title><%= VUE_APP_TITLE %></title>
<meta
......
......@@ -14,7 +14,7 @@ export default {
}
</script>
<style lang="less" scoped>
<style lang="scss" scoped>
.block-header {
display: flex;
......
import Vue from 'vue'
import axios from 'axios'
import Vue from "vue";
import axios from "axios";
import {
contentType,
debounce,
requestTimeout,
successCode,
tokenName,
} from '@/config'
import store from '@/store'
import qs from 'qs'
import router from '@/router'
import { isArray } from '@/utils/validate'
tokenName
} from "@/config";
import store from "@/store";
import qs from "qs";
import router from "@/router";
import { isArray } from "@/utils/validate";
const API_URL = process.env.VUE_APP_API_PATH;
//console.log(API_URL,'是啥');
let loadingInstance
let loadingInstance;
// 操作正常Code数组
const codeVerificationArray = isArray(successCode)
? [...successCode]
: [...[successCode]]
: [...[successCode]];
const CODE_MESSAGE = {
200: '服务器成功返回请求数据',
201: '新建或修改数据成功',
202: '一个请求已经进入后台排队(异步任务)',
204: '删除数据成功',
400: '发出信息有误',
401: '用户没有权限(令牌、用户名、密码错误)',
403: '用户得到授权,但是访问是被禁止的',
404: '访问资源不存在',
406: '请求格式不可得',
410: '请求资源被永久删除,且不会被看到',
500: '服务器发生错误',
502: '网关错误',
503: '服务不可用,服务器暂时过载或维护',
504: '网关超时',
}
200: "服务器成功返回请求数据",
201: "新建或修改数据成功",
202: "一个请求已经进入后台排队(异步任务)",
204: "删除数据成功",
400: "发出信息有误",
401: "用户没有权限(令牌、用户名、密码错误)",
403: "用户得到授权,但是访问是被禁止的",
404: "访问资源不存在",
406: "请求格式不可得",
410: "请求资源被永久删除,且不会被看到",
500: "服务器发生错误",
502: "网关错误",
503: "服务不可用,服务器暂时过载或维护",
504: "网关超时"
};
//code: "500"
//message: "验证码发送过于频繁请稍后重试!"
......@@ -46,15 +46,15 @@ const CODE_MESSAGE = {
//success: false
const handleData = ({ config, data, status, statusText }) => {
if (loadingInstance) loadingInstance.close()
if (loadingInstance) loadingInstance.close();
// 若data.code存在,覆盖默认code
let code = data && data.code ? data.code : status
let code = data && data.code ? data.code : status;
// 若code属于操作正常code,则status修改为200
if (codeVerificationArray.includes(code)) code = 200
if (codeVerificationArray.includes(code)) code = 200;
// 若data.msg存在,覆盖默认提醒消息
const msg = !data ? `后端接口 ${config.url} 异常 ${code}${CODE_MESSAGE[code]}` : !data.message ? `后端接口 ${config.url} 异常 ${code}${statusText}` : data.message
const msg = !data ? `后端接口 ${config.url} 异常 ${code}${CODE_MESSAGE[code]}` : !data.message ? `后端接口 ${config.url} 异常 ${code}${statusText}` : data.message;
code = code*1;
code = code * 1;
switch (code) {
case 200:
......@@ -65,55 +65,73 @@ const handleData = ({ config, data, status, statusText }) => {
// 修改返回内容为 `data` 内容,对于绝大多数场景已经无须再关心业务状态码(code)和消息(msg)
// return data.data
// 或者依然保持完整的格式
return data
return data;
case 401:
Vue.prototype.$baseMessage(msg, 'error')
store.dispatch('user/resetAll').catch(() => {})
break
Vue.prototype.$baseMessage(msg, "error");
store.dispatch("user/resetAll").catch(() => {
});
break;
case 403:
store.dispatch('user/resetAll').catch(() => {})
router.push({ path: '/login' }).catch(() => {})
break
store.dispatch("user/resetAll").catch(() => {
});
router.push({ path: "/login" }).catch(() => {
});
break;
default:
Vue.prototype.$baseMessage(msg, 'error')
break
Vue.prototype.$baseMessage(msg, "error");
break;
}
return data
}
return data;
};
/**
* @description axios初始化
*/
const instance = axios.create({
baseURL:API_URL,
baseURL: API_URL,
timeout: requestTimeout,
withCredentials: true,
headers: {
'Content-Type': contentType,
},
})
"Content-Type": contentType
}
});
/**
* @description axios请求拦截器
*/
instance.interceptors.request.use(
(config) => {
if (store.getters['user/accessToken'])
config.headers[tokenName] = store.getters['user/accessToken']
if (
config.data &&
config.headers['Content-Type'] ===
'application/x-www-form-urlencoded;charset=UTF-8'
)
config.data = qs.stringify(config.data)
if (debounce.some((item) => config.url.includes(item)))
loadingInstance = Vue.prototype.$baseLoading()
if (store.getters["user/accessToken"]) {
config.headers[tokenName] = store.getters["user/accessToken"];
}
if (config.data && config.headers["Content-Type"] === "application/x-www-form-urlencoded;charset=UTF-8") {
config.data = qs.stringify(config.data);
}
if (debounce.some((item) => config.url.includes(item))) {
loadingInstance = Vue.prototype.$baseLoading();
}
// 处理get 请求的数组 springmvc 可以处理
if (config.method === "post") {
//请求头转换为表单形式
//config.headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'
//config.transformRequest = [function (data) {
// 在请求之前对data传参进行格式转换
// data = qs.stringify(data,{ indices: false })
// return data
//}]
return config
//config.data = qs.stringify(config.data,{ indices: false })
}
return config;
},
(error) => {
return Promise.reject(error)
return Promise.reject(error);
}
)
);
/**
* @description axios响应拦截器
......@@ -121,15 +139,15 @@ instance.interceptors.request.use(
instance.interceptors.response.use(
(response) => handleData(response),
(error) => {
const { response } = error
const { response } = error;
if (response === undefined) {
Vue.prototype.$baseMessage(
'未可知错误,大部分是由于后端不支持跨域CORS或无效配置引起',
'error'
)
return {}
} else return handleData(response)
"未可知错误,大部分是由于后端不支持跨域CORS或无效配置引起",
"error"
);
return {};
} else return handleData(response);
}
)
);
export default instance
export default instance;
......@@ -252,7 +252,6 @@ export default {
if (valid) {
try {
this.loading = true;
this.form.vfcode = "000000";
await this.login(this.form);
console.log(this.handleRoute(), "打算跳转的地址");
await this.$router.push(this.handleRoute());
......
......@@ -147,13 +147,11 @@ export default {
{
order: 1,
label: "机构编号",
prop: "tenantNo"
},
{
order: 2,
label: "机构名称",
prop: "tenantFullName"
},
{
......@@ -177,8 +175,7 @@ export default {
},
{
order: 6,
label: "小贷拍照",
label: "小贷牌照",
prop: "loanLicenseUrl"
},
{
......
<template>
<div class="merchant-new">
<el-form
ref="h5form"
style="width: 800px;"
label-suffix=":"
:rules="rules"
:model="form"
label-width="120px"
>
<block-header title="产品信息" />
<el-form-item
prop="appName"
class="form-item"
label="产品名称"
>
<el-input v-model="form.appName" />
</el-form-item>
<el-form-item
prop="appLogo"
class="form-item"
label="产品LOGO"
>
<el-upload
class="avatar-uploader"
:action="uploadUrl"
:with-credentials="true"
list-type="picture-card"
:show-file-list="false"
:on-success="handleSuccessLogo"
:before-upload="beforeAvatarUpload"
>
<img
v-if="form.appLogo"
:src="form.appLogo"
class="avatar"
>
<i
v-else
class="el-icon-plus avatar-uploader-icon"
/>
</el-upload>
</el-form-item>
<el-form-item
prop="appInfo"
class="form-item"
label="产品描述"
>
<el-input v-model="form.appInfo" />
</el-form-item>
<el-form-item
prop="customerNumbers"
class="form-item"
label="客服电话"
>
<el-input
v-model="form.customerNumbers"
class="el-input"
/>
</el-form-item>
<el-form-item
prop="abstratInfo"
class="form-item"
label="产品摘要"
>
<el-input
v-model="form.abstratInfo"
type="textarea"
:rows="3"
/>
</el-form-item>
<el-form-item
class="form-item"
label="产品备注"
>
<el-input
v-model="form.memo"
type="textarea"
:rows="3"
/>
</el-form-item>
<block-header title="配置信息" />
<el-form-item
prop="gradeSort"
class="form-item"
label="产品等级"
>
<el-input-number
v-model="form.gradeSort"
controls-position="right"
:min="1"
:max="1000"
/>
</el-form-item>
<el-form-item
prop="creditWay"
label="授信方式"
>
<el-radio-group v-model="form.creditWay">
<el-radio :label="1">
一次授信一次借款
</el-radio>
<el-radio :label="2">
一次授信多次借款
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
required
class="form-item"
label="额度"
>
<el-row>
<el-col :span="5">
<el-form-item prop="applyAmtMin">
<el-input
v-model="form.applyAmtMin"
style="width: 80px"
/>
</el-form-item>
</el-col>
<el-col :span="4">
<div style="text-align: center">
~
</div>
</el-col>
<el-col :span="5">
<el-form-item prop="applyAmtMin">
<el-input
v-model="form.applyAmtMax"
style="width: 130px"
>
<template slot="append">
</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
</el-form-item>
<el-form-item
prop="withdrawSpan"
class="form-item"
label="提现跨度"
>
<el-input-number
v-model="form.withdrawSpan"
controls-position="right"
:min="1"
:max="1000"
/>
</el-form-item>
<el-form-item
prop="approvalTime"
class="form-item"
label="审批时间"
>
<el-input
v-model="form.approvalTime"
class="el-input"
>
<template slot="append">
小时
</template>
</el-input>
<div class="el-extra">
从提交授信到授信结果返回时间
</div>
</el-form-item>
<el-form-item
required
class="form-item"
label="放款时间"
>
<el-row>
<el-col :span="5">
<el-form-item prop="raiseTimeMin">
<el-input
v-model="form.raiseTimeMin"
style="width: 80px"
/>
</el-form-item>
</el-col>
<el-col :span="4">
<div style="text-align: center;">
~
</div>
</el-col>
<el-col :span="5">
<el-form-item prop="raiseTimeMax">
<el-input
v-model="form.raiseTimeMax"
style="width: 130px"
>
<template slot="append">
</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
</el-form-item>
<el-form-item
required
class="form-item"
label="每日进件时间"
>
<el-row>
<el-col :span="7">
<el-form-item prop="incomeTimeBefore">
<el-time-picker
v-model="form.incomeTimeBefore"
value-format="HH:mm:ss"
style="width: 120px"
placeholder="起始时间"
:picker-options="{
selectableRange: '00:00:00 - 23:59:59'
}"
/>
</el-form-item>
</el-col>
<el-col :span="4">
<div style="text-align: center;">
~
</div>
</el-col>
<el-col :span="7">
<el-form-item prop="incomeTimeLate">
<el-time-picker
v-model="form.incomeTimeLate"
value-format="HH:mm:ss"
style="width: 120px"
placeholder="结束时间"
:picker-options="{
selectableRange: '00:00:00 - 23:59:59'
}"
/>
</el-form-item>
</el-col>
</el-row>
<span class="el-extra">请输入0~24之间的整数</span>
</el-form-item>
<el-form-item
prop="incomeCount"
class="form-item"
label="每日进件上限"
>
<el-input v-model="form.incomeCount" />
</el-form-item>
<block-header title="准入规则" />
<el-form-item
prop="educational"
class="mc-form-item"
label="教育程度"
>
<el-radio-group v-model="form.educational">
<el-radio
v-for="(item,index) in dict.edu"
:key="index"
:label="item.code"
/>
</el-radio-group>
</el-form-item>
<el-form-item
prop="monthlyIncome"
class="mc-form-item"
label="个人月收入"
>
<el-radio-group v-model="form.monthlyIncome">
<el-radio
v-for="(item,index) in dict.money"
:key="index"
:label="item.code"
/>
</el-radio-group>
</el-form-item>
<el-form-item
prop="marriage"
class="mc-form-item"
label="婚姻状况"
>
<el-radio-group v-model="form.marriage">
<el-radio
v-for="(item,index) in dict.money"
:key="index"
:label="item.code"
/>
</el-radio-group>
</el-form-item>
<el-form-item
prop="sex"
class="mc-form-item"
label="性别"
>
<el-radio-group v-model="form.sex">
<el-radio
v-for="(item,index) in dict.sex"
:key="index"
:label="item.code"
/>
</el-radio-group>
</el-form-item>
<el-form-item
style="margin-bottom: 0 !important;"
class="mc-form-item"
label="年龄"
>
<el-row>
<el-col :span="10">
<el-form-item>
<el-input v-model="form.minage" />
</el-form-item>
</el-col>
<el-col :span="4">
<div style="text-align: center;">
~
</div>
</el-col>
<el-col :span="10">
<el-form-item>
<el-input v-model="form.maxage" />
</el-form-item>
</el-col>
</el-row>
</el-form-item>
<el-form-item
prop="region"
class="mc-form-item"
label="地区黑名单"
>
<el-checkbox-group v-model="form.region">
<el-checkbox
v-for="(item,index) in dict.region"
:key="index"
:label="item.value"
>
{{ item.code }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item>
<el-button
type="primary"
@click="onSubmit('h5form')"
>
保存
</el-button>
<el-button @click="$router.go(-1)">
取消
</el-button>
<el-button @click="onReset('h5form')">
重置
</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
import API from "@/server/api";
const $API = process.env.VUE_APP_API_PATH;
export default {
name: "ComAPI",
props: {
params: {
type: Object,
required: true
}
},
data() {
return {
uploadUrl: `${$API}/sysUser/upload`,
form: {
tenantNo: "",
abutmentWay: "",
gradeSort: "",
appLogo: "",
appName: "2",
appInfo: "3",
abstratInfo: "3",
applyAmtMin: "1",
applyAmtMax: "2",
withdrawSpan: "3",
incomeCount: "4",
approvalTime: "5",
raiseTimeMax: "3",
raiseTimeMin: "2",
memo: "3",
incomeTimeBefore:'13:22:33',
incomeTimeLate:'15:22:33',
educational: "",
monthlyIncome: "",
marriage: "",
sex: "",
minage: "",
maxage: "",
region: [],
customerNumbers: "3", // 客服电话
creditWay: 1 // 授信方式
},
rules: {
tenantNo: [{ required: true, message: "请选择机构名称", trigger: "change" }],
abutmentWay: [{ required: true, message: "请选择对接方式", trigger: "change" }],
appName: [{ required: true, message: "请输入产品名称", trigger: "blur" }],
appLogo: [{ required: true, message: "请上传产品LOGO图片", trigger: "blur" }],
appInfo: [{ required: true, message: "请输入产品描述", trigger: "blur" }],
abstratInfo: [{ required: true, message: "请输入产品摘要", trigger: "blur" }],
customerNumbers: [{ required: true, message: "请输入客服电话", trigger: "blur" }],
creditWay: [{ required: true, message: "请选择授信方式", trigger: "blur" }],
gradeSort: [{
required: true,
message: "请输入产品等级",
trigger: "blur"
}],
raiseTimeMin: [
{ required: true, message: "请输入时间", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 >= this.form.raiseTimeMax * 1) {
callback(new Error("时间不大于最大时间"));
} else {
callback();
}
},
trigger: "change"
}
],
raiseTimeMax: [
{ required: true, message: "请输入时间", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 <= this.form.raiseTimeMin * 1) {
callback(new Error("时间不小于最小时间"));
} else {
callback();
}
},
trigger: "change"
}
],
applyAmtMin: [
{ required: true, message: "请输入额度", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 >= this.form.applyAmtMax * 1) {
callback(new Error("额度必须小于最大额度"));
} else {
callback();
}
},
trigger: "change"
}
],
applyAmtMax: [
{ required: true, message: "请输入额度", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 <= this.form.applyAmtMin * 1) {
callback(new Error("额度必须大于最小额度"));
} else {
callback();
}
},
trigger: "change"
}
],
incomeTimeBefore: [
{ required: true, message: "请输入时间", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 >= this.form.incomeTimeLate * 1) {
callback(new Error("时间须小于结束时间"));
} else {
callback();
}
},
trigger: "change"
}
],
incomeTimeLate: [
{ required: true, message: "请输入时间", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 <= this.form.incomeTimeBefore * 1) {
callback(new Error("时间须大于开始时间"));
} else {
callback();
}
},
trigger: "change"
}
],
withdrawSpan: [{ required: true, message: "请输入提现跨度", trigger: "blur" }],
approvalTime: [{ required: true, message: "请输入申请时间", trigger: "blur" }],
incomeCount: [{ required: true, message: "请输入每日进件上限", trigger: "blur" }],
minage: [
{ required: false, message: "请输入最小年龄", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 >= this.form.applyAmtMax * 1) {
callback(new Error("年龄必须小于最大年龄"));
} else {
callback();
}
},
trigger: "change"
}
],
maxage: [
{ required: false, message: "请输入最大年龄", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 <= this.form.applyAmtMin * 1) {
callback(new Error("年龄必须大于最小年龄"));
} else {
callback();
}
},
trigger: "change"
}
],
},
merchant: [],
dict: {
sex: [],
region: [],
edu: [],
marriage: [],
money: []
}
};
},
async created() {
this.form = this.params;
await this.initDict("SYS_USER_SEX");
await this.initDict("EDUCATIONAL");
await this.initDict("MONTHLY_INCOME");
await this.initDict("MARRIAGE");
await this.initDict("REGION");
},
methods: {
// 初始化字典
async initDict(dictType) {
const result = await API.dict({
dictType
});
if (result.success) {
const data = result.result;
switch (dictType) {
case "SYS_USER_SEX":
this.dict.sex = data;
break;
case "EDUCATIONAL":
this.dict.edu = data;
break;
case "MARRIAGE":
this.dict.marriage = data;
break;
case "REGION":
this.dict.region = data;
break;
case "MONTHLY_INCOME":
this.dict.money = data;
break;
}
}
},
// 上传成功
handleSuccessLogo(res) {
this.form.appLogo = res.result;
},
// 上传前检查
beforeAvatarUpload(file) {
const isJPG = file.type === "image/jpeg";
const isPNG = file.type === "image/png";
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG && !isPNG) {
this.$message.error("上传图片只能是 JPG 或者 PNG 格式!");
return false;
}
if (!isLt2M) {
this.$message.error("上传图片大小不能超过 2MB!");
return false;
}
return true;
},
// 提交表单
onSubmit(formName) {
this.$refs[formName].validate(async (valid) => {
if (valid) {
//const {region} = this.form;
//this.form.region = JSON.stringify(region);
const form = Object.assign({}, this.form);
form.region = JSON.stringify(form.region);
let result
if(form.appNo){
result = await API.prod_update({ ...form });
}else{
result = await API.prod_add({ ...form });
}
if (result.success) {
this.$baseMessage("产品保存成功", "success");
setTimeout(() => {
this.$router.back();
}, 1500);
}
}
});
},
// 重置
onReset(formName) {
this.$refs[formName].resetFields();
}
}
};
</script>
<style lang="scss" src="./index.scss"></style>
<template>
<div class="merchant-new">
<el-form
ref="h5form"
label-suffix=":"
:rules="rules"
:model="form"
label-width="120px"
>
<block-header title="产品信息" />
<el-form-item
prop="appName"
class="form-item"
label="产品名称"
>
<el-input v-model="form.appName" />
</el-form-item>
<el-form-item
prop="appLogo"
class="form-item"
label="产品LOGO"
>
<el-upload
class="avatar-uploader"
:action="uploadUrl"
:with-credentials="true"
list-type="picture-card"
:show-file-list="false"
:on-success="handleSuccessLogo"
:before-upload="beforeAvatarUpload"
>
<img
v-if="form.appLogo"
:src="form.appLogo"
class="avatar"
>
<i
v-else
class="el-icon-plus avatar-uploader-icon"
/>
</el-upload>
</el-form-item>
<el-form-item
prop="appInfo"
class="form-item"
label="产品描述"
>
<el-input v-model="form.appInfo" />
</el-form-item>
<el-form-item
prop="customerNumbers"
class="form-item"
label="客服电话"
>
<el-input
v-model="form.customerNumbers"
class="el-input"
/>
</el-form-item>
<el-form-item
prop="abstratInfo"
class="form-item"
label="产品摘要"
>
<el-input
v-model="form.abstratInfo"
type="textarea"
:rows="3"
/>
</el-form-item>
<el-form-item
class="form-item"
label="产品备注"
>
<el-input
v-model="form.memo"
type="textarea"
:rows="3"
/>
</el-form-item>
<block-header title="配置信息" />
<el-form-item
prop="gradeSort"
class="form-item"
label="产品等级"
>
<el-input-number
v-model="form.gradeSort"
controls-position="right"
:min="1"
:max="1000"
/>
</el-form-item>
<el-form-item
prop="creditWay"
label="授信方式"
>
<el-radio-group v-model="form.creditWay">
<el-radio :label="1">
一次授信一次借款
</el-radio>
<el-radio :label="2">
一次授信多次借款
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
required
class="form-item"
label="额度"
>
<el-row>
<el-col :span="5">
<el-form-item prop="applyAmtMin">
<el-input
v-model="form.applyAmtMin"
style="width: 80px"
/>
</el-form-item>
</el-col>
<el-col :span="4">
<div style="text-align: center">
~
</div>
</el-col>
<el-col :span="5">
<el-form-item prop="applyAmtMin">
<el-input
v-model="form.applyAmtMax"
style="width: 130px"
>
<template slot="append">
</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
</el-form-item>
<el-form-item
prop="withdrawSpan"
class="form-item"
label="提现跨度"
>
<el-input-number
v-model="form.withdrawSpan"
controls-position="right"
:min="1"
:max="1000"
/>
</el-form-item>
<el-form-item
prop="approvalTime"
class="form-item"
label="审批时间"
>
<el-input
v-model="form.approvalTime"
class="el-input"
>
<template slot="append">
小时
</template>
</el-input>
<div class="el-extra">
从提交授信到授信结果返回时间
</div>
</el-form-item>
<el-form-item
required
class="form-item"
label="放款时间"
>
<el-row>
<el-col :span="5">
<el-form-item prop="raiseTimeMin">
<el-input
v-model="form.raiseTimeMin"
style="width: 80px"
/>
</el-form-item>
</el-col>
<el-col :span="4">
<div style="text-align: center;">
~
</div>
</el-col>
<el-col :span="5">
<el-form-item prop="raiseTimeMax">
<el-input
v-model="form.raiseTimeMax"
style="width: 130px"
>
<template slot="append">
</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
</el-form-item>
<el-form-item
required
class="form-item"
label="每日进件时间"
>
<el-row>
<el-col :span="7">
<el-form-item prop="incomeTimeBefore">
<el-time-picker
v-model="form.incomeTimeBefore"
value-format="HH:mm:ss"
style="width: 120px"
placeholder="起始时间"
:picker-options="{
selectableRange: '00:00:00 - 23:59:59'
}"
/>
</el-form-item>
</el-col>
<el-col :span="4">
<div style="text-align: center;">
~
</div>
</el-col>
<el-col :span="7">
<el-form-item prop="incomeTimeLate">
<el-time-picker
v-model="form.incomeTimeLate"
value-format="HH:mm:ss"
style="width: 120px"
placeholder="结束时间"
:picker-options="{
selectableRange: '00:00:00 - 23:59:59'
}"
/>
</el-form-item>
</el-col>
</el-row>
<span class="el-extra">请输入0~24之间的整数</span>
</el-form-item>
<el-form-item
prop="incomeCount"
class="form-item"
label="每日进件上限"
>
<el-input v-model="form.incomeCount" />
</el-form-item>
<el-form-item>
<el-button
type="primary"
@click="onSubmit('h5form')"
>
保存
</el-button>
<el-button @click="$router.go(-1)">
取消
</el-button>
<el-button @click="onReset('h5form')">
重置
</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
import API from "@/server/api";
const $API = process.env.VUE_APP_API_PATH;
export default {
name: "ComH5",
props: {
params: {
type: Object,
required: true
}
},
data() {
return {
uploadUrl: `${$API}/sysUser/upload`,
form: {
tenantNo: "",
abutmentWay: "",
gradeSort: "",
appLogo: "",
appName: "",
appInfo: "",
abstratInfo: "",
applyAmtMin: "",
applyAmtMax: "",
withdrawSpan: "",
incomeCount: "",
approvalTime: "",
raiseTimeMax: "",
raiseTimeMin: "",
memo: "",
customerNumbers: "", // 客服电话
creditWay: 1 // 授信方式
},
rules: {
appName: [{ required: true, message: "请输入产品名称", trigger: "blur" }],
appLogo: [{ required: true, message: "请上传产品LOGO图片", trigger: "blur" }],
appInfo: [{ required: true, message: "请输入产品描述", trigger: "blur" }],
abstratInfo: [{ required: true, message: "请输入产品摘要", trigger: "blur" }],
customerNumbers: [{ required: true, message: "请输入客服电话", trigger: "blur" }],
creditWay: [{ required: true, message: "请选择授信方式", trigger: "blur" }],
gradeSort: [
{
required: true,
message: "请输入产品等级",
trigger: "blur"
}
],
raiseTimeMin: [
{ required: true, message: "请输入时间", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 >= this.form.raiseTimeMax * 1) {
callback(new Error("时间不大于最大时间"));
} else {
callback();
}
},
trigger: "change"
}
],
raiseTimeMax: [
{ required: true, message: "请输入时间", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 <= this.form.raiseTimeMin * 1) {
callback(new Error("时间不小于最小时间"));
} else {
callback();
}
},
trigger: "change"
}
],
applyAmtMin: [
{ required: true, message: "请输入额度", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 >= this.form.applyAmtMax * 1) {
callback(new Error("额度必须小于最大额度"));
} else {
callback();
}
},
trigger: "change"
}
],
applyAmtMax: [
{ required: true, message: "请输入额度", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 <= this.form.applyAmtMin * 1) {
callback(new Error("额度必须大于最小额度"));
} else {
callback();
}
},
trigger: "change"
}
],
incomeTimeBefore: [
{ required: true, message: "请输入时间", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 >= this.form.incomeTimeLate * 1) {
callback(new Error("时间须小于结束时间"));
} else {
callback();
}
},
trigger: "change"
}
],
incomeTimeLate: [
{ required: true, message: "请输入时间", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 <= this.form.incomeTimeBefore * 1) {
callback(new Error("时间须大于开始时间"));
} else {
callback();
}
},
trigger: "change"
}
],
withdrawSpan: [{ required: true, message: "请输入提现跨度", trigger: "blur" }],
approvalTime: [{ required: true, message: "请输入申请时间", trigger: "blur" }],
incomeCount: [{ required: true, message: "请输入每日进件上限", trigger: "blur" }]
},
merchant: []
};
},
async created() {
this.form = this.params;
},
methods: {
handleSuccessLogo(res) {
this.form.appLogo = res.result;
},
beforeAvatarUpload(file) {
const isJPG = file.type === "image/jpeg";
const isPNG = file.type === "image/png";
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG && !isPNG) {
this.$message.error("上传图片只能是 JPG 或者 PNG 格式!");
return false;
}
if (!isLt2M) {
this.$message.error("上传图片大小不能超过 2MB!");
return false;
}
return true;
},
onSubmit(formName) {
this.$refs[formName].validate(async (valid) => {
if (valid) {
const form = Object.assign({}, this.form);
//console.log(form,'表达');
//return false;
let result;
if(form.appNo){
result = await API.prod_update({ ...form });
}else{
result = await API.prod_add({ ...form });
}
//let result = await API.prod_add({ ...form });
if (result.success) {
this.$baseMessage("产品保存成功", "success");
setTimeout(() => {
this.$router.back();
}, 1500);
}
}
});
},
onReset(formName) {
this.$refs[formName].resetFields();
}
}
};
</script>
<style lang="scss" src="./index.scss"></style>
.merchant-new{
box-sizing: border-box;
padding: 20px;
}
.form-item{
width:500px;
margin-bottom: 24px !important;
}
.mc-form-item{
width:800px;
margin-bottom: 24px !important;
}
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
width: 120px;
height: 120px;
line-height: 120px;
}
.avatar-uploader .el-upload:hover {
border-color: #409eff;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 120px;
height: 120px;
line-height: 120px;
text-align: center;
}
.avatar {
width: 120px;
height: 120px;
display: block;
}
//.el-input{
// width:200px;
//}
......@@ -44,271 +44,6 @@
/>
</el-select>
</el-form-item>
<block-header title="产品信息" />
<el-form-item
prop="appName"
class="form-item"
label="产品名称"
>
<el-input v-model="form.appName" />
</el-form-item>
<el-form-item
prop="appLogo"
class="form-item"
label="产品LOGO"
>
<el-upload
class="avatar-uploader"
:action="uploadUrl"
:with-credentials="true"
list-type="picture-card"
:show-file-list="false"
:on-success="handleSuccessLogo"
:before-upload="beforeAvatarUpload"
>
<img
v-if="form.appLogo"
:src="form.appLogo"
class="avatar"
>
<i
v-else
class="el-icon-plus avatar-uploader-icon"
/>
</el-upload>
</el-form-item>
<el-form-item
prop="appInfo"
class="form-item"
label="产品描述"
>
<el-input v-model="form.appInfo" />
</el-form-item>
<el-form-item
prop="customerNumbers"
class="form-item"
label="客服电话"
>
<el-input
v-model="form.customerNumbers"
class="el-input"
/>
</el-form-item>
<el-form-item
prop="abstratInfo"
class="form-item"
label="产品摘要"
>
<el-input
v-model="form.abstratInfo"
type="textarea"
:rows="3"
/>
</el-form-item>
<el-form-item
class="form-item"
label="产品备注"
>
<el-input
v-model="form.memo"
type="textarea"
:rows="3"
/>
</el-form-item>
<block-header title="配置信息" />
<template v-if="appNo">
<el-form-item
prop="gradeSort"
class="form-item"
label="产品等级"
>
<el-input-number
v-model="form.gradeSort"
controls-position="right"
:min="1"
:max="1000"
/>
</el-form-item>
</template>
<el-form-item
prop="creditWay"
label="授信方式"
>
<el-radio-group v-model="form.creditWay">
<el-radio :label="1">
一次授信一次借款
</el-radio>
<el-radio :label="2">
一次授信多次借款
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
required
class="form-item"
label="额度"
>
<el-row>
<el-col :span="5">
<el-form-item prop="applyAmtMin">
<el-input
v-model="form.applyAmtMin"
style="width: 80px"
/>
</el-form-item>
</el-col>
<el-col :span="4">
<div style="text-align: center">
~
</div>
</el-col>
<el-col :span="5">
<el-form-item prop="applyAmtMin">
<el-input
v-model="form.applyAmtMax"
style="width: 130px"
>
<template slot="append">
</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
</el-form-item>
<el-form-item
prop="withdrawSpan"
class="form-item"
label="提现跨度"
>
<el-input-number
v-model="form.withdrawSpan"
controls-position="right"
:min="1"
:max="1000"
/>
</el-form-item>
<el-form-item
prop="approvalTime"
class="form-item"
label="审批时间"
>
<el-input
v-model="form.approvalTime"
class="el-input"
>
<template slot="append">
小时
</template>
</el-input>
<div class="el-extra">
从提交授信到授信结果返回时间
</div>
</el-form-item>
<el-form-item
required
class="form-item"
label="放款时间"
>
<el-row>
<el-col :span="5">
<el-form-item prop="raiseTimeMin">
<el-input
v-model="form.raiseTimeMin"
style="width: 80px"
/>
</el-form-item>
</el-col>
<el-col :span="4">
<div style="text-align: center;">
~
</div>
</el-col>
<el-col :span="5">
<el-form-item prop="raiseTimeMax">
<el-input
v-model="form.raiseTimeMax"
style="width: 130px"
>
<template slot="append">
</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
</el-form-item>
<el-form-item
required
class="form-item"
label="每日进件时间"
>
<el-row>
<el-col :span="5">
<el-form-item prop="incomeTimeBefore">
<el-time-picker
v-model="form.incomeTimeBefore"
value-format="HH:mm:ss"
style="width: 120px"
placeholder="起始时间"
:picker-options="{
selectableRange: '00:00:00 - 23:59:59'
}"
/>
</el-form-item>
</el-col>
<el-col :span="4">
<div style="text-align: center;">
~
</div>
</el-col>
<el-col :span="5">
<el-form-item prop="incomeTimeLate">
<el-time-picker
v-model="form.incomeTimeLate"
value-format="HH:mm:ss"
style="width: 120px"
placeholder="结束时间"
:picker-options="{
selectableRange: '00:00:00 - 23:59:59'
}"
/>
</el-form-item>
</el-col>
</el-row>
<span class="el-extra">请输入0~24之间的整数</span>
</el-form-item>
<el-form-item
prop="incomeCount"
class="form-item"
label="每日进件上限"
>
<el-input v-model="form.incomeCount" />
</el-form-item>
<el-form-item>
<el-button
type="primary"
@click="onSubmit('h5form')"
>
保存
</el-button>
<el-button @click="$router.go(-1)">
取消
</el-button>
<el-button @click="onReset('h5form')">
重置
</el-button>
</el-form-item>
</el-form>
</div>
</template>
......@@ -461,6 +196,12 @@ export default {
if (query && query.appNo) {
this.appNo = query.appNo;
await this.initProd();
await this.initDict("SYS_USER_SEX");
await this.initDict("EDUCATIONAL");
await this.initDict("MONTHLY_INCOME");
await this.initDict("MARRIAGE");
await this.initDict("REGION");
}
},
......@@ -482,6 +223,33 @@ export default {
this.form = result;
}
},
// 初始化字典
async initDict(dictType) {
const result = await API.dict({
dictType
});
if (result.success) {
const data = result.result;
switch (dictType) {
case "SYS_USER_SEX":
this.dict.sex = data;
break;
case "EDUCATIONAL":
this.dict.edu = data;
break;
case "MARRIAGE":
this.dict.marriage = data;
break;
case "REGION":
this.dict.region = data;
break;
case "MONTHLY_INCOME":
this.dict.money = data;
break;
}
}
},
handleSuccessLogo(res) {
this.form.appLogo = res.result;
},
......
......@@ -2,39 +2,3 @@
box-sizing: border-box;
padding: 20px;
}
.form-item{
width:500px;
margin-bottom: 24px !important;
}
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
width: 120px;
height: 120px;
line-height: 120px;
}
.avatar-uploader .el-upload:hover {
border-color: #409eff;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 120px;
height: 120px;
line-height: 120px;
text-align: center;
}
.avatar {
width: 120px;
height: 120px;
display: block;
}
//.el-input{
// width:200px;
//}
......@@ -242,7 +242,7 @@ export default {
handleView(row) {
const { appNo } = row;
this.$router.push({
path: "/prod/edit",
path: "/prod/new",
query: { appNo }
});
},
......
......@@ -9,12 +9,15 @@
>
<block-header title="对接信息" />
<el-form-item
prop="tenantNo"
class="form-item"
label="对接机构"
>
<el-select
v-model="form.tenantNo"
:disabled="isEdit"
placeholder="请选择"
@change="handleChange"
>
<el-option
v-for="(item,index) in merchant"
......@@ -25,12 +28,15 @@
</el-select>
</el-form-item>
<el-form-item
prop="abutmentWay"
class="form-item"
label="对接方式"
>
<el-select
v-model="form.abutmentWay"
:disabled="isEdit"
placeholder="请选择"
@change="handleChange"
>
<el-option
label="API"
......@@ -42,418 +48,59 @@
/>
</el-select>
</el-form-item>
</el-form>
<block-header title="产品信息" />
<el-form-item
prop="appName"
class="form-item"
label="产品名称"
>
<el-input v-model="form.appName" />
</el-form-item>
<el-form-item
prop="appLogo"
class="form-item"
label="产品LOGO"
>
<el-upload
class="avatar-uploader"
:action="uploadUrl"
:with-credentials="true"
list-type="picture-card"
:show-file-list="false"
:on-success="handleSuccessLogo"
:before-upload="beforeAvatarUpload"
>
<img
v-if="form.appLogo"
:src="form.appLogo"
class="avatar"
>
<i
v-else
class="el-icon-plus avatar-uploader-icon"
/>
</el-upload>
</el-form-item>
<el-form-item
prop="appInfo"
class="form-item"
label="产品描述"
>
<el-input v-model="form.appInfo" />
</el-form-item>
<el-form-item
prop="customerNumbers"
class="form-item"
label="客服电话"
>
<el-input
v-model="form.customerNumbers"
class="el-input"
/>
</el-form-item>
<el-form-item
prop="abstratInfo"
class="form-item"
label="产品摘要"
>
<el-input
v-model="form.abstratInfo"
type="textarea"
:rows="3"
/>
</el-form-item>
<el-form-item
class="form-item"
label="产品备注"
>
<el-input
v-model="form.memo"
type="textarea"
:rows="3"
/>
</el-form-item>
<block-header title="配置信息" />
<el-form-item
prop="gradeSort"
class="form-item"
label="产品等级"
>
<el-input-number
v-model="form.gradeSort"
controls-position="right"
:min="1"
:max="1000"
/>
</el-form-item>
<el-form-item
prop="creditWay"
label="授信方式"
>
<el-radio-group v-model="form.creditWay">
<el-radio :label="1">
一次授信一次借款
</el-radio>
<el-radio :label="2">
一次授信多次借款
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
required
class="form-item"
label="额度"
>
<el-row>
<el-col :span="5">
<el-form-item prop="applyAmtMin">
<el-input
v-model="form.applyAmtMin"
style="width: 80px"
/>
</el-form-item>
</el-col>
<el-col :span="4">
<div style="text-align: center">
~
</div>
</el-col>
<el-col :span="5">
<el-form-item prop="applyAmtMin">
<el-input
v-model="form.applyAmtMax"
style="width: 130px"
>
<template slot="append">
</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
</el-form-item>
<el-form-item
prop="withdrawSpan"
class="form-item"
label="提现跨度"
>
<el-input-number
v-model="form.withdrawSpan"
controls-position="right"
:min="1"
:max="1000"
/>
</el-form-item>
<el-form-item
prop="approvalTime"
class="form-item"
label="审批时间"
>
<el-input
v-model="form.approvalTime"
class="el-input"
>
<template slot="append">
小时
</template>
</el-input>
<div class="el-extra">
从提交授信到授信结果返回时间
</div>
</el-form-item>
<el-form-item
required
class="form-item"
label="放款时间"
>
<el-row>
<el-col :span="5">
<el-form-item prop="raiseTimeMin">
<el-input
v-model="form.raiseTimeMin"
style="width: 80px"
<template>
<component
:is="com"
:params="params"
/>
</el-form-item>
</el-col>
<el-col :span="4">
<div style="text-align: center;">
~
</div>
</el-col>
<el-col :span="5">
<el-form-item prop="raiseTimeMax">
<el-input
v-model="form.raiseTimeMax"
style="width: 130px"
>
<template slot="append">
</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
</el-form-item>
<el-form-item
required
class="form-item"
label="每日进件时间"
>
<el-row>
<el-col :span="7">
<el-form-item prop="incomeTimeBefore">
<el-time-picker
v-model="form.incomeTimeBefore"
value-format="HH:mm:ss"
style="width: 120px"
placeholder="起始时间"
:picker-options="{
selectableRange: '00:00:00 - 23:59:59'
}"
/>
</el-form-item>
</el-col>
<el-col :span="4">
<div style="text-align: center;">
~
</div>
</el-col>
<el-col :span="7">
<el-form-item prop="incomeTimeLate">
<el-time-picker
v-model="form.incomeTimeLate"
value-format="HH:mm:ss"
style="width: 120px"
placeholder="结束时间"
:picker-options="{
selectableRange: '00:00:00 - 23:59:59'
}"
/>
</el-form-item>
</el-col>
</el-row>
<span class="el-extra">请输入0~24之间的整数</span>
</el-form-item>
<el-form-item
prop="incomeCount"
class="form-item"
label="每日进件上限"
>
<el-input v-model="form.incomeCount" />
</el-form-item>
<el-form-item>
<el-button
type="primary"
@click="onSubmit('h5form')"
>
保存
</el-button>
<el-button @click="$router.go(-1)">
取消
</el-button>
<el-button @click="onReset('h5form')">
重置
</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
import BlockHeader from "@/components/blockHeader";
import ComH5 from "@/views/prod/components/comH5";
import ComAPI from "@/views/prod/components/comAPI";
import API from "@/server/api";
const $API = process.env.VUE_APP_API_PATH;
export default {
name: "MerchantNew",
components: {
"block-header": BlockHeader
ComH5,
ComAPI
},
data() {
return {
uploadUrl:`${$API}/sysUser/upload`,
visible: false,
com: "",
params: null,
isEdit: false,
form: {
tenantNo: "",
abutmentWay: "",
gradeSort: "",
appLogo: "",
appName: "",
appInfo: "",
abstratInfo: "",
applyAmtMin: "",
applyAmtMax: "",
withdrawSpan: "",
incomeCount: "",
approvalTime: "",
raiseTimeMax: "",
raiseTimeMin: "",
memo: "",
customerNumbers: "", // 客服电话
creditWay: 1 // 授信方式
abutmentWay: ""
},
rules: {
tenantNo: [{ required: true, message: "请选择机构名称", trigger: "change" }],
abutmentWay: [{ required: true, message: "请选择对接方式", trigger: "change" }],
appName: [{ required: true, message: "请输入产品名称", trigger: "blur" }],
appLogo: [{ required: true, message: "请上传产品LOGO图片", trigger: "blur" }],
appInfo: [{ required: true, message: "请输入产品描述", trigger: "blur" }],
abstratInfo: [{ required: true, message: "请输入产品摘要", trigger: "blur" }],
customerNumbers: [{ required: true, message: "请输入客服电话", trigger: "blur" }],
creditWay: [{ required: true, message: "请选择授信方式", trigger: "blur" }],
gradeSort: [
{
required: true,
message: "请输入产品等级",
trigger: "blur"
}
],
raiseTimeMin: [
{ required: true, message: "请输入时间", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 >= this.form.raiseTimeMax * 1) {
callback(new Error("时间不大于最大时间"));
} else {
callback();
}
},
trigger: "change"
}
],
raiseTimeMax: [
{ required: true, message: "请输入时间", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 <= this.form.raiseTimeMin * 1) {
callback(new Error("时间不小于最小时间"));
} else {
callback();
}
},
trigger: "change"
}
],
applyAmtMin: [
{ required: true, message: "请输入额度", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 >= this.form.applyAmtMax * 1) {
callback(new Error("额度必须小于最大额度"));
} else {
callback();
}
},
trigger: "change"
}
],
applyAmtMax: [
{ required: true, message: "请输入额度", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 <= this.form.applyAmtMin * 1) {
callback(new Error("额度必须大于最小额度"));
} else {
callback();
}
},
trigger: "change"
}
],
incomeTimeBefore: [
{ required: true, message: "请输入时间", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 >= this.form.incomeTimeLate * 1) {
callback(new Error("时间须小于结束时间"));
} else {
callback();
}
},
trigger: "change"
}
],
incomeTimeLate: [
{ required: true, message: "请输入时间", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 <= this.form.incomeTimeBefore * 1) {
callback(new Error("时间须大于开始时间"));
} else {
callback();
}
},
trigger: "change"
}
],
withdrawSpan: [{ required: true, message: "请输入提现跨度", trigger: "blur" }],
approvalTime: [{ required: true, message: "请输入申请时间", trigger: "blur" }],
incomeCount: [{ required: true, message: "请输入每日进件上限", trigger: "blur" }]
abutmentWay: [{ required: true, message: "请选择对接方式", trigger: "change" }]
},
merchant: []
};
},
async created() {
// 初始化机构列表
await this.initMerchant();
// 再请求表单
const { query } = this.$route;
if (query && query.appNo) {
this.appNo = query.appNo;
this.isEdit = true;
await this.initProd();
}
},
methods: {
......@@ -464,42 +111,33 @@ export default {
this.merchant = result.result;
}
},
handleSuccessLogo(res) {
this.form.appLogo = res.result;
},
beforeAvatarUpload(file) {
const isJPG = file.type === "image/jpeg";
const isPNG = file.type === "image/png";
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG && !isPNG) {
this.$message.error("上传图片只能是 JPG 或者 PNG 格式!");
return false;
// 初始化产品信息
async initProd() {
const appNo = this.appNo;
const { result, success } = await API.prod_view({ appNo });
if (success) {
if (result.region) {
result.region = JSON.parse(result.region);
}
this.form = result;
this.params = result;
this.params.appNo = this.appNo;
this.visible = true;
// 那啥
this.handleChange();
}
if (!isLt2M) {
this.$message.error("上传图片大小不能超过 2MB!");
return false;
}
return true;
},
onSubmit(formName) {
this.$refs[formName].validate(async (valid) => {
if (valid) {
const form = Object.assign({}, this.form);
//console.log(form,'表达');
//return false;
let result = await API.prod_add({ ...form });
if (result.success) {
this.$baseMessage("产品保存成功", "success");
setTimeout(() => {
this.$router.back();
}, 1500);
handleChange() {
const { tenantNo, abutmentWay } = this.form;
if (tenantNo && abutmentWay) {
this.params = this.form;
this.visible = true;
if (abutmentWay === "H5") {
this.com = "ComH5";
} else if (abutmentWay === "API") {
this.com = "ComAPI";
}
}
});
},
onReset(formName) {
this.$refs[formName].resetFields();
}
}
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment