import TableOperaionComponent from "@/components/noTemplateComponents/operationComponent"; import TableTextComponent from "@/components/noTemplateComponents/detailComponent"; import StatusComponent from "@/components/noTemplateComponents/statusComponent"; import { timeFilter, dictFilter } from "@/utils/filters"; function changeOrderSort(orderId, location) { /** this - vue instance, 0 - to top, 1 - up, 2 - down, 3 - to bottom */ return this.$http.get('/pms/order/change', { params: { id: orderId, location } }).then(({ data: res }) => { if (res.code === 0) { } else throw new Error(`${res.code}: ${res.msg}`) }).catch(err => { this.$message({ message: err, type: 'error', duration: 1500 }) }) } export default function () { const operations = { 'ongoing': [ // { name: 'view-detail', label: '查看详情' }, // { name: 'confirm-order', label: '确认', icon: 'success', showText: true }, { name: 'end-order', label: '结束', icon: 'error', showText: true }, { name: 'move-up', label: '上移', icon: 'caret-top', showText: true }, { name: 'move-down', label: '下移', icon: 'caret-bottom', showText: true }, { name: 'move-to-top', label: '至顶', icon: 'upload2', showText: true }, { name: 'move-to-bottom', label: '至底', icon: 'download', showText: true }, { name: 'destroy-order', label: '废除', icon: 'delete-solid', showText: true }, ], 'pending': [ 'edit', { name: 'confirm-order', label: '确认订单', icon: 'success', showText: true }, { name: 'move-up', label: '上移', icon: 'caret-top', showText: true }, { name: 'move-down', label: '下移', icon: 'caret-bottom', showText: true }, { name: 'move-to-top', label: '至顶', icon: 'upload2', showText: true }, { name: 'move-to-bottom', label: '至底', icon: 'download', showText: true }, { name: 'delete', emitFull: true, permission: '' } ], 'finished': [ // { name: 'view', label: '查看详情' } // { name: 'end-order', label: '结束订单', icon: 'error', showText: true }, ] } const genTableProps = (type /** ongoing, pending, finished */) => [ { width: 80, type: 'index', label: '序号', fixed: true }, { width: 120, prop: "code", label: "订单号", fixed: 'left' }, { width: 120, prop: "createTime", label: "添加时间", filter: timeFilter }, { width: 120, prop: "statusDictValue", label: "订单状态", filter: dictFilter('order_status') }, // 不可编辑 { width: 200, prop: "cate", label: "子订单号" }, { width: 200, prop: "productCode", label: "物料编号" }, // select, filterable { width: 200, prop: "shapeCode", label: "砖型编号" }, // select, filterable { width: 120, prop: "brand", label: "牌号" }, // select, filterable { width: 80, prop: "addon", label: "addon" }, { width: 120, prop: "ai", label: "版本号" }, // auto display according to the 配方 { width: 200, prop: "shortDesc", label: "物料号销售文本" }, { width: 200, prop: "bomCode", label: "配方编码" }, { width: 200, prop: "pressCode", label: "压机号" }, // select, filterable { width: 200, prop: "blenderCode", label: "混料机号" }, // select, filterable { width: 200, prop: "kilnCode", label: "隧道窑号" }, // select, filterable { width: 120, prop: "prodqty", label: "订单砖数" }, { width: 120, prop: "ktmp", label: "烧成温度" }, { width: 120, prop: "tt", label: "烧成时间" }, { width: 120, prop: "yieldqty", label: "已生产数量" }, // uneditable { width: 120, prop: "soqty", label: "销售订单数" }, { width: 200, prop: "saleNo", label: "销售订单号" }, { width: 200, prop: "saleOrderItem", label: "销售订单item号" }, { width: 200, prop: "packTechCode", label: "包装工艺代码" }, // select, filterable { width: 120, prop: "specifications", label: "生产订单类型" }, { width: 120, prop: "deliveryTime", label: "发货时间" }, { width: 120, prop: "customerCode", label: "客户" }, { width: 120, prop: "pcsKilnCar", label: "托盘码放砖数", }, { prop: "description", label: "详情", subcomponent: TableTextComponent }, { width: 200, prop: "remark", label: "备注" }, type !== 'finished' ? { prop: "operations", name: "操作", fixed: "right", subcomponent: TableOperaionComponent, options: operations[type], width: operations[type].length * 64 }: {} ]; const genHeadFormFields = type => ({ 'ongoing': [ { label: '订单号', prop: 'code', input: true, default: { value: '' }, bind: { placeholder: '请输入订单号' } }, { // 时间段 timerange: true, prop: 'timerange', label: "时间段", bind: { placeholder: "选择日期时间", type: "datetimerange", "start-placeholder": "开始时间", "end-placeholder": "结束时间", }, }, { // 查询 button: { type: "primary", name: "查询", }, }, ], 'pending': [ { label: '订单号', prop: 'code', input: true, bind: { placeholder: '请输入订单号' } }, { // 查询 button: { type: "primary", name: "查询", }, }, { // 新增订单 button: { type: "primary", name: "新增", permission: "", }, bind: { plain: true, }, }, { // 导入订单 - TODO: 需完善具体接口和功能 button: { type: "success", name: "导入订单", }, bind: { plain: true } }, ], 'finished': [ { label: '订单号', prop: 'code', input: true, bind: { placeholder: '请输入订单号' } }, { // 查询 button: { type: "primary", name: "查询", }, }, ] })[type] const dictList = JSON.parse(localStorage.getItem("dictList")); const dialogConfigs = { menu: [ { name: "原料信息", key: "info" }, { name: "原料属性信息", key: "attr", onlyEditMode: true }, // { name: "添加子类", key: "add-sub", onlyEditMode: true }, ], form: { rows: [ [ { input: true, label: "原料名称", prop: "name", rules: { required: true, message: "必填项不能为空", trigger: "blur" }, elparams: { placeholder: "请输入原料名称" }, }, { input: true, label: "原料编码", prop: "code", rules: { required: true, message: "必填项不能为空", trigger: "blur" }, elparams: { placeholder: "请输入原料编码" }, }, { select: true, label: "单位", prop: "unitDictValue", options: dictList["unit"].map((u) => ({ label: u.dictLabel, value: u.dictValue })), elparams: { placeholder: "单位" }, }, ], [ // { // cascader: true, // label: "父级原料", // prop: "parentId", // // TODO: 待解决:DialogWithMenu 中设置default只在初始化的时候有效,一旦清空过就无效了 // // default: '0', // // rules: { required: true, message: "必填项不能为空", trigger: "blur" }, // options: [{ id: '0', name: '无' }], // 手动注入额外选项,用到的场景不多... // fetchData: () => this.$http.get('/pms/material/page', { params: { page: 1, limit: 999, key: '' } }), // elparams: { placeholder: "请选择父级原料", filterable: true, clearable: true }, // // fetchTreeData: () => { // // // TODO:前提是工厂里总的设备类型数不会超过 999 // // return this.$http.get('/pms/material/tree', { // // params: { rootId: '0' } // // }) // // }, // // elparams: { placeholder: "请选择父级原料", 'show-all-levels': false, props: { checkStrictly: true } }, // }, { select: true, label: "原料类型", prop: "typeId", rules: { required: true, message: "必填项不能为空", trigger: "blur" }, options: [], fetchData: () => this.$http.get('/pms/materialType/page', { params: { page: 1, limit: 999 } }), elparams: { placeholder: "请输入原料类型" }, // autoDisabled: true, // 有某个条件触发后,自动变成 disabled 状态 }, { select: true, label: "原料类别", prop: "typeDictValue", options: dictList["material_category"].map((u) => ({ label: u.dictLabel, value: u.dictValue })), elparams: { placeholder: "原料类别" }, // autoDisabled: true }, { input: true, label: "堆积密度(g/cm³)", prop: "density", elparams: { placeholder: "堆积密度" } }, // { // input: true, // label: "设备类型", // prop: "eqTypeId", // rules: { required: true, message: "必填项不能为空", trigger: "blur" }, // elparams: { placeholder: "请输入设备类型" }, // }, ], [ { input: true, label: "英文名称", prop: "enName", elparams: { placeholder: "请输入英文名称" }, }, { input: true, label: "缩写", prop: "enAb", elparams: { placeholder: "请输入缩写" }, }, { input: true, label: "原料描述", prop: "description", elparams: { placeholder: "原料描述" } }, ], [{ input: true, label: "中文描述", prop: "remark", elparams: { placeholder: "备注" } }], ], operations: [ { name: "add", label: "保存", type: "primary", permission: "pms:material:save", showOnEdit: false }, { name: "update", label: "更新", type: "primary", permission: "pms:material:save", showOnEdit: true }, { name: "reset", label: "重置", type: "warning", showAlways: true }, // { name: 'cancel', label: '取消', showAlways: true }, ], }, table: { // extraParams: ['stepId'], extraParams: "materialId", props: [ { type: 'index', label: '序号' }, { prop: "createTime", label: "添加时间", filter: timeFilter }, { prop: "name", label: "属性名", isEditField: true }, { prop: "value", label: "属性值", isEditField: true }, { prop: "operations", name: "操作", fixed: "right", width: 120, subcomponent: TableOperaionComponent, options: [ { name: "edit", permission: "pms:materialArrt:save" }, { name: "delete", emitFull: true, permission: "pms:materialArrt:save" }, ], }, ], data: [ // TOOD 暂时用不到,但获取可以考虑把拉取接口数据的函数迁移到此文件(没有太大必要) ], }, subDialog: { extraParam: "materialId", forceAttachCode: true, rows: [ [ { input: true, label: "属性名", prop: "name", elparams: { placeholder: "请输入属性名" } } ], [ { input: true, label: "属性值", prop: "value", elparams: { placeholder: "请输入属性值" } } ], [ { input: true, label: "备注", prop: "remark", elparams: { placeholder: "请输入备注" } }, ] ], operations: [ { name: "add", label: "保存", type: "primary", permission: "pms:materialArrt:save", showOnEdit: false }, { name: "update", label: "更新", type: "primary", permission: "pms:materialArrt:update", showOnEdit: true }, // { name: 'reset', label: '重置', type: 'warning', showAlways: true }, // { name: 'cancel', label: '取消', showAlways: true }, ], }, }; return { dialogConfigs, tableConfigs: { ongoingTable: genTableProps('ongoing'), pendingTable: genTableProps('pending'), finishedTable: genTableProps('finished'), }, headFormConfigs: { ongoingTableSearch: genHeadFormFields('ongoing'), pendingTableSearch: genHeadFormFields('pending'), finishedTableSearch: genHeadFormFields('finished') }, urls: { confirmedOrder: '/pms/order/pageCom', finishedOrder: '/pms/order/pageEnd', unConfirmedOrder: '/pms/order/pageUnCom', // base: "/pms/material", // page: "/pms/material/page", // tree: "/pms/material/tree", // subase: "/pms/materialArrt", // subpage: "/pms/materialArrt/page", // more... }, }; } // const headFormFields = [ // { // label: '订单号', // prop: 'code', // input: true, // bind: { placeholder: '请输入订单号' } // }, // // { // // label: '子订单号', // // prop: 'cate', // // input: true, // // bind: { placeholder: '请输入子订单号', rules: [{ type: 'number', message: '请输入整数', trigger: 'blur', transform: val => Number(val) }] } // // }, // // { // // label: "配方", // // prop: "bomId", // // select: [], // // fn: () => this.$http.get('/pms/bom/page', { params: { key: '', limit: 999, page: 1 } }), // // bind: { placeholder: "请选择配方" }, // // }, // // { // // label: '砖型', // // prop: 'shapeId', // // select: [], // // fn: () => this.$http.get('/pms/shape/page', { params: { key: '', limit: 999, page: 1 } }), // // bind: { placeholder: "请选择砖型" }, // // }, // // { // // label: '工艺', // // prop: 'techId', // // select: [], // // fn: () => this.$http.post('/pms/equipmentTech/pageView', { key: '', shape: '', wsId: 0, limit: 999, page: 1 }), // // bind: { placeholder: "请选择砖型" }, // // }, // // { // // label: '订单状态', // // prop: 'types', // 0等待, 1确认, 2生产,3暂停, 4结束, 5接受, 6拒绝 // // select: [ // // {label: '等待', value: 0}, // // {label: '确认', value: 1}, // // {label: '生产', value: 2}, // // {label: '暂停', value: 3}, // // {label: '结束', value: 4}, // // {label: '接受', value: 5}, // // {label: '拒绝', value: 6}, // // ], // // // fn: () => this.$http.post('/pms/equipmentTech/pageView', { key: '', shape: '', wsId: 0, limit: 999, page: 1 }), // // bind: { placeholder: "请选择订单状态" }, // // }, // { // button: { // type: "primary", // name: "查询", // }, // }, // { // button: { // type: "primary", // name: "新增", // permission: "", // }, // bind: { // plain: true, // }, // }, // ];