18 changed files with 671 additions and 102 deletions
-
11public/static/css/antd.dark.min.css
-
4src/components/layout/SideBar/index.jsx
-
1src/pages/OperationCenter/OperationSales/CouponMgm/CouponDistribute/index.scss
-
13src/pages/OperationCenter/OperationSales/CouponMgm/CouponDistribute/loadable.jsx
-
9src/pages/OperationCenter/OperationSales/CouponMgm/WriteOffDetail/loadable.jsx
-
6src/pages/OperationCenter/OperationSales/CouponMgm/WriteOffStat/loadable.jsx
-
4src/pages/SystemMgm/BusinessConfig/HotCbdConf/index.scss
-
191src/pages/SystemMgm/BusinessConfig/HotCbdConf/loadable.jsx
-
14src/pages/SystemMgm/BusinessConfig/PageConf/index.scss
-
114src/pages/SystemMgm/BusinessConfig/PageConf/loadable.jsx
-
6src/pages/SystemMgm/BusinessConfig/PdaArrearConf/index.jsx
-
18src/pages/SystemMgm/BusinessConfig/PdaArrearConf/index.scss
-
56src/pages/SystemMgm/BusinessConfig/PdaArrearConf/loadable.jsx
-
67src/pages/SystemMgm/BusinessConfig/VacationConf/index.scss
-
124src/pages/SystemMgm/BusinessConfig/VacationConf/loadable.jsx
-
5src/pages/SystemMgm/BusinessConfig/index.jsx
-
18src/router/router.config.js
-
112src/services/SystemMgm/BusinessConf/index.js
@ -1,15 +1,115 @@ |
|||
import React, { useState, useRef, useEffect } from "react"; |
|||
// import { message, Pagination, Table, Space, Modal, } from "antd"; |
|||
// import { dictionary, utils } from "@/config/common"; |
|||
import { message, Pagination, Table, Modal,Button , Switch } 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 { 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 PageConf() { |
|||
return <div>PageConf</div> |
|||
const [list , setList] = useState([]) |
|||
const [type, setType] = useState('-1') |
|||
const [scrollHeight, setScrollHeight] = useState(0) |
|||
const rightListRef = useRef(null) |
|||
const columns = [ |
|||
{ |
|||
title: "序号", |
|||
dataIndex: "id", |
|||
key: "id", |
|||
align: "center", |
|||
}, |
|||
{ |
|||
title: "数据项名称", |
|||
dataIndex: "name", |
|||
key: "name", |
|||
align: "center", |
|||
}, |
|||
{ |
|||
title: "所属系统", |
|||
dataIndex: "system", |
|||
key: "system", |
|||
align: "center", |
|||
}, |
|||
{ |
|||
title: "展示状态", |
|||
dataIndex: "show_status", |
|||
key: "show_status", |
|||
align: "center", |
|||
}, |
|||
{ |
|||
title: "操作", |
|||
align: "center", |
|||
render: (_,record)=>{ |
|||
return <Switch checked={record.status == '1' ? true : false} onChange={(e)=>{onChange(e, record)}} /> |
|||
} |
|||
} |
|||
] |
|||
|
|||
const onChange = (checked, record)=>{ |
|||
// console.log(checked, record) |
|||
ajax.switchShowStatus({id: record.id, status: checked ? '1' : '0'}).then((res)=>{ |
|||
if(res.status == 20000){ |
|||
message.success('设置成功') |
|||
getOverviewConfigList() |
|||
} |
|||
}).catch(err=>{ |
|||
|
|||
}) |
|||
} |
|||
const getOverviewConfigList = (value)=>{ |
|||
ajax.getOverviewConfigList({type: value ? value: type}).then((res)=>{ |
|||
if(res.status == 20000){ |
|||
setList(res.data) |
|||
} |
|||
}).catch(err=>{ |
|||
|
|||
}) |
|||
} |
|||
|
|||
const search = ()=>{ |
|||
getOverviewConfigList() |
|||
} |
|||
|
|||
const reset = ()=>{ |
|||
setType('-1') |
|||
getOverviewConfigList('-1') |
|||
} |
|||
|
|||
useEffect(()=>{ |
|||
getOverviewConfigList() |
|||
}, []) |
|||
return <div className="page-conf"> |
|||
<div className="left-search"> |
|||
<FormSelect |
|||
yisaLabel="所属系统" |
|||
yisaData={[{value: '-1', label: '全部'},{value: '1', label: '路内'},{value: '2', label: '路外'}]} |
|||
defaultValue={ type } |
|||
placeholder="" |
|||
hasUnlimited={ false } |
|||
showClose={true} |
|||
onChange={ e=>{setType(e)} } |
|||
/> |
|||
<div className="bottomBox"> |
|||
<Button type="primary" onClick={search}>查询</Button>  |
|||
<Button onClick={reset}>重置</Button> |
|||
|
|||
</div> |
|||
</div> |
|||
<div className="right-list" ref={(e)=>{rightListRef.current = e; if(e){setScrollHeight(e.offsetHeight - 100)}}}> |
|||
<Table |
|||
columns={columns} |
|||
dataSource={list} |
|||
pagination={false} |
|||
scroll={{y: scrollHeight}} |
|||
rowKey="id" |
|||
> |
|||
|
|||
</Table> |
|||
</div> |
|||
|
|||
</div> |
|||
} |
|||
|
|||
export default PageConf; |
@ -0,0 +1,6 @@ |
|||
import React from "react" |
|||
import loadable from "@loadable/component" |
|||
import { LoadingImg } from "@/components" |
|||
|
|||
const PdaArrearConfLoadable = loadable(() => import("./loadable")) |
|||
export default (pros) => <PdaArrearConfLoadable {...pros} fallback={<LoadingImg />} /> |
@ -0,0 +1,18 @@ |
|||
@import "@/assets/css/mixin.scss"; |
|||
$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); |
|||
|
|||
.pda-arrear-conf{ |
|||
padding-left: 30px; |
|||
padding-top: 30px; |
|||
.title{ |
|||
height: 45px; |
|||
line-height: 45px; |
|||
} |
|||
.row{ |
|||
height: 50px; |
|||
line-height: 50px; |
|||
} |
|||
} |
@ -0,0 +1,56 @@ |
|||
import React, { useState, useRef, useEffect } from "react"; |
|||
import { message, Pagination, Table, Space, Modal, Button, InputNumber |
|||
} 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 PdaArrearConf() { |
|||
const [limit, setLimit] = useState(0) |
|||
const [edit, setEdit] = useState(false) |
|||
const getData = ()=>{ |
|||
ajax.getPdaArrearConfig().then((res)=>{ |
|||
if(res.status == 20000){ |
|||
setLimit(res.data) |
|||
} |
|||
}).catch(err=>{ |
|||
|
|||
}) |
|||
} |
|||
|
|||
const save = ()=>{ |
|||
ajax.editPdaArrearConfig({data: limit}).then((res)=>{ |
|||
if(res.status == 20000){ |
|||
setLimit(res.data) |
|||
setEdit(false) |
|||
} |
|||
}).catch(err=>{ |
|||
|
|||
}) |
|||
} |
|||
|
|||
useEffect(()=>{ |
|||
getData() |
|||
}, []) |
|||
|
|||
return <div className="pda-arrear-conf"> |
|||
<div className="title">大额欠费预警设置</div> |
|||
{ |
|||
!edit ? |
|||
<div className="row">大额欠费金额: {limit}元</div> |
|||
: |
|||
<div className="row">大额欠费金额: <InputNumber value={limit} onChange={(e)=>{setLimit(e)}} min={1} max={9999} controls={false}></InputNumber>元</div> |
|||
} |
|||
|
|||
{ |
|||
!edit ? <Button type="primary" onClick={()=>{setEdit(true)}}>修改</Button> : |
|||
<Button type="primary" onClick={save}>保存</Button> |
|||
} |
|||
</div> |
|||
} |
|||
|
|||
export default PdaArrearConf; |
@ -1,15 +1,123 @@ |
|||
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 { message, Modal,Calendar, Button , Input ,DatePicker } 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 VacationConf() { |
|||
return <div>VacationConf</div> |
|||
const [vacationData, setVacationData] = useState([]) |
|||
const [rightDetailData, setRightDetailData] = useState({}) |
|||
const [modalVisible, setModalVisible] = useState(false) |
|||
const [vacationName,setVacationName]= useState('') |
|||
const [startDate, setStartDate] = useState(moment(utils.createDateStr(), 'YYYY-MM-DD')) |
|||
const [endDate, setEndDate] = useState(moment(utils.createDateStr(), 'YYYY-MM-DD')) |
|||
const [mode, setMode] = useState('0') // 0 新增 1 编辑 |
|||
const getVacationData = ()=>{ |
|||
ajax.getVacationData().then((res)=>{ |
|||
if(res.status == 20000){ |
|||
setVacationData(res.data) |
|||
} |
|||
}).catch(err=>{ |
|||
|
|||
}) |
|||
} |
|||
|
|||
const resetVacation = ()=>{ |
|||
setVacationName(rightDetailData.vacation_name) |
|||
setStartDate(moment(rightDetailData.vacation_start_date, 'YYYY-MM-DD')) |
|||
setEndDate(moment(rightDetailData.vacation_end_date, 'YYYY-MM-DD')) |
|||
setModalVisible(true) |
|||
setMode('1') |
|||
} |
|||
|
|||
const save = ()=>{ |
|||
if(mode == '0'){ |
|||
message.success('新增成功') |
|||
}else{ |
|||
message.success('修改成功') |
|||
} |
|||
} |
|||
|
|||
const addConfig = ()=>{ |
|||
setModalVisible(true); |
|||
setMode('0'); |
|||
setVacationName('') |
|||
setStartDate(moment(utils.createDateStr(), 'YYYY-MM-DD')) |
|||
setEndDate(moment(utils.createDateStr(), 'YYYY-MM-DD')) |
|||
} |
|||
|
|||
const onChange = (value, mode) => { |
|||
let temp = value.format('MM-DD') |
|||
if(vacationData.length){ |
|||
let one = vacationData.find(item=> item.day == temp) |
|||
if(one){ |
|||
setRightDetailData(one) |
|||
}else{ |
|||
setRightDetailData({}) |
|||
} |
|||
} |
|||
}; |
|||
|
|||
const dateFullCellRender = (date)=>{ |
|||
let temp = date.format('MM-DD'),highlight = false,temp_vc_name = ''; |
|||
if(vacationData.length){ |
|||
let one = vacationData.find(item=> item.day == temp) |
|||
if(one){ |
|||
highlight = true |
|||
temp_vc_name = one.vacation_name |
|||
} |
|||
} |
|||
return <div className="calendar-item" style={{backgroundColor: highlight ? '#3b93dd' : '#464d5f'}} > |
|||
|
|||
<div>{date.format('DD')}</div> |
|||
{ |
|||
temp_vc_name ? <div>{temp_vc_name}</div> : null |
|||
} |
|||
</div> |
|||
} |
|||
|
|||
useEffect(()=>{ |
|||
getVacationData() |
|||
}, []) |
|||
return <div className="vacation-conf"> |
|||
|
|||
<div className="left"> |
|||
<div className="title"><span className="title-name">节假日展示</span><Button type="primary" onClick={addConfig}>新增节假日配置</Button></div> |
|||
<Calendar onChange={onChange} dateFullCellRender={dateFullCellRender} /> |
|||
</div> |
|||
<div className="right"> |
|||
<div className="right-row title-name">节假日详情</div> |
|||
<div className="right-row">节假日名称: {rightDetailData.vacation_name || '--'}</div> |
|||
<div className="right-row">节假日区间: {rightDetailData.vacation_start_date}~{rightDetailData.vacation_end_date}</div> |
|||
{ |
|||
rightDetailData.vacation_name ? |
|||
<div> |
|||
<Button type="primary" onClick={resetVacation}>重新配置</Button>  |
|||
<Button >删除</Button> |
|||
</div> |
|||
: null |
|||
} |
|||
|
|||
</div> |
|||
<Modal open={modalVisible} closable={true} onOk={save} onCancel={()=>{setModalVisible(false)}}> |
|||
<div className="modal-row vacation"> |
|||
<span className="title"><span className="red-star">*</span>节假日名称 </span> |
|||
<Input value={vacationName} style={{width: '300px'}} showCount={true} maxLength={30} onChange={(e)=>{setVacationName(e.target.value)}}></Input> |
|||
</div> |
|||
<div className="modal-row vacation"> |
|||
<span className="title"><span className="red-star">*</span>节假日区间 </span> |
|||
<DatePicker value={startDate} onChange={e=>{setStartDate(e)}} format={'YYYY-MM-DD'} /> |
|||
</div> |
|||
<div className="modal-row vacation"> |
|||
<span className="title">至 </span> |
|||
<DatePicker value={endDate} onChange={e=>{setEndDate(e)}} format={'YYYY-MM-DD'} /> |
|||
</div> |
|||
</Modal> |
|||
</div> |
|||
} |
|||
|
|||
export default VacationConf; |
Write
Preview
Loading…
Cancel
Save
Reference in new issue