Browse Source

Revert "feat: 商户管理模块代码更新"

This reverts commit 9c16cce266.
tags/PMS_Frontend_v1.0.6-develop
heyx 2 years ago
parent
commit
1119dcc198
  1. 2
      scripts/webpack.dev.js
  2. BIN
      src/assets/images/status_err.png
  3. BIN
      src/assets/images/status_normal.png
  4. BIN
      src/assets/images/warningIcon.png
  5. 6
      src/components/form/FormInput/index.jsx
  6. 21
      src/components/form/FormSelect/index.jsx
  7. 2
      src/components/form/FormSelectionBox/index.jsx
  8. 216
      src/pages/MerchantMgm/FunctionMgm/index.scss
  9. 1409
      src/pages/MerchantMgm/FunctionMgm/loadable.jsx
  10. 337
      src/pages/MerchantMgm/InvoiceConf/index.scss
  11. 1031
      src/pages/MerchantMgm/InvoiceConf/loadable.jsx
  12. 317
      src/pages/MerchantMgm/MerchantAdmin/index.scss
  13. 873
      src/pages/MerchantMgm/MerchantAdmin/loadable.jsx
  14. 255
      src/pages/MerchantMgm/MerchantInfo/index.scss
  15. 434
      src/pages/MerchantMgm/MerchantInfo/loadable.jsx
  16. 14
      src/router/menu-bk.js
  17. 440
      src/router/menu.js
  18. 56
      src/router/router.config.js
  19. 90
      src/services/MerchantMgm/InvoiceConf/index.js
  20. 65
      src/services/MerchantMgm/MerchantAdmin/index.js
  21. 55
      src/services/MerchantMgm/MerchantInfo/index.js
  22. 31
      src/services/MerchantMgm/functionMgm/index.js
  23. 39
      src/services/MerchantMgm/index.js

2
scripts/webpack.dev.js

@ -12,7 +12,7 @@ let _devConfig = {
proxy: {
"/PMS": {
// target: "http://192.168.8.7:3001/mock/3247",
target: "http://10.10.128.65:3001/mock/11",
target: "http://10.10.128.65:3001/mock/18",
pathRewrite: {
"^/PMS": "",
},

BIN
src/assets/images/status_err.png

Before

Width: 32  |  Height: 32  |  Size: 664 B

BIN
src/assets/images/status_normal.png

Before

Width: 32  |  Height: 32  |  Size: 943 B

BIN
src/assets/images/warningIcon.png

Before

Width: 32  |  Height: 32  |  Size: 702 B

6
src/components/form/FormInput/index.jsx

@ -28,7 +28,6 @@ export default function FormInput(props) {
} = props;
const setValue = (e)=>{
if(isReceive){
onChange(e)
}else{
@ -36,7 +35,6 @@ export default function FormInput(props) {
const val = e.target.value.split(',').map( function (curr) {
return curr.replace(/[\!\@\#\$\%\^\&\*\?\?\!\_\——]/g, "");
}).join('')
e.target.value=val
}
onChange(e)
@ -59,7 +57,7 @@ export default function FormInput(props) {
</div>
)}
<div className={`cc-form-content`}>
{isPassword ?
<Input.Password
placeholder={placeholder}
@ -100,7 +98,7 @@ export default function FormInput(props) {
}
</>
}
{isPassword && error?
<>
<Alert message={alertText} type="error" showIcon />

21
src/components/form/FormSelect/index.jsx

@ -34,7 +34,7 @@ function FormSelectSingle(props) {
hasUnlimited = true,
tagRender,
labelPosition = "left",
getPopupContainer = () => document.body
getPopupContainer=()=>document.body
} = props
const [value, setValue] = useState(defaultValue)
const handleChange = (e, option) => {
@ -92,18 +92,13 @@ function FormSelectSingle(props) {
</Option>
)
})} */}
{
yisaData?.map(({ value, label, disabled = false }, index) => {
return (
<Option key={index} disabled={disabled} value={value}>
{label ? label : " "}
</Option>
)
})
}
{yisaData.map(({ value, label, disabled = false }, index) => {
return (
<Option key={index} disabled={disabled} value={value}>
{label ? label : " "}
</Option>
)
})}
</Select>
</div>
)

2
src/components/form/FormSelectionBox/index.jsx

@ -64,7 +64,7 @@ function FormSelectionBox(props) {
<div className={className ? `${className} cc-form-selection-box` : 'cc-form-selection-box'}>
{
yisaLabel ?
<label className="form-selection-box-name"><p style={{color:"red",display:"inline"}}>{required ? <em>*</em> : ''}</p>{yisaLabel}</label>
<label className="form-selection-box-name">{required ? <em>*</em> : ''}{yisaLabel}</label>
:
null
}

216
src/pages/MerchantMgm/FunctionMgm/index.scss

@ -3,219 +3,3 @@ $color-container-bg : var(--color-container-bg);
$color-user-list-bg : var(--color-user-list-bg);
$color-text : var(--color-text);
$color-primary : var(--color-primary);
#FunctionMgm{
.panel {
width: 100%;
padding-top: 20px;
padding-left: 10px;
background: none;
.search-form{
margin-left: 10px;
}
.label {
width: 90px;
text-align-last: end;
}
.yisa-select {
width: 190px;
.ant-select-selector {
background: transparent;
border-color: var(--color-border);
}
}
.form-input {
width: 190px;
background: transparent;
border-color: var(--color-border);
}
.ant-select-arrow {
background: none !important;
}
.ant-input {
background: transparent;
border-color: var(--color-border);
}
.panel-1 {
display: flex;
}
.btnBox {
display: flex;
align-items: center;
margin-left: 30px;
.btn {
margin: 0 5px;
border-radius: 5px;
border: none;
}
.search-btn {
background-color: #409EFF;
}
.reset-btn {
color: #000;
background-color: #fff;
}
.create-btn {
background-color: #67C23A;
}
}
}
.table {
width: 98%;
margin: 15px 10px 10px 15px;
.ant-table-thead {
th {
padding: 0px 16px;
height: 50px;
}
.ant-table-cell {
background: var(--color-table-header-bg) !important;
font-weight: 700;
&::before {
display: none;
}
}
}
.ant-table-tbody {
tr {
&:nth-child(2n) {
td {
background: #3E4557 !important;
}
}
&:hover {
td {
background: #3E4557 !important;
}
}
td {
background: #3E4557 !important;
border-bottom-color: #f2f2f2;
}
}
}
.ant-pagination-options {
.ant-select {
&:hover {
.ant-select-selector {
border-color: #f5f6f9;
box-shadow: none;
}
}
}
.ant-select-selector {
border-color: #f5f6f9;
}
.ant-select-focused {
.ant-select-selector {
box-shadow: none !important;
border-color: #f5f6f9 !important;
}
}
.ant-pagination-options-quick-jumper {
input {
background: #3E4557;
border-color: #f5f6f9;
&:focus {
box-shadow: none;
}
}
}
}
}
.table-status-normal {
width: 20px;
height: 20px;
border-radius: 50%;
border: 1px solid #67C23A;
}
.table-status-err {
width: 20px;
height: 20px;
border-radius: 50%;
border: 1px solid red;
}
.scheduleBtn {
background: #409eff;
border: none;
width: 50px;
border-radius: 4px;
cursor: pointer;
}
.updateCard{
padding: 20px;
.title {
display: flex;
align-items: center;
font-size: 18px;
color: #fff;
font-weight: 500;
&::before {
content: '';
display: inline-block;
margin-right: 10px;
width: 5px;
height: 20px;
border-radius: 10px;
background-color: #409eff;
}
}
.form-note{
margin: 20px 0 0 30px;
.ant-form-item-label{
width: 100px;
text-align-last: right;
}
.ant-input{
background: transparent;
border-color: var(--color-border);
}
.btns{
margin-left: 96px;
.btn{
margin: 0 8px;
background-color: #fff;
color: #606266;
border: none;
border-radius: 4px;
}
}
}
}
}

1409
src/pages/MerchantMgm/FunctionMgm/loadable.jsx
File diff suppressed because it is too large
View File

337
src/pages/MerchantMgm/InvoiceConf/index.scss

@ -3,340 +3,3 @@ $color-container-bg : var(--color-container-bg);
$color-user-list-bg : var(--color-user-list-bg);
$color-text : var(--color-text);
$color-primary : var(--color-primary);
.invoiceConf {
.panel {
width: 100%;
height: 100px;
padding-top: 20px;
padding-left: 0.625rem;
background: none;
.btn {
margin: 5px 5px;
border-radius: 5px;
border: none;
}
.reset-btn {
color: #000;
background-color: #fff;
}
.create-btn {
background-color: #67C23A;
}
.search-btn {
background-color: #409EFF;
}
.panel-1 {
display: flex;
align-items: center;
.ant-input{
background: transparent;
border-color: var(--color-border);
}
.form-item{
margin: 5px 40px;
}
.ant-select-arrow {
background: none !important;
}
.yisa-cascader {
width: 8rem;
background: transparent;
border-color: var(--color-border);
}
.yisa-select {
width: 11.875rem;
.ant-select-selector {
background: transparent;
border-color: var(--color-border);
}
}
.search-group-item {
margin-right: 0.625rem;
width: 16.875rem;
background: transparent;
border-color: var(--color-border);
}
}
}
.table {
width: 98%;
margin: 15px 10px 10px 15px;
.ant-table-thead {
th {
padding: 0px 16px;
height: 50px;
}
.ant-table-cell {
background: var(--color-table-header-bg) !important;
font-weight: 700;
&::before {
display: none;
}
}
}
.ant-table-tbody {
tr {
&:nth-child(2n) {
td {
background: #3E4557 !important;
}
}
&:hover {
td {
background: #3E4557 !important;
}
}
td {
background: #3E4557 !important;
border-bottom-color: #f2f2f2;
}
}
}
.ant-pagination-options {
.ant-select {
&:hover {
.ant-select-selector {
border-color: #f5f6f9;
box-shadow: none;
}
}
}
.ant-select-selector {
border-color: #f5f6f9;
}
.ant-select-focused {
.ant-select-selector {
box-shadow: none !important;
border-color: #f5f6f9 !important;
}
}
.ant-pagination-options-quick-jumper {
input {
background: #3E4557;
border-color: #f5f6f9;
&:focus {
box-shadow: none;
}
}
}
}
}
.scheduleBtn {
background: #409eff;
border: none;
width: 50px;
border-radius: 4px;
cursor: pointer;
}
#create {
height: 800px;
overflow-y: scroll;
.create-form {
.btns {
display: flex;
justify-content: end;
margin-right: 20px;
margin-top: 10px;
.btn {
width: 70px;
height: 36px;
border: none;
border-radius: 4px;
text-align: center;
cursor: pointer;
}
.btn-1 {
color: #fff;
background-color: #409EFF;
margin-right: 10px;
}
.btn-2 {
background-color: #fff;
color: #000;
}
}
.container {
padding: 20px 20px;
display: flex;
.left {
width: 50%;
margin-right: 20px;
.left-1 {
width: 500px;
}
.left-2 {
width: 500px;
background-color: #3E4557;
}
.left-3 {
width: 500px;
}
.cc-form-input {
margin: 10px 5px 20px 30px;
.cc-form-name {
width: 100px;
text-align: right;
}
}
.select {
margin: 10px 5px 20px 30px;
.form-select-single-name {
width: 100px;
text-align: right;
}
}
.selectionBox {
margin-left: 64px;
}
}
.right {
width: 50%;
.right-wrap {
width: 500px;
.cc-form-input {
margin: 10px 5px 20px 30px;
.cc-form-name {
width: 110px;
text-align: right;
}
}
}
}
}
}
}
#check {
height: 800px;
overflow-y: scroll;
.check-form {
.btns {
display: flex;
justify-content: end;
margin-right: 20px;
margin-top: 10px;
.btn {
width: 70px;
height: 36px;
border: none;
border-radius: 4px;
text-align: center;
cursor: pointer;
background-color: #fff;
color: #000;
}
}
.container {
padding: 20px 20px;
display: flex;
.left {
width: 50%;
margin: 0 20px;
display: flex;
flex-direction: column;
.left-wrap {
width: 300px;
margin-bottom: 40px;
.item {
margin: 15px;
.item-title {
display: inline-block;
width: 100px;
text-align-last: end;
white-space: nowrap;
}
}
}
}
.right {
width: 50%;
.right-wrap {
width: 500px;
.item {
margin: 15px;
.item-title {
display: inline-block;
width: 100px;
text-align-last: end;
white-space: nowrap;
}
}
}
}
}
}
}
}

1031
src/pages/MerchantMgm/InvoiceConf/loadable.jsx
File diff suppressed because it is too large
View File

317
src/pages/MerchantMgm/MerchantAdmin/index.scss

@ -3,320 +3,3 @@ $color-container-bg : var(--color-container-bg);
$color-user-list-bg : var(--color-user-list-bg);
$color-text : var(--color-text);
$color-primary : var(--color-primary);
#MerchantAdmin {
.panel {
width: 100%;
padding-top: 20px;
padding-left: 10px;
background: none;
.search-form {
margin: 5px 20px;
label {
// width: 82px;
width: 100%;
text-align-last: end;
}
}
.yisa-select {
width: 190px;
.ant-select-selector {
background: transparent;
border-color: var(--color-border);
}
}
.form-input {
width: 190px;
background: transparent;
border-color: var(--color-border);
}
.ant-select-arrow {
background: none !important;
}
.ant-input {
background: transparent;
border-color: var(--color-border);
}
.btnBox {
display: flex;
align-items: center;
// margin-left: 20px;
.btn {
margin: 5px 5px;
border-radius: 5px;
border: none;
}
.search-btn {
background-color: #409EFF;
}
.reset-btn {
color: #000;
background-color: #fff;
}
.create-btn {
background-color: #67C23A;
}
}
.panel-1 {
display: flex;
}
.panel-2 {
margin-top: 10px;
display: flex;
align-items: center;
}
}
.table {
width: 98%;
margin: 15px 10px 10px 15px;
.ant-table-thead {
th {
padding: 0px 16px;
height: 50px;
}
.ant-table-cell {
background: var(--color-table-header-bg) !important;
font-weight: 700;
&::before {
display: none;
}
}
}
.ant-table-tbody {
tr {
&:nth-child(2n) {
td {
background: #3E4557 !important;
}
}
&:hover {
td {
background: #3E4557 !important;
}
}
td {
background: #3E4557 !important;
border-bottom-color: #f2f2f2;
}
}
}
.ant-pagination-options {
.ant-select {
&:hover {
.ant-select-selector {
border-color: #f5f6f9;
box-shadow: none;
}
}
}
.ant-select-selector {
border-color: #f5f6f9;
}
.ant-select-focused {
.ant-select-selector {
box-shadow: none !important;
border-color: #f5f6f9 !important;
}
}
.ant-pagination-options-quick-jumper {
input {
background: #3E4557;
border-color: #f5f6f9;
&:focus {
box-shadow: none;
}
}
}
}
}
.table-status-normal {
width: 20px;
height: 20px;
border-radius: 50%;
border: 1px solid #67C23A;
}
.table-status-err {
width: 20px;
height: 20px;
border-radius: 50%;
border: 1px solid red;
}
.scheduleBtn {
background: #409eff;
border: none;
width: 50px;
border-radius: 4px;
cursor: pointer;
}
.warning {
span {
color: #fff;
}
img {
margin: 0 10px;
}
}
#create {
.create-form {
margin: 0px 20px;
border-radius: 5px;
border: 1px solid #C0CCDA;
.btns {
display: flex;
margin: 10px 0 20px 200px;
.btn {
width: 70px;
height: 36px;
border: none;
border-radius: 4px;
text-align: center;
cursor: pointer;
}
.btn-1 {
color: #fff;
background-color: #409EFF;
margin-right: 30px;
}
.btn-2 {
background-color: #fff;
color: #000;
}
}
.container {
padding: 20px 20px;
display: flex;
.ant-select-selector {
border-color: #666d7d;
}
.ant-select-arrow {
background: none !important;
}
.ant-input {
border-color: #666d7d;
}
.form-wrap {
margin: 30px 0 0 30px;
}
.ant-form-item-label {
width: 100px;
text-align-last: end;
}
}
}
}
#check {
.check-form {
.btns {
display: flex;
justify-content: end;
margin-right: 20px;
margin-top: 10px;
.btn {
width: 70px;
height: 36px;
border: none;
border-radius: 4px;
text-align: center;
cursor: pointer;
background-color: #fff;
color: #000;
}
}
.container {
padding: 20px 20px;
margin: 10px 20px;
border: 1px solid #C0CCDA;
border-radius: 5px;
.title {
display: flex;
align-items: center;
font-size: 18px;
color: #fff;
font-weight: 500;
&::before {
content: '';
display: inline-block;
margin-right: 10px;
width: 5px;
height: 20px;
border-radius: 10px;
background-color: #409eff;
}
}
.item {
display: flex;
margin: 20px;
line-height: 34px;
font-size: 16px;
.item-title {
display: inline-block;
margin-right: 10px;
width: 100px;
text-align-last: end;
white-space: nowrap;
}
}
}
}
}
}

873
src/pages/MerchantMgm/MerchantAdmin/loadable.jsx

@ -1,866 +1,15 @@
import React, { useState, useRef, useEffect } from "react";
import { Input, Select, message, Popover, Pagination, Table, Form, Radio, Modal, Button } from "antd";
import { pageSizeOptions } from '@/config/character.config.js'
import moment from 'moment'
import { useSetState } from 'ahooks';
import ajax from "@/services"
import "./index.scss";
import status_normal from '@/assets/images/status_normal.png'
import status_err from '@/assets/images/status_err.png'
import warningIcon from "@/assets/images/warningIcon.png";
import { SearchOutlined} from '@ant-design/icons';
// 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 MerchantAdmin() {
//
const parameter = {
id: 1,
operatorid: '',//ID
shop_name: '',//
manage_type: '',//
manage_type_name: "",//
account: "",//
username: "",//
phone: "",//
email: "",//
sex: "",//
status: 0,//
create_time: "",//
start: moment().subtract(90, 'days').startOf('day').format('YYYY-MM-DD HH:mm:ss'),
end: moment().format('YYYY-MM-DD HH:mm:ss'),
pn: 1,
page_size: Number(pageSizeOptions[0]), //
}
//
const [tenantPull, setTenantPull] = useState([])
//
const [loading, setLoading] = useState(false) //
//
const [tableData, setTableData] = useState([])
//
const [formData, setFormData] = useSetState(parameter)
const [lastFormData, setLastFormData] = useState(formData)
const lastFormDataRef = useRef(formData)
const [searchForm] = Form.useForm()
//
const [isFirst,setIsFirst]=useState(false)
//
const [records, setRecords] = useState({})
//
const [total, setTotal] = useState()
//
const [createVisible, setCreateVisible] = useState(false)
//
const [updateVisible, setUpdateVisible] = useState(false)
//
const [checkVisible, setCheckVisible] = useState(false)
//
const [updateForm] = Form.useForm()
//
const [sexValue, setSexValue] = useState(1);
//
const [confirm, setConfirm] = useState(false)
//
const [banBtn, setBanBtn] = useState(false)
//
const [startBtn, setStartBtn] = useState(false)
//id
const [ID, setID] = useState()
//
const columns = [
{
title: '序号',
dataIndex: 'id',
key: 'id',
align: "center",
},
{
title: '商户名称',
key: 'shop_name',
dataIndex: 'shop_name',
align: "center",
},
{
title: '经营业务类型',
key: 'manage_type_name',
dataIndex: 'manage_type_name',
align: "center",
},
{
title: '管理员账号',
key: 'account',
dataIndex: 'account',
align: "center",
},
{
title: '管理员姓名',
key: 'username',
dataIndex: 'username',
align: "center",
},
{
title: '手机号',
key: 'phone',
dataIndex: 'phone',
align: "center",
},
{
title: '邮箱',
key: 'email',
dataIndex: 'email',
align: "center",
},
{
title: '性别',
key: 'sex_status_name',
dataIndex: 'sex_status_name',
align: "center",
},
{
title: '添加时间',
key: 'create_time',
dataIndex: 'create_time',
align: "center",
},
{
title: '状态',
key: 'user_status_name',
dataIndex: 'user_status_name',
align: "center",
render: (value, row, index) => {
return (
<>
{
row.user_status == 1 ?
<img src={status_normal}></img> :
<img src={status_err}></img>
}
</>
)
}
},
{
title: '操作',
key: 'operation',
dataIndex: 'operation',
align: "center",
render: (text, record, index) => {
return <>
<Popover content={
<div className="operateBtn" style={{ cursor: "pointer" }} trigger="hover">
<div onClick={() => { checkBtn(index) }}>详情</div>
<div onClick={() => { resetPassWordBtn(index) }}>重置密码</div>
{
record.user_status == 2 ?
<>
<div onClick={() => { updateBtn(record) }}>编辑</div>
<div onClick={() => { stopBtn(record) }}>启用</div>
</> : <div onClick={() => { stopBtn(record) }}>停用</div>
}
</div>}>
<button className="scheduleBtn">操作</button>
</Popover>
</>
},
},
]
//
const statusType = [
{
label: "全部",
value: 0
},
{
label: "启用",
value: 1
},
{
label: "禁用",
value: 2
},
]
//
const getTenantNamePull = () => {
ajax.getTenantPull().then(
res => {
if (res.status == 20000) {
setTenantPull(res.data)
} else {
message.error(res.message)
}
}
).catch(
err => { console.log(err); }
)
}
//
const getTable = () => {
const value =searchForm.getFieldsValue(["shop_name","phone","username","account","status"])
console.log(value);
setLoading(true)
ajax.getMerchantAdminTable(value).then(
res => {
if (res.status == 20000) {
setTableData(res.data.list)
setTotal(res.data.total_records)
setIsFirst(true)
if (banBtn) {
setTimeout(
() => {
message.success("禁用成功", 2.5)
}, 1000
)
setBanBtn(false)
}
if (startBtn) {
setTimeout(
() => {
message.success("启用成功", 2.5)
}, 1000
)
setStartBtn(false)
}
} else {
message.error(res.message)
}
setLoading(false)
}
).catch(
(err) => {
console.log(err)
}
)
}
//
const getSearchData = () => {
getTable()
}
//
const getResetData = () => {
searchForm.setFieldsValue(
{
shop_name: '',
phone: '',
account: '',
username: '',
status: 0
}
)
if(isFirst){
getTable()
}
}
//
const changePn = (pn, length) => {
if (lastFormData.page_size === length) {
setLastFormData(Object.assign({}, lastFormData, { pn: pn }))
lastFormDataRef.current = Object.assign({}, lastFormData, { pn: pn })
getTable(Object.assign({}, lastFormData, { pn: pn }))
}
}
//
const changeLength = (pn, length) => {
setFormData(Object.assign({}, formData, { pn: 1, page_size: length }))
setLastFormData(Object.assign({}, lastFormData, { pn: 1, page_size: length }))
lastFormDataRef.current = Object.assign({}, lastFormData, { pn: 1, page_size: length })
getTable(Object.assign({}, lastFormData, { pn: 1, page_size: length }))
}
//
const createData = () => {
setCreateVisible(true)
updateForm.setFieldsValue(
{
shop_name: '',
phone: '',
account: '',
_name: '',
email: '',
sex_status: ''
}
)
}
//-
const createOncancel = () => {
setCreateVisible(false)
setUpdateVisible(false)
setCheckVisible(false)
}
//-
const submitUpdate = () => {
const value = updateForm.getFieldsValue(['shop_name', 'phone', 'name', 'account', 'email', 'sex_status'])
ajax.updateMerchantAdmin(value).then(
res => {
if (res.status == 20000) {
setCreateVisible(false)
setUpdateVisible(false)
message.success("已提交", 2.5)
} else {
message.error(res.message)
}
}
).catch(
err => {
console.log(err);
}
)
}
//-
const submitAdd = () => {
const value = updateForm.getFieldsValue(['shop_name', 'phone', '_name', 'account', 'email', 'sex_status'])
ajax.addMerchantAdmin(value).then(
res => {
if (res.status == 20000) {
setCreateVisible(false)
setUpdateVisible(false)
message.success("已提交", 2.5)
} else {
message.error(res.message)
}
}
).catch(
err => {
console.log(err);
}
)
}
//
function updateBtn(record) {
setUpdateVisible(true)
setFormData(record)
//
updateForm.setFieldsValue(
{
shop_name: record.shop_name,
phone: record.phone,
account: record.account,
_name: record.username,
email: record.email,
sex_status: parseInt(record.sex_status)
}
)
}
//
function checkBtn(index) {
setCheckVisible(true)
ajax.checkMerchantAdmin(index).then(
res => {
if (res.status == 20000) {
setRecords(res.data)
} else {
message.error(res.message)
}
}
).catch(
err => { console.log(err); }
)
}
///
function stopBtn(record) {
if (record.user_status == 1) {
//
setBanBtn(true)
} else {
//
setStartBtn(true)
}
setID(record.id)
}
const handleAdminStatus = () => {
ajax.updateAdminStatus(ID).then(
res => {
if (res.status == 20000) {
getTable()
} else {
message.error(res.message)
}
}
).catch(
err => {
console.log(err);
}
)
}
//
const resetPassWordBtn = (index) => {
setConfirm(true)
setID(index)
}
const handleReset = () => {
ajax.resetPassWord(ID).then(
res => {
if (res.status == 20000) {
getTable()
setConfirm(false)
message.success("重置成功", 2.5)
} else {
message.error(res.message)
}
}
).catch(
err => { console.log(err); }
)
}
//,
const handleCancel = () => {
setConfirm(false)
setBanBtn(false)
setStartBtn(false)
message.warning("已取消操作", 2.5)
}
//
const onChange = (e) => {
setSexValue(e.target.value);
};
//--
const filterOption = (input, option) =>
(option?.label ?? '').toLowerCase().includes(input.toLowerCase());
useEffect(
() => {
getTenantNamePull()
}, []
)
return (
<div id="MerchantAdmin" >
{
!createVisible && !updateVisible && !checkVisible ?
<>
<div className="panel">
<div className="panel-1">
<Form
form={searchForm}
layout="inline"
>
<Form.Item
label="商户名称:"
name="shop_name"
className="search-form"
>
<Select
className="yisa-select"
options={tenantPull}
placeholder="请选择"
/>
</Form.Item>
<Form.Item
label="手机号:"
name="phone"
className="search-form"
rules={[
{
validator: (rule, value) => {
let reg = new RegExp(/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/);
if (!reg.test(value)) {
return Promise.reject('手机号码不合法');
} else {
return Promise.resolve();
}
}
},
]}
>
<Input
placeholder="请输入手机号"
/>
</Form.Item>
<Form.Item
label="姓名:"
name="username"
className="search-form"
>
<Input
placeholder="请输入姓名"
/>
</Form.Item>
</Form>
</div>
<div className="panel-2">
<Form
form={searchForm}
layout="inline"
initialValues={{
status: statusType[0].value,
}}
>
<Form.Item
label="管理员账号:"
name="account"
className="search-form"
rules={[
{
validator: (rule, value) => {
let reg = new RegExp(/^[0-9]+$/);
if (!reg.test(value)) {
return Promise.reject('管理员账号不合法');
} else {
return Promise.resolve();
}
}
},
]}
>
<Input
className="form-input"
placeholder="请输入管理员账号"
// onBlur={handleBlurNumber}
/>
</Form.Item>
<Form.Item
label="状态:"
name="status"
className="search-form"
>
<Select
className="yisa-select"
options={statusType}
placeholder="请选择"
/>
</Form.Item>
<Form.Item
className="btnBox"
>
<Button type="primary" className="search-btn btn" icon={<SearchOutlined />} onClick={() => { getSearchData() }}>
搜索
</Button>
<Button type="primary" className="reset-btn btn" onClick={() => { getResetData() }}>
条件重置
</Button>
<Button type="primary" className="create-btn btn" onClick={() => { createData() }}>
创建用户
</Button>
</Form.Item>
</Form>
</div>
</div>
<Table
columns={columns}
className="table"
pagination={false}
dataSource={tableData}
loading={loading}
></Table>
<Pagination
className="pagination-common"
showSizeChanger
showQuickJumper
showTotal={() => {
if (total) {
return `${total}`
}
else return `共 0 条`
}
}
total={total}
current={formData.pn}
pageSize={formData.page_size}
pageSizeOptions={pageSizeOptions}
onChange={changePn}
onShowSizeChange={changeLength}
/>
{
confirm ?
<Modal
title="提示"
open={confirm}
onCancel={handleCancel}
width={400}
getContainer={document.getElementById('MerchantAdmin')}
footer={
[
<Button key="back" onClick={handleCancel} style={{ color: "#3f3d3d" }}>
取消
</Button>,
<Button key="submit" type="primary" onClick={handleReset} style={{ background: "#409EFF", color: "#fff" }}>
确定
</Button>,
]
}
>
<div className="warning">
<img src={warningIcon}></img>
<span>此操作将重置该用户密码, 是否继续?</span>
</div>
</Modal>
: ''
}
{
banBtn ?
<Modal
title="提示"
open={banBtn}
onCancel={handleCancel}
width={400}
getContainer={document.getElementById('MerchantAdmin')}
footer={
[
<Button key="back" onClick={handleCancel} style={{ color: "#3f3d3d" }}>
取消
</Button>,
<Button key="submit" type="primary" onClick={handleAdminStatus} style={{ background: "#409EFF", color: "#fff" }}>
确定
</Button>,
]
}
>
<div className="warning">
<img src={warningIcon}></img>
<span>此操作将禁用该用户, 是否继续?</span>
</div>
</Modal> : ''
}
{
startBtn ?
<Modal
title="提示"
open={startBtn}
onCancel={handleCancel}
width={400}
getContainer={document.getElementById('MerchantAdmin')}
footer={
[
<Button key="back" onClick={handleCancel} style={{ color: "#3f3d3d" }}>
取消
</Button>,
<Button key="submit" type="primary" onClick={handleAdminStatus} style={{ background: "#409EFF", color: "#fff" }}>
确定
</Button>,
]
}
>
<div className="warning">
<img src={warningIcon}></img>
<span>此操作将启用该用户, 是否继续?</span>
</div>
</Modal> : ''
}
</> : ''
}
{
createVisible || updateVisible ?
<div id="create">
<div className="create-form">
<div className="container">
{
createVisible ?
<Form
form={updateForm}
labelAlign='left'
labelCol={{ span: 8 }}
wrapperCol={{ span: 16 }}
style={{ width: 400 }}
initialValues={{ sex_status: '1' }}
className="form-wrap"
>
<Form.Item
label="商户:"
name="shop_name"
required={true}
rules={[{ required: true }]}
>
<Select
filterOption={filterOption}
optionFilterProp="label"
showSearch
options={tenantPull}
>
</Select>
</Form.Item>
<Form.Item
label="手机号码"
name="phone"
required={true}
validateFirst={true} //
rules={[
{
validator: (rule, value) => {
let reg = new RegExp(/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/);
if (!reg.test(value)) {
return Promise.reject('手机号码不合法');
} else if (value = '') {
return Promise.reject('手机号码不能为空');
} else {
return Promise.resolve();
}
}
},
]}
>
<Input placeholder="请输入手机号码" />
</Form.Item>
<Form.Item
label="登录名"
name="account"
required={true}
rules={[{ required: true }]}
>
<Input placeholder="请输入登录名" />
</Form.Item>
<Form.Item
label="姓名"
name="_name"
required={true}
rules={[{ required: true }]}
>
<Input placeholder="请输入姓名" />
</Form.Item>
<Form.Item
label="邮箱"
name="email"
>
<Input placeholder="请输入邮箱" />
</Form.Item>
<Form.Item
label="性别"
name="sex_status"
>
<Radio.Group onChange={onChange} value={sexValue}>
<Radio value={1}></Radio>
<Radio value={2}></Radio>
</Radio.Group>
</Form.Item>
</Form> :
<Form
form={updateForm}
labelAlign='left'
labelCol={{ span: 8 }}
wrapperCol={{ span: 16 }}
style={{ width: 400 }}
initialValues={{ sex_status: '1' }}
className="form-wrap"
>
<Form.Item
label="商户:"
name="shop_name"
>
{formData.shop_name}
</Form.Item>
<Form.Item
label="手机号码"
name="phone"
required={true}
validateFirst={true} //
rules={[
{
validator: (rule, value) => {
let reg = new RegExp(/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/);
if (!reg.test(value)) {
return Promise.reject('手机号码不合法');
} else if (value = '') {
return Promise.reject('手机号码不能为空');
} else {
return Promise.resolve();
}
}
},
]}
>
<Input placeholder="请输入手机号码" />
</Form.Item>
<Form.Item
label="登录名"
name="account"
required={true}
rules={[{ required: true }]}
>
{formData.account}
</Form.Item>
<Form.Item
label="姓名"
name="_name"
required={true}
rules={[{ required: true }]}
>
<Input placeholder="请输入姓名" />
</Form.Item>
<Form.Item
label="邮箱"
name="email"
>
<Input placeholder="请输入邮箱" />
</Form.Item>
<Form.Item
label="性别"
name="sex_status"
>
<Radio.Group onChange={onChange} value={sexValue}>
<Radio value={1}></Radio>
<Radio value={2}></Radio>
</Radio.Group>
</Form.Item>
</Form>
}
</div>
{
createVisible && !updateVisible ?
<div className="btns">
<Button className="btn-1 btn" onClick={submitAdd} type="primary" htmlType="submit">提交</Button>
<Button className="btn-2 btn" onClick={createOncancel}>取消</Button>
</div> :
<div className="btns">
<Button className="btn-1 btn" onClick={submitUpdate} type="primary" htmlType="submit">提交</Button>
<Button className="btn-2 btn" onClick={createOncancel}>取消</Button>
</div>
}
</div>
</div>
: ''
}
{
checkVisible ?
<div id="check">
<div className="check-form">
<div className="btns">
<button className="btn" onClick={createOncancel}>返回</button>
</div>
<div className="container">
<div className="title">系统管理员详情</div>
<div className="item"><div className="item-title">商户</div><span>{records.shop_name}</span></div>
<div className="item"><div className="item-title">手机号</div><span>{records.phone}</span></div>
<div className="item"><div className="item-title">登录名</div><span>{records.account}</span></div>
<div className="item"><div className="item-title">姓名</div><span>{records.username}</span></div>
<div className="item"><div className="item-title">邮箱</div><span>{records.email}</span></div>
<div className="item"><div className="item-title">性别</div><span>{records.sex_status}</span></div>
</div>
</div>
</div>
: ''
}
</div>
)
return <div>MerchantAdmin</div>
}
export default MerchantAdmin;
export default MerchantAdmin;

255
src/pages/MerchantMgm/MerchantInfo/index.scss

@ -9,7 +9,7 @@ $color-primary : var(--color-primary);
width: 100%;
height: 100px;
padding-top: 20px;
padding-left: 20px;
padding-left: 10px;
background: none;
.panel-1 {
@ -56,7 +56,7 @@ $color-primary : var(--color-primary);
}
.panel-2 {
margin-top: 15px;
margin-top: 10px;
display: flex;
align-items: center;
@ -250,16 +250,7 @@ $color-primary : var(--color-primary);
text-align: right;
}
}
.businessType{
margin-left: 30px;
.ant-select-selector{
background-color: #3E4557;
border-color: var(--color-border);
}
.ant-select-selection-item{
border: none;
}
}
.select {
margin: 10px 5px 20px 30px;
@ -273,6 +264,8 @@ $color-primary : var(--color-primary);
display: flex;
align-items: center;
margin: 10px 5px 20px 30px;
// position: relative;
// left: 18%;
label {
color: #fff;
@ -299,7 +292,7 @@ $color-primary : var(--color-primary);
.accountInformation {
padding: 10px 5px 5px 10px;
height: 540px;
height: 510px;
background-color: #3E4557;
.account {
@ -353,11 +346,6 @@ $color-primary : var(--color-primary);
}
}
.select-form-item {
width: 270px;
margin-left: auto;
}
.license {
display: flex;
position: relative;
@ -392,14 +380,10 @@ $color-primary : var(--color-primary);
margin-bottom: 10px;
.business {
display: flex;
flex-direction: column;
.business-wrap{
width: 420px;
margin-left: 83px;
}
.cc-form-input {
margin: 20px 5px 40px 30px;
position: relative;
left: -37%;
}
}
@ -407,34 +391,32 @@ $color-primary : var(--color-primary);
.clearinformation {
padding: 10px 5px 5px 10px;
// height: 550px;
height: 550px;
background-color: #3E4557;
.clear {
.cc-form-input {
margin: 20px 5px 40px 30px;
position: relative;
left: -37%;
}
.clear-wrap{
margin-bottom: 40px;
width: 420px;
margin-left: 83px;
.select {
margin: 10px 5px 20px 30px;
}
}
.clear-select {
margin-bottom: 40px;
width: 420px;
position: relative;
left: -37%;
.select {
margin: 10px 5px 20px 30px;
}
}
.form-item{
width: 420px;
margin-left: 83px;
.form-item {
position: relative;
left: -37%;
}
.special {
display: grid;
grid-template-columns: 60% 40%;
@ -458,7 +440,11 @@ $color-primary : var(--color-primary);
}
}
}
}
}
.title {
@ -482,199 +468,4 @@ $color-primary : var(--color-primary);
}
}
#check {
height: 800px;
overflow-y: scroll;
.check-form {
.btns {
display: flex;
justify-content: end;
margin-right: 20px;
margin-top: 10px;
.btn {
width: 70px;
height: 36px;
border: none;
border-radius: 4px;
text-align: center;
cursor: pointer;
background-color: #fff;
color: #000;
}
}
.container {
padding: 20px 20px;
display: flex;
.left {
width: 50%;
margin-right: 20px;
.systemInformation {
padding: 10px 5px 5px 10px;
height: 310px;
background-color: #3E4557;
margin-bottom: 20px;
.system {
display: flex;
flex-direction: column;
.system-wrap {
width: 300px;
.item {
margin: 15px;
.item-title {
display: inline-block;
width: 100px;
text-align-last: end;
white-space: nowrap;
}
}
.text-green {
color: #67C23A;
}
.text-red {
color: red;
}
}
}
}
.accountInformation {
padding: 10px 5px 5px 10px;
height: 370px;
background-color: #3E4557;
.account {
display: flex;
flex-direction: column;
.account-wrap {
width: 300px;
.item {
margin: 20px;
line-height: 45px;
.item-title {
display: inline-block;
width: 100px;
text-align-last: end;
white-space: nowrap;
}
}
}
}
}
}
.right {
width: 50%;
.businessInformation {
padding: 10px 5px 5px 10px;
height: 170px;
background-color: #3E4557;
margin-bottom: 10px;
.business {
display: flex;
flex-direction: column;
.business-wrap {
width: 300px;
.item {
margin: 20px;
.item-title {
display: inline-block;
width: 100px;
text-align-last: end;
white-space: nowrap;
}
}
}
}
}
.clearInformation {
padding: 10px 5px 5px 10px;
height: 450px;
background-color: #3E4557;
margin-bottom: 10px;
.clear {
display: flex;
flex-direction: column;
.clear-wrap {
width: 300px;
.item {
margin: 20px;
line-height: 45px;
.item-title {
display: inline-block;
width: 100px;
text-align-last: end;
white-space: nowrap;
}
}
}
}
}
.operationInformation {
padding: 10px 5px 5px 10px;
height: 200px;
background-color: #3E4557;
.operation {
display: flex;
flex-direction: column;
.operation-wrap {
width: 300px;
.item {
margin: 20px;
.item-title {
display: inline-block;
width: 100px;
text-align-last: end;
white-space: nowrap;
}
}
}
}
}
}
.title {
font-size: 18px;
color: #fff;
font-weight: 500;
}
}
}
}
}

434
src/pages/MerchantMgm/MerchantInfo/loadable.jsx

@ -1,11 +1,11 @@
import React, { useState, useRef, useEffect } from "react";
import { Input, Select, message, Popover, Pagination, Table, DatePicker, Upload, TreeSelect, Modal, Cascader, Button, Form } from "antd";
import { Input, Select, message, Popover, Pagination, Table, DatePicker, Upload, Space, Modal, Cascader, Button } from "antd";
// import { dictionary, utils } from "@/config/common";
import { pageSizeOptions } from '@/config/character.config.js'
import { LoadingOutlined, PlusOutlined } from '@ant-design/icons';
import moment from 'moment'
import { FormInput, FormSelect, ImgUpload, SystemSearch, FormDatePicker, Icon, ResultFlow, ExportBtn, SearchTabs } from "@/components"
import { useSessionStorageState, useUpdateEffect, useSize, useUpdate, useSetState } from 'ahooks';
import { useSessionStorageState, useUpdateEffect, useSize, useUpdate } from 'ahooks';
import ajax from "@/services"
import "./index.scss";
import { SearchOutlined, DeleteOutlined } from '@ant-design/icons';
@ -15,6 +15,7 @@ import { assign } from "lodash";
const { RangePicker } = DatePicker;
function MerchantInfo() {
const [messageApi, contextHolder] = message.useMessage()
//
const parameter = {
tenantId: '',//ID
@ -22,11 +23,9 @@ function MerchantInfo() {
tenantCode: '',//
tenantType: '',//1234
shop_type_name: '',//
type: 1,//
type_name: '',//
businessType: [],
tenantNamePull: '',//
businessType: '',
status: '',
status_name: '',
start: moment().subtract(90, 'days').startOf('day').format('YYYY-MM-DD HH:mm:ss'),
end: moment().format('YYYY-MM-DD HH:mm:ss'),
pn: 1,
@ -49,9 +48,7 @@ function MerchantInfo() {
const [formData, setFormData] = useState(parameter)
const [lastFormData, setLastFormData] = useState(formData)
const lastFormDataRef = useRef(formData)
const [selectForm] = Form.useForm()
//
//
const [records, setRecords] = useState({})
//
const defaultCreate = {
@ -59,7 +56,7 @@ function MerchantInfo() {
tenantCode: '',//
tenantType: '',//1234
shop_type_name: '',//
businessType: [],
businessType: '',
city: '',
address: '',
connect_name: '',
@ -137,6 +134,8 @@ function MerchantInfo() {
//
const [zhiMiniVisible2, setZhiMiniVisible2] = useState(false)
//
const [imageUrl, setImageUrl] = useState();
//
const columns = [
{
@ -212,7 +211,7 @@ function MerchantInfo() {
},
{
title: '最后操作人',
key: 'updatePerson',
key: 'updatePerpson',
dataIndex: 'updatePerson',
align: "center",
},
@ -227,18 +226,17 @@ function MerchantInfo() {
key: 'operation',
dataIndex: 'operation',
align: "center",
render: (text, record, index) => {
render: (text, record) => {
return <>
<Popover content={
<div className="operateBtn" style={{ cursor: "pointer" }} trigger="hover">
<div onClick={() => { checkBtn(index) }}>详情</div>
<div className="operateBtn" style={{ cursor: "pointer" }}>
<div onClick={() => { CheckBtn(record) }}>详情</div>
{
record.status == 2 ?
<>
<div onClick={() => { updateBtn(index) }}>编辑</div>
<div onClick={() => { stopBtn(index) }}>启用</div>
</> : <div onClick={() => { stopBtn(index) }}>停用</div>
<div onClick={() => { translateBtn(record) }}>编辑</div> : ""
}
<div onClick={() => { deleteBtn(record) }}>停用/启用</div>
</div>}>
<button className="scheduleBtn">操作</button>
</Popover>
@ -265,8 +263,6 @@ function MerchantInfo() {
label: '车务业务'
},
]
//
const COMPANY_ADRESS = [
{
@ -339,9 +335,8 @@ function MerchantInfo() {
//
const getTable = (data = formData) => {
console.log(data);
setLoading(true)
ajax.getMerchantInfoTable(data).then(
ajax.getTable(data).then(
res => {
if (res.status == 20000) {
setTableData(res.data.list)
@ -388,41 +383,35 @@ function MerchantInfo() {
//
const createData = () => {
setCreateVisible(true)
setFormCreate({ ...parameter })
}
//-
const createOncancel = () => {
setCreateVisible(false)
setUpdateVisible(false)
setCheckVisible(false)
setSingleVisible(false)
setQingDaoVisible(false)
setSpecialVisible(false)
getTable()
}
//
const onHandleChange = (v) => {
console.log('已选择:' + v)
let _formCreate = { ...formCreate }
_formCreate.businessType = v
setFormCreate(_formCreate)
let _formData = { ...formData }
_formData.businessType = v
setFormCreate(_formData)
}
//-
//
const createTenant = () => {
const value = selectForm.getFieldValue("business_type")
setFormCreate({ businessType: value })
let _formCreate = { ...formCreate }
console.log("formCreate", _formCreate);
console.log("formCreateModal", formCreateModal);
ajax.addTenant( {...formCreate, ...formCreateModal}).then(
ajax.addTenant({ _formCreate, formCreateModal }).then(
res => {
if (res.status == 20000) {
message.success("已启用", 2.5)
messageApi.open({
type: 'success',
content: '已启用',
});
setCreateVisible(false)
setUpdateVisible(false)
setSingleVisible(false)
setSpecialVisible(false)
setQingDaoVisible(false)
} else {
message.error(res.message)
}
@ -434,58 +423,15 @@ function MerchantInfo() {
)
}
//
function updateBtn(index) {
function translateBtn(record) {
setUpdateVisible(true)
ajax.checkTenant(index).then(
res => {
if (res.status == 20000) {
setFormCreate(res.data)
setRecords(res.data)
} else {
message.error(res.message)
}
}
).catch(
err => {
console.log(err);
}
)
selectForm.setFieldsValue(
{
business_type: records.businessType
}
)
setRecords(record)
console.log(record);
}
//
function checkBtn(index) {
function CheckBtn(record) {
setCheckVisible(true)
ajax.checkTenant(index).then(
res => {
if (res.status == 20000) {
setRecords(res.data)
} else {
message.error(res.message)
}
}
).catch(
err => { console.log(err); }
)
}
///
function stopBtn(index) {
ajax.updateStatus(index).then(
res => {
if (res.status == 20000) {
getTable()
} else {
message.error(res.message)
}
}
).catch(
err => {
console.log(err);
}
)
setRecords(record)
}
/* 独立账户 3*/
@ -579,18 +525,11 @@ function MerchantInfo() {
console.log(imgList);
};
//
const handleBlurNumber = (e) => {
var value = /^[0-9]+$/
if (!value.test(e.target.value)) {
message.success("输入有误,请重新输入", 2.5)
}
}
useEffect(
() => {
getPullList()
// getTable()
}, []
)
return (
@ -606,13 +545,10 @@ function MerchantInfo() {
className="form-input"
placeholder="请输入商户ID"
showCount={false}
defaultValue=""
value={formData.tenantId}
onBlur={handleBlurNumber}
defaultValue={null}
onChange={e => {
setFormData(Object.assign({ ...formData, tenantId: e.target.value }))
setFormData(Object.assign(formData, { tenantId: e.target.value }))
}}
/>
</div>
<div className="yisa-search">
@ -622,16 +558,20 @@ function MerchantInfo() {
className="yisa-cascader"
placeholder="商户名称"
options={tenantNamePull}
value={formData?.type}
onChange={e => {
setFormData(Object.assign({ ...formData, type: e }))
setFormData(Object.assign(formData, { tenantNamePull: e }))
setTenantNamePull(e)
}}
/>
}
placeholder="请输入"
value={formData.type_name}
onChange={e => {
setFormData(Object.assign({ ...formData, type_name: e.target.value }))
if (tenantNamePull == 1) {
setFormData(Object.assign(formData, { tenantCode: e.target.value }))
}
else {
setFormData(Object.assign(formData, { tenantName: e.target.value }))
}
}}
/>
</div>
@ -641,10 +581,11 @@ function MerchantInfo() {
className="yisa-select"
options={tenantType}
placeholder="请选择"
value={formData?.tenantType}
hasUnlimited={false}
onChange={
e => {
setFormData(Object.assign({ ...formData, tenantType: e }))
setFormData(Object.assign(formData, { tenantType: e }))
console.log(e);
}
}
/>
@ -655,8 +596,9 @@ function MerchantInfo() {
className="yisa-select"
options={businessType}
placeholder="请选择"
value={formData.businessType}
onChange={e => { setFormData(Object.assign({ ...formData, businessType: e })) }}
hasUnlimited={false}
showClose={true}
onChange={e => { setFormData(Object.assign(formData, { businessType: e })) }}
/>
</div>
<div className="yisa-search">
@ -665,8 +607,9 @@ function MerchantInfo() {
className="yisa-select"
options={status}
placeholder="请选择"
value={formData.status}
onChange={e => { setFormData(Object.assign({ ...formData, status: e })) }}
hasUnlimited={false}
showClose={true}
onChange={e => { setFormData(Object.assign(formData, { status: e })) }}
/>
</div>
</div>
@ -754,8 +697,8 @@ function MerchantInfo() {
labelPosition="left"
placeholder="请输入商户名称"
isRequired={true}
className="form-item"
value={formCreate.tenantName}
className="form-item"
value={records.tenantName}
showClose={true}
onChange={e => {
setFormCreate(Object.assign({ ...formCreate, tenantName: e.target.value }))
@ -766,8 +709,8 @@ function MerchantInfo() {
labelPosition="left"
placeholder="请输入商户编码"
isRequired={true}
className="form-item"
value={formCreate.tenantCode}
className="form-item"
value={records.tenantCode}
showClose={true}
onChange={e => {
setFormCreate({ ...formCreate, tenantCode: e.target.value })
@ -777,55 +720,33 @@ function MerchantInfo() {
yisaLabel="商户类型:"
yisaData={tenantType}
defaultValue={tenantType || null}
value={formCreate.tenantType}
value={records.tenantType}
placeholder="请选择"
hasUnlimited={false}
showClose={true}
required={true}
required={true}
className="select"
onChange={e => {
setFormCreate(Object.assign({ ...formCreate, tenantType: e }))
}}
/>
<div className="businessType">
<Form
form={selectForm}
>
<Form.Item
name="business_type"
label="经营业务类型:"
labelAlign="left"
required={true}
>
<Select
mode="tags"
placeholder="请选择"
maxTagCount={2}
onChange={e=>setFormCreate(Object.assign({ ...formCreate, businessType: e }))}
style={{
width: '100%',
}}
options={businessMul}
/>
</Form.Item>
</Form>
</div>
{/* <FormSelect
<FormSelect
yisaLabel="经营业务类型:"
yisaData={businessMul}
defaultValue={[formCreate.manage_type_name]}
defaultValue="不限"
value={businessMul}
placeholder="请选择"
mode='multiple'
hasUnlimited={false}
showClose={true}
required={true}
required={true}
className="select"
onChange={onHandleChange}
/> */}
/>
<div className="modal-time">
<label>商户有效期:</label>
<RangePicker
value={[moment(formCreate.start), moment(formCreate.end)]}
<RangePicker
value={[moment(records.start), moment(records.end)]}
onChange={(value, dateString) => {
setFormCreate({
...formCreate,
@ -873,7 +794,7 @@ function MerchantInfo() {
<FormSelect
yisaLabel="商户类型:"
yisaData={tenantType}
defaultValue={null}
defaultValue={tenantType || null}
placeholder="请选择"
hasUnlimited={false}
showClose={true}
@ -886,30 +807,31 @@ function MerchantInfo() {
<FormSelect
yisaLabel="经营业务类型:"
yisaData={businessMul}
defaultValue={null}
defaultValue="不限"
placeholder="请选择"
mode='multiple'
hasUnlimited={false}
// showClose={true}
required={true}
className="select"
onChange={onHandleChange}
/>
<div className="modal-time">
<label>商户有效期:</label>
<RangePicker
value={[moment(formCreate.start), moment(formCreate.end)]}
onChange={(value, dateString) => {
setFormCreate({
...formCreate,
start: dateString[0],
end: dateString[1],
})
}}
className="search-group-item"
limit={90}
showTime={false}
/>
</div>
<label>商户有效期:</label>
<RangePicker
value={[moment(formCreate.start), moment(formCreate.end)]}
onChange={(value, dateString) => {
setFormCreate({
...formCreate,
start: dateString[0],
end: dateString[1],
})
}}
className="search-group-item"
limit={90}
showTime={false}
/>
</div>
</div>
@ -927,9 +849,9 @@ function MerchantInfo() {
placeholder="请输入公司名称"
isRequired={true}
className="form-item"
value={formCreate.companyName}
value={formCreate.tenantName}
showClose={true}
onChange={e => { setFormCreate({ ...formCreate, companyName: e.target.value }) }}
onChange={e => { setFormCreate({ ...formCreate, tenantName: e.target.value }) }}
/>
<div className="account-select">
<label>公司地址:</label>
@ -939,10 +861,11 @@ function MerchantInfo() {
onChange={e => { setFormCreate({ ...formCreate, city: e }) }}
className="select-item"
/>
</div>
<FormInput
</div>
<FormInput
// labelPosition="left"
placeholder="请输入 街道/门牌 详细地址"
className="select-form-item"
className="select-form-item stree"
value={formCreate.address}
showClose={true}
onChange={e => { setFormCreate({ ...formCreate, address: e.target.value }) }}
@ -1002,42 +925,39 @@ function MerchantInfo() {
<div className="businessInformation">
<div className="title"><span>账户信息</span></div>
<div className="business">
<div className="business-wrap">
<FormInput
yisaLabel="开户行名称:"
labelPosition="left"
placeholder="请输入开户行名称"
isRequired={true}
value={formCreate.bank_name}
showClose={true}
onChange={e => { setFormCreate({ ...formCreate, bank_name: e.target.value }) }}
/>
<FormInput
yisaLabel="开户行地址:"
labelPosition="left"
placeholder="请输入开户行地址"
isRequired={true}
value={formCreate.bank_address}
showClose={true}
onChange={e => { setFormCreate({ ...formCreate, bank_address: e.target.value }) }}
/>
<FormInput
yisaLabel="对公账户号:"
labelPosition="left"
placeholder="请输入对公账户号"
isRequired={true}
value={formCreate.bank_num}
showClose={true}
onChange={e => { setFormCreate({ ...formCreate, bank_num: e.target.value }) }}
/>
</div>
<FormInput
yisaLabel="开户行名称:"
labelPosition="left"
placeholder="请输入开户行名称"
isRequired={true}
value={formCreate.bank_name}
showClose={true}
onChange={e => { setFormCreate({ ...formCreate, bank_name: e.target.value }) }}
/>
<FormInput
yisaLabel="开户行地址:"
labelPosition="left"
placeholder="请输入开户行地址"
isRequired={true}
value={formCreate.bank_address}
showClose={true}
onChange={e => { setFormCreate({ ...formCreate, bank_address: e.target.value }) }}
/>
<FormInput
yisaLabel="对公账户号:"
labelPosition="left"
placeholder="请输入对公账户号"
isRequired={true}
value={formCreate.bank_num}
showClose={true}
onChange={e => { setFormCreate({ ...formCreate, bank_num: e.target.value }) }}
/>
</div>
</div>
<div className="clearinformation">
<div className="title"><span>清结算信息</span></div>
<div className="clear">
<div className="clear-wrap">
<div className="clear-select">
<FormSelect
yisaLabel="支付收款账户:"
yisaData={PAY}
@ -1068,45 +988,48 @@ function MerchantInfo() {
{
qingDaoVisible ?
<div className="form-item">
<>
<FormInput
yisaLabel="清分比例(%):"
labelPosition="left"
placeholder="请输入清分给商户的资金比例(0.01-1000)"
isRequired={true}
className="form-item"
value={formCreate.sort_percent}
showClose={true}
onChange={e => { setFormCreate({...formCreate, sort_percent: e.target.value }) }}
onChange={e => { setFormCreate({ sort_percent: e.target.value }) }}
/>
<FormInput
yisaLabel="清分周期(T+):"
labelPosition="left"
placeholder="请输入清分周期"
isRequired={true}
className="form-item"
value={formCreate.sort_cycle}
showClose={true}
onChange={e => { setFormCreate({ ...formCreate,sort_cycle: e.target.value }) }}
onChange={e => { setFormCreate({ sort_cycle: e.target.value }) }}
/>
<FormInput
yisaLabel="结算费率(%):"
labelPosition="left"
placeholder="请输入结算给商户的资金费率(0.01-1000)"
isRequired={true}
className="form-item"
value={formCreate.sell_rate}
showClose={true}
onChange={e => { setFormCreate({ ...formCreate,sell_rate: e.target.value }) }}
onChange={e => { setFormCreate({ sell_rate: e.target.value }) }}
/>
<div className="clear-select">
<FormSelect
yisaLabel="手续费承担方:"
yisaData={CHARGE_TYPE}
defaultValue={null}
defaultValue="请选择"
placeholder="请选择"
hasUnlimited={false}
showClose={true}
required={true}
className="select"
onChange={e => { setFormCreate({...formCreate, charge_type: e }) }}
onChange={e => { setFormCreate({ charge_type: e }) }}
/>
</div>
<FormInput
@ -1114,11 +1037,12 @@ function MerchantInfo() {
labelPosition="left"
placeholder="请输入结算周期"
isRequired={true}
className="form-item"
value={formCreate.sell_cycle}
showClose={true}
onChange={e => { setFormCreate({ ...formCreate,sell_cycle: e.target.value }) }}
onChange={e => { setFormCreate({ sell_cycle: e.target.value }) }}
/>
</div>
</>
: ''
}
@ -1171,7 +1095,7 @@ function MerchantInfo() {
<Button key="submit" type="primary" onClick={save} style={{ background: "#409EFF" }}>
保存
</Button>,
<Button key="back" onClick={handleCancelWei} style={{ color: "#3f3d3d" }}>
<Button key="back" onClick={handleCancelWei}>
取消
</Button>,
]
@ -1228,7 +1152,7 @@ function MerchantInfo() {
<Button key="submit" type="primary" onClick={save} style={{ background: "#409EFF" }}>
保存
</Button>,
<Button key="back" onClick={handleCancelZhi} style={{ color: "#3f3d3d" }}>
<Button key="back" onClick={handleCancelZhi}>
取消
</Button>,
]
@ -1285,7 +1209,7 @@ function MerchantInfo() {
<Button key="submit" type="primary" onClick={save} style={{ background: "#409EFF" }}>
保存
</Button>,
<Button key="back" onClick={handleCancelWeiMini} style={{ color: "#3f3d3d" }}>
<Button key="back" onClick={handleCancelWeiMini}>
取消
</Button>,
]
@ -1342,7 +1266,7 @@ function MerchantInfo() {
<Button key="submit" type="primary" onClick={save} style={{ background: "#409EFF" }}>
保存
</Button>,
<Button key="back" onClick={handleCancelZhiMini} style={{ color: "#3f3d3d" }}>
<Button key="back" onClick={handleCancelZhiMini}>
取消
</Button>,
]
@ -1404,7 +1328,7 @@ function MerchantInfo() {
<Button key="submit" type="primary" onClick={save} style={{ background: "#409EFF" }}>
保存
</Button>,
<Button key="back" onClick={handleCancelWei2} style={{ color: "#3f3d3d" }}>
<Button key="back" onClick={handleCancelWei2}>
取消
</Button>,
]
@ -1435,7 +1359,7 @@ function MerchantInfo() {
<Button key="submit" type="primary" onClick={save} style={{ background: "#409EFF" }}>
保存
</Button>,
<Button key="back" onClick={handleCancelZhi2} style={{ color: "#3f3d3d" }}>
<Button key="back" onClick={handleCancelZhi2}>
取消
</Button>,
]
@ -1492,7 +1416,7 @@ function MerchantInfo() {
<Button key="submit" type="primary" onClick={save} style={{ background: "#409EFF" }}>
保存
</Button>,
<Button key="back" onClick={handleCancelWeiMini2} style={{ color: "#3f3d3d" }}>
<Button key="back" onClick={handleCancelWeiMini2}>
取消
</Button>,
]
@ -1522,7 +1446,7 @@ function MerchantInfo() {
<Button key="submit" type="primary" onClick={save} style={{ background: "#409EFF" }}>
保存
</Button>,
<Button key="back" onClick={handleCancelZhiMini2} style={{ color: "#3f3d3d" }}>
<Button key="back" onClick={handleCancelZhiMini2}>
取消
</Button>,
]
@ -1576,83 +1500,9 @@ function MerchantInfo() {
{
checkVisible ?
<div id="check">
<div className="check-form">
<div className="btns">
<button className="btn" onClick={createOncancel}>返回</button>
</div>
<div className="container">
<div className="left">
<div className="systemInformation">
<div className="title"><span>系统信息</span></div>
<div className="system">
<div className="system-wrap">
<div className="item"><span className="item-title">商户ID</span>{records.tenantId}</div>
<div className="item"><div className="item-title">商户编码</div><span>{records.tenantId}</span></div>
<div className="item"><div className="item-title">状态</div><span className={records.status == 1 ? "text-green" : "text-red"}>{records.status_name}</span></div>
<div className="item"><div className="item-title">商户名称</div>{records.tenantName}</div>
<div className="item"><div className="item-title">商户类型</div>{records.shop_type_name}</div>
<div className="item"><div className="item-title">经营业务类型</div>{records.manage_type_name}</div>
<div className="item"><div className="item-title">商户有效期</div>{records.updateAt}</div>
</div>
</div>
</div>
<div className="accountInformation">
<div className="title"><span>工商信息</span></div>
<div className="account">
<div className="account-wrap">
<div className="item"><span className="item-title">公司名称</span>{records.companyName}</div>
<div className="item"><div className="item-title">公司地址</div><span>{records.address}</span></div>
<div className="item"><div className="item-title">联系人</div><span>{records.connect_name}</span></div>
<div className="item"><div className="item-title">联系电话</div>{records.connect_phone}</div>
<div className="item"><div className="item-title">邮箱</div>{records.email}</div>
</div>
</div>
</div>
</div>
<div className="right">
<div className="businessInformation">
<div className="title"><span>账户信息</span></div>
<div className="business">
<div className="business-wrap">
<div className="item"><span className="item-title">开户行名称</span>{records.bank_name}</div>
<div className="item"><div className="item-title">开户行地址</div><span>{records.bank_address}</span></div>
<div className="item"><div className="item-title">对公账户号</div><span>{records.bank_num}</span></div>
</div>
</div>
</div>
<div className="clearInformation">
<div className="title"><span>清结算信息</span></div>
<div className="clear">
<div className="clear-wrap">
<div className="item"><span className="item-title">支付收款账户</span>{records.pay_type}</div>
<div className="item"><div className="item-title">清分比例(%)</div><span>{records.sort_percent}</span></div>
<div className="item"><div className="item-title">清分周期(T)</div><span>{records.sort_cycle}</span></div>
<div className="item"><div className="item-title">结算费率(%)</div>{records.sell_rate}</div>
<div className="item"><div className="item-title">手续费承担方</div>{records.charge_type}</div>
<div className="item"><div className="item-title">结算周期(T)</div>{records.sell_cycle}</div>
</div>
</div>
</div>
<div className="operationInformation">
<div className="title"><span>操作信息</span></div>
<div className="operation">
<div className="operation-wrap">
<div className="item"><span className="item-title">最后操作人</span>{records.updatePerson}</div>
<div className="item"><div className="item-title">最后修改时间</div><span>{records.update_time}</span></div>
<div className="item"><div className="item-title">初始创建时间</div><span>{records.create_time}</span></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
: ''
<>
{records.tenantName}
</> : ''
}
</div>

14
src/router/menu-bk.js

@ -812,7 +812,7 @@
"icon": "zongshujuliang",
"children": [
{
"text": "业务配置",
"text": "业务配置",
"name": "businessConf",
"icon": "",
"path": "/systemMgm/businessConf",
@ -832,13 +832,7 @@
"name": "invoiceConf",
"icon": "zongshujuliang",
"path": "/merchantMgm/invoiceConf",
},
{
"text": "商户管理员",
"name": "merchantAdmin",
"icon": "zongshujuliang",
"path": "/merchantMgm/merchantAdmin",
}
}
],
"financialMgm":[
{
@ -859,7 +853,7 @@
}
]
}
],
"outRoad": [
{
@ -959,4 +953,4 @@
]
}
}
}
}

440
src/router/menu.js
File diff suppressed because it is too large
View File

56
src/router/router.config.js

@ -804,7 +804,7 @@ let routes = [
component: pages.ComplainWorkStat,
},
{
path: "/operationCenter/geoSignalIgnoreAudit", //
path: "/operationCenter/geoSignalIgnoreAudit", //
text: "地磁信号忽略审核",
name: "geoSignalIgnoreAudit",
component: pages.GeoSignalIgnoreAudit,
@ -836,7 +836,7 @@ let routes = [
},
{
path: "/financialMgm/payRepeat",
text: "重复支付",
text: "重复支付",
name: "payRepeat",
component: pages.PayRepeat,
},
@ -863,93 +863,93 @@ let routes = [
path: "/systemMgm/roleMgm",
text: "角色管理",
name: "roleMgm",
component: pages.RoleMgm,
component: pages.RoleMgm,
},
{
path: "/systemMgm/businessConf",
text: "业务配置",
name: "businessConf",
component: pages.BusinessConf,
component: pages.BusinessConf,
},
{
// -------------------------------商户管理系统
path: "/merchantMgm/merchantInfo",
path: "/merchantMgm/merchantInfo",
text: "商户信息",
name: "merchantInfo",
component: pages.MerchantInfo,
},
{
path: "/merchantMgm/invoiceConf",
path: "/merchantMgm/invoiceConf",
text: "发票配置",
name: "invoiceConf",
component: pages.InvoiceConf,
component: pages.InvoiceConf,
},
{
// -------------------------------路外停车管理系统
path: "/outRoad/outRoadOverview",
path: "/outRoad/outRoadOverview",
text: "概览",
name: "outRoadOverview",
component: pages.OutRoadOverview,
},
{ // --------------路段管理
path: "/outRoad/chargeRulesMgm",
path: "/outRoad/chargeRulesMgm",
text: "计费规则管理",
name: "chargeRulesMgm",
component: pages.ChargeRulesMgm,
component: pages.ChargeRulesMgm,
},
{
path: "/outRoad/outSegment",
path: "/outRoad/outSegment",
text: "路段管理",
name: "outSegment",
component: pages.OutSegment,
component: pages.OutSegment,
},
{
path: "/outRoad/zombieCarMgm",
path: "/outRoad/zombieCarMgm",
text: "僵尸车管理",
name: "zombieCarMgm",
component: pages.ZombieCarMgm,
component: pages.ZombieCarMgm,
},
{ // ----------------异常管理
path: "/outRoad/liftUpPoleRecord",
path: "/outRoad/liftUpPoleRecord",
text: "抬杆记录",
name: "liftUpPoleRecord",
component: pages.LiftUpPoleRecord,
component: pages.LiftUpPoleRecord,
},
{
path: "/outRoad/zombieCarCleanRecord",
path: "/outRoad/zombieCarCleanRecord",
text: "僵尸车清理记录",
name: "zombieCarCleanRecord",
component: pages.ZombieCarCleanRecord,
component: pages.ZombieCarCleanRecord,
},
{ //----------------业务记录
path: "/outRoad/outParkingRecordInquiry",
path: "/outRoad/outParkingRecordInquiry",
text: "停车记录查询",
name: "outParkingRecordInquiry",
component: pages.OutParkingRecordInquiry,
component: pages.OutParkingRecordInquiry,
},
{
path: "/outRoad/outPayOrders",
path: "/outRoad/outPayOrders",
text: "停车支付订单",
name: "outPayOrders",
component: pages.OutPayOrders,
component: pages.OutPayOrders,
},
{ //----------------设备管理
path: "/outRoad/outDevice",
path: "/outRoad/outDevice",
text: "路外设备管理",
name: "outDevice",
component: pages.OutDevice,
component: pages.OutDevice,
},
{
path: "/outRoad/outMonitorMgm",
path: "/outRoad/outMonitorMgm",
text: "视频监控设备管理",
name: "outMonitorMgm",
component: pages.OutMonitorMgm,
component: pages.OutMonitorMgm,
},
{
path: "/outRoad/outNvrMgm",
path: "/outRoad/outNvrMgm",
text: "NVR管理",
name: "outNvrMgm",
component: pages.OutNvrMgm,
component: pages.OutNvrMgm,
},
],
},

90
src/services/MerchantMgm/InvoiceConf/index.js

@ -1,90 +0,0 @@
import ajax from "@/config/ajax"
//获取表格数据
const getInvoiceTable=(p)=>{
return ajax({
url:"/api/bpm/merchantreceipt/get_all_receipt",
type:"post",
data:p
})
}
//获取商户名称的下拉
const getTenantPull=(p)=>{
return ajax({
url:"/api/bpm/operator/get_all_operator",
type:"get",
data:p
})
}
//获取计税方式的下拉
const getTaxWayPull=(p)=>{
return ajax({
url:"/api/bpm/merchantreceipt/get_tax_type",
type:"post",
data:p
})
}
//获取税率的下拉
const getTaxRatePull=(p)=>{
return ajax({
url:"/api/bpm/merchantreceipt/get_percent_type",
type:"post",
data:p
})
}
//获取开票项目的下拉
const getInvoiceItemPull=(p)=>{
return ajax({
url:"/api/bpm/merchantreceipt/get_item_list",
type:"post",
data:p
})
}
//获取含税标志的下拉
const getTaxTypePull=(p)=>{
return ajax({
url:"/api/bpm/merchantreceipt/get_include_tax_list",
type:"post",
data:p
})
}
//新建保存
const createForm=(p)=>{
return ajax({
url:"/api/bpm/merchantreceipt/add_receipt",
type:"post",
data:p
})
}
//查看详情
const checkForm=(p)=>{
return ajax({
url:"/api/bpm/merchantreceipt/show_receipt",
type:"post",
data:p
})
}
//启用、停用
const updateInvoiceStatus=(p)=>{
return ajax({
url:"/api/bpm/merchantreceipt//update_status",
type:"post",
data:p
})
}
export default {
getInvoiceTable,
getTenantPull,
getTaxWayPull,
getTaxRatePull,
getInvoiceItemPull,
getTaxTypePull,
createForm,
checkForm,
updateInvoiceStatus
}

65
src/services/MerchantMgm/MerchantAdmin/index.js

@ -1,65 +0,0 @@
import ajax from "@/config/ajax"
//获取表格数据
const getMerchantAdminTable=(p)=>{
return ajax({
url:"/api/bpm/merchant/get_all_merchant",
type:"post",
data:p
})
}
//增加
const addMerchantAdmin=(p)=>{
return ajax({
url:"/api/bpm/merchant/add_merchant",
type:"post",
data:p
})
}
//查看详情
const checkMerchantAdmin=(p)=>{
return ajax({
url:"/api/bpm/merchant/show_merchant",
type:"post",
data:p
})
}
//编辑
const updateMerchantAdmin=(p)=>{
return ajax({
url:"/api/bpm/merchant/edit_merchant",
type:"post",
data:p
})
}
//启用/停用
const updateAdminStatus=(p)=>{
return ajax({
url:"/api/bpm/merchant/update_status",
type:"post",
data:p
})
}
//重置密码
const resetPassWord=(p)=>{
return ajax({
url:"/api/bpm/merchant/update_pwd",
type:"post",
data:p
})
}
export default {
getMerchantAdminTable,
addMerchantAdmin,
checkMerchantAdmin,
updateAdminStatus,
updateMerchantAdmin,
resetPassWord
}

55
src/services/MerchantMgm/MerchantInfo/index.js

@ -1,55 +0,0 @@
import ajax from "@/config/ajax"
//下拉框
const getSelectOption = (p)=>{
return ajax({
url: "/api/com/common/get_sys_config",
type: 'get',
data: p
})
}
//获取表格数据
const getMerchantInfoTable=(p)=>{
return ajax({
url:"/api/merchant/get_table",
type:"post",
data:p
})
}
//增加商户
const addTenant=(p)=>{
return ajax({
url:"/api/bpm/merchantinfo/add_merchant",
type:"post",
data:p
})
}
//查看详情
const checkTenant=(p)=>{
return ajax({
url:"/api/bpm/merchantinfo/show_merchant",
type:"post",
data:p
})
}
//启用/停用
const updateStatus=(p)=>{
return ajax({
url:"/api/bpm/merchantinfo/update_status",
type:"post",
data:p
})
}
export default {
getSelectOption,
getMerchantInfoTable,
addTenant,
checkTenant,
updateStatus
}

31
src/services/MerchantMgm/functionMgm/index.js

@ -1,31 +0,0 @@
import ajax from "@/config/ajax"
//获取表格数据
const getFunctionMgmTable=(p)=>{
return ajax({
url:"/api/bpm/merchantreceipt/get_all_func",
type:"post",
data:p
})
}
//增加
//查看详情
//编辑
//启用/停用
//重置密码
export default {
getFunctionMgmTable,
}

39
src/services/MerchantMgm/index.js

@ -1,11 +1,34 @@
import MerchantInfo from "./MerchantInfo";
import invoiceConf from "./invoiceConf";
import MerchantAdmin from "./MerchantAdmin";
import functionMgm from "./functionMgm";
import ajax from "@/config/ajax"
//下拉框
const getSelectOption = (p)=>{
return ajax({
url: "/api/com/common/get_sys_config",
type: 'get',
data: p
})
}
//获取表格数据
const getTable=(p)=>{
return ajax({
url:"/api/merchant/get_table",
type:"post",
data:p
})
}
//增加商户
const addTenant=(p)=>{
return ajax({
url:"/api/bpm/merchantinfo/add_merchan",
type:"post",
data:p
})
}
export default {
...MerchantInfo,
...invoiceConf,
...MerchantAdmin,
...functionMgm
getSelectOption,
getTable,
addTenant
}
Loading…
Cancel
Save