Commit 399771c6 authored by caimeng's avatar caimeng

编辑产品

parent cd33ef55
BASE_URL='' 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 @@ ...@@ -4,6 +4,7 @@
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta content="IE=edge" http-equiv="X-UA-Compatible" /> <meta content="IE=edge" http-equiv="X-UA-Compatible" />
<meta content="width=device-width,initial-scale=1.0" name="viewport" /> <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" /> <link href="<%= BASE_URL %>favicon.ico" rel="icon" />
<title><%= VUE_APP_TITLE %></title> <title><%= VUE_APP_TITLE %></title>
<meta <meta
......
...@@ -14,7 +14,7 @@ export default { ...@@ -14,7 +14,7 @@ export default {
} }
</script> </script>
<style lang="less" scoped> <style lang="scss" scoped>
.block-header { .block-header {
display: flex; display: flex;
......
import Vue from 'vue' import Vue from "vue";
import axios from 'axios' import axios from "axios";
import { import {
contentType, contentType,
debounce, debounce,
requestTimeout, requestTimeout,
successCode, successCode,
tokenName, tokenName
} from '@/config' } from "@/config";
import store from '@/store' import store from "@/store";
import qs from 'qs' import qs from "qs";
import router from '@/router' import router from "@/router";
import { isArray } from '@/utils/validate' import { isArray } from "@/utils/validate";
const API_URL = process.env.VUE_APP_API_PATH; const API_URL = process.env.VUE_APP_API_PATH;
//console.log(API_URL,'是啥'); //console.log(API_URL,'是啥');
let loadingInstance let loadingInstance;
// 操作正常Code数组 // 操作正常Code数组
const codeVerificationArray = isArray(successCode) const codeVerificationArray = isArray(successCode)
? [...successCode] ? [...successCode]
: [...[successCode]] : [...[successCode]];
const CODE_MESSAGE = { const CODE_MESSAGE = {
200: '服务器成功返回请求数据', 200: "服务器成功返回请求数据",
201: '新建或修改数据成功', 201: "新建或修改数据成功",
202: '一个请求已经进入后台排队(异步任务)', 202: "一个请求已经进入后台排队(异步任务)",
204: '删除数据成功', 204: "删除数据成功",
400: '发出信息有误', 400: "发出信息有误",
401: '用户没有权限(令牌、用户名、密码错误)', 401: "用户没有权限(令牌、用户名、密码错误)",
403: '用户得到授权,但是访问是被禁止的', 403: "用户得到授权,但是访问是被禁止的",
404: '访问资源不存在', 404: "访问资源不存在",
406: '请求格式不可得', 406: "请求格式不可得",
410: '请求资源被永久删除,且不会被看到', 410: "请求资源被永久删除,且不会被看到",
500: '服务器发生错误', 500: "服务器发生错误",
502: '网关错误', 502: "网关错误",
503: '服务不可用,服务器暂时过载或维护', 503: "服务不可用,服务器暂时过载或维护",
504: '网关超时', 504: "网关超时"
} };
//code: "500" //code: "500"
//message: "验证码发送过于频繁请稍后重试!" //message: "验证码发送过于频繁请稍后重试!"
...@@ -46,15 +46,15 @@ const CODE_MESSAGE = { ...@@ -46,15 +46,15 @@ const CODE_MESSAGE = {
//success: false //success: false
const handleData = ({ config, data, status, statusText }) => { const handleData = ({ config, data, status, statusText }) => {
if (loadingInstance) loadingInstance.close() if (loadingInstance) loadingInstance.close();
// 若data.code存在,覆盖默认code // 若data.code存在,覆盖默认code
let code = data && data.code ? data.code : status let code = data && data.code ? data.code : status;
// 若code属于操作正常code,则status修改为200 // 若code属于操作正常code,则status修改为200
if (codeVerificationArray.includes(code)) code = 200 if (codeVerificationArray.includes(code)) code = 200;
// 若data.msg存在,覆盖默认提醒消息 // 若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) { switch (code) {
case 200: case 200:
...@@ -65,55 +65,73 @@ const handleData = ({ config, data, status, statusText }) => { ...@@ -65,55 +65,73 @@ const handleData = ({ config, data, status, statusText }) => {
// 修改返回内容为 `data` 内容,对于绝大多数场景已经无须再关心业务状态码(code)和消息(msg) // 修改返回内容为 `data` 内容,对于绝大多数场景已经无须再关心业务状态码(code)和消息(msg)
// return data.data // return data.data
// 或者依然保持完整的格式 // 或者依然保持完整的格式
return data return data;
case 401: case 401:
Vue.prototype.$baseMessage(msg, 'error') Vue.prototype.$baseMessage(msg, "error");
store.dispatch('user/resetAll').catch(() => {}) store.dispatch("user/resetAll").catch(() => {
break });
break;
case 403: case 403:
store.dispatch('user/resetAll').catch(() => {}) store.dispatch("user/resetAll").catch(() => {
router.push({ path: '/login' }).catch(() => {}) });
break router.push({ path: "/login" }).catch(() => {
});
break;
default: default:
Vue.prototype.$baseMessage(msg, 'error') Vue.prototype.$baseMessage(msg, "error");
break break;
} }
return data return data;
} };
/** /**
* @description axios初始化 * @description axios初始化
*/ */
const instance = axios.create({ const instance = axios.create({
baseURL:API_URL, baseURL: API_URL,
timeout: requestTimeout, timeout: requestTimeout,
withCredentials: true, withCredentials: true,
headers: { headers: {
'Content-Type': contentType, "Content-Type": contentType
}, }
}) });
/** /**
* @description axios请求拦截器 * @description axios请求拦截器
*/ */
instance.interceptors.request.use( instance.interceptors.request.use(
(config) => { (config) => {
if (store.getters['user/accessToken']) if (store.getters["user/accessToken"]) {
config.headers[tokenName] = store.getters['user/accessToken'] config.headers[tokenName] = store.getters["user/accessToken"];
if ( }
config.data &&
config.headers['Content-Type'] === if (config.data && config.headers["Content-Type"] === "application/x-www-form-urlencoded;charset=UTF-8") {
'application/x-www-form-urlencoded;charset=UTF-8' config.data = qs.stringify(config.data);
) }
config.data = qs.stringify(config.data) if (debounce.some((item) => config.url.includes(item))) {
if (debounce.some((item) => config.url.includes(item))) loadingInstance = Vue.prototype.$baseLoading();
loadingInstance = Vue.prototype.$baseLoading() }
return config
// 处理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) => { (error) => {
return Promise.reject(error) return Promise.reject(error);
} }
) );
/** /**
* @description axios响应拦截器 * @description axios响应拦截器
...@@ -121,15 +139,15 @@ instance.interceptors.request.use( ...@@ -121,15 +139,15 @@ instance.interceptors.request.use(
instance.interceptors.response.use( instance.interceptors.response.use(
(response) => handleData(response), (response) => handleData(response),
(error) => { (error) => {
const { response } = error const { response } = error;
if (response === undefined) { if (response === undefined) {
Vue.prototype.$baseMessage( Vue.prototype.$baseMessage(
'未可知错误,大部分是由于后端不支持跨域CORS或无效配置引起', "未可知错误,大部分是由于后端不支持跨域CORS或无效配置引起",
'error' "error"
) );
return {} return {};
} else return handleData(response) } else return handleData(response);
} }
) );
export default instance export default instance;
...@@ -252,7 +252,6 @@ export default { ...@@ -252,7 +252,6 @@ export default {
if (valid) { if (valid) {
try { try {
this.loading = true; this.loading = true;
this.form.vfcode = "000000";
await this.login(this.form); await this.login(this.form);
console.log(this.handleRoute(), "打算跳转的地址"); console.log(this.handleRoute(), "打算跳转的地址");
await this.$router.push(this.handleRoute()); await this.$router.push(this.handleRoute());
......
...@@ -147,13 +147,11 @@ export default { ...@@ -147,13 +147,11 @@ export default {
{ {
order: 1, order: 1,
label: "机构编号", label: "机构编号",
prop: "tenantNo" prop: "tenantNo"
}, },
{ {
order: 2, order: 2,
label: "机构名称", label: "机构名称",
prop: "tenantFullName" prop: "tenantFullName"
}, },
{ {
...@@ -177,8 +175,7 @@ export default { ...@@ -177,8 +175,7 @@ export default {
}, },
{ {
order: 6, order: 6,
label: "小贷拍照", label: "小贷牌照",
prop: "loanLicenseUrl" 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 @@ ...@@ -44,271 +44,6 @@
/> />
</el-select> </el-select>
</el-form-item> </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> </el-form>
</div> </div>
</template> </template>
...@@ -461,6 +196,12 @@ export default { ...@@ -461,6 +196,12 @@ export default {
if (query && query.appNo) { if (query && query.appNo) {
this.appNo = query.appNo; this.appNo = query.appNo;
await this.initProd(); 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 { ...@@ -482,6 +223,33 @@ export default {
this.form = result; 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) { handleSuccessLogo(res) {
this.form.appLogo = res.result; this.form.appLogo = res.result;
}, },
......
...@@ -2,39 +2,3 @@ ...@@ -2,39 +2,3 @@
box-sizing: border-box; box-sizing: border-box;
padding: 20px; 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 { ...@@ -242,7 +242,7 @@ export default {
handleView(row) { handleView(row) {
const { appNo } = row; const { appNo } = row;
this.$router.push({ this.$router.push({
path: "/prod/edit", path: "/prod/new",
query: { appNo } query: { appNo }
}); });
}, },
......
...@@ -9,12 +9,15 @@ ...@@ -9,12 +9,15 @@
> >
<block-header title="对接信息" /> <block-header title="对接信息" />
<el-form-item <el-form-item
prop="tenantNo"
class="form-item" class="form-item"
label="对接机构" label="对接机构"
> >
<el-select <el-select
v-model="form.tenantNo" v-model="form.tenantNo"
:disabled="isEdit"
placeholder="请选择" placeholder="请选择"
@change="handleChange"
> >
<el-option <el-option
v-for="(item,index) in merchant" v-for="(item,index) in merchant"
...@@ -25,12 +28,15 @@ ...@@ -25,12 +28,15 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
prop="abutmentWay"
class="form-item" class="form-item"
label="对接方式" label="对接方式"
> >
<el-select <el-select
v-model="form.abutmentWay" v-model="form.abutmentWay"
:disabled="isEdit"
placeholder="请选择" placeholder="请选择"
@change="handleChange"
> >
<el-option <el-option
label="API" label="API"
...@@ -42,418 +48,59 @@ ...@@ -42,418 +48,59 @@
/> />
</el-select> </el-select>
</el-form-item> </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="配置信息" />
<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> </el-form>
<template>
<component
:is="com"
:params="params"
/>
</template>
</div> </div>
</template> </template>
<script> <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"; import API from "@/server/api";
const $API = process.env.VUE_APP_API_PATH;
const $API = process.env.VUE_APP_API_PATH;
export default { export default {
name: "MerchantNew", name: "MerchantNew",
components: { components: {
"block-header": BlockHeader ComH5,
ComAPI
}, },
data() { data() {
return { return {
uploadUrl:`${$API}/sysUser/upload`, visible: false,
com: "",
params: null,
isEdit: false,
form: { form: {
tenantNo: "", tenantNo: "",
abutmentWay: "", abutmentWay: ""
gradeSort: "",
appLogo: "",
appName: "",
appInfo: "",
abstratInfo: "",
applyAmtMin: "",
applyAmtMax: "",
withdrawSpan: "",
incomeCount: "",
approvalTime: "",
raiseTimeMax: "",
raiseTimeMin: "",
memo: "",
customerNumbers: "", // 客服电话
creditWay: 1 // 授信方式
}, },
rules: { rules: {
tenantNo: [{ required: true, message: "请选择机构名称", trigger: "change" }], tenantNo: [{ required: true, message: "请选择机构名称", trigger: "change" }],
abutmentWay: [{ 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" }]
}, },
merchant: [] merchant: []
}; };
}, },
async created() { async created() {
// 初始化机构列表 // 初始化机构列表
await this.initMerchant(); await this.initMerchant();
// 再请求表单
const { query } = this.$route;
if (query && query.appNo) {
this.appNo = query.appNo;
this.isEdit = true;
await this.initProd();
}
}, },
methods: { methods: {
...@@ -464,42 +111,33 @@ export default { ...@@ -464,42 +111,33 @@ export default {
this.merchant = result.result; this.merchant = result.result;
} }
}, },
handleSuccessLogo(res) { // 初始化产品信息
this.form.appLogo = res.result; async initProd() {
}, const appNo = this.appNo;
beforeAvatarUpload(file) { const { result, success } = await API.prod_view({ appNo });
const isJPG = file.type === "image/jpeg"; if (success) {
const isPNG = file.type === "image/png"; if (result.region) {
const isLt2M = file.size / 1024 / 1024 < 2; result.region = JSON.parse(result.region);
if (!isJPG && !isPNG) { }
this.$message.error("上传图片只能是 JPG 或者 PNG 格式!"); this.form = result;
return false; this.params = result;
} this.params.appNo = this.appNo;
if (!isLt2M) { this.visible = true;
this.$message.error("上传图片大小不能超过 2MB!"); // 那啥
return false; this.handleChange();
} }
return true;
}, },
onSubmit(formName) { handleChange() {
this.$refs[formName].validate(async (valid) => { const { tenantNo, abutmentWay } = this.form;
if (valid) { if (tenantNo && abutmentWay) {
const form = Object.assign({}, this.form); this.params = this.form;
this.visible = true;
//console.log(form,'表达'); if (abutmentWay === "H5") {
//return false; this.com = "ComH5";
let result = await API.prod_add({ ...form }); } else if (abutmentWay === "API") {
if (result.success) { this.com = "ComAPI";
this.$baseMessage("产品保存成功", "success");
setTimeout(() => {
this.$router.back();
}, 1500);
}
} }
}); }
},
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