From c0e3a1fa33840bae549a9f5554ffc442c4731080 Mon Sep 17 00:00:00 2001 From: zhaoy <137053305@qq.com> Date: Thu, 1 Feb 2024 19:03:21 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../company/account/components/MenuForm.jsx | 88 ++++++++++++++---- src/pages/company/account/index.jsx | 2 +- .../goodstypemanage/components/CreateForm.jsx | 2 +- src/pages/device/deviceInfo/index.jsx | 42 ++++++--- src/pages/device/deviceVesion/index.jsx | 52 ++++++----- src/pages/device/product/index.jsx | 15 +--- .../productmanage/components/CreateForm.jsx | 6 +- src/pages/device/productmanage/index.jsx | 78 ++++++++-------- src/pages/device/productmanage/services.js | 5 ++ .../org/orgamange/components/CreateForm.jsx | 2 +- src/pages/org/roles/components/MenuForm.jsx | 90 +++++++++++++++---- src/pages/org/roles/index.jsx | 14 ++- src/pages/org/roles/service.js | 7 ++ .../dictdata/components/CreateForm.jsx | 4 +- src/pages/sys/dictionary/dictdata/index.jsx | 30 +++---- src/pages/sys/menus/index.jsx | 1 - 16 files changed, 300 insertions(+), 138 deletions(-) diff --git a/src/pages/company/account/components/MenuForm.jsx b/src/pages/company/account/components/MenuForm.jsx index cd21632..8201025 100644 --- a/src/pages/company/account/components/MenuForm.jsx +++ b/src/pages/company/account/components/MenuForm.jsx @@ -1,36 +1,76 @@ import React, { useState, useEffect } from 'react'; -import { Modal, Tree, Row, Col, List,Tag } from 'antd'; +import { Modal, Tree, Row, Col, Checkbox } from 'antd'; import api from '../service'; import Enumerable from 'linq'; const MenuForm = (props) => { - const [load, setLoad] = useState(); - const [selectedRowsState, setSelectedRows] = useState(); + const [load, setLoad] = useState([]); const [checkedKeys, setCheckedKeys] = useState(); + const [indeterminate, setindeterminate] = useState(false); + const [checkAll,setcheckAll] = useState(false); useEffect(async () => { var arr = []; + var filteredArr=[] Enumerable.from(props.values).forEach(t => { if(!t.isParentMenu){ arr.push(t.id); } - + if(t.id !== null && typeof t.id !== "undefined"){ + filteredArr.push(t); + } }); setCheckedKeys(arr) - console.log("props.values",props.datas) - var parm={getType:'ALL',type:props.datas.type} - var ret = await api.GetMenu(parm); - var data = Enumerable.from(ret.data).toArray(); + var data =props.treeData; + if(getTreeLength(data)===filteredArr.length){ + setcheckAll(true) + setindeterminate(false); + }else{ + setcheckAll(false); + if(props.values.length==0){ + setindeterminate(false); + }else{ + setindeterminate(true); + } + + } setLoad(data); }, [props.modalVisible]) - - const lbl = () => { - var arr = []; - Enumerable.from(props.values).forEach(t => { - arr.push({t.name}); - }); - return arr; + function getTreeLength(tree) { + let length = tree.length; // 初始化计算器为根节点的子节点数量 + + for (let i = 0; i < tree.length; i++) { + if (Array.isArray(tree[i].children)) { // 如果当前节点有子节点 + length += getTreeLength(tree[i].children); // 将子节点的长度加到计算器上 + } + } + + return length; +} + const onCheckAllChange = (e) => { + if(!checkAll){ + var data=getAllIds(load,[]); + setCheckedKeys(data) + setcheckAll(true) + setindeterminate(false); + }else{ + setCheckedKeys([]) + setcheckAll(false) + setindeterminate(false); + } + + }; + function getAllIds(tree, result) { + console.log(tree) + //遍历树 获取id数组 + for (const i in tree) { + result.push(tree[i].key); // 遍历项目满足条件后的操作 + if (tree[i].children) { + //存在子节点就递归 + getAllIds(tree[i].children, result); + } + } + return result; } - var html = { maskClosable={false}> + + 全选 + { setCheckedKeys(keys) }} - defaultExpandAll={true} + onCheck={(keys, e) => { + if(getTreeLength(props.treeData)==keys.length){ + setcheckAll(true) + setindeterminate(false); + }else{ + setcheckAll(false) + setindeterminate(true); + } + setCheckedKeys(keys) ; + }} + defaultExpandAll={false} checkedKeys={checkedKeys} checkable /> diff --git a/src/pages/company/account/index.jsx b/src/pages/company/account/index.jsx index de5325e..a426e42 100644 --- a/src/pages/company/account/index.jsx +++ b/src/pages/company/account/index.jsx @@ -123,7 +123,7 @@ const companyManage = () => { var parm={getType:'ALL',type:0} api.GetMenu(parm).then((r) => { if(r.data){ - setTreeData(r.data.data); + setTreeData(r.data); } }); diff --git a/src/pages/database/goods/goodstypemanage/components/CreateForm.jsx b/src/pages/database/goods/goodstypemanage/components/CreateForm.jsx index 23b6d38..8b9d197 100644 --- a/src/pages/database/goods/goodstypemanage/components/CreateForm.jsx +++ b/src/pages/database/goods/goodstypemanage/components/CreateForm.jsx @@ -26,7 +26,7 @@ const CreateForm = (props) => { - + { > 更新 , - + { + await DelDeviceInfo([record.id]).then((r) => { + if(r.data){ + message.success('删除成功,即将刷新'); + actionRef.current.reload(); + }else{ + message.error('删除失败'); + } + + }); + }} + onCancel={() => { }} + > + 删除 + , // { @@ -326,15 +346,15 @@ const handleRemove = async (selectedRows) => { > 新建 , - , + // , ]} request={async (params) => { var data = []; diff --git a/src/pages/device/deviceVesion/index.jsx b/src/pages/device/deviceVesion/index.jsx index c1fa992..1380ee5 100644 --- a/src/pages/device/deviceVesion/index.jsx +++ b/src/pages/device/deviceVesion/index.jsx @@ -6,7 +6,7 @@ import { PlusOutlined } from '@ant-design/icons'; import ProTable from '@ant-design/pro-table'; import CreateForm from './components/CreateForm'; import { GetDeviceVesionPage, AddDeviceVesion, DelDeviceVesion, UpdateDeviceVesion, GetProductList,UpdateStatus } from "./services" - +import { history } from 'umi'; const key = 'message'; //添加 @@ -140,6 +140,7 @@ const GoodsTypeManage = () => { title: '是否存在模板', dataIndex: 'templatePath', valueType: 'textarea', + hideInSearch: true, render: (_, record) => [
存在模板 @@ -182,26 +183,37 @@ const GoodsTypeManage = () => { > 删除 , - { - setCurrentRow(record); - setIsModalOpen(true); - setIsAddGoodsTemplate(false); - }} > 上传设备工艺模型, - { - setCurrentRow(record); - setIsModalOpen(true); - setIsAddGoodsTemplate(true); - }} > 上传商品工艺模版, - 下载工艺模板 + // { + // setCurrentRow(record); + // setIsModalOpen(true); + // setIsAddGoodsTemplate(false); + // }} > 上传设备工艺模型, + // { + // setCurrentRow(record); + // setIsModalOpen(true); + // setIsAddGoodsTemplate(true); + // }} > 上传商品工艺模版, + // 下载工艺模板, + { + history.push({ + pathname: '/device/productmanage', + query: { + isAdd: false, + values: record, + tabStatus: 'basis' + }, + }); + }} > 管理, ], }, ]; diff --git a/src/pages/device/product/index.jsx b/src/pages/device/product/index.jsx index b95870c..9153681 100644 --- a/src/pages/device/product/index.jsx +++ b/src/pages/device/product/index.jsx @@ -6,7 +6,7 @@ import { PlusOutlined } from '@ant-design/icons'; import ProTable from '@ant-design/pro-table'; import CreateForm from './components/CreateForm'; import { GetProductPage, AddProduct, DelProduct, UpdateProduct,UpdateStatus } from "./services" -import { history } from 'umi'; + const key = 'message'; const { Paragraph, Text } = Typography; const GoodsTypeManage = () => { @@ -75,18 +75,7 @@ const GoodsTypeManage = () => { > 删除 , - { - history.push({ - pathname: '/device/productmanage', - query: { - isAdd: false, - values: record, - tabStatus: 'basis' - }, - }); - }} > 管理, + ], }, ]; diff --git a/src/pages/device/productmanage/components/CreateForm.jsx b/src/pages/device/productmanage/components/CreateForm.jsx index 3204eae..d3f88bd 100644 --- a/src/pages/device/productmanage/components/CreateForm.jsx +++ b/src/pages/device/productmanage/components/CreateForm.jsx @@ -50,7 +50,7 @@ const CreateForm = (props) => { form.setFieldsValue({ id: props?.values?.id, type: props?.values?.type, - deviceVersionKey: props?.values?.deviceVersionKey, + //deviceVersionKey: props?.values?.deviceVersionKey, name: props?.values?.name, dataType: props?.values?.dataType, dataRange: props?.values?.dataRange, @@ -200,7 +200,7 @@ const onChangeboolLabel1=(e)=>{ - + {/* - + */} 属性 diff --git a/src/pages/device/productmanage/index.jsx b/src/pages/device/productmanage/index.jsx index 00959ea..7b9916e 100644 --- a/src/pages/device/productmanage/index.jsx +++ b/src/pages/device/productmanage/index.jsx @@ -16,7 +16,8 @@ import { getproducttopicspage, addproducttopics, updateproducttopics, - deleteproducttopics + deleteproducttopics, + GetProduct } from './services'; import { history } from 'umi'; const { Paragraph, Text } = Typography; @@ -78,8 +79,9 @@ const bomtechnology = (props) => { const [selectedRowsState, setSelectedRows] = useState([]); const [dataSource,setdataSource]=useState([]); const [datafunctionSource,setdatafunctionSource]=useState([]); - const [DeviceVesionData, setDeviceVesionData] = useState([]); - const [DeviceVesionEnum, setDeviceVesionEnum] = useState({}); + // const [DeviceVesionData, setDeviceVesionData] = useState([]); + // const [DeviceVesionEnum, setDeviceVesionEnum] = useState({}); + const [Product, setProduct] = useState({}); const [total,settotal]=useState(0); const [totalfun,settotalfun]=useState(0); /** 国际化配置 */ @@ -92,17 +94,21 @@ const bomtechnology = (props) => { SetCurrTabKey(tabStatus.tabActiveKey); if(!props.location.query.values.id){ history.push({ - pathname: '/device/product', + pathname: '/device/deviceVesion', }); }else{ - GetDeviceVesion(props.location.query.values.id).then((res)=>{ - let list = {}; - res.data.forEach((item) => { - list[item.id] = { text: item.vesion }; - }); - setDeviceVesionData(res.data) - setDeviceVesionEnum(list) - var params={productId:props.location.query.values.id,deviceTypeKey:props.location.query.values.id,current:1,pageSize:10} + // GetDeviceVesion(props.location.query.values.id).then((res)=>{ + // let list = {}; + // res.data.forEach((item) => { + // list[item.id] = { text: item.vesion }; + // }); + // setDeviceVesionData(res.data) + // setDeviceVesionEnum(list) + + // }) + GetProduct(props.location.query.values.productId).then((res)=>{ + setProduct(res.data) + var params={productId:props.location.query.values.productId,deviceTypeKey:props.location.query.values.productId,current:1,pageSize:10} LoadfunData(params) LoadtopisData(params); }) @@ -195,14 +201,14 @@ const bomtechnology = (props) => { }, }, }, - { - title: '版本', - dataIndex: 'vesion', - valueType: 'select', - ellipsis: true, - search: true, - valueEnum:DeviceVesionEnum - }, + // { + // title: '版本', + // dataIndex: 'vesion', + // valueType: 'select', + // ellipsis: true, + // search: true, + // valueEnum:DeviceVesionEnum + // }, { title: '创建时间', dataIndex: 'createAt', @@ -293,7 +299,7 @@ const bomtechnology = (props) => { await deleteproducttopics([record.id]).then((r) => { message.success('删除成功,即将刷新'); - var params={productId:props.location.query.values.id,current:1,pageSize:10} + var params={productId:props.location.query.values.productId,current:1,pageSize:10} LoadtopisData(params) }); }} @@ -312,7 +318,7 @@ const bomtechnology = (props) => { }, { key: 'topis', - tab: 'topis类列表', + tab: 'topics类列表', }, ]; @@ -341,7 +347,7 @@ const handleAdd = async (fields) => { await addgoodstechnology(JSON.stringify(fields)).then((r) => { if (r.data) { message.success('添加成功'); - var params={productId:props.location.query.values.id,deviceTypeKey:props.location.query.values.id,current:1,pageSize:10} + var params={productId:props.location.query.values.productId,deviceTypeKey:props.location.query.values.productId,current:1,pageSize:10} LoadfunData(params) handleModalVisible(false); if (actionRef.current) { @@ -366,7 +372,7 @@ const handleRemove = async (ids) => { deletegoodstechnology(ids).then((r) => { if (r.data) { message.success('删除成功'); - var params={productId:props.location.query.values.id,deviceTypeKey:props.location.query.values.id,current:1,pageSize:10} + var params={productId:props.location.query.values.productId,deviceTypeKey:props.location.query.values.productId,current:1,pageSize:10} LoadfunData(params) } else { message.error(r.errors); @@ -392,7 +398,7 @@ const handleRemove = async (ids) => { updategoodstechnology(fields).then((r) => { if (r.data) { message.success('修改成功'); - var params={productId:props.location.query.values.id,deviceTypeKey:props.location.query.values.id,current:1,pageSize:10} + var params={productId:props.location.query.values.productId,deviceTypeKey:props.location.query.values.productId,current:1,pageSize:10} LoadfunData(params) handleModalVisible(false); if (actionRef.current) { @@ -472,7 +478,7 @@ const handleRemove = async (ids) => { request={async (params) => { var data = []; var total = 0; - params.deviceTypeKey=props.location.query.values.id + params.deviceTypeKey=props.location.query.values.productId await getGoodstechnologypage(params).then((r) => { data = r.data.data; @@ -496,7 +502,8 @@ const handleRemove = async (ids) => { onFinish={async (value) => { console.log("jnlaile ") console.log(value) - value.productId=props.location.query.values.id + value.productId=props.location.query.values.productId + value.deviceVersionKey=props.location.query.values.id; var success = false; if (value.id) { await handleUpdate(value); @@ -510,7 +517,7 @@ const handleRemove = async (ids) => { }} createModalVisible={createModalVisible} values={currentRow || {}} - DeviceVesionData={DeviceVesionData} + // DeviceVesionData={DeviceVesionData} /> { }, }} > - { - value.productId=props.location.query.values.id + value.productId=props.location.query.values.productId if (value.id) { await updateproducttopics(value).then((r)=>{ if (r.data) { message.success('修改成功'); setcreateTopisModalVisible(false) - var params={productId:props.location.query.values.id,current:1,pageSize:10} + var params={productId:props.location.query.values.productId,current:1,pageSize:10} LoadtopisData(params) } else { message.error(r.errors); @@ -571,7 +578,7 @@ const handleRemove = async (ids) => { await addproducttopics(value).then((r)=>{ if (r.data) { message.success('添加成功'); - var params={productId:props.location.query.values.id,current:1,pageSize:10} + var params={productId:props.location.query.values.productId,current:1,pageSize:10} LoadtopisData(params) setcreateTopisModalVisible(false) } else { @@ -597,13 +604,14 @@ const handleRemove = async (ids) => { title: [ { history.push({ - pathname: '/device/product', + pathname: '/device/deviceVesion', }); }}>返回,
- 产品名称:{props.location.query.values.name} - 产品key: {props.location.query.values.key}
+ 产品版本:{props.location.query.values?.vesion} + 产品名称:{Product?.name} + 产品key: {Product?.key}
], breadcrumb: {}, diff --git a/src/pages/device/productmanage/services.js b/src/pages/device/productmanage/services.js index 87eaeed..32bc868 100644 --- a/src/pages/device/productmanage/services.js +++ b/src/pages/device/productmanage/services.js @@ -77,4 +77,9 @@ export async function addgoodstechnology(data) { return request(getDataBaseUrl()+`/api/devicevesion/getdevicevesion?productId=${TypeCode}`, { method: 'Get', }); + } + export async function GetProduct(productId) { + return request(getDataBaseUrl()+`/api/product/getproduct?productId=${productId}`, { + method: 'Get', + }); } \ No newline at end of file diff --git a/src/pages/org/orgamange/components/CreateForm.jsx b/src/pages/org/orgamange/components/CreateForm.jsx index 0547252..e14afe7 100644 --- a/src/pages/org/orgamange/components/CreateForm.jsx +++ b/src/pages/org/orgamange/components/CreateForm.jsx @@ -41,7 +41,7 @@ const CreateForm = (props) => { - + { const [load, setLoad] = useState(); - const [selectedRowsState, setSelectedRows] = useState(); const [checkedKeys, setCheckedKeys] = useState(); + const [indeterminate, setindeterminate] = useState(false); + const [checkAll,setcheckAll] = useState(false); useEffect(async () => { var arr = []; + var filteredArr=[] Enumerable.from(props.values).forEach(t => { - arr.push(t.id); + if(!t.isParentMenu){ + arr.push(t.id); + } + if(t.id !== null && typeof t.id !== "undefined"){ + filteredArr.push(t); + } }); setCheckedKeys(arr) - var ret = await api.SelectTree(); - var data = Enumerable.from(ret.data).toArray(); + var data =props.treeData; + console.log("props.values",props.values) + console.log("data",data) + console.log("filteredArr",filteredArr) + if(getTreeLength(data)===filteredArr.length){ + setcheckAll(true) + setindeterminate(false); + }else{ + setcheckAll(false); + if(props.values.length==0){ + setindeterminate(false); + }else{ + setindeterminate(true); + } + + } setLoad(data); }, [props.modalVisible]) + function getTreeLength(tree) { + let length = tree.length; // 初始化计算器为根节点的子节点数量 + + for (let i = 0; i < tree.length; i++) { + if (Array.isArray(tree[i].children)) { // 如果当前节点有子节点 + length += getTreeLength(tree[i].children); // 将子节点的长度加到计算器上 + } + } + + return length; +} + const onCheckAllChange = (e) => { + if(!checkAll){ + var data=getAllIds(load,[]); + setCheckedKeys(data) + setcheckAll(true) + setindeterminate(false); + }else{ + setCheckedKeys([]) + setcheckAll(false) + setindeterminate(false); + } + + }; - const lbl = () => { - var arr = []; - Enumerable.from(props.values).forEach(t => { - arr.push({t.name}); - }); - return arr; + function getAllIds(tree, result) { + console.log(tree) + //遍历树 获取id数组 + for (const i in tree) { + result.push(tree[i].key); // 遍历项目满足条件后的操作 + if (tree[i].children) { + //存在子节点就递归 + getAllIds(tree[i].children, result); + } + } + return result; } - var html = { maskClosable={false}> + + 全选 + { setCheckedKeys(keys) }} - defaultExpandAll={true} + onCheck={(keys, e) => { + if(getTreeLength(props.treeData)==keys.length){ + setcheckAll(true) + setindeterminate(false); + }else{ + setcheckAll(false) + setindeterminate(true); + } + setCheckedKeys(keys) ; + }} + defaultExpandAll={false} checkedKeys={checkedKeys} checkable /> diff --git a/src/pages/org/roles/index.jsx b/src/pages/org/roles/index.jsx index 855a10a..6d73665 100644 --- a/src/pages/org/roles/index.jsx +++ b/src/pages/org/roles/index.jsx @@ -5,7 +5,7 @@ import { PageContainer, FooterToolbar } from '@ant-design/pro-layout'; import ProTable, { ProColumns, ActionType, TableDropdown } from '@ant-design/pro-table'; import Enumerable from 'linq' import CreateForm from './components/CreateForm'; -import { Page, add, edit, removeRole, setMenu, setUserGrantData, Enable, Disable, GetRoleMenu, SetDataRole } from './service'; +import { Page, add, edit, removeRole, setMenu, GetMenu, GetRoleMenu, SetDataRole } from './service'; import { useAccess } from 'umi'; import MenuForm from './components/MenuForm'; import OrgForm from './components/OrgForm'; @@ -105,7 +105,7 @@ const roleManager = () => { const [row, setRow] = useState(); const [selectedRowsState, setSelectedRows] = useState(); const [selectData, setSelectData] = useState([]); - + const [treeData, setTreeData] = useState(); /** * 删除节点 * @param selectedRows @@ -190,6 +190,15 @@ const roleManager = () => { return arr; } + useEffect(() => { + var parm={getType:'ALL',type:0} + GetMenu(parm).then((r) => { + if(r.data){ + setTreeData(r.data); + } + + }); + }, []); const columns = [ { @@ -342,6 +351,7 @@ const roleManager = () => { }} modalVisible={updateMenuModalVisible} values={row || {}} + treeData={treeData} /> ) : null} diff --git a/src/pages/org/roles/service.js b/src/pages/org/roles/service.js index dff95d6..e253d2d 100644 --- a/src/pages/org/roles/service.js +++ b/src/pages/org/roles/service.js @@ -64,3 +64,10 @@ export async function SetDataRole(params) { data:params }); } + /** 查询功能菜单*/ + export async function GetMenu(params) { + return request(getDataBaseUrl()+`​/api/menu/menuparmytrees?getType=${params.getType}&&type=${params.type}`, + { + method: 'Get', + }); +} diff --git a/src/pages/sys/dictionary/dictdata/components/CreateForm.jsx b/src/pages/sys/dictionary/dictdata/components/CreateForm.jsx index 73e717b..f8d0bc6 100644 --- a/src/pages/sys/dictionary/dictdata/components/CreateForm.jsx +++ b/src/pages/sys/dictionary/dictdata/components/CreateForm.jsx @@ -34,7 +34,7 @@ const CreateForm = (props) => { - { ); })} - + */} {/* { dataIndex: 'code', ellipsis:true }, - { - title: '字典类型', - dataIndex: 'typeName', - hideInForm: true, - hideInSearch: true, - }, - { - title: '字典类型', - dataIndex: 'typeId', - hideInForm: true, - hideInTable: true, - hideInSearch: true, - valueEnum: typeNames, - }, + // { + // title: '字典类型', + // dataIndex: 'typeName', + // hideInForm: true, + // hideInSearch: true, + // }, + // { + // title: '字典类型', + // dataIndex: 'typeId', + // hideInForm: true, + // hideInTable: true, + // hideInSearch: true, + // valueEnum: typeNames, + // }, { title: '备注', dataIndex: 'remark', @@ -279,7 +279,7 @@ const DictDataManage = (props) => { { - + value.typeId=props.currentRow.id; var success = false; if (value.id) { success = await handleUpdate(value); diff --git a/src/pages/sys/menus/index.jsx b/src/pages/sys/menus/index.jsx index f3c27b0..98a5a19 100644 --- a/src/pages/sys/menus/index.jsx +++ b/src/pages/sys/menus/index.jsx @@ -179,7 +179,6 @@ const handleUpdate = async (fields) => { { title: '创建时间', dataIndex: 'createAt', - sorter: true, hideInSearch: true, }, {