17 changed files with 2712 additions and 69 deletions
-
2src/assets/css/theme.scss
-
528src/pages/FinancialMgm/PayConf/AppConf/index.jsx
-
206src/pages/FinancialMgm/PayConf/AppConf/index.scss
-
15src/pages/FinancialMgm/PayConf/AppConf/loadable.jsx
-
790src/pages/FinancialMgm/PayConf/PayMerchantConf/index.jsx
-
207src/pages/FinancialMgm/PayConf/PayMerchantConf/index.scss
-
15src/pages/FinancialMgm/PayConf/PayMerchantConf/loadable.jsx
-
545src/pages/FinancialMgm/PayConf/PlatformMerchantConf/index.jsx
-
207src/pages/FinancialMgm/PayConf/PlatformMerchantConf/index.scss
-
15src/pages/FinancialMgm/PayConf/PlatformMerchantConf/loadable.jsx
-
87src/pages/FinancialMgm/PayConf/components/FormItemList/index.jsx
-
5src/pages/FinancialMgm/PayConf/components/index.jsx
-
11src/pages/FinancialMgm/PayConf/index.jsx
-
18src/router/router.config.js
-
5src/services/FinancialMgm/index.js
-
117src/services/FinancialMgm/paymentConfiguration.js
-
4src/services/index.js
@ -1,6 +1,524 @@ |
|||||
import React from "react" |
|
||||
import loadable from "@loadable/component" |
|
||||
import { LoadingImg } from "@/components" |
|
||||
|
import React, { useState, useEffect } from "react"; |
||||
|
import { ResultFlowResult } from "@/components"; |
||||
|
import { FormItemList } from "../components"; |
||||
|
import { |
||||
|
Select, |
||||
|
Input, |
||||
|
Button, |
||||
|
Table, |
||||
|
message, |
||||
|
Pagination, |
||||
|
Modal, |
||||
|
Dropdown, |
||||
|
Form, |
||||
|
Checkbox, |
||||
|
Row, |
||||
|
Col, |
||||
|
} from "antd"; |
||||
|
import { useSessionStorageState } from "ahooks"; |
||||
|
import { dictionary } from "@/config/common"; |
||||
|
import "./index.scss"; |
||||
|
import ajax from "@/services"; |
||||
|
|
||||
const AppConfLoadable = loadable(() => import("./loadable")) |
|
||||
export default (pros) => <AppConfLoadable {...pros} fallback={<LoadingImg />} /> |
|
||||
|
// 应用配置 |
||||
|
function AppConfiguration(props) { |
||||
|
const [form] = Form.useForm(); |
||||
|
// session缓存 |
||||
|
const [defaultParams, setDefaultParams] = useSessionStorageState( |
||||
|
"formData_appConfiguration", |
||||
|
{ defaultValue: null } |
||||
|
); |
||||
|
// 默认数据 |
||||
|
const defaultData = { |
||||
|
app_name: "", // 应用名称 |
||||
|
app_type: "-1", //应用类型 |
||||
|
pay_merchant_id: "-1", //支付商户名称 |
||||
|
}; |
||||
|
// 分页数据 |
||||
|
const [pageInfo, setPageInfo] = useState({ |
||||
|
pn: defaultParams ? defaultParams?.pn : 1, |
||||
|
page_size: defaultParams ? defaultParams?.page_size : 15, |
||||
|
}); |
||||
|
// 表单数据 |
||||
|
const [formData, setFormData] = useState({ |
||||
|
...defaultData, |
||||
|
...defaultParams, |
||||
|
}); |
||||
|
// 搜索提交数据-存储 |
||||
|
const [holdData, setHoldData] = useState(formData); |
||||
|
// 访问接口,isAjax改变时执行 |
||||
|
const [isAjax, setIsAjax] = useState(false); |
||||
|
// 检索按钮加载状态 |
||||
|
const [loading, setLoading] = useState(false); |
||||
|
// 表格加载状态 |
||||
|
const [tabLoading, setTabLoading] = useState(false); |
||||
|
// 表格返回数据 |
||||
|
const [resultData, setResultData] = useState({ |
||||
|
total: 0, |
||||
|
list: [], |
||||
|
}); |
||||
|
const [visible, setVisible] = useState(false); |
||||
|
const [actionState, setActionState] = useState(null); //操作状态 |
||||
|
const [appTypeData, setAppTypeData] = useState([]); //应用类型 |
||||
|
const [merchantNameData, setMerchantNameData] = useState([]); //支付商户名称 |
||||
|
|
||||
|
const defRowData = { |
||||
|
id: "", |
||||
|
app_name: "", |
||||
|
app_type: null, |
||||
|
app_id: "", |
||||
|
pay_merchant_id: "", |
||||
|
}; |
||||
|
// 行数据 |
||||
|
const [rowData, setRowData] = useState(defRowData); |
||||
|
|
||||
|
useEffect(() => { |
||||
|
getSelectList(); |
||||
|
}, []); |
||||
|
|
||||
|
// 访问接口,获取表格 |
||||
|
useEffect(() => { |
||||
|
getData(); |
||||
|
}, [isAjax]); |
||||
|
|
||||
|
// 获取下拉数据 |
||||
|
const getSelectList = () => { |
||||
|
ajax.getAppTypeScenariosInfo().then( |
||||
|
(res) => { |
||||
|
if (parseInt(res?.status) === 20000) { |
||||
|
setAppTypeData(res.data?.app_type_scenario_arr || []); |
||||
|
setMerchantNameData(res.data?.payment_merchant_list || []); |
||||
|
} |
||||
|
}, |
||||
|
(err) => { |
||||
|
console.log(err); |
||||
|
} |
||||
|
); |
||||
|
}; |
||||
|
|
||||
|
// 获取列表数据 |
||||
|
const getData = () => { |
||||
|
let postData = { ...formData }; |
||||
|
if (!loading) { |
||||
|
postData = { ...holdData }; |
||||
|
} |
||||
|
setDefaultParams({ ...postData, ...pageInfo }); |
||||
|
setTabLoading(true); |
||||
|
ajax.getAppList({ ...postData, ...pageInfo }).then( |
||||
|
(res) => { |
||||
|
if (parseInt(res?.status) === 20000) { |
||||
|
setResultData(res?.data || {}); |
||||
|
} else { |
||||
|
message.error(res?.message); |
||||
|
} |
||||
|
setLoading(false); |
||||
|
setTabLoading(false); |
||||
|
}, |
||||
|
(err) => { |
||||
|
console.log(err); |
||||
|
setLoading(false); |
||||
|
setTabLoading(false); |
||||
|
} |
||||
|
); |
||||
|
}; |
||||
|
|
||||
|
// 检索数据 |
||||
|
const handleSearch = () => { |
||||
|
setLoading(true); |
||||
|
setPageInfo({ ...pageInfo, ...{ pn: 1 } }); |
||||
|
setHoldData(formData); |
||||
|
setIsAjax(!isAjax); |
||||
|
}; |
||||
|
|
||||
|
// 分页 |
||||
|
const paginationProps = { |
||||
|
className: "pagination-common", |
||||
|
showQuickJumper: true, |
||||
|
showSizeChanger: true, |
||||
|
current: pageInfo.pn, |
||||
|
total: resultData?.total, |
||||
|
pageSize: pageInfo.page_size, |
||||
|
pageSizeOptions: Array.from( |
||||
|
new Set([...[15], ...(dictionary?.pageSizeOptions || [])]) |
||||
|
), |
||||
|
onChange: (current, size) => { |
||||
|
setPageInfo({ |
||||
|
...pageInfo, |
||||
|
...{ pn: pageInfo.page_size == size ? current : 1, page_size: size }, |
||||
|
}); |
||||
|
setIsAjax(!isAjax); |
||||
|
}, |
||||
|
}; |
||||
|
|
||||
|
// 取消 |
||||
|
const onCancel = () => { |
||||
|
form.resetFields(); |
||||
|
setActionState(null); |
||||
|
setVisible(false); |
||||
|
}; |
||||
|
|
||||
|
// 操作-下拉 |
||||
|
const items = [ |
||||
|
{ key: "view", label: "查看" }, |
||||
|
{ key: "edit", label: "编辑" }, |
||||
|
]; |
||||
|
|
||||
|
//列表 |
||||
|
const tableColumns = [ |
||||
|
{ |
||||
|
title: "应用名称", |
||||
|
dataIndex: "app_name", |
||||
|
align: "center", |
||||
|
}, |
||||
|
{ |
||||
|
title: "应用类型", |
||||
|
dataIndex: "app_type_name", |
||||
|
align: "center", |
||||
|
}, |
||||
|
{ |
||||
|
title: "支付商户名称", |
||||
|
dataIndex: "payment_merchant_name", |
||||
|
align: "center", |
||||
|
}, |
||||
|
{ |
||||
|
title: "操作", |
||||
|
align: "center", |
||||
|
width: 140, |
||||
|
render: (val, row, index) => { |
||||
|
return ( |
||||
|
<Dropdown |
||||
|
arrow |
||||
|
placement="bottom" |
||||
|
menu={{ |
||||
|
items, |
||||
|
onClick: (key) => { |
||||
|
return clickDropDown(key, row); |
||||
|
}, |
||||
|
}} |
||||
|
> |
||||
|
<Button type="primary">操作</Button> |
||||
|
</Dropdown> |
||||
|
); |
||||
|
}, |
||||
|
}, |
||||
|
]; |
||||
|
|
||||
|
// 操作 |
||||
|
const clickDropDown = (param, record) => { |
||||
|
ajax |
||||
|
.getAppDetails({ |
||||
|
id: record.id, |
||||
|
}) |
||||
|
.then( |
||||
|
(res) => { |
||||
|
if (res?.status == 20000) { |
||||
|
setActionState(param.key); |
||||
|
setRowData(res.data || {}); |
||||
|
form.setFieldsValue(res.data || {}); |
||||
|
setVisible(true); |
||||
|
} else { |
||||
|
message.error(res.message); |
||||
|
} |
||||
|
}, |
||||
|
(err) => { |
||||
|
console.log(err); |
||||
|
} |
||||
|
); |
||||
|
}; |
||||
|
|
||||
|
// 添加 |
||||
|
const handleAdd = () => { |
||||
|
setActionState("add"); |
||||
|
setRowData(defRowData); |
||||
|
form.setFieldsValue(defRowData); |
||||
|
setVisible(true); |
||||
|
}; |
||||
|
|
||||
|
// 弹窗标题 |
||||
|
const getModalTitle = (key) => { |
||||
|
switch (key) { |
||||
|
case "view": |
||||
|
return "查看应用配置"; |
||||
|
case "edit": |
||||
|
return "编辑应用配置"; |
||||
|
case "add": |
||||
|
return "添加应用配置"; |
||||
|
default: |
||||
|
break; |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
// 表单改变事件 |
||||
|
const handleForm = async (changedValues, allValues) => { |
||||
|
let obj = {}; |
||||
|
let key = Object.keys(changedValues)[0]; |
||||
|
let val = Object.values(changedValues)[0]; |
||||
|
switch (key) { |
||||
|
case "app_type": |
||||
|
obj[key] = val; |
||||
|
obj.pay_scenario = ""; |
||||
|
break; |
||||
|
default: |
||||
|
obj[key] = val; |
||||
|
break; |
||||
|
} |
||||
|
form.setFieldsValue({ ...allValues, ...obj }); |
||||
|
}; |
||||
|
|
||||
|
// 表单提交 |
||||
|
const onFinish = (values) => { |
||||
|
ajax[values?.id ? "getAppEdit" : "getAppAdd"]({ |
||||
|
...values, |
||||
|
}).then( |
||||
|
(res) => { |
||||
|
if (res?.status == 20000) { |
||||
|
message.success(res.message); |
||||
|
setVisible(false); |
||||
|
setIsAjax(!isAjax); |
||||
|
} else { |
||||
|
message.error(res.message); |
||||
|
} |
||||
|
}, |
||||
|
(err) => { |
||||
|
console.log(err); |
||||
|
} |
||||
|
); |
||||
|
}; |
||||
|
|
||||
|
return ( |
||||
|
<> |
||||
|
<div className="app-configuration"> |
||||
|
<div className="paid-search"> |
||||
|
<div className="title">查询条件</div> |
||||
|
<div className="form-Wrap"> |
||||
|
<div className="yisa-search"> |
||||
|
<label>应用名称</label> |
||||
|
<Input |
||||
|
className="form-con" |
||||
|
placeholder="请输入内容" |
||||
|
value={formData?.app_name} |
||||
|
onChange={(e) => |
||||
|
setFormData({ ...formData, app_name: e.target.value }) |
||||
|
} |
||||
|
/> |
||||
|
</div> |
||||
|
<div className="yisa-search"> |
||||
|
<label>应用类型</label> |
||||
|
<Select |
||||
|
className="form-con" |
||||
|
placeholder="请选择" |
||||
|
showSearch |
||||
|
optionFilterProp="text" |
||||
|
fieldNames={{ label: "text", value: "id" }} |
||||
|
options={[...[{ text: "全部", id: "-1" }], ...appTypeData]} |
||||
|
value={formData?.app_type || undefined} |
||||
|
onChange={(v) => setFormData({ ...formData, app_type: v })} |
||||
|
/> |
||||
|
</div> |
||||
|
<div className="yisa-search"> |
||||
|
<label>支付商户名称</label> |
||||
|
<Select |
||||
|
className="form-con" |
||||
|
placeholder="请选择" |
||||
|
showSearch |
||||
|
optionFilterProp="text" |
||||
|
fieldNames={{ label: "text", value: "id" }} |
||||
|
options={[...[{ text: "全部", id: "-1" }], ...merchantNameData]} |
||||
|
value={formData?.pay_merchant_id || undefined} |
||||
|
onChange={(v) => |
||||
|
setFormData({ ...formData, pay_merchant_id: v }) |
||||
|
} |
||||
|
/> |
||||
|
</div> |
||||
|
<div className="form-btn"> |
||||
|
<Button |
||||
|
className="reset" |
||||
|
onClick={() => setFormData(defaultData)} |
||||
|
> |
||||
|
重置 |
||||
|
</Button> |
||||
|
<Button |
||||
|
className="submit" |
||||
|
type="primary" |
||||
|
onClick={handleSearch} |
||||
|
loading={loading} |
||||
|
> |
||||
|
查询 |
||||
|
</Button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div className="paid-result"> |
||||
|
<div className="result"> |
||||
|
<div className="row-head"> |
||||
|
<span className="number-wrapper"> |
||||
|
<span className="letter">共查询到</span> |
||||
|
<span className="total-number">{resultData.total || 0} </span> |
||||
|
<span className="letter">条结果</span> |
||||
|
</span> |
||||
|
<div> |
||||
|
<Button type="primary" className="green" onClick={handleAdd}> |
||||
|
添加 |
||||
|
</Button> |
||||
|
</div> |
||||
|
</div> |
||||
|
<ResultFlowResult |
||||
|
ajaxLoad={tabLoading} |
||||
|
resultData={resultData?.list || []} |
||||
|
> |
||||
|
<Table |
||||
|
className="yisa-table" |
||||
|
rowKey={(row) => row.id} |
||||
|
dataSource={resultData?.list || []} |
||||
|
columns={tableColumns} |
||||
|
pagination={false} |
||||
|
loading={tabLoading} |
||||
|
/> |
||||
|
<Pagination {...paginationProps} className="pagination-common" /> |
||||
|
</ResultFlowResult> |
||||
|
</div> |
||||
|
</div> |
||||
|
<Modal |
||||
|
open={visible} |
||||
|
width={720} |
||||
|
onCancel={onCancel} |
||||
|
footer={null} |
||||
|
className="modal-pay-configuration" |
||||
|
title={getModalTitle(actionState)} |
||||
|
> |
||||
|
<div className="form-container"> |
||||
|
<Form |
||||
|
labelCol={{ span: 4 }} |
||||
|
wrapperCol={{ span: 18 }} |
||||
|
layout="horizontal" |
||||
|
form={form} |
||||
|
initialValues={rowData} |
||||
|
onValuesChange={handleForm} |
||||
|
onFinish={onFinish} |
||||
|
> |
||||
|
<Form.Item name="id" hidden> |
||||
|
<Input /> |
||||
|
</Form.Item> |
||||
|
{[ |
||||
|
{ |
||||
|
type: "select", |
||||
|
label: "应用类型", |
||||
|
name: "app_type", |
||||
|
value: rowData?.app_type_name, |
||||
|
disabled: actionState !== "add", |
||||
|
required: actionState !== "view", |
||||
|
options: appTypeData, |
||||
|
}, |
||||
|
{ |
||||
|
type: "input", |
||||
|
label: "应用名称", |
||||
|
name: "app_name", |
||||
|
value: rowData?.app_name, |
||||
|
required: actionState !== "view", |
||||
|
}, |
||||
|
{ |
||||
|
type: "input", |
||||
|
label: "APPID", |
||||
|
name: "app_id", |
||||
|
value: rowData?.app_id, |
||||
|
disabled: actionState !== "add", |
||||
|
required: actionState !== "view", |
||||
|
}, |
||||
|
].map((item) => ( |
||||
|
<FormItemList |
||||
|
actionState={actionState} |
||||
|
key={item.name} |
||||
|
{...item} |
||||
|
/> |
||||
|
))} |
||||
|
<Form.Item |
||||
|
noStyle |
||||
|
shouldUpdate={(prevValues, currentValues) => |
||||
|
prevValues.app_type !== currentValues.app_type |
||||
|
} |
||||
|
> |
||||
|
{({ getFieldValue }) => { |
||||
|
return ( |
||||
|
<> |
||||
|
{[9, 10, 11].includes(getFieldValue("app_type")) && ( |
||||
|
<Form.Item |
||||
|
label="APPSecret" |
||||
|
name="app_secret" |
||||
|
rules={[ |
||||
|
{ |
||||
|
required: actionState !== "view", |
||||
|
message: "必填", |
||||
|
}, |
||||
|
]} |
||||
|
> |
||||
|
{actionState === "view" ? ( |
||||
|
<> |
||||
|
{rowData?.app_secret} |
||||
|
<Input hidden /> |
||||
|
</> |
||||
|
) : ( |
||||
|
<Input |
||||
|
autoComplete="off" |
||||
|
disabled={actionState !== "add"} |
||||
|
/> |
||||
|
)} |
||||
|
</Form.Item> |
||||
|
)} |
||||
|
<Form.Item |
||||
|
label="支付场景" |
||||
|
name="pay_scenario" |
||||
|
rules={[ |
||||
|
{ |
||||
|
required: actionState !== "view", |
||||
|
message: "必填", |
||||
|
}, |
||||
|
]} |
||||
|
> |
||||
|
<Checkbox.Group> |
||||
|
<Row> |
||||
|
{appTypeData |
||||
|
?.filter( |
||||
|
(item) => item.id === getFieldValue("app_type") |
||||
|
)[0] |
||||
|
?.payment_scenario_list?.map((v) => { |
||||
|
return ( |
||||
|
<Col key={v.id}> |
||||
|
<Checkbox |
||||
|
disabled={actionState === "view"} |
||||
|
value={v.id} |
||||
|
style={{ |
||||
|
lineHeight: "32px", |
||||
|
marginRight: 30, |
||||
|
}} |
||||
|
> |
||||
|
{v.text} |
||||
|
</Checkbox> |
||||
|
</Col> |
||||
|
); |
||||
|
})} |
||||
|
</Row> |
||||
|
</Checkbox.Group> |
||||
|
</Form.Item> |
||||
|
</> |
||||
|
); |
||||
|
}} |
||||
|
</Form.Item> |
||||
|
<Form.Item className="submitBtn" wrapperCol={{ span: 24 }}> |
||||
|
{actionState !== "view" && ( |
||||
|
<Button type="primary" className="submit" htmlType="submit"> |
||||
|
保存 |
||||
|
</Button> |
||||
|
)} |
||||
|
<Button className="cancel" onClick={onCancel}> |
||||
|
取消 |
||||
|
</Button> |
||||
|
</Form.Item> |
||||
|
</Form> |
||||
|
</div> |
||||
|
</Modal> |
||||
|
</div> |
||||
|
</> |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
export default AppConfiguration; |
@ -1,5 +1,211 @@ |
|||||
@import "@/assets/css/mixin.scss"; |
@import "@/assets/css/mixin.scss"; |
||||
|
|
||||
$color-container-bg : var(--color-container-bg); |
$color-container-bg : var(--color-container-bg); |
||||
$color-user-list-bg : var(--color-user-list-bg); |
$color-user-list-bg : var(--color-user-list-bg); |
||||
$color-text : var(--color-text); |
$color-text : var(--color-text); |
||||
$color-primary : var(--color-primary); |
$color-primary : var(--color-primary); |
||||
|
|
||||
|
.app-configuration { |
||||
|
display: flex; |
||||
|
padding-top: 10px; |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
overflow-y: auto; |
||||
|
@include scrollBar(var(--color-user-list-bg), #3B97FF); |
||||
|
|
||||
|
.paid-search { |
||||
|
display: block; |
||||
|
width: 375px; |
||||
|
padding: 10px 10px 20px 20px; |
||||
|
|
||||
|
.title { |
||||
|
width: 100%; |
||||
|
font-size: 16px; |
||||
|
font-family: Microsoft YaHei, Microsoft YaHei-Bold; |
||||
|
font-weight: 700; |
||||
|
text-align: left; |
||||
|
color: var(--color-text); |
||||
|
margin-bottom: 20px; |
||||
|
} |
||||
|
|
||||
|
.form-Wrap { |
||||
|
height: calc(100% - 45px); |
||||
|
overflow-y: auto; |
||||
|
scrollbar-width: none; |
||||
|
-ms-overflow-style: none; |
||||
|
|
||||
|
&::-webkit-scrollbar { |
||||
|
display: none; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.ant-select-selector, |
||||
|
.ant-picker, |
||||
|
.ant-input { |
||||
|
background-color: var(--color-search-list-item-bg) !important; |
||||
|
box-shadow: none !important; |
||||
|
color: var(--color-search-list-item-value); |
||||
|
border-color: var(--color-search-list-item-bd) !important; |
||||
|
} |
||||
|
|
||||
|
.yisa-search { |
||||
|
width: 100%; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
margin-bottom: 24px; |
||||
|
|
||||
|
label { |
||||
|
color: var(--color-search-list-item-text); |
||||
|
flex: 0 0 25%; |
||||
|
max-width: 25%; |
||||
|
text-align: right; |
||||
|
padding-right: 8px; |
||||
|
} |
||||
|
|
||||
|
.form-con { |
||||
|
flex: 1; |
||||
|
width: 220px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.form-btn { |
||||
|
display: flex; |
||||
|
flex-flow: row nowrap; |
||||
|
justify-content: space-between; |
||||
|
margin: 40px 0px 0px; |
||||
|
padding: 0 3px; |
||||
|
|
||||
|
.ant-btn+.ant-btn { |
||||
|
margin-left: 10px; |
||||
|
} |
||||
|
|
||||
|
.ant-btn span { |
||||
|
font-size: 16px; |
||||
|
font-family: Microsoft YaHei, Microsoft YaHei-Regular; |
||||
|
font-weight: 400; |
||||
|
text-align: center; |
||||
|
color: #ffffff; |
||||
|
} |
||||
|
|
||||
|
.reset { |
||||
|
width: 90px; |
||||
|
height: 36px; |
||||
|
background: var(--button-default-bg); |
||||
|
} |
||||
|
|
||||
|
.submit { |
||||
|
width: calc(100% - 100px); |
||||
|
height: 36px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.ant-btn+.ant-btn { |
||||
|
margin-left: 10px; |
||||
|
} |
||||
|
|
||||
|
.green { |
||||
|
background-color: #67c23a; |
||||
|
border-color: #67c23a; |
||||
|
} |
||||
|
|
||||
|
.paid-result { |
||||
|
width: calc(100% - 375px); |
||||
|
padding-bottom: 15px; |
||||
|
padding: 20px; |
||||
|
background: var(--color-user-list-bg); |
||||
|
border-top-left-radius: 20px; |
||||
|
box-shadow: 0px 3px 8px 0px rgba(0, 0, 0, 0.08); |
||||
|
|
||||
|
.result { |
||||
|
@include flex-columns; |
||||
|
|
||||
|
.row-head { |
||||
|
height: 32px; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: space-between; |
||||
|
margin-bottom: 13px; |
||||
|
|
||||
|
.number-wrapper { |
||||
|
display: inline-flex; |
||||
|
align-items: center; |
||||
|
font-size: 14px; |
||||
|
|
||||
|
.letter { |
||||
|
color: var(--color-text); |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
|
||||
|
.total-number { |
||||
|
color: var(--color-primary); |
||||
|
font-weight: bold; |
||||
|
margin: 0 4px; |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.cc-result-flow { |
||||
|
width: 100%; |
||||
|
height: calc(100% - 34px - 13px); |
||||
|
|
||||
|
.yisa-table { |
||||
|
width: 100%; |
||||
|
height: calc(100% - 32px - 15px); |
||||
|
overflow-y: auto !important; |
||||
|
@include scrollBar(var(--color-user-list-bg), #3B97FF); |
||||
|
|
||||
|
.ant-table-thead { |
||||
|
th { |
||||
|
background: var(--color-table-header-bg) !important; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.ant-table-tbody { |
||||
|
td { |
||||
|
background: var(--color-table-body-bg) !important; |
||||
|
border-bottom-color: var(--color-table-border-bottom-color); |
||||
|
} |
||||
|
|
||||
|
tr:nth-child(even) { |
||||
|
td { |
||||
|
background: var(--color-table-body-bg-nth-child-even) !important; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
.modal-pay-configuration { |
||||
|
|
||||
|
.submitBtn { |
||||
|
text-align: center; |
||||
|
margin: 20px 0 0; |
||||
|
|
||||
|
.ant-btn { |
||||
|
width: 80px; |
||||
|
height: 35px; |
||||
|
border: none; |
||||
|
border-radius: 4px; |
||||
|
|
||||
|
span { |
||||
|
color: #ffffff; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.submit { |
||||
|
background: #409eff; |
||||
|
} |
||||
|
|
||||
|
.cancel { |
||||
|
background: var(--button-default-bg); |
||||
|
margin-left: 20px; |
||||
|
} |
||||
|
} |
||||
|
} |
@ -1,15 +0,0 @@ |
|||||
import React, { useState, useRef, useEffect } from "react"; |
|
||||
// import { message, Pagination, Table, Space, Modal, } from "antd"; |
|
||||
// import { dictionary, utils } from "@/config/common"; |
|
||||
// import moment from 'moment' |
|
||||
// import { useSessionStorageState, useUpdateEffect, useSize, useUpdate } from 'ahooks'; |
|
||||
// import ajax from "@/services" |
|
||||
// import { FormInput, FormSelect, OptionPanel, ResultPanel, FormSliderPicker, AreaCascader, ImgResize, ImgZoom, } from "@/components" |
|
||||
// import "./index.scss"; |
|
||||
// import errorImg from "@/assets/images/layout/error.png" |
|
||||
// import { useLocation } from "react-router-dom"; |
|
||||
function AppConf() { |
|
||||
return <div>AppConf</div> |
|
||||
} |
|
||||
|
|
||||
export default AppConf; |
|
@ -1,6 +1,786 @@ |
|||||
import React from "react" |
|
||||
import loadable from "@loadable/component" |
|
||||
import { LoadingImg } from "@/components" |
|
||||
|
import React, { useState, useEffect } from "react"; |
||||
|
import { ResultFlowResult } from "@/components"; |
||||
|
import { FormItemList } from "../components"; |
||||
|
import { |
||||
|
Select, |
||||
|
Input, |
||||
|
Button, |
||||
|
Table, |
||||
|
message, |
||||
|
Pagination, |
||||
|
Modal, |
||||
|
Dropdown, |
||||
|
Form, |
||||
|
} from "antd"; |
||||
|
import { useSessionStorageState } from "ahooks"; |
||||
|
import { dictionary } from "@/config/common"; |
||||
|
import "./index.scss"; |
||||
|
import ajax from "@/services"; |
||||
|
|
||||
const PayMerchantConfLoadable = loadable(() => import("./loadable")) |
|
||||
export default (pros) => <PayMerchantConfLoadable {...pros} fallback={<LoadingImg />} /> |
|
||||
|
// 支付商户配置 |
||||
|
function MerchantConfiguration(props) { |
||||
|
const [form] = Form.useForm(); |
||||
|
// session缓存 |
||||
|
const [defaultParams, setDefaultParams] = useSessionStorageState( |
||||
|
"formData_merchantConfiguration", |
||||
|
{ defaultValue: null } |
||||
|
); |
||||
|
// 默认数据 |
||||
|
const defaultData = { |
||||
|
payment_merchant_name: "-1", //支付商户名称 |
||||
|
type: "-1", //商户类型 |
||||
|
platform: "-1", //配置平台 |
||||
|
}; |
||||
|
// 分页数据 |
||||
|
const [pageInfo, setPageInfo] = useState({ |
||||
|
pn: defaultParams ? defaultParams?.pn : 1, |
||||
|
page_size: defaultParams ? defaultParams?.page_size : 15, |
||||
|
}); |
||||
|
// 表单数据 |
||||
|
const [formData, setFormData] = useState({ |
||||
|
...defaultData, |
||||
|
...defaultParams, |
||||
|
}); |
||||
|
// 搜索提交数据-存储 |
||||
|
const [holdData, setHoldData] = useState(formData); |
||||
|
// 访问接口,isAjax改变时执行 |
||||
|
const [isAjax, setIsAjax] = useState(false); |
||||
|
// 检索按钮加载状态 |
||||
|
const [loading, setLoading] = useState(false); |
||||
|
// 表格加载状态 |
||||
|
const [tabLoading, setTabLoading] = useState(false); |
||||
|
// 表格返回数据 |
||||
|
const [resultData, setResultData] = useState({ |
||||
|
total: 0, |
||||
|
list: [], |
||||
|
}); |
||||
|
const [visible, setVisible] = useState(false); |
||||
|
const [actionState, setActionState] = useState(null); //操作状态 |
||||
|
const [merchantNameData, setMerchantNameData] = useState([]); //支付商户名称 |
||||
|
const [merchantTypeData, setMerchantTypeData] = useState([]); //商户类型 |
||||
|
const [merchantPlatformData, setMerchantPlatformData] = useState([]); //商户平台 |
||||
|
const [platformToAppData, setPlatformToAppData] = useState([]); //根据配置平台获取相关应用数据 |
||||
|
|
||||
|
const defRowData = { |
||||
|
id: "", |
||||
|
// 唯一id |
||||
|
platform: null, |
||||
|
//配置平台 |
||||
|
payment_merchant_name: "", |
||||
|
//商户名称 |
||||
|
type: null, |
||||
|
//商户类型 |
||||
|
merchant_id: "", |
||||
|
//商户ID |
||||
|
api_key: "", |
||||
|
//APIkey |
||||
|
wechat_official_account: "", |
||||
|
//(微信)微信公众号 |
||||
|
wechat_mini_program: "", |
||||
|
//(微信)微信小程序 |
||||
|
wechat_app: "", |
||||
|
//(微信)APP (商户类型为普通时,有该选项) |
||||
|
alipay_partner: "", |
||||
|
//(支付宝) |
||||
|
alipay_private_key: "", |
||||
|
//(支付宝) |
||||
|
alipay_ali_public_key: "", |
||||
|
//(支付宝) |
||||
|
service_window: "", |
||||
|
//(支付宝)服务窗 |
||||
|
alipay_app: "", |
||||
|
//(支付宝)APP-支付宝 |
||||
|
online_terminal_num: "", |
||||
|
//(招商银行 服务商)线上终端号 |
||||
|
offline_terminal_num: "", |
||||
|
//(招商银行 服务商)线下终端号 |
||||
|
online_main_merchant_id: "", |
||||
|
//(招商银行 服务商)线上主商户ID |
||||
|
offline_main_merchant_id: "", |
||||
|
//(招商银行 服务商)线下主商户ID |
||||
|
payment_channels: "", |
||||
|
//(招商银行 服务商)支付渠道配置 应用配置 |
||||
|
special_merchant: "", |
||||
|
//(招商银行 特约商户)主商户名称 |
||||
|
online_sub_merchant_id: "", |
||||
|
//(招商银行 特约商户)线上子商户ID |
||||
|
offline_sub_merchant_id: "", |
||||
|
//(招商银行 特约商户)线下子商户ID |
||||
|
}; |
||||
|
// 行数据 |
||||
|
const [rowData, setRowData] = useState(defRowData); |
||||
|
|
||||
|
useEffect(() => { |
||||
|
getSelectList(); |
||||
|
}, []); |
||||
|
|
||||
|
// 访问接口,获取表格 |
||||
|
useEffect(() => { |
||||
|
getData(); |
||||
|
}, [isAjax]); |
||||
|
|
||||
|
// 获取下拉数据 |
||||
|
const getSelectList = () => { |
||||
|
ajax.getPaymentMerchantSelectInfo().then( |
||||
|
(res) => { |
||||
|
if (parseInt(res?.status) === 20000) { |
||||
|
setMerchantNameData(res.data?.payment_merchant_list || []); |
||||
|
setMerchantTypeData(res.data?.payment_merchant_type || []); |
||||
|
setMerchantPlatformData(res.data?.payment_merchant_platform || []); |
||||
|
} |
||||
|
}, |
||||
|
(err) => { |
||||
|
console.log(err); |
||||
|
} |
||||
|
); |
||||
|
}; |
||||
|
|
||||
|
// 获取列表数据 |
||||
|
const getData = () => { |
||||
|
let postData = { ...formData }; |
||||
|
if (!loading) { |
||||
|
postData = { ...holdData }; |
||||
|
} |
||||
|
setDefaultParams({ ...postData, ...pageInfo }); |
||||
|
setTabLoading(true); |
||||
|
ajax.getPaymentMerchantList({ ...postData, ...pageInfo }).then( |
||||
|
(res) => { |
||||
|
if (parseInt(res?.status) === 20000) { |
||||
|
setResultData(res?.data || {}); |
||||
|
} else { |
||||
|
message.error(res?.message); |
||||
|
} |
||||
|
setLoading(false); |
||||
|
setTabLoading(false); |
||||
|
}, |
||||
|
(err) => { |
||||
|
console.log(err); |
||||
|
setLoading(false); |
||||
|
setTabLoading(false); |
||||
|
} |
||||
|
); |
||||
|
}; |
||||
|
|
||||
|
// 检索数据 |
||||
|
const handleSearch = () => { |
||||
|
setLoading(true); |
||||
|
setPageInfo({ ...pageInfo, ...{ pn: 1 } }); |
||||
|
setHoldData(formData); |
||||
|
setIsAjax(!isAjax); |
||||
|
}; |
||||
|
|
||||
|
// 分页 |
||||
|
const paginationProps = { |
||||
|
className: "pagination-common", |
||||
|
showQuickJumper: true, |
||||
|
showSizeChanger: true, |
||||
|
current: pageInfo.pn, |
||||
|
total: resultData?.total, |
||||
|
pageSize: pageInfo.page_size, |
||||
|
pageSizeOptions: Array.from( |
||||
|
new Set([...[15], ...(dictionary?.pageSizeOptions || [])]) |
||||
|
), |
||||
|
onChange: (current, size) => { |
||||
|
setPageInfo({ |
||||
|
...pageInfo, |
||||
|
...{ pn: pageInfo.page_size == size ? current : 1, page_size: size }, |
||||
|
}); |
||||
|
setIsAjax(!isAjax); |
||||
|
}, |
||||
|
}; |
||||
|
|
||||
|
// 取消 |
||||
|
const onCancel = () => { |
||||
|
form.resetFields(); |
||||
|
setActionState(null); |
||||
|
setVisible(false); |
||||
|
}; |
||||
|
|
||||
|
// 操作-下拉 |
||||
|
const items = [ |
||||
|
{ key: "view", label: "查看" }, |
||||
|
{ key: "edit", label: "编辑" }, |
||||
|
]; |
||||
|
|
||||
|
//列表 |
||||
|
const tableColumns = [ |
||||
|
{ |
||||
|
title: "支付商户名称", |
||||
|
dataIndex: "payment_merchant_name", |
||||
|
align: "center", |
||||
|
}, |
||||
|
{ |
||||
|
title: "商户类型", |
||||
|
dataIndex: "type_name", |
||||
|
align: "center", |
||||
|
}, |
||||
|
{ |
||||
|
title: "平台", |
||||
|
dataIndex: "platform_name", |
||||
|
align: "center", |
||||
|
}, |
||||
|
{ |
||||
|
title: "操作", |
||||
|
align: "center", |
||||
|
width: 140, |
||||
|
render: (val, row, index) => { |
||||
|
return ( |
||||
|
<Dropdown |
||||
|
arrow |
||||
|
placement="bottom" |
||||
|
menu={{ |
||||
|
items, |
||||
|
onClick: (key) => { |
||||
|
return clickDropDown(key, row); |
||||
|
}, |
||||
|
}} |
||||
|
> |
||||
|
<Button type="primary">操作</Button> |
||||
|
</Dropdown> |
||||
|
); |
||||
|
}, |
||||
|
}, |
||||
|
]; |
||||
|
|
||||
|
// 操作 |
||||
|
const clickDropDown = (param, record) => { |
||||
|
ajax |
||||
|
.getPaymentMerchantDetails({ |
||||
|
id: record.id, |
||||
|
}) |
||||
|
.then( |
||||
|
(res) => { |
||||
|
if (res?.status == 20000) { |
||||
|
setActionState(param.key); |
||||
|
setRowData(res.data || {}); |
||||
|
form.setFieldsValue(res.data || {}); |
||||
|
setVisible(true); |
||||
|
} else { |
||||
|
message.error(res.message); |
||||
|
} |
||||
|
}, |
||||
|
(err) => { |
||||
|
console.log(err); |
||||
|
} |
||||
|
); |
||||
|
}; |
||||
|
|
||||
|
// 添加 |
||||
|
const handleAdd = () => { |
||||
|
setActionState("add"); |
||||
|
setRowData(defRowData); |
||||
|
form.setFieldsValue(defRowData); |
||||
|
setVisible(true); |
||||
|
}; |
||||
|
|
||||
|
// 弹窗标题 |
||||
|
const getModalTitle = (key) => { |
||||
|
switch (key) { |
||||
|
case "view": |
||||
|
return "查看支付商户配置"; |
||||
|
case "edit": |
||||
|
return "编辑支付商户配置"; |
||||
|
case "add": |
||||
|
return "添加支付商户配置"; |
||||
|
default: |
||||
|
break; |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
// 表单改变事件 |
||||
|
const handleForm = async (changedValues, allValues) => { |
||||
|
let obj = {}; |
||||
|
let key = Object.keys(changedValues)[0]; |
||||
|
let val = Object.values(changedValues)[0]; |
||||
|
switch (key) { |
||||
|
case "platform": |
||||
|
obj[key] = val; |
||||
|
obj.type = null; |
||||
|
getPlatformSelectList(val); |
||||
|
break; |
||||
|
default: |
||||
|
obj[key] = val; |
||||
|
break; |
||||
|
} |
||||
|
form.setFieldsValue({ ...allValues, ...obj }); |
||||
|
}; |
||||
|
|
||||
|
// 表单提交 |
||||
|
const onFinish = (values) => { |
||||
|
ajax[values?.id ? "getPaymentMerchantEdit" : "getPaymentMerchantAdd"]({ |
||||
|
...values, |
||||
|
}).then( |
||||
|
(res) => { |
||||
|
if (res?.status == 20000) { |
||||
|
message.success(res.message); |
||||
|
setVisible(false); |
||||
|
setIsAjax(!isAjax); |
||||
|
} else { |
||||
|
message.error(res.message); |
||||
|
} |
||||
|
}, |
||||
|
(err) => { |
||||
|
console.log(err); |
||||
|
} |
||||
|
); |
||||
|
}; |
||||
|
|
||||
|
// 根据配置平台获取相关应用数据 |
||||
|
const getPlatformSelectList = (platform) => { |
||||
|
ajax.getPlatformToAppList({ platform }).then( |
||||
|
(res) => { |
||||
|
if (parseInt(res?.status) === 20000) { |
||||
|
setPlatformToAppData(res.data || {}); |
||||
|
} |
||||
|
}, |
||||
|
(err) => { |
||||
|
console.log(err); |
||||
|
} |
||||
|
); |
||||
|
}; |
||||
|
|
||||
|
// 平台类型=>pt(1微信、2支付宝、3招商银行、4数字人民币、5ETC) |
||||
|
// 商户类型=>mt(1普通商户、2服务商、3特约商户) |
||||
|
const dynamicFormItem = (pt, mt) => { |
||||
|
if (pt === 1) { |
||||
|
if (mt === 1 || mt === 2) { |
||||
|
return [ |
||||
|
{ |
||||
|
type: "title", |
||||
|
name: "title_1", |
||||
|
title: "微信公众平台配置", |
||||
|
}, |
||||
|
{ |
||||
|
type: "input", |
||||
|
label: "商户ID", |
||||
|
name: "merchant_id", |
||||
|
value: rowData?.merchant_id, |
||||
|
required: actionState !== "view", |
||||
|
disabled: actionState !== "add", |
||||
|
}, |
||||
|
{ |
||||
|
type: "input", |
||||
|
label: "APIkey", |
||||
|
name: "api_key", |
||||
|
value: rowData?.api_key, |
||||
|
required: actionState !== "view", |
||||
|
}, |
||||
|
{ |
||||
|
type: "select", |
||||
|
label: "微信公众号", |
||||
|
name: "wechat_official_account", |
||||
|
value: rowData?.wechat_official_account_name, |
||||
|
options: platformToAppData?.wechat_official_account || [], |
||||
|
required: false, |
||||
|
allowClear: true, |
||||
|
}, |
||||
|
{ |
||||
|
type: "select", |
||||
|
label: "微信小程序", |
||||
|
name: "wechat_mini_program", |
||||
|
value: rowData?.wechat_mini_program_name, |
||||
|
options: platformToAppData?.wechat_mini_program || [], |
||||
|
required: false, |
||||
|
allowClear: true, |
||||
|
}, |
||||
|
] |
||||
|
.concat( |
||||
|
mt === 1 |
||||
|
? [ |
||||
|
{ |
||||
|
type: "select", |
||||
|
label: "APP", |
||||
|
name: "wechat_app", |
||||
|
value: rowData?.wechat_app_name, |
||||
|
options: platformToAppData?.wechat_app || [], |
||||
|
required: false, |
||||
|
allowClear: true, |
||||
|
}, |
||||
|
] |
||||
|
: [] |
||||
|
) |
||||
|
.map((item) => ( |
||||
|
<FormItemList actionState={actionState} key={item.name} {...item} /> |
||||
|
)); |
||||
|
} else if (mt === 3) { |
||||
|
return [ |
||||
|
{ |
||||
|
type: "select", |
||||
|
label: "父商户", |
||||
|
name: "parent_merchant", |
||||
|
value: rowData?.parent_merchant_name, |
||||
|
options: [], |
||||
|
required: actionState !== "view", |
||||
|
disabled: actionState !== "add", |
||||
|
}, |
||||
|
{ |
||||
|
type: "title", |
||||
|
name: "title_1", |
||||
|
title: "微信公众平台配置", |
||||
|
}, |
||||
|
{ |
||||
|
type: "input", |
||||
|
label: "商户ID", |
||||
|
name: "merchant_id", |
||||
|
value: rowData?.merchant_id, |
||||
|
required: actionState !== "view", |
||||
|
disabled: actionState !== "add", |
||||
|
}, |
||||
|
].map((item) => ( |
||||
|
<FormItemList actionState={actionState} key={item.name} {...item} /> |
||||
|
)); |
||||
|
} else { |
||||
|
return null; |
||||
|
} |
||||
|
} else if (pt === 2) { |
||||
|
return [ |
||||
|
{ |
||||
|
type: "title", |
||||
|
name: "title_1", |
||||
|
title: "支付宝商户配置", |
||||
|
}, |
||||
|
{ |
||||
|
type: "input", |
||||
|
label: "ALIPAY_PARTNER", |
||||
|
name: "alipay_partner", |
||||
|
value: rowData?.alipay_partner, |
||||
|
required: actionState !== "view", |
||||
|
}, |
||||
|
{ |
||||
|
type: "input", |
||||
|
label: "ALIPAY_PRIVATE_KEY", |
||||
|
name: "alipay_private_key", |
||||
|
value: rowData?.alipay_private_key, |
||||
|
required: actionState !== "view", |
||||
|
}, |
||||
|
{ |
||||
|
type: "input", |
||||
|
label: "ALIPAY_ALI_PUBLIC_KEY", |
||||
|
name: "alipay_ali_public_key", |
||||
|
value: rowData?.alipay_ali_public_key, |
||||
|
required: actionState !== "view", |
||||
|
}, |
||||
|
{ |
||||
|
type: "select", |
||||
|
label: "服务窗", |
||||
|
name: "service_window", |
||||
|
value: rowData?.service_window_name, |
||||
|
options: platformToAppData?.service_window || [], |
||||
|
required: false, |
||||
|
allowClear: true, |
||||
|
}, |
||||
|
{ |
||||
|
type: "select", |
||||
|
label: "APP-支付宝", |
||||
|
name: "alipay_app", |
||||
|
value: rowData?.alipay_app_name, |
||||
|
options: platformToAppData?.alipay_app || [], |
||||
|
required: false, |
||||
|
allowClear: true, |
||||
|
}, |
||||
|
].map((item) => ( |
||||
|
<FormItemList actionState={actionState} key={item.name} {...item} /> |
||||
|
)); |
||||
|
} else if (pt === 3) { |
||||
|
if (mt === 2) { |
||||
|
return [ |
||||
|
{ |
||||
|
type: "title", |
||||
|
name: "title_1", |
||||
|
title: "服务商配置", |
||||
|
}, |
||||
|
{ |
||||
|
type: "input", |
||||
|
label: "商户ID", |
||||
|
name: "merchant_id", |
||||
|
value: rowData?.merchant_id, |
||||
|
required: actionState !== "view", |
||||
|
}, |
||||
|
{ |
||||
|
type: "input", |
||||
|
label: "APIkey", |
||||
|
name: "api_key", |
||||
|
value: rowData?.api_key, |
||||
|
required: actionState !== "view", |
||||
|
}, |
||||
|
{ |
||||
|
type: "input", |
||||
|
label: "线上终端号", |
||||
|
name: "online_terminal_num", |
||||
|
value: rowData?.online_terminal_num, |
||||
|
required: actionState !== "view", |
||||
|
}, |
||||
|
{ |
||||
|
type: "input", |
||||
|
label: "线下终端号", |
||||
|
name: "offline_terminal_num", |
||||
|
value: rowData?.offline_terminal_num, |
||||
|
required: actionState !== "view", |
||||
|
}, |
||||
|
{ |
||||
|
type: "input", |
||||
|
label: "线上主商户ID", |
||||
|
name: "online_main_merchant_id", |
||||
|
value: rowData?.online_main_merchant_id, |
||||
|
required: actionState !== "view", |
||||
|
}, |
||||
|
{ |
||||
|
type: "input", |
||||
|
label: "线下主商户ID", |
||||
|
name: "offline_main_merchant_id", |
||||
|
value: rowData?.offline_main_merchant_id, |
||||
|
required: actionState !== "view", |
||||
|
}, |
||||
|
{ |
||||
|
type: "title", |
||||
|
name: "title_2", |
||||
|
title: "支付渠道配置", |
||||
|
}, |
||||
|
{ |
||||
|
type: "select", |
||||
|
label: "应用选择", |
||||
|
name: "payment_channels", |
||||
|
value: rowData?.payment_channels_name, |
||||
|
options: platformToAppData?.payment_channels || [], |
||||
|
required: actionState !== "view", |
||||
|
}, |
||||
|
].map((item) => ( |
||||
|
<FormItemList actionState={actionState} key={item.name} {...item} /> |
||||
|
)); |
||||
|
} else if (mt === 3) { |
||||
|
return [ |
||||
|
{ |
||||
|
type: "title", |
||||
|
name: "title_1", |
||||
|
title: "特约商户配置", |
||||
|
}, |
||||
|
{ |
||||
|
type: "select", |
||||
|
label: "主商户名称", |
||||
|
name: "special_merchant", |
||||
|
value: rowData?.special_merchant_name, |
||||
|
options: platformToAppData?.special_merchant || [], |
||||
|
disabled: actionState !== "add", |
||||
|
required: actionState !== "view", |
||||
|
}, |
||||
|
{ |
||||
|
type: "input", |
||||
|
label: "商户ID", |
||||
|
name: "merchant_id", |
||||
|
value: rowData?.merchant_id, |
||||
|
required: actionState !== "view", |
||||
|
}, |
||||
|
{ |
||||
|
type: "input", |
||||
|
label: "线上子商户ID", |
||||
|
name: "online_sub_merchant_id", |
||||
|
value: rowData?.online_sub_merchant_id, |
||||
|
required: false, |
||||
|
}, |
||||
|
{ |
||||
|
type: "input", |
||||
|
label: "线下子商户ID", |
||||
|
name: "offline_sub_merchant_id", |
||||
|
value: rowData?.offline_sub_merchant_id, |
||||
|
required: false, |
||||
|
}, |
||||
|
].map((item) => ( |
||||
|
<FormItemList actionState={actionState} key={item.name} {...item} /> |
||||
|
)); |
||||
|
} else { |
||||
|
return null; |
||||
|
} |
||||
|
} else { |
||||
|
return null; |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
return ( |
||||
|
<> |
||||
|
<div className="merchant-configuration"> |
||||
|
<div className="paid-search"> |
||||
|
<div className="title">查询条件</div> |
||||
|
<div className="form-Wrap"> |
||||
|
<div className="yisa-search"> |
||||
|
<label>支付商户名称</label> |
||||
|
<Select |
||||
|
className="form-con" |
||||
|
placeholder="请选择" |
||||
|
showSearch |
||||
|
optionFilterProp="text" |
||||
|
fieldNames={{ label: "text", value: "id" }} |
||||
|
options={[...[{ text: "全部", id: "-1" }], ...merchantNameData]} |
||||
|
value={formData?.payment_merchant_name || undefined} |
||||
|
onChange={(v) => |
||||
|
setFormData({ ...formData, payment_merchant_name: v }) |
||||
|
} |
||||
|
/> |
||||
|
</div> |
||||
|
<div className="yisa-search"> |
||||
|
<label>商户类型</label> |
||||
|
<Select |
||||
|
className="form-con" |
||||
|
placeholder="请选择" |
||||
|
showSearch |
||||
|
optionFilterProp="text" |
||||
|
fieldNames={{ label: "text", value: "id" }} |
||||
|
options={[...[{ text: "全部", id: "-1" }], ...merchantTypeData]} |
||||
|
value={formData?.type || undefined} |
||||
|
onChange={(v) => setFormData({ ...formData, type: v })} |
||||
|
/> |
||||
|
</div> |
||||
|
<div className="yisa-search"> |
||||
|
<label>平台</label> |
||||
|
<Select |
||||
|
className="form-con" |
||||
|
placeholder="请选择" |
||||
|
showSearch |
||||
|
optionFilterProp="text" |
||||
|
fieldNames={{ label: "text", value: "id" }} |
||||
|
options={[ |
||||
|
...[{ text: "全部", id: "-1" }], |
||||
|
...merchantPlatformData, |
||||
|
]} |
||||
|
value={formData?.platform || undefined} |
||||
|
onChange={(v) => setFormData({ ...formData, platform: v })} |
||||
|
/> |
||||
|
</div> |
||||
|
<div className="form-btn"> |
||||
|
<Button |
||||
|
className="reset" |
||||
|
onClick={() => setFormData(defaultData)} |
||||
|
> |
||||
|
重置 |
||||
|
</Button> |
||||
|
<Button |
||||
|
className="submit" |
||||
|
type="primary" |
||||
|
onClick={handleSearch} |
||||
|
loading={loading} |
||||
|
> |
||||
|
查询 |
||||
|
</Button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div className="paid-result"> |
||||
|
<div className="result"> |
||||
|
<div className="row-head"> |
||||
|
<span className="number-wrapper"> |
||||
|
<span className="letter">共查询到</span> |
||||
|
<span className="total-number">{resultData.total || 0} </span> |
||||
|
<span className="letter">条结果</span> |
||||
|
</span> |
||||
|
<div> |
||||
|
<Button type="primary" className="green" onClick={handleAdd}> |
||||
|
添加 |
||||
|
</Button> |
||||
|
</div> |
||||
|
</div> |
||||
|
<ResultFlowResult |
||||
|
ajaxLoad={tabLoading} |
||||
|
resultData={resultData?.list || []} |
||||
|
> |
||||
|
<Table |
||||
|
className="yisa-table" |
||||
|
rowKey={(row) => row.id} |
||||
|
dataSource={resultData?.list || []} |
||||
|
columns={tableColumns} |
||||
|
pagination={false} |
||||
|
loading={tabLoading} |
||||
|
/> |
||||
|
<Pagination {...paginationProps} className="pagination-common" /> |
||||
|
</ResultFlowResult> |
||||
|
</div> |
||||
|
</div> |
||||
|
<Modal |
||||
|
open={visible} |
||||
|
width={720} |
||||
|
onCancel={onCancel} |
||||
|
footer={null} |
||||
|
className="modal-pay-configuration" |
||||
|
title={getModalTitle(actionState)} |
||||
|
> |
||||
|
<div className="form-container"> |
||||
|
<Form |
||||
|
labelCol={{ span: 6 }} |
||||
|
wrapperCol={{ span: 16 }} |
||||
|
layout="horizontal" |
||||
|
form={form} |
||||
|
initialValues={rowData} |
||||
|
onValuesChange={handleForm} |
||||
|
onFinish={onFinish} |
||||
|
> |
||||
|
<Form.Item name="id" hidden> |
||||
|
<Input /> |
||||
|
</Form.Item> |
||||
|
{[ |
||||
|
{ |
||||
|
type: "select", |
||||
|
label: "配置平台", |
||||
|
name: "platform", |
||||
|
value: rowData?.platform_name, |
||||
|
options: merchantPlatformData, |
||||
|
disabled: actionState !== "add", |
||||
|
required: actionState !== "view", |
||||
|
}, |
||||
|
{ |
||||
|
type: "input", |
||||
|
label: "商户名称", |
||||
|
name: "payment_merchant_name", |
||||
|
value: rowData?.payment_merchant_name, |
||||
|
required: actionState !== "view", |
||||
|
}, |
||||
|
{ |
||||
|
type: "select", |
||||
|
label: "商户类型", |
||||
|
name: "type", |
||||
|
value: rowData?.type_name, |
||||
|
options: platformToAppData.merchant_type_id_list || [], |
||||
|
disabled: actionState !== "add", |
||||
|
required: actionState !== "view", |
||||
|
}, |
||||
|
].map((item) => ( |
||||
|
<FormItemList |
||||
|
actionState={actionState} |
||||
|
key={item.name} |
||||
|
{...item} |
||||
|
/> |
||||
|
))} |
||||
|
<Form.Item |
||||
|
noStyle |
||||
|
shouldUpdate={(prevValues, currentValues) => |
||||
|
prevValues.platform !== currentValues.platform || |
||||
|
prevValues.type !== currentValues.type |
||||
|
} |
||||
|
> |
||||
|
{({ getFieldValue }) => { |
||||
|
return ( |
||||
|
<> |
||||
|
{dynamicFormItem( |
||||
|
getFieldValue("platform"), |
||||
|
getFieldValue("type") |
||||
|
)} |
||||
|
</> |
||||
|
); |
||||
|
}} |
||||
|
</Form.Item> |
||||
|
<Form.Item className="submitBtn" wrapperCol={{ span: 24 }}> |
||||
|
{actionState !== "view" && ( |
||||
|
<Button type="primary" className="submit" htmlType="submit"> |
||||
|
保存 |
||||
|
</Button> |
||||
|
)} |
||||
|
<Button className="cancel" onClick={onCancel}> |
||||
|
取消 |
||||
|
</Button> |
||||
|
</Form.Item> |
||||
|
</Form> |
||||
|
</div> |
||||
|
</Modal> |
||||
|
</div> |
||||
|
</> |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
export default MerchantConfiguration; |
@ -1,5 +1,212 @@ |
|||||
@import "@/assets/css/mixin.scss"; |
@import "@/assets/css/mixin.scss"; |
||||
|
|
||||
$color-container-bg : var(--color-container-bg); |
$color-container-bg : var(--color-container-bg); |
||||
$color-user-list-bg : var(--color-user-list-bg); |
$color-user-list-bg : var(--color-user-list-bg); |
||||
$color-text : var(--color-text); |
$color-text : var(--color-text); |
||||
$color-primary : var(--color-primary); |
$color-primary : var(--color-primary); |
||||
|
|
||||
|
.merchant-configuration { |
||||
|
display: flex; |
||||
|
padding-top: 10px; |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
overflow-y: auto; |
||||
|
@include scrollBar(var(--color-user-list-bg), #3B97FF); |
||||
|
|
||||
|
.paid-search { |
||||
|
display: block; |
||||
|
width: 375px; |
||||
|
padding: 10px 10px 20px 20px; |
||||
|
|
||||
|
.title { |
||||
|
width: 100%; |
||||
|
font-size: 16px; |
||||
|
font-family: Microsoft YaHei, Microsoft YaHei-Bold; |
||||
|
font-weight: 700; |
||||
|
text-align: left; |
||||
|
color: var(--color-text); |
||||
|
margin-bottom: 20px; |
||||
|
} |
||||
|
|
||||
|
.form-Wrap { |
||||
|
height: calc(100% - 45px); |
||||
|
overflow-y: auto; |
||||
|
scrollbar-width: none; |
||||
|
-ms-overflow-style: none; |
||||
|
|
||||
|
&::-webkit-scrollbar { |
||||
|
display: none; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.ant-select-selector, |
||||
|
.ant-picker, |
||||
|
.ant-input { |
||||
|
background-color: var(--color-search-list-item-bg) !important; |
||||
|
box-shadow: none !important; |
||||
|
color: var(--color-search-list-item-value); |
||||
|
border-color: var(--color-search-list-item-bd) !important; |
||||
|
} |
||||
|
|
||||
|
.yisa-search { |
||||
|
width: 100%; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
margin-bottom: 24px; |
||||
|
|
||||
|
label { |
||||
|
color: var(--color-search-list-item-text); |
||||
|
flex: 0 0 25%; |
||||
|
max-width: 25%; |
||||
|
text-align: right; |
||||
|
padding-right: 8px; |
||||
|
} |
||||
|
|
||||
|
.form-con { |
||||
|
flex: 1; |
||||
|
width: 220px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.form-btn { |
||||
|
display: flex; |
||||
|
flex-flow: row nowrap; |
||||
|
justify-content: space-between; |
||||
|
margin: 40px 0px 0px; |
||||
|
padding: 0 3px; |
||||
|
|
||||
|
.ant-btn+.ant-btn { |
||||
|
margin-left: 10px; |
||||
|
} |
||||
|
|
||||
|
.ant-btn span { |
||||
|
font-size: 16px; |
||||
|
font-family: Microsoft YaHei, Microsoft YaHei-Regular; |
||||
|
font-weight: 400; |
||||
|
text-align: center; |
||||
|
color: #ffffff; |
||||
|
} |
||||
|
|
||||
|
.reset { |
||||
|
width: 90px; |
||||
|
height: 36px; |
||||
|
background: var(--button-default-bg); |
||||
|
} |
||||
|
|
||||
|
.submit { |
||||
|
width: calc(100% - 100px); |
||||
|
height: 36px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.ant-btn+.ant-btn { |
||||
|
margin-left: 10px; |
||||
|
} |
||||
|
|
||||
|
.green { |
||||
|
background-color: #67c23a; |
||||
|
border-color: #67c23a; |
||||
|
} |
||||
|
|
||||
|
.paid-result { |
||||
|
width: calc(100% - 375px); |
||||
|
padding-bottom: 15px; |
||||
|
padding: 20px; |
||||
|
background: var(--color-user-list-bg); |
||||
|
border-top-left-radius: 20px; |
||||
|
box-shadow: 0px 3px 8px 0px rgba(0, 0, 0, 0.08); |
||||
|
|
||||
|
.result { |
||||
|
@include flex-columns; |
||||
|
|
||||
|
.row-head { |
||||
|
height: 32px; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: space-between; |
||||
|
margin-bottom: 13px; |
||||
|
|
||||
|
.number-wrapper { |
||||
|
display: inline-flex; |
||||
|
align-items: center; |
||||
|
font-size: 14px; |
||||
|
|
||||
|
.letter { |
||||
|
color: var(--color-text); |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
|
||||
|
.total-number { |
||||
|
color: var(--color-primary); |
||||
|
font-weight: bold; |
||||
|
margin: 0 4px; |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.cc-result-flow { |
||||
|
width: 100%; |
||||
|
height: calc(100% - 34px - 13px); |
||||
|
|
||||
|
.yisa-table { |
||||
|
width: 100%; |
||||
|
height: calc(100% - 32px - 15px); |
||||
|
overflow-y: auto !important; |
||||
|
@include scrollBar(var(--color-user-list-bg), #3B97FF); |
||||
|
|
||||
|
.ant-table-thead { |
||||
|
th { |
||||
|
background: var(--color-table-header-bg) !important; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.ant-table-tbody { |
||||
|
td { |
||||
|
background: var(--color-table-body-bg) !important; |
||||
|
border-bottom-color: var(--color-table-border-bottom-color); |
||||
|
} |
||||
|
|
||||
|
tr:nth-child(even) { |
||||
|
td { |
||||
|
background: var(--color-table-body-bg-nth-child-even) !important; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
.modal-pay-configuration { |
||||
|
|
||||
|
.submitBtn { |
||||
|
text-align: center; |
||||
|
margin: 20px 0 0; |
||||
|
|
||||
|
.ant-btn { |
||||
|
width: 80px; |
||||
|
height: 35px; |
||||
|
border: none; |
||||
|
border-radius: 4px; |
||||
|
|
||||
|
span { |
||||
|
color: #ffffff; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.submit { |
||||
|
background: #409eff; |
||||
|
} |
||||
|
|
||||
|
.cancel { |
||||
|
background: var(--button-default-bg); |
||||
|
margin-left: 20px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
@ -1,15 +0,0 @@ |
|||||
import React, { useState, useRef, useEffect } from "react"; |
|
||||
// import { message, Pagination, Table, Space, Modal, } from "antd"; |
|
||||
// import { dictionary, utils } from "@/config/common"; |
|
||||
// import moment from 'moment' |
|
||||
// import { useSessionStorageState, useUpdateEffect, useSize, useUpdate } from 'ahooks'; |
|
||||
// import ajax from "@/services" |
|
||||
// import { FormInput, FormSelect, OptionPanel, ResultPanel, FormSliderPicker, AreaCascader, ImgResize, ImgZoom, } from "@/components" |
|
||||
// import "./index.scss"; |
|
||||
// import errorImg from "@/assets/images/layout/error.png" |
|
||||
// import { useLocation } from "react-router-dom"; |
|
||||
function PayMerchantConf() { |
|
||||
return <div>PayMerchantConf</div> |
|
||||
} |
|
||||
|
|
||||
export default PayMerchantConf; |
|
@ -1,6 +1,541 @@ |
|||||
import React from "react" |
|
||||
import loadable from "@loadable/component" |
|
||||
import { LoadingImg } from "@/components" |
|
||||
|
import React, { useState, useRef, useEffect } from "react"; |
||||
|
import { ResultFlowResult } from "@/components"; |
||||
|
import { |
||||
|
Select, |
||||
|
Input, |
||||
|
Button, |
||||
|
Table, |
||||
|
message, |
||||
|
Pagination, |
||||
|
Modal, |
||||
|
Dropdown, |
||||
|
Form, |
||||
|
Checkbox, |
||||
|
Row, |
||||
|
Col, |
||||
|
} from "antd"; |
||||
|
import { useSessionStorageState } from "ahooks"; |
||||
|
import { dictionary } from "@/config/common"; |
||||
|
import moment from "moment"; |
||||
|
import "./index.scss"; |
||||
|
import ajax from "@/services"; |
||||
|
|
||||
const PlatformMerchantConfLoadable = loadable(() => import("./loadable")) |
|
||||
export default (pros) => <PlatformMerchantConfLoadable {...pros} fallback={<LoadingImg />} /> |
|
||||
|
// 平台商户配置 |
||||
|
function PlatformConfiguration(props) { |
||||
|
const [form] = Form.useForm(); |
||||
|
// session缓存 |
||||
|
const [defaultParams, setDefaultParams] = useSessionStorageState( |
||||
|
"formData_platformConfiguration", |
||||
|
{ defaultValue: null } |
||||
|
); |
||||
|
// 默认数据 |
||||
|
const defaultData = { |
||||
|
app_name: "", // 应用名称 |
||||
|
app_type: "-1", //应用类型 |
||||
|
pay_merchant_id: "-1", //支付商户名称 |
||||
|
}; |
||||
|
// 分页数据 |
||||
|
const [pageInfo, setPageInfo] = useState({ |
||||
|
pn: defaultParams ? defaultParams?.pn : 1, |
||||
|
page_size: defaultParams ? defaultParams?.page_size : 15, |
||||
|
}); |
||||
|
// 表单数据 |
||||
|
const [formData, setFormData] = useState({ |
||||
|
...defaultData, |
||||
|
...defaultParams, |
||||
|
}); |
||||
|
// 搜索提交数据-存储 |
||||
|
const [holdData, setHoldData] = useState(formData); |
||||
|
// 访问接口,isAjax改变时执行 |
||||
|
const [isAjax, setIsAjax] = useState(false); |
||||
|
// 检索按钮加载状态 |
||||
|
const [loading, setLoading] = useState(false); |
||||
|
// 表格加载状态 |
||||
|
const [tabLoading, setTabLoading] = useState(false); |
||||
|
// 表格返回数据 |
||||
|
const [resultData, setResultData] = useState({ |
||||
|
total: 0, |
||||
|
list: [], |
||||
|
}); |
||||
|
const [visible, setVisible] = useState(false); |
||||
|
const [actionState, setActionState] = useState(null); //操作状态 |
||||
|
const [appTypeData, setAppTypeData] = useState([]); //应用类型 |
||||
|
const [payMerchantData, setPayMerchantData] = useState([]); //支付商户名称 |
||||
|
|
||||
|
const defRowData = { |
||||
|
id: "", |
||||
|
app_name: "", |
||||
|
app_type: "", |
||||
|
app_id: "", |
||||
|
pay_merchant_id: "", |
||||
|
}; |
||||
|
// 行数据 |
||||
|
const [rowData, setRowData] = useState(defRowData); |
||||
|
|
||||
|
useEffect(() => { |
||||
|
getSelectList(); |
||||
|
}, []); |
||||
|
|
||||
|
// 访问接口,获取表格 |
||||
|
useEffect(() => { |
||||
|
getData(); |
||||
|
}, [isAjax]); |
||||
|
|
||||
|
// 获取下拉数据 |
||||
|
const getSelectList = () => { |
||||
|
ajax.getAppTypeScenariosInfo().then( |
||||
|
(res) => { |
||||
|
if (parseInt(res?.status) === 20000) { |
||||
|
setAppTypeData(res.data?.app_type_scenario_arr || []); |
||||
|
setPayMerchantData(res.data?.payment_merchant_list || []); |
||||
|
} |
||||
|
}, |
||||
|
(err) => { |
||||
|
console.log(err); |
||||
|
} |
||||
|
); |
||||
|
}; |
||||
|
|
||||
|
// 获取列表数据 |
||||
|
const getData = () => { |
||||
|
let postData = { ...formData }; |
||||
|
if (!loading) { |
||||
|
postData = { ...holdData }; |
||||
|
} |
||||
|
setDefaultParams({ ...postData, ...pageInfo }); |
||||
|
setTabLoading(true); |
||||
|
ajax.getAppList({ ...postData, ...pageInfo }).then( |
||||
|
(res) => { |
||||
|
if (parseInt(res?.status) === 20000) { |
||||
|
setResultData(res?.data || {}); |
||||
|
} else { |
||||
|
message.error(res?.message); |
||||
|
} |
||||
|
setLoading(false); |
||||
|
setTabLoading(false); |
||||
|
}, |
||||
|
(err) => { |
||||
|
console.log(err); |
||||
|
setLoading(false); |
||||
|
setTabLoading(false); |
||||
|
} |
||||
|
); |
||||
|
}; |
||||
|
|
||||
|
// 检索数据 |
||||
|
const handleSearch = () => { |
||||
|
setLoading(true); |
||||
|
setPageInfo({ ...pageInfo, ...{ pn: 1 } }); |
||||
|
setHoldData(formData); |
||||
|
setIsAjax(!isAjax); |
||||
|
}; |
||||
|
|
||||
|
// 分页 |
||||
|
const paginationProps = { |
||||
|
className: "pagination-common", |
||||
|
showQuickJumper: true, |
||||
|
showSizeChanger: true, |
||||
|
current: pageInfo.pn, |
||||
|
total: resultData?.total, |
||||
|
pageSize: pageInfo.page_size, |
||||
|
pageSizeOptions: Array.from( |
||||
|
new Set([...[15], ...(dictionary?.pageSizeOptions || [])]) |
||||
|
), |
||||
|
onChange: (current, size) => { |
||||
|
setPageInfo({ |
||||
|
...pageInfo, |
||||
|
...{ pn: pageInfo.page_size == size ? current : 1, page_size: size }, |
||||
|
}); |
||||
|
setIsAjax(!isAjax); |
||||
|
}, |
||||
|
}; |
||||
|
|
||||
|
// 取消 |
||||
|
const onCancel = () => { |
||||
|
form.resetFields(); |
||||
|
setActionState(null); |
||||
|
setVisible(false); |
||||
|
}; |
||||
|
|
||||
|
// 操作-下拉 |
||||
|
const items = [ |
||||
|
{ key: "view", label: "查看" }, |
||||
|
{ key: "edit", label: "编辑" }, |
||||
|
]; |
||||
|
|
||||
|
//列表 |
||||
|
const tableColumns = [ |
||||
|
{ |
||||
|
title: "应用名称", |
||||
|
dataIndex: "app_name", |
||||
|
align: "center", |
||||
|
}, |
||||
|
{ |
||||
|
title: "应用类型", |
||||
|
dataIndex: "app_type_name", |
||||
|
align: "center", |
||||
|
}, |
||||
|
{ |
||||
|
title: "支付商户名称", |
||||
|
dataIndex: "payment_merchant_name", |
||||
|
align: "center", |
||||
|
}, |
||||
|
{ |
||||
|
title: "操作", |
||||
|
align: "center", |
||||
|
width: 140, |
||||
|
render: (val, row, index) => { |
||||
|
return ( |
||||
|
<Dropdown |
||||
|
arrow |
||||
|
placement="bottom" |
||||
|
menu={{ |
||||
|
items, |
||||
|
onClick: (key) => { |
||||
|
return clickDropDown(key, row); |
||||
|
}, |
||||
|
}} |
||||
|
> |
||||
|
<Button type="primary">操作</Button> |
||||
|
</Dropdown> |
||||
|
); |
||||
|
}, |
||||
|
}, |
||||
|
]; |
||||
|
|
||||
|
// 操作 |
||||
|
const clickDropDown = (param, record) => { |
||||
|
ajax |
||||
|
.getAppDetails({ |
||||
|
id: record.id, |
||||
|
}) |
||||
|
.then( |
||||
|
(res) => { |
||||
|
if (res?.status == 20000) { |
||||
|
setActionState(param.key); |
||||
|
setRowData(res.data || {}); |
||||
|
form.setFieldsValue(res.data || {}); |
||||
|
setVisible(true); |
||||
|
} else { |
||||
|
message.error(res.message); |
||||
|
} |
||||
|
}, |
||||
|
(err) => { |
||||
|
console.log(err); |
||||
|
} |
||||
|
); |
||||
|
}; |
||||
|
|
||||
|
// 添加 |
||||
|
const handleAdd = () => { |
||||
|
setActionState("add"); |
||||
|
setRowData(defRowData); |
||||
|
form.setFieldsValue(defRowData); |
||||
|
setVisible(true); |
||||
|
}; |
||||
|
|
||||
|
// 弹窗标题 |
||||
|
const getModalTitle = (key) => { |
||||
|
switch (key) { |
||||
|
case "view": |
||||
|
return "查看应用配置"; |
||||
|
case "edit": |
||||
|
return "编辑应用配置"; |
||||
|
case "add": |
||||
|
return "添加应用配置"; |
||||
|
default: |
||||
|
break; |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
// 表单改变事件 |
||||
|
const handleForm = async (changedValues, allValues) => { |
||||
|
let obj = {}; |
||||
|
let key = Object.keys(changedValues)[0]; |
||||
|
let val = Object.values(changedValues)[0]; |
||||
|
switch (key) { |
||||
|
case "app_type": |
||||
|
obj[key] = val; |
||||
|
obj.pay_scenario = ""; |
||||
|
break; |
||||
|
default: |
||||
|
obj[key] = val; |
||||
|
break; |
||||
|
} |
||||
|
form.setFieldsValue({ ...allValues, ...obj }); |
||||
|
}; |
||||
|
|
||||
|
// 表单提交 |
||||
|
const onFinish = (values) => { |
||||
|
ajax[values?.id ? "getAppEdit" : "getAppAdd"]({ |
||||
|
...values, |
||||
|
}).then( |
||||
|
(res) => { |
||||
|
if (res?.status == 20000) { |
||||
|
message.success(res.message); |
||||
|
setVisible(false); |
||||
|
setIsAjax(!isAjax); |
||||
|
} else { |
||||
|
message.error(res.message); |
||||
|
} |
||||
|
}, |
||||
|
(err) => { |
||||
|
console.log(err); |
||||
|
} |
||||
|
); |
||||
|
}; |
||||
|
|
||||
|
return ( |
||||
|
<> |
||||
|
<div className="platform-configuration"> |
||||
|
<div className="paid-search"> |
||||
|
<div className="title">查询条件</div> |
||||
|
<div className="form-Wrap"> |
||||
|
<div className="yisa-search"> |
||||
|
<label>应用名称</label> |
||||
|
<Input |
||||
|
className="form-con" |
||||
|
placeholder="请输入内容" |
||||
|
value={formData?.app_name} |
||||
|
onChange={(e) => |
||||
|
setFormData({ ...formData, app_name: e.target.value }) |
||||
|
} |
||||
|
/> |
||||
|
</div> |
||||
|
<div className="yisa-search"> |
||||
|
<label>应用类型</label> |
||||
|
<Select |
||||
|
className="form-con" |
||||
|
placeholder="请选择" |
||||
|
showSearch |
||||
|
optionFilterProp="text" |
||||
|
fieldNames={{ label: "text", value: "id" }} |
||||
|
options={[...[{ text: "全部", id: "-1" }], ...appTypeData]} |
||||
|
value={formData?.app_type || undefined} |
||||
|
onChange={(v) => setFormData({ ...formData, app_type: v })} |
||||
|
/> |
||||
|
</div> |
||||
|
<div className="yisa-search"> |
||||
|
<label>支付商户名称</label> |
||||
|
<Select |
||||
|
className="form-con" |
||||
|
placeholder="请选择" |
||||
|
showSearch |
||||
|
optionFilterProp="text" |
||||
|
fieldNames={{ label: "text", value: "id" }} |
||||
|
options={[...[{ text: "全部", id: "-1" }], ...payMerchantData]} |
||||
|
value={formData?.pay_merchant_id || undefined} |
||||
|
onChange={(v) => |
||||
|
setFormData({ ...formData, pay_merchant_id: v }) |
||||
|
} |
||||
|
/> |
||||
|
</div> |
||||
|
<div className="form-btn"> |
||||
|
<Button |
||||
|
className="reset" |
||||
|
onClick={() => setFormData(defaultData)} |
||||
|
> |
||||
|
重置 |
||||
|
</Button> |
||||
|
<Button |
||||
|
className="submit" |
||||
|
type="primary" |
||||
|
onClick={handleSearch} |
||||
|
loading={loading} |
||||
|
> |
||||
|
查询 |
||||
|
</Button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div className="paid-result"> |
||||
|
<div className="result"> |
||||
|
<div className="row-head"> |
||||
|
<span className="number-wrapper"> |
||||
|
<span className="letter">共查询到</span> |
||||
|
<span className="total-number">{resultData.total || 0} </span> |
||||
|
<span className="letter">条结果</span> |
||||
|
</span> |
||||
|
<div> |
||||
|
<Button type="primary" className="green" onClick={handleAdd}> |
||||
|
添加 |
||||
|
</Button> |
||||
|
</div> |
||||
|
</div> |
||||
|
<ResultFlowResult |
||||
|
ajaxLoad={tabLoading} |
||||
|
resultData={resultData?.list || []} |
||||
|
> |
||||
|
<Table |
||||
|
className="yisa-table" |
||||
|
rowKey={(row) => row.id} |
||||
|
dataSource={resultData?.list || []} |
||||
|
columns={tableColumns} |
||||
|
pagination={false} |
||||
|
loading={tabLoading} |
||||
|
/> |
||||
|
<Pagination {...paginationProps} className="pagination-common" /> |
||||
|
</ResultFlowResult> |
||||
|
</div> |
||||
|
</div> |
||||
|
<Modal |
||||
|
open={visible} |
||||
|
width={720} |
||||
|
onCancel={onCancel} |
||||
|
footer={null} |
||||
|
className="modal-pay-configuration" |
||||
|
title={getModalTitle(actionState)} |
||||
|
> |
||||
|
<div className="form-container"> |
||||
|
<Form |
||||
|
labelCol={{ span: 4 }} |
||||
|
wrapperCol={{ span: 18 }} |
||||
|
layout="horizontal" |
||||
|
form={form} |
||||
|
initialValues={rowData} |
||||
|
onValuesChange={handleForm} |
||||
|
onFinish={onFinish} |
||||
|
> |
||||
|
<Form.Item name="id" hidden> |
||||
|
<Input /> |
||||
|
</Form.Item> |
||||
|
<Form.Item |
||||
|
label="应用类型" |
||||
|
name="app_type" |
||||
|
rules={[ |
||||
|
{ |
||||
|
required: actionState !== "view", |
||||
|
message: "请选择应用类型", |
||||
|
}, |
||||
|
]} |
||||
|
> |
||||
|
{actionState === "view" ? ( |
||||
|
rowData.app_type_name |
||||
|
) : ( |
||||
|
<Select |
||||
|
placeholder="请选择" |
||||
|
showSearch |
||||
|
disabled={actionState === "edit"} |
||||
|
optionFilterProp="text" |
||||
|
fieldNames={{ label: "text", value: "id" }} |
||||
|
options={appTypeData} |
||||
|
/> |
||||
|
)} |
||||
|
</Form.Item> |
||||
|
<Form.Item |
||||
|
label="应用名称" |
||||
|
name="app_name" |
||||
|
rules={[ |
||||
|
{ |
||||
|
required: actionState !== "view", |
||||
|
message: "请输入应用名称", |
||||
|
}, |
||||
|
]} |
||||
|
> |
||||
|
{actionState === "view" ? ( |
||||
|
rowData.app_name |
||||
|
) : ( |
||||
|
<Input autoComplete="off" /> |
||||
|
)} |
||||
|
</Form.Item> |
||||
|
<Form.Item |
||||
|
label="APPID" |
||||
|
name="app_id" |
||||
|
rules={[ |
||||
|
{ required: actionState !== "view", message: "请输入APPID" }, |
||||
|
]} |
||||
|
> |
||||
|
{actionState === "view" ? ( |
||||
|
rowData.app_id |
||||
|
) : ( |
||||
|
<Input autoComplete="off" disabled={actionState === "edit"} /> |
||||
|
)} |
||||
|
</Form.Item> |
||||
|
<Form.Item |
||||
|
noStyle |
||||
|
shouldUpdate={(prevValues, currentValues) => |
||||
|
prevValues.app_type !== currentValues.app_type |
||||
|
} |
||||
|
> |
||||
|
{({ getFieldValue }) => { |
||||
|
return ( |
||||
|
<> |
||||
|
{[9, 10, 11].includes(getFieldValue("app_type")) && ( |
||||
|
<Form.Item |
||||
|
label="APPSecret" |
||||
|
name="app_secret" |
||||
|
rules={[ |
||||
|
{ |
||||
|
required: actionState !== "view", |
||||
|
message: "请输入APPSecret", |
||||
|
}, |
||||
|
]} |
||||
|
> |
||||
|
{actionState === "view" ? ( |
||||
|
rowData.app_secret |
||||
|
) : ( |
||||
|
<Input |
||||
|
autoComplete="off" |
||||
|
disabled={actionState === "edit"} |
||||
|
/> |
||||
|
)} |
||||
|
</Form.Item> |
||||
|
)} |
||||
|
<Form.Item |
||||
|
label="支付场景" |
||||
|
name="pay_scenario" |
||||
|
rules={[ |
||||
|
{ |
||||
|
required: actionState !== "view", |
||||
|
message: "请选择支付场景", |
||||
|
}, |
||||
|
]} |
||||
|
> |
||||
|
<Checkbox.Group> |
||||
|
<Row> |
||||
|
{appTypeData |
||||
|
?.filter( |
||||
|
(item) => item.id === getFieldValue("app_type") |
||||
|
)[0] |
||||
|
?.payment_scenario_list?.map((v) => { |
||||
|
return ( |
||||
|
<Col key={v.id}> |
||||
|
<Checkbox |
||||
|
disabled={actionState === "view"} |
||||
|
value={v.id} |
||||
|
style={{ |
||||
|
lineHeight: "32px", |
||||
|
marginRight: 30, |
||||
|
}} |
||||
|
> |
||||
|
{v.text} |
||||
|
</Checkbox> |
||||
|
</Col> |
||||
|
); |
||||
|
})} |
||||
|
</Row> |
||||
|
</Checkbox.Group> |
||||
|
</Form.Item> |
||||
|
</> |
||||
|
); |
||||
|
}} |
||||
|
</Form.Item> |
||||
|
<Form.Item className="submitBtn" wrapperCol={{ span: 24 }}> |
||||
|
{actionState !== "view" && ( |
||||
|
<Button type="primary" className="submit" htmlType="submit"> |
||||
|
保存 |
||||
|
</Button> |
||||
|
)} |
||||
|
<Button className="cancel" onClick={onCancel}> |
||||
|
取消 |
||||
|
</Button> |
||||
|
</Form.Item> |
||||
|
</Form> |
||||
|
</div> |
||||
|
</Modal> |
||||
|
</div> |
||||
|
</> |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
export default PlatformConfiguration; |
@ -1,5 +1,212 @@ |
|||||
@import "@/assets/css/mixin.scss"; |
@import "@/assets/css/mixin.scss"; |
||||
|
|
||||
$color-container-bg : var(--color-container-bg); |
$color-container-bg : var(--color-container-bg); |
||||
$color-user-list-bg : var(--color-user-list-bg); |
$color-user-list-bg : var(--color-user-list-bg); |
||||
$color-text : var(--color-text); |
$color-text : var(--color-text); |
||||
$color-primary : var(--color-primary); |
$color-primary : var(--color-primary); |
||||
|
|
||||
|
.platform-configuration { |
||||
|
display: flex; |
||||
|
padding-top: 10px; |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
overflow-y: auto; |
||||
|
@include scrollBar(var(--color-user-list-bg), #3B97FF); |
||||
|
|
||||
|
.paid-search { |
||||
|
display: block; |
||||
|
width: 375px; |
||||
|
padding: 10px 10px 20px 20px; |
||||
|
|
||||
|
.title { |
||||
|
width: 100%; |
||||
|
font-size: 16px; |
||||
|
font-family: Microsoft YaHei, Microsoft YaHei-Bold; |
||||
|
font-weight: 700; |
||||
|
text-align: left; |
||||
|
color: var(--color-text); |
||||
|
margin-bottom: 20px; |
||||
|
} |
||||
|
|
||||
|
.form-Wrap { |
||||
|
height: calc(100% - 45px); |
||||
|
overflow-y: auto; |
||||
|
scrollbar-width: none; |
||||
|
-ms-overflow-style: none; |
||||
|
|
||||
|
&::-webkit-scrollbar { |
||||
|
display: none; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.ant-select-selector, |
||||
|
.ant-picker, |
||||
|
.ant-input { |
||||
|
background-color: var(--color-search-list-item-bg) !important; |
||||
|
box-shadow: none !important; |
||||
|
color: var(--color-search-list-item-value); |
||||
|
border-color: var(--color-search-list-item-bd) !important; |
||||
|
} |
||||
|
|
||||
|
.yisa-search { |
||||
|
width: 100%; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
margin-bottom: 24px; |
||||
|
|
||||
|
label { |
||||
|
color: var(--color-search-list-item-text); |
||||
|
flex: 0 0 25%; |
||||
|
max-width: 25%; |
||||
|
text-align: right; |
||||
|
padding-right: 8px; |
||||
|
} |
||||
|
|
||||
|
.form-con { |
||||
|
flex: 1; |
||||
|
width: 220px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.form-btn { |
||||
|
display: flex; |
||||
|
flex-flow: row nowrap; |
||||
|
justify-content: space-between; |
||||
|
margin: 40px 0px 0px; |
||||
|
padding: 0 3px; |
||||
|
|
||||
|
.ant-btn+.ant-btn { |
||||
|
margin-left: 10px; |
||||
|
} |
||||
|
|
||||
|
.ant-btn span { |
||||
|
font-size: 16px; |
||||
|
font-family: Microsoft YaHei, Microsoft YaHei-Regular; |
||||
|
font-weight: 400; |
||||
|
text-align: center; |
||||
|
color: #ffffff; |
||||
|
} |
||||
|
|
||||
|
.reset { |
||||
|
width: 90px; |
||||
|
height: 36px; |
||||
|
background: var(--button-default-bg); |
||||
|
} |
||||
|
|
||||
|
.submit { |
||||
|
width: calc(100% - 100px); |
||||
|
height: 36px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.ant-btn+.ant-btn { |
||||
|
margin-left: 10px; |
||||
|
} |
||||
|
|
||||
|
.green { |
||||
|
background-color: #67c23a; |
||||
|
border-color: #67c23a; |
||||
|
} |
||||
|
|
||||
|
.paid-result { |
||||
|
width: calc(100% - 375px); |
||||
|
padding-bottom: 15px; |
||||
|
padding: 20px; |
||||
|
background: var(--color-user-list-bg); |
||||
|
border-top-left-radius: 20px; |
||||
|
box-shadow: 0px 3px 8px 0px rgba(0, 0, 0, 0.08); |
||||
|
|
||||
|
.result { |
||||
|
@include flex-columns; |
||||
|
|
||||
|
.row-head { |
||||
|
height: 32px; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: space-between; |
||||
|
margin-bottom: 13px; |
||||
|
|
||||
|
.number-wrapper { |
||||
|
display: inline-flex; |
||||
|
align-items: center; |
||||
|
font-size: 14px; |
||||
|
|
||||
|
.letter { |
||||
|
color: var(--color-text); |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
|
||||
|
.total-number { |
||||
|
color: var(--color-primary); |
||||
|
font-weight: bold; |
||||
|
margin: 0 4px; |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.cc-result-flow { |
||||
|
width: 100%; |
||||
|
height: calc(100% - 34px - 13px); |
||||
|
|
||||
|
.yisa-table { |
||||
|
width: 100%; |
||||
|
height: calc(100% - 32px - 15px); |
||||
|
overflow-y: auto !important; |
||||
|
@include scrollBar(var(--color-user-list-bg), #3B97FF); |
||||
|
|
||||
|
.ant-table-thead { |
||||
|
th { |
||||
|
background: var(--color-table-header-bg) !important; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.ant-table-tbody { |
||||
|
td { |
||||
|
background: var(--color-table-body-bg) !important; |
||||
|
border-bottom-color: var(--color-table-border-bottom-color); |
||||
|
} |
||||
|
|
||||
|
tr:nth-child(even) { |
||||
|
td { |
||||
|
background: var(--color-table-body-bg-nth-child-even) !important; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
.modal-pay-configuration { |
||||
|
|
||||
|
.submitBtn { |
||||
|
text-align: center; |
||||
|
margin: 20px 0 0; |
||||
|
|
||||
|
.ant-btn { |
||||
|
width: 80px; |
||||
|
height: 35px; |
||||
|
border: none; |
||||
|
border-radius: 4px; |
||||
|
|
||||
|
span { |
||||
|
color: #ffffff; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.submit { |
||||
|
background: #409eff; |
||||
|
} |
||||
|
|
||||
|
.cancel { |
||||
|
background: var(--button-default-bg); |
||||
|
margin-left: 20px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
@ -1,15 +0,0 @@ |
|||||
import React, { useState, useRef, useEffect } from "react"; |
|
||||
// import { message, Pagination, Table, Space, Modal, } from "antd"; |
|
||||
// import { dictionary, utils } from "@/config/common"; |
|
||||
// import moment from 'moment' |
|
||||
// import { useSessionStorageState, useUpdateEffect, useSize, useUpdate } from 'ahooks'; |
|
||||
// import ajax from "@/services" |
|
||||
// import { FormInput, FormSelect, OptionPanel, ResultPanel, FormSliderPicker, AreaCascader, ImgResize, ImgZoom, } from "@/components" |
|
||||
// import "./index.scss"; |
|
||||
// import errorImg from "@/assets/images/layout/error.png" |
|
||||
// import { useLocation } from "react-router-dom"; |
|
||||
function PlatformMerchantConf() { |
|
||||
return <div>PlatformMerchantConf</div> |
|
||||
} |
|
||||
|
|
||||
export default PlatformMerchantConf; |
|
@ -0,0 +1,87 @@ |
|||||
|
import React from "react"; |
||||
|
import { Select, Input, Form, Checkbox, Row, Col } from "antd"; |
||||
|
|
||||
|
// 动态表单项 |
||||
|
export default function FormItemList(props) { |
||||
|
const { |
||||
|
type, |
||||
|
title, |
||||
|
label, |
||||
|
name, |
||||
|
value, |
||||
|
message = "必填", |
||||
|
allowClear = false, |
||||
|
disabled = false, |
||||
|
required = false, |
||||
|
options = [], |
||||
|
actionState, |
||||
|
} = props; |
||||
|
switch (type) { |
||||
|
case "title": |
||||
|
return ( |
||||
|
<h4 style={{ marginBottom: 20, marginLeft: 20, fontWeight: "bold" }}> |
||||
|
{title} |
||||
|
</h4> |
||||
|
); |
||||
|
case "input": |
||||
|
return ( |
||||
|
<Form.Item |
||||
|
label={label} |
||||
|
name={name} |
||||
|
rules={[ |
||||
|
{ |
||||
|
required: required, |
||||
|
message: message, |
||||
|
}, |
||||
|
] |
||||
|
} |
||||
|
> |
||||
|
{actionState === "view" ? ( |
||||
|
<> |
||||
|
{value} |
||||
|
<Input hidden /> |
||||
|
</> |
||||
|
) : ( |
||||
|
<Input |
||||
|
disabled={disabled} |
||||
|
placeholder="请输入" |
||||
|
autoComplete="off" |
||||
|
/> |
||||
|
)} |
||||
|
</Form.Item> |
||||
|
); |
||||
|
case "select": |
||||
|
return ( |
||||
|
<Form.Item |
||||
|
label={label} |
||||
|
name={name} |
||||
|
rules={[ |
||||
|
{ |
||||
|
required: required, |
||||
|
message: message, |
||||
|
}, |
||||
|
] |
||||
|
} |
||||
|
> |
||||
|
{actionState === "view" ? ( |
||||
|
<> |
||||
|
{value} |
||||
|
<Input hidden /> |
||||
|
</> |
||||
|
) : ( |
||||
|
<Select |
||||
|
placeholder="请选择" |
||||
|
showSearch |
||||
|
allowClear={allowClear} |
||||
|
disabled={disabled} |
||||
|
optionFilterProp="text" |
||||
|
fieldNames={{ label: "text", value: "id" }} |
||||
|
options={options} |
||||
|
/> |
||||
|
)} |
||||
|
</Form.Item> |
||||
|
); |
||||
|
default: |
||||
|
return null; |
||||
|
} |
||||
|
} |
@ -0,0 +1,5 @@ |
|||||
|
import FormItemList from "./FormItemList"; |
||||
|
|
||||
|
export { |
||||
|
FormItemList |
||||
|
} |
@ -1,9 +1,10 @@ |
|||||
import AppConf from "./AppConf" |
|
||||
import PayMerchantConf from "./PayMerchantConf" |
|
||||
import PlatformMerchantConf from "./PlatformMerchantConf" |
|
||||
|
import loadable from "@loadable/component"; |
||||
|
const AppConf = loadable(() => import("./AppConf")); |
||||
|
const PayMerchantConf = loadable(() => import("./PayMerchantConf")); |
||||
|
const PlatformMerchantConf = loadable(() => import("./PlatformMerchantConf")); |
||||
|
|
||||
export default { |
export default { |
||||
AppConf, |
AppConf, |
||||
PayMerchantConf, |
PayMerchantConf, |
||||
PlatformMerchantConf |
|
||||
} |
|
||||
|
PlatformMerchantConf, |
||||
|
}; |
@ -0,0 +1,5 @@ |
|||||
|
import paymentConfiguration from "./paymentConfiguration" |
||||
|
|
||||
|
export default { |
||||
|
...paymentConfiguration |
||||
|
} |
@ -0,0 +1,117 @@ |
|||||
|
import ajax from "@/config/ajax"; |
||||
|
|
||||
|
// 获取应用配置相关下拉
|
||||
|
const getAppTypeScenariosInfo = (params) => { |
||||
|
return ajax({ |
||||
|
url: "/api/fin/payment_config/get_app_type_scenarios_info", |
||||
|
type: "get", |
||||
|
data: params, |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
// 获取应用配置列表
|
||||
|
const getAppList = (params) => { |
||||
|
return ajax({ |
||||
|
url: "/api/fin/payment_config/get_app_list", |
||||
|
type: "post", |
||||
|
data: params, |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
// 添加应用配置
|
||||
|
const getAppAdd = (params) => { |
||||
|
return ajax({ |
||||
|
url: "/api/fin/payment_config/add_app", |
||||
|
type: "post", |
||||
|
data: params, |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
// 编辑应用配置
|
||||
|
const getAppEdit = (params) => { |
||||
|
return ajax({ |
||||
|
url: "/api/fin/payment_config/edit_app", |
||||
|
type: "post", |
||||
|
data: params, |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
// 查看应用配置
|
||||
|
const getAppDetails = (params) => { |
||||
|
return ajax({ |
||||
|
url: "/api/fin/payment_config/app_details", |
||||
|
type: "post", |
||||
|
data: params, |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
// 获取支付商户配置相关下拉
|
||||
|
const getPaymentMerchantSelectInfo = (params) => { |
||||
|
return ajax({ |
||||
|
url: "/api/fin/payment_config/get_payment_merchant_select_info", |
||||
|
type: "get", |
||||
|
data: params, |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
// 根据配置平台获取相关应用数据
|
||||
|
const getPlatformToAppList = (params) => { |
||||
|
return ajax({ |
||||
|
url: "/api/fin/payment_config/get_platform_to_app_list", |
||||
|
type: "post", |
||||
|
data: params, |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
// 获取支付商户配置列表
|
||||
|
const getPaymentMerchantList = (params) => { |
||||
|
return ajax({ |
||||
|
url: "/api/fin/payment_config/get_payment_merchant_list", |
||||
|
type: "post", |
||||
|
data: params, |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
// 添加支付商户配置
|
||||
|
const getPaymentMerchantAdd = (params) => { |
||||
|
return ajax({ |
||||
|
url: "/api/fin/payment_config/add_payment_merchant", |
||||
|
type: "post", |
||||
|
data: params, |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
// 编辑支付商户配置
|
||||
|
const getPaymentMerchantEdit = (params) => { |
||||
|
return ajax({ |
||||
|
url: "/api/fin/payment_config/edit_payment_merchant", |
||||
|
type: "post", |
||||
|
data: params, |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
// 查看支付商户配置
|
||||
|
const getPaymentMerchantDetails = (params) => { |
||||
|
return ajax({ |
||||
|
url: "/api/fin/payment_config/payment_merchant_details", |
||||
|
type: "post", |
||||
|
data: params, |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
export default { |
||||
|
getAppTypeScenariosInfo, |
||||
|
getAppList, |
||||
|
getAppAdd, |
||||
|
getAppEdit, |
||||
|
getAppDetails, |
||||
|
getPaymentMerchantSelectInfo, |
||||
|
getPlatformToAppList, |
||||
|
getPaymentMerchantList, |
||||
|
getPaymentMerchantAdd, |
||||
|
getPaymentMerchantEdit, |
||||
|
getPaymentMerchantDetails |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue