Commit ffcebc27 authored by wuhao's avatar wuhao 🎯

asder

parent 6974ed40
...@@ -63,20 +63,20 @@ export default [ ...@@ -63,20 +63,20 @@ export default [
component: "./system/Parts", component: "./system/Parts",
}, },
{ {
path: "/system/shop", path: "/system/store",
name: "车间管理", name: "仓库管理",
component: "./system/Shop", component: "./system/Shop",
}, },
{ // {
path: "/system/productionline", // path: "/system/productionline",
name: "产线管理", // name: "产线管理",
component: "./system/Productionline", // component: "./system/Productionline",
}, // },
{ // {
path: "/system/section", // path: "/system/section",
name: "工段管理", // name: "工段管理",
component: "./system/Section", // component: "./system/Section",
}, // },
{ {
path: "/system/station", path: "/system/station",
name: "工位管理", name: "工位管理",
......
import React, { useEffect, useRef, useReducer } from "react"; import React, { useEffect, useRef, useReducer } from "react";
import { Button, Tooltip, Row, Divider } from "antd"; import { Button, Tooltip, Row, Divider, Drawer } from "antd";
import AutoTable from "@/components/AutoTable"; import AutoTable from "@/components/AutoTable";
import getPrem from "@/utils/getPrem"; //权限判断fn import getPrem from "@/utils/getPrem"; //权限判断fn
import { useRequest } from "umi"; import { useRequest } from "umi";
import defaultFields from "./fields"; import defaultFields from "./fields";
import { doFetch } from "@/utils/doFetch"; import { doFetch } from "@/utils/doFetch";
import DrawInitForm from "@/components/DrawInitForm"; import DrawInitForm from "@/components/DrawInitForm";
import Details from "@/components/Details"; import StoreApp from './store'
import { shopDetail } from "@/utils/detailTotalCard";
import Coltext from "@/components/Coltext";
const initState = { const initState = {
vs: false, vs: false,
fields: {}, fields: {},
...@@ -19,7 +17,7 @@ const initState = { ...@@ -19,7 +17,7 @@ const initState = {
totalCard: [], totalCard: [],
}, },
visible: false, visible: false,
}, },
otherBasic = { otherBasic = {
productionLineName: "产线(加工中心)", productionLineName: "产线(加工中心)",
sectionName: "工段", sectionName: "工段",
...@@ -36,7 +34,7 @@ function reducer(state, action) { ...@@ -36,7 +34,7 @@ function reducer(state, action) {
...state, ...state,
vs: true, vs: true,
iftype: { iftype: {
title: "新增车间", title: "新增仓库",
val: type, val: type,
}, },
fields: { ...action.fields }, fields: { ...action.fields },
...@@ -47,7 +45,7 @@ function reducer(state, action) { ...@@ -47,7 +45,7 @@ function reducer(state, action) {
...state, ...state,
vs: true, vs: true,
iftype: { iftype: {
title: "编辑车间", title: "编辑仓库",
val: type, val: type,
}, },
fields: { ...action.fields }, fields: { ...action.fields },
...@@ -57,23 +55,15 @@ function reducer(state, action) { ...@@ -57,23 +55,15 @@ function reducer(state, action) {
case "see": case "see":
newState = { newState = {
...state, ...state,
detail: { curitem: action.curitem,
dataSource: action.dataSource,
totalCard: [...shopDetail],
},
visible: true, visible: true,
}; };
break; break;
case "close": case "close":
newState = { newState = {
vs: false, ...state,
fields: {},
iftype: {},
curitem: {}, curitem: {},
detail: { vs: false,
dataSource: {},
totalCard: [],
},
visible: false, visible: false,
}; };
break; break;
...@@ -82,7 +72,7 @@ function reducer(state, action) { ...@@ -82,7 +72,7 @@ function reducer(state, action) {
return newState; return newState;
} }
const Shop = (props) => { const Store = (props) => {
let actionRef = useRef(), let actionRef = useRef(),
ChildRef = null; ChildRef = null;
function reload() { function reload() {
...@@ -103,47 +93,39 @@ const Shop = (props) => { ...@@ -103,47 +93,39 @@ const Shop = (props) => {
{ vs, fields, iftype, curitem, detail, visible } = state, { vs, fields, iftype, curitem, detail, visible } = state,
columns = [ columns = [
{ {
title: "车间编号", "title": "仓库编号",
dataIndex: "shopCode", "dataIndex": "storeCode",
key: "shopCode", "key": "storeCode"
}, },
{ {
title: "车间名称", "title": "仓库名称",
dataIndex: "shopName", "dataIndex": "storeName",
key: "shopName", "key": "storeName"
render: (_, row) => { },
return ( {
<Tooltip title={row.shopName}> "title": "仓库类型",
<a "dataIndex": "storeTypeName",
className="table-cell" "key": "storeTypeName",
onClick={() => { "valueType": "select",
doFetch({ "options": [
url: "/ngic-auth/sysShop/queryDetailById", {
params: { id: row.id }, "label": "半成品库",
}).then((res) => { "value": "0"
if (res.code == "0000") {
let dataSource = res?.data?.data ?? {};
dispatch({ type: "see", dataSource });
}
});
}}
>
{row.shopName}
</a>
</Tooltip>
);
}, },
{
"label": "成品库",
"value": "1"
}, },
{ {
title: "所属工厂", "label": "原材料库",
dataIndex: "factoryName", "value": "2"
key: "factoryName", }
]
}, },
{ {
title: "描述", "title": "工厂名",
dataIndex: "remark", "dataIndex": "factoryName",
key: "remark", "key": "factoryName"
search: false,
}, },
{ {
title: "操作", title: "操作",
...@@ -154,37 +136,20 @@ const Shop = (props) => { ...@@ -154,37 +136,20 @@ const Shop = (props) => {
render: (text, row, _, action) => extraAction(text, row, _, action), render: (text, row, _, action) => extraAction(text, row, _, action),
}, },
]; ];
function extraAction(text, record, _, action) { function extraAction(text, record, _, action) {
return [ return [
getPrem("sysDepartment_save", action, "库位管理", () => {
dispatch({ type: "see", curitem: record });
}),
getPrem("sysDepartment_save", action, "修改", () => { getPrem("sysDepartment_save", action, "修改", () => {
doFetch({
url: "/ngic-auth/sysShop/queryDetailById",
params: { id: record.id },
}).then((res) => {
if (res.code == "0000") {
let data = res?.data?.data ?? {};
for (let i in defaultFields) { for (let i in defaultFields) {
defaultFields[i].value = record[i]; defaultFields[i].value = record[i];
if (i == "factoryId") {
if (
data?.productionLineName ||
data?.sectionName ||
data?.processLineName ||
data?.groupName ||
data?.shiftName
) {
defaultFields[i].disabled = true;
} else {
defaultFields[i].disabled = false;
}
}
}
dispatch({ type: "edit", fields: defaultFields, curitem: data });
} }
}); dispatch({ type: "edit", fields: defaultFields, curitem: record });
}), }),
getPrem("sysDepartment_deleteById", action, "删除", null, { getPrem("sysDepartment_deleteById", action, "删除", null, {
title: "确认删除该车间?", title: "确认删除该仓库?",
onConfirm: () => { onConfirm: () => {
run({ run({
url: "/ngic-auth/sysShop/deleteById", url: "/ngic-auth/sysShop/deleteById",
...@@ -194,15 +159,17 @@ const Shop = (props) => { ...@@ -194,15 +159,17 @@ const Shop = (props) => {
}), }),
]; ];
} }
let saveData = (values, fn) => { let saveData = (values, fn) => {
let newfields = JSON.parse(JSON.stringify(values)); let newfields = JSON.parse(JSON.stringify(values));
//新增&修改 //新增&修改
let difrid = iftype.val == "edit" ? { id: curitem.id } : {}; let difrid = iftype.val == "edit" ? { id: curitem.id } : {};
run({ run({
url: "/ngic-auth/sysShop/save", url: "/ngic-auth/sysStore/save",
params: { ...newfields, ...difrid }, params: { ...newfields, ...difrid },
}); });
}; };
let extrarender = [ let extrarender = [
<Button <Button
disabled={!getPrem("sysDepartment_save", "ifs")} disabled={!getPrem("sysDepartment_save", "ifs")}
...@@ -218,13 +185,14 @@ const Shop = (props) => { ...@@ -218,13 +185,14 @@ const Shop = (props) => {
新增 新增
</Button>, </Button>,
]; ];
return ( return (
<div> <div>
<AutoTable <AutoTable
pagetitle={props.route.name} //页面标题 pagetitle={props.route.name} //页面标题
pageextra={extrarender} //页面操作 新增or批量删除 pageextra={extrarender} //页面操作 新增or批量删除
columns={columns} columns={columns}
path="/ngic-auth/sysShop/queryList" path="/ngic-auth/sysStore/queryList"
actionRef={actionRef} actionRef={actionRef}
onRef={(node) => (ChildRef = node)} onRef={(node) => (ChildRef = node)}
></AutoTable> ></AutoTable>
...@@ -245,33 +213,23 @@ const Shop = (props) => { ...@@ -245,33 +213,23 @@ const Shop = (props) => {
submitting={loading || !vs} submitting={loading || !vs}
width={"60%"} width={"60%"}
> >
{iftype.val == "edit" && (
<>
<Row gutter={[16, 10]}>
{Object.keys(otherBasic).map((it) => {
return (
<Coltext
label={otherBasic[it]}
value={curitem[it]}
key={it}
/>
);
})}
</Row>
<Divider />
</>
)}
</DrawInitForm> </DrawInitForm>
<Details
title="车间详情" <Drawer
visible={visible} visible={visible}
onClose={() => dispatch({ type: "close" })} onClose={() => dispatch({ type: "close" })}
title="库位列表"
footer={false} footer={false}
destroyOnClose={true} destroyOnClose={true}
width={"100%"} width={"100%"}
{...detail} getContainer={false}
></Details> style={{ position: "absolute" }}
>
<StoreApp curitem={curitem}></StoreApp>
</Drawer>
</div> </div>
); );
}; };
export default Shop; export default Store;
import { factorySelect } from "@/services/system"; import { factorySelect } from "@/services/system";
export default { export default {
shopCode: { "storeCode": {
value: null, "value": null,
type: "input", "type": "input",
title: "车间编号", "title": "仓库编号",
name: ["shopCode"], "name": [
required: true, "storeCode"
],
"required": true
}, },
shopName: { "storeName": {
value: null, "value": null,
type: "input", "type": "input",
title: "车间名称", "title": "仓库名称",
name: ["shopName"], "name": [
required: true, "storeName"
],
"required": true
}, },
factoryId: { "storeType": {
value: null, "value": null,
type: "select", "type": "select",
title: "所属工厂", "title": "仓库类型",
name: ["factoryId"], "name": [
required: true, "storeType"
options: { ],
database: factorySelect, "required": true,
params: {}, "options": [
{
"label":"半成品库",
"value":0
}, },
{
"label":"成品库",
"value":1
}, },
remark: { {
value: null, "label":"原材料库",
type: "textarea", "value":2
title: "描述", }
name: ["remark"], ]
required: false,
col: { span: 24 },
}, },
"factoryId": {
"value": null,
"type": "select",
"title": "所属工厂",
"name": ["factoryId"],
"required": true,
"options": {
"database": factorySelect,
"params": {},
},
}
}; };
import { doFetch } from "@/utils/doFetch";
export default {
"storePositionName": {
"value": null,
"type": "input",
"title": "库位名称",
"name": [
"storePositionName"
],
"required": true
},
"storeAreaName": {
"value": null,
"type": "select",
"title": "所属库区",
"name": [
"storeAreaName"
],
"required": true,
"options": {
"database":()=> doFetch({url:"/ngic-base-business/sysDic/queryStorePositionSelect"}),
"params": {}
}
},
"description": {
"value": null,
"type": "input",
"title": "描述",
"name": [
"description"
],
"required": true
}
};
import React, { useEffect, useRef, useReducer } from "react";
import { Button, Tooltip, Row, Divider } from "antd";
import AutoTable from "@/components/AutoTable";
import getPrem from "@/utils/getPrem"; //权限判断fn
import { useRequest } from "umi";
import defaultFields from "./fieldstore";
import { doFetch } from "@/utils/doFetch";
import DrawInitForm from "@/components/DrawInitForm";
const initState = {
vs: false,
fields: {},
iftype: {},
curitem: {},
detail: {
dataSource: {},
totalCard: [],
},
visible: false,
};
function reducer(state, action) {
let { type } = action,
newState = {};
switch (type) {
case "add":
newState = {
...state,
vs: true,
iftype: {
title: "新增库位",
val: type,
},
fields: { ...action.fields },
};
break;
case "edit":
newState = {
...state,
vs: true,
iftype: {
title: "编辑库位",
val: type,
},
fields: { ...action.fields },
curitem: action.curitem,
};
break;
case "see":
newState = {
...state,
curitem: action.curitem,
visible: true,
};
break;
case "close":
newState = {
...state,
curitem: {},
visible: false,
};
break;
}
return newState;
}
const StoreApp = (props) => {
console.log(props);
let actionRef = useRef(),
ChildRef = null;
function reload() {
actionRef?.current?.reload();
ChildRef?.onRefresh();
}
const { run, loading } = useRequest(doFetch, {
manual: true,
formatResult: (res) => res,
onSuccess: (result, params) => {
if (result.code == "0000") {
reload();
dispatch({ type: "close" });
}
},
}),
[state, dispatch] = useReducer(reducer, initState),
{ vs, fields, iftype, curitem, detail, visible } = state,
columns = [
{
"title": "库位名称",
"dataIndex": "storePositionName",
"key": "storePositionName"
},
{
"title": "所属库区",
"dataIndex": "storeAreaName",
"key": "storeAreaName",
"valueType": "select",
"options": {
database:()=>doFetch("/ngic-base-business/sysDic/queryStorePositionSelect"),
params:{}
}
},
{
"title": "描述",
"dataIndex": "description",
"key": "description"
},
{
title: "操作",
dataIndex: "option_dataindex",
key: "option_dataindex",
valueType: "option",
width: 135,
render: (text, row, _, action) => extraAction(text, row, _, action),
},
];
function extraAction(text, record, _, action) {
return [
getPrem("sysDepartment_save", action, "修改", () => {
for (let i in defaultFields) {
defaultFields[i].value = record[i];
}
dispatch({ type: "edit", fields: defaultFields, curitem: record });
}),
getPrem("sysDepartment_deleteById", action, "删除", null, {
title: "确认删除该库位?",
onConfirm: () => {
run({
url: "/ngic-auth/sysShop/deleteById",
params: { id: record.id },
});
},
}),
];
}
let saveData = (values, fn) => {
let newfields = JSON.parse(JSON.stringify(values));
//新增&修改
let difrid = iftype.val == "edit" ? { id: curitem.id } : {};
run({
url: "/ngic-auth/sysStore/save",
params: { ...newfields, ...difrid },
});
};
let extrarender = [
<Button
disabled={!getPrem("sysDepartment_save", "ifs")}
type="primary"
onClick={() => {
for (let i in defaultFields) {
defaultFields[i].value = null;
defaultFields[i].disabled = false;
}
dispatch({ type: "add", fields: defaultFields });
}}
>
新增
</Button>,
];
return (
<div>
<AutoTable
pagetitle={"库位管理"} //页面标题
pageextra={extrarender} //页面操作 新增or批量删除
columns={columns}
path="/ngic-auth/sysStorePosition/queryList"
actionRef={actionRef}
onRef={(node) => (ChildRef = node)}
extraparams={{storeId:props?.curitem?.id??"0"}}
></AutoTable>
<DrawInitForm
title={iftype.title}
visible={vs}
onClose={() => dispatch({ type: "close" })}
footer={false}
destroyOnClose={true}
fields={fields}
submitData={(values) => {
saveData(values);
}}
onChange={(changedValues, allValues) => {
//联动操作
}}
submitting={loading || !vs}
width={"60%"}
>
</DrawInitForm>
</div>
);
};
export default StoreApp;
import { import {
factorySelect, factorySelect,
shopSelectByFactory, shopSelectByFactory,
productionLineSelectByShops, storeselectionBox,
sectionSelectByShops, sectionSelectByShops,
userSelect, userSelect,
departmentTree, departmentTree,
...@@ -27,41 +27,44 @@ export default { ...@@ -27,41 +27,44 @@ export default {
type: "input", type: "input",
title: "联系电话", title: "联系电话",
name: ["telephone"], name: ["telephone"],
required: true, required: false,
}, },
factoryId: { departmentId: {
value: null, value: null,
type: "select", type: "treeselect",
title: "工厂", title: "部门",
name: ["factoryId"], name: ["departmentId"],
required: true, required: true,
options: { options: {
database: factorySelect, database: departmentTree,
params: {}, params: {},
}, },
linked: true,
}, },
departmentId: { factoryIdList: {
value: null, value: null,
type: "treeselect", type: "select",
title: "部门", title: "工厂",
name: ["departmentId"], name: ["factoryIdList"],
required: true, required: true,
options: { options: {
database: departmentTree, database: factorySelect,
params: {}, params: {},
}, },
linked: true,
multiple: true,
}, },
storeIdList: { storeIdList: {
value: null, value: null,
type: "select", type: "select",
title: "负责车间", title: "负责仓库",
name: ["storeIdList"], name: ["storeIdList"],
required: false, required: false,
belinked: { belinked: {
options: { options: {
database: shopSelectByFactory, database: storeselectionBox,
params: { factoryId: "linked" }, params: {
},
}, },
}, },
linked: true, linked: true,
......
...@@ -22,7 +22,7 @@ const initState = { ...@@ -22,7 +22,7 @@ const initState = {
extraparams: { extraparams: {
orderType: "1", orderType: "1",
}, },
}, },
tabList = [ tabList = [
{ {
key: "1", key: "1",
...@@ -182,7 +182,6 @@ const Staff = (props) => { ...@@ -182,7 +182,6 @@ const Staff = (props) => {
dataIndex: "chargeStoreName", dataIndex: "chargeStoreName",
key: "chargeStoreName", key: "chargeStoreName",
}, },
{ {
title: "角色", title: "角色",
dataIndex: "roleNames", dataIndex: "roleNames",
...@@ -361,19 +360,9 @@ const Staff = (props) => { ...@@ -361,19 +360,9 @@ const Staff = (props) => {
}; };
} }
} }
let newParams = {
remarks: {
value: null,
type: "textarea",
title: "备注",
name: ["remarks"],
required: false,
col: { span: 24 },
},
};
dispatch({ dispatch({
type: "edit", type: "edit",
fields: { ...defaultFields, ...newParams }, fields: { ...defaultFields },
curitem: data, curitem: data,
}); });
} }
...@@ -397,6 +386,8 @@ const Staff = (props) => { ...@@ -397,6 +386,8 @@ const Staff = (props) => {
params: { id: record.id }, params: { id: record.id },
}).then((res) => { }).then((res) => {
if (res.code == "0000") { if (res.code == "0000") {
message.success(res.msg);
let data = res?.data?.data ?? {}; let data = res?.data?.data ?? {};
for (let i in defaultFields) { for (let i in defaultFields) {
defaultFields[i].value = data[i]; defaultFields[i].value = data[i];
......
...@@ -50,7 +50,7 @@ const Login = () => { ...@@ -50,7 +50,7 @@ const Login = () => {
const formRef = useRef(); const formRef = useRef();
const { initialState, setInitialState } = useModel("@@initialState"); const { initialState, setInitialState } = useModel("@@initialState");
const [tabkey, settabkey] = useState("1"); const [tabkey, settabkey] = useState("1");
const [visible, setvisible] = useState(true); const [visible, setvisible] = useState(false);
const [data, setdata] = useState(); const [data, setdata] = useState();
const fetchUserInfo = async () => { const fetchUserInfo = async () => {
const userInfo = await initialState?.fetchUserInfo(), const userInfo = await initialState?.fetchUserInfo(),
...@@ -152,7 +152,7 @@ const Login = () => { ...@@ -152,7 +152,7 @@ const Login = () => {
onSearch={(value) => { onSearch={(value) => {
if (value) { if (value) {
doFetch({ doFetch({
url: "/ngic-auth/sysAccountApply/queryByPhone", url: "/ngic-auth/sysAccountApply/queryByAccount",
params: { accountName: value.replace(/^\s+|\s+$/g, "") }, params: { accountName: value.replace(/^\s+|\s+$/g, "") },
}).then((res) => { }).then((res) => {
if (res.code == "0000") { if (res.code == "0000") {
...@@ -262,7 +262,10 @@ const Login = () => { ...@@ -262,7 +262,10 @@ const Login = () => {
</div> </div>
</Col> </Col>
<Col {...cols}> <Col {...cols} onClick={() => {
setvisible(false)
}}>
<div className="logincontent" style={{ width: "100%", height: "100%", display: "flex", flexDirection: "column" }}> <div className="logincontent" style={{ width: "100%", height: "100%", display: "flex", flexDirection: "column" }}>
<div className={styles.content}> <div className={styles.content}>
<LoginForm <LoginForm
...@@ -303,7 +306,10 @@ const Login = () => { ...@@ -303,7 +306,10 @@ const Login = () => {
activeKey={tabkey} activeKey={tabkey}
onChange={settabkey} onChange={settabkey}
tabBarStyle={{ color: "#fff" }} tabBarStyle={{ color: "#fff" }}
tabBarExtraContent={<a style={{ color: "rgba(255,255,255,0.6)" }}>查询注册进度</a>} tabBarExtraContent={<a style={{ color: "rgba(255,255,255,0.6)" }} onClick={(e) => {
e.stopPropagation();
setvisible(true)
}}>查询注册进度</a>}
> >
<TabPane tab="登录" key="1"> <TabPane tab="登录" key="1">
{tabkey == "1" && ( {tabkey == "1" && (
......
...@@ -36,6 +36,14 @@ export async function storeselectionBoxAll(params) { ...@@ -36,6 +36,14 @@ export async function storeselectionBoxAll(params) {
data: params, data: params,
}); });
} }
//根据工厂id查询车间下拉
export async function storeselectionBox(params) {
return request(`/wms/ngic-auth/sysStore/selectionBox`, {
method: "POST",
data: params,
});
}
//根据工厂id查询车间下拉 //根据工厂id查询车间下拉
export async function shopSelectByFactory(params) { export async function shopSelectByFactory(params) {
return request(`/wms/ngic-auth/sysShop/query/selectbox/factory`, { return request(`/wms/ngic-auth/sysShop/query/selectbox/factory`, {
......
...@@ -223,10 +223,6 @@ const userDetails = [ ...@@ -223,10 +223,6 @@ const userDetails = [
title: "姓名", title: "姓名",
key: "userName", key: "userName",
}, },
{
title: "性别",
key: "genderName",
},
{ {
title: "联系电话", title: "联系电话",
key: "telephone", key: "telephone",
...@@ -240,16 +236,8 @@ const userDetails = [ ...@@ -240,16 +236,8 @@ const userDetails = [
key: "departmentName", key: "departmentName",
}, },
{ {
title: "负责车间", title: "负责仓库",
key: "shopNames", key: "chargeStoreName",
},
{
title: "负责工段",
key: "sectionNames",
},
{
title: "负责产线",
key: "productionLines",
}, },
{ {
title: "角色", title: "角色",
...@@ -263,23 +251,6 @@ const userDetails = [ ...@@ -263,23 +251,6 @@ const userDetails = [
title: "邮箱", title: "邮箱",
key: "mailNo", key: "mailNo",
}, },
{
title: "学历",
key: "academicCareer",
},
{
title: "毕业院校",
key: "university",
},
{
title: "专业",
key: "major",
},
{
title: "个人图片",
key: "userImgList",
type: "img",
},
{ {
title: "备注", title: "备注",
key: "remarks", key: "remarks",
...@@ -306,10 +277,6 @@ const userCheckDetails = [ ...@@ -306,10 +277,6 @@ const userCheckDetails = [
title: "姓名", title: "姓名",
key: "userName", key: "userName",
}, },
{
title: "性别",
key: "genderName",
},
{ {
title: "联系电话", title: "联系电话",
key: "telephone", key: "telephone",
...@@ -323,16 +290,8 @@ const userCheckDetails = [ ...@@ -323,16 +290,8 @@ const userCheckDetails = [
key: "departmentName", key: "departmentName",
}, },
{ {
title: "负责车间", title: "负责仓库",
key: "shopName", key: "chargeStoreName",
},
{
title: "负责工段",
key: "sectionName",
},
{
title: "负责产线",
key: "productionLineName",
}, },
{ {
title: "角色", title: "角色",
...@@ -346,23 +305,6 @@ const userCheckDetails = [ ...@@ -346,23 +305,6 @@ const userCheckDetails = [
title: "邮箱", title: "邮箱",
key: "mailNo", key: "mailNo",
}, },
{
title: "学历",
key: "academicCareer",
},
{
title: "毕业院校",
key: "university",
},
{
title: "专业",
key: "major",
},
{
title: "个人图片",
key: "userImgList",
type: "img",
},
{ {
title: "备注", title: "备注",
key: "remark", key: "remark",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment