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
        +
      • +