pms-aomei/src/views/modules/pms/order/config.js

419 lines
15 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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,
// },
// },
// ];