From cae9ef9feee769a382a93e2b926a89f6df0c65e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=8D=9A=E6=96=87?= <1179111926@qq.com> Date: Wed, 17 Aug 2022 17:15:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9E=8B=E5=8F=B7=E7=AE=A1=E7=90=86=E5=AE=8C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .umirc.ts | 4 + .../BasicManager/List/Allotment/index.tsx | 1 - .../BasicManager/List/Manufacturer/index.tsx | 2 +- .../BasicManager/List/Model/index.less | 41 ++ .../Manager/BasicManager/List/Model/index.tsx | 382 ++++++++++++++++++ src/pages/Manager/Header/index.tsx | 2 +- src/styles/iconfont/demo_index.html | 81 +++- src/styles/iconfont/iconfont.css | 24 +- src/styles/iconfont/iconfont.eot | Bin 11940 -> 12876 bytes src/styles/iconfont/iconfont.js | 20 +- src/styles/iconfont/iconfont.json | 21 + src/styles/iconfont/iconfont.svg | 6 + src/styles/iconfont/iconfont.ttf | Bin 11772 -> 12708 bytes src/styles/iconfont/iconfont.woff | Bin 7724 -> 8336 bytes src/styles/iconfont/iconfont.woff2 | Bin 6608 -> 7128 bytes 15 files changed, 559 insertions(+), 25 deletions(-) create mode 100644 src/pages/Manager/BasicManager/List/Model/index.less create mode 100644 src/pages/Manager/BasicManager/List/Model/index.tsx diff --git a/.umirc.ts b/.umirc.ts index 42c7e91..a5f4599 100644 --- a/.umirc.ts +++ b/.umirc.ts @@ -84,6 +84,10 @@ export default defineConfig({ path: '/manager/basicManager/register', component: '@/pages/Manager/BasicManager/List/Register', }, + { + path: '/manager/basicManager/model', + component: '@/pages/Manager/BasicManager/List/Model', + }, { path: '/manager/basicManager/manufacturer', component: '@/pages/Manager/BasicManager/List/Manufacturer', diff --git a/src/pages/Manager/BasicManager/List/Allotment/index.tsx b/src/pages/Manager/BasicManager/List/Allotment/index.tsx index ef29c71..267ae8f 100644 --- a/src/pages/Manager/BasicManager/List/Allotment/index.tsx +++ b/src/pages/Manager/BasicManager/List/Allotment/index.tsx @@ -57,7 +57,6 @@ const Page: FC = () => { }, []); const getFacilityData = async (record: any) => { - setLoading(true); const res = await Fetch('/openi/device/page', { method: 'get', params: { diff --git a/src/pages/Manager/BasicManager/List/Manufacturer/index.tsx b/src/pages/Manager/BasicManager/List/Manufacturer/index.tsx index 0863095..0ce6ab5 100644 --- a/src/pages/Manager/BasicManager/List/Manufacturer/index.tsx +++ b/src/pages/Manager/BasicManager/List/Manufacturer/index.tsx @@ -218,7 +218,7 @@ const Page: FC = () => { /> = () => { + const [data, setData] = useState([]); + const [firmList, setFirmList] = useState([]); + const [loading, setLoading] = useState(true); + const [total, setTotal] = useState(0); + const [value, setValue] = useState(''); + const [visible, setVisible] = useState(false); + const [form] = Form.useForm(); + const [params, setParams] = useState({ + pageNumber: 1, + pageSize: 20, + keywords: '', + }); + const editId = useRef(null); + + useEffect(() => { + getData(params); + getFirmList(); + }, []); + + const getData = async (record: any) => { + setLoading(true); + const res = await Fetch('/openi/deviceType/page', { + method: 'get', + params: record, + }); + if (res.result === 'success') { + setData(res?.data?.[0]?.list); + setTotal(res?.data?.[0]?.total); + } + setLoading(false); + }; + + const getFirmList = async () => { + const res = await Fetch('/openi/producer/list'); + if (res.result === 'success') { + const data = res?.data?.[0]; + setFirmList(data); + } + }; + + const columns: ColumnsType = [ + { + title: '序号', + align: 'center', + dataIndex: 'index', + render: (text: string, record: any, index: number) => + params.pageSize * (params.pageNumber - 1) + index + 1, + }, + { + title: '装备代号', + dataIndex: 'typeNumber', + }, + { + title: '装备名称', + dataIndex: 'name', + }, + { + title: '工作模式', + dataIndex: 'pattern', + }, + { + title: '管理层级', + dataIndex: 'managementLevel', + }, + { + title: '操作', + dataIndex: 'action', + align: 'center', + fixed: 'right', + width: 110, + render: (v: any, r: any) => ( + + handleEdit(r)} + title="修改" + className={'iconfont icon-xiugaikucundixian ' + styles.action} + /> + handleDelete(r.id)} + title="删除" + className={'iconfont icon-shanchuzhuangbeixinghao ' + styles.action} + /> + + ), + }, + ]; + + const handleChangePage = (param: any) => { + params.pageNumber = param?.current; + params.pageSize = param?.pageSize; + setParams({ ...params }); + getData(params); + }; + + const handleFinish = async (v: any) => { + const res = await Fetch(`/openi/deviceType/editOrAdd`, { + method: 'post', + data: { + ...v, + id: editId.current, + }, + }); + if (res.result === 'success') { + params.pageNumber = editId.current ? params.pageNumber : 1; + setParams({ ...params }); + getData(params); + setVisible(false); + } + }; + + const handleEdit = (param: any) => { + form.setFieldsValue({ + ...param, + producerIdList: param?.producerList?.map((e: any) => e.id), + }); + editId.current = param.id; + setVisible(true); + }; + + const handleAdd = () => { + form.setFieldsValue({ producerIdList: [''] }); + setVisible(true); + }; + + const handleDelete = (id: any) => { + Modal.confirm({ + title: '提示', + okText: '确认', + cancelText: '取消', + content: '确认删除吗?', + onOk: async () => { + const res = await Fetch(`/openi/deviceType/delete/${id}`, { + method: 'post', + }); + if (res.result === 'success') { + const page = + 1 === data.length && params.pageNumber > 1 + ? params.pageNumber - 1 + : params.pageNumber; + params.pageNumber = page; + setParams({ ...params }); + getData(params); + } + }, + }); + }; + + return ( +
+
+ 型号管理 + getData(params)} + className="iconfont icon-a-shuaxin2" + /> +
+ + setValue(k.target.value)} + onSearch={(e) => { + params.keywords = e; + params.pageNumber = 1; + setParams({ ...params }); + getData(params); + }} + style={{ width: 400 }} + /> + + + ( + + 共{total}条数据 + + ), + }} + /> + { + form.resetFields(); + editId.current = null; + }} + cancelText="取消" + onOk={() => { + form.submit(); + }} + onCancel={() => { + setVisible(false); + }} + > +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {(fields, { add, remove }, { errors }) => ( + <> + {fields.map(({ key, name, ...restField }, index) => ( + + + + + {fields.length > 1 ? ( + remove(name)} + /> + ) : null} + + ))} + + + + + )} + + + + + ); +}; +export default Page; diff --git a/src/pages/Manager/Header/index.tsx b/src/pages/Manager/Header/index.tsx index f303eeb..8306f59 100644 --- a/src/pages/Manager/Header/index.tsx +++ b/src/pages/Manager/Header/index.tsx @@ -13,7 +13,7 @@ const Header = ({ ...props }) => { { id: '/basicManager', name: '基础设施管理', - url: '/manager/basicManager/manufacturer', + url: '/manager/basicManager/register', }, ]; return ( diff --git a/src/styles/iconfont/demo_index.html b/src/styles/iconfont/demo_index.html index 16f6fcc..ac4fe49 100644 --- a/src/styles/iconfont/demo_index.html +++ b/src/styles/iconfont/demo_index.html @@ -54,6 +54,24 @@
    +
  • + +
    下载
    +
    &#xe670;
    +
  • + +
  • + +
    选择设备
    +
    &#xe66e;
    +
  • + +
  • + +
    导入设备
    +
    &#xe66f;
    +
  • +
  • 导入数据
    @@ -342,12 +360,12 @@
    @font-face {
       font-family: 'iconfont';
    -  src: url('iconfont.eot?t=1660555520778'); /* IE9 */
    -  src: url('iconfont.eot?t=1660555520778#iefix') format('embedded-opentype'), /* IE6-IE8 */
    -       url('iconfont.woff2?t=1660555520778') format('woff2'),
    -       url('iconfont.woff?t=1660555520778') format('woff'),
    -       url('iconfont.ttf?t=1660555520778') format('truetype'),
    -       url('iconfont.svg?t=1660555520778#iconfont') format('svg');
    +  src: url('iconfont.eot?t=1660727403452'); /* IE9 */
    +  src: url('iconfont.eot?t=1660727403452#iefix') format('embedded-opentype'), /* IE6-IE8 */
    +       url('iconfont.woff2?t=1660727403452') format('woff2'),
    +       url('iconfont.woff?t=1660727403452') format('woff'),
    +       url('iconfont.ttf?t=1660727403452') format('truetype'),
    +       url('iconfont.svg?t=1660727403452#iconfont') format('svg');
     }
     

    第二步:定义使用 iconfont 的样式

    @@ -373,6 +391,33 @@
      +
    • + +
      + 下载 +
      +
      .icon-xiazai +
      +
    • + +
    • + +
      + 选择设备 +
      +
      .icon-xuanzeshebei +
      +
    • + +
    • + +
      + 导入设备 +
      +
      .icon-daorushebei +
      +
    • +
    • @@ -805,6 +850,30 @@
        +
      • + +
        下载
        +
        #icon-xiazai
        +
      • + +
      • + +
        选择设备
        +
        #icon-xuanzeshebei
        +
      • + +
      • + +
        导入设备
        +
        #icon-daorushebei
        +
      • +
      • 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 IW%BwF070|~MF0Q* diff --git a/src/styles/iconfont/iconfont.woff2 b/src/styles/iconfont/iconfont.woff2 index e7a8f309c81fb5b6db2e2c15b74bda7086d75494..a3ad87a8c47ac1e9f0a60c23b0a1fb373e6b8f8d 100644 GIT binary patch literal 7128 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