import TableOperaionComponent from "@/components/noTemplateComponents/operationComponent"; // import switchBtn from "@/components/noTemplateComponents/switchBtn"; import request from "@/utils/request"; import { timeFilter, dictFilter } from '@/utils/filters' export default function () { const tableProps = [ { type: 'index', label: '序号' }, { prop: "createTime", label: "添加时间", filter: timeFilter }, // { prop: "updateTime", label: "上料时间", filter: timeFilter }, { prop: "materialName", label: "原料" }, // { prop: "material", label: "原料编码" }, { prop: "qty", label: "上料量" }, { prop: "siloCode1", label: "上料料仓1" }, { prop: "siloCode2", label: "上料料仓2" }, { prop: "siloCode3", label: "上料料仓3" }, { prop: 'startTime', label: "开始上料时间", filter: timeFilter }, { prop: 'endTime', label: "结束上料时间", filter: timeFilter }, { prop: "statusDictValue", label: "破碎作业", filter: val => ['正常停止', '废除'][val] ?? '-' }, // { prop: "description", label: "描述" }, { prop: "remark", label: "备注" }, { prop: "operations", name: "操作", fixed: "right", width: 90, subcomponent: TableOperaionComponent, options: [{ name: "edit", label: "编辑", icon: "edit-outline" }, { name: "delete", icon: "delete", label: "删除", emitFull: true, permission: "pms:brokeLog:delete" }], }, ]; /** * 数据字典hack * @param {object} row 行数据 * @param {string} dictId 从哪个数据字典映射数据 * @param {string} dataProp 把字典值附加到哪个 prop 字段上 * @param {string} dictProp 哪个prop是字典数据 **/ let dictList; tableProps.attachDictValue = (row, dictId, dataProp, dictProp, forceFlushDictList = false) => { /** 缓存一下 dictList **/ if (!dictList || (dictList && forceFlushDictList)) dictList = dictFilter(dictId) if (typeof row === 'object' && dictList) { const value = dictList(row[dictProp]) const data = row[dataProp] row[dataProp] = data + ' ' + (value === '-' ? '' : value) } else { this.$message({ message: 'tableProps.attachDictValue() 出错!', type: 'error', duration: 1500 }) } } const headFormFields = [ { prop: 'material', label: "按原料搜索", // input: true, select: [], fieldOptionValue: 'name', // 把料仓筛选条件的label改为展示code,而不是展示name default: { value: "" }, fn: () => this.$http.get("/pms/material/page", { params: { page: 1, limit: 999 } }), bind: { placeholder: '请输入原料名', filterable: true } }, { prop: 'silo', label: "按料仓搜索", fieldOptionLabel: 'code', // 把料仓筛选条件的label改为展示code,而不是展示name select: [], fn: () => this.$http.get("/pms/materialStorage/page", { params: { page: 1, limit: 999, typeDictValue: '0' } }), bind: { placeholder: '请选择料仓', filterable: true, } }, { timerange: true, prop: 'timerange', label: "时间段", bind: { placeholder: '请选择上料时间段', type: "datetimerange", "start-placeholder": "开始时间", "end-placeholder": "结束时间", } }, { button: { type: "primary", name: "查询", }, }, { button: { type: "primary", name: "新增", permission: "pms:brokeLog:save" }, bind: { plain: true, } }, ]; /** * dialog config 有两个版本,一个适用于 DialogWithMenu 组件,另一个适用于 DialogJustForm 组件 * 适用于 DialogWithMenu 组件的配置示例详见 blenderStep/config.js * 此为后者的配置: */ const dialogJustFormConfigs = { form: { rows: [ [ { // input: true, select: true, options: [], label: "原料", prop: "material", optionValue: 'code', rules: { required: true, message: "必填项不能为空", trigger: "blur" }, // elparams: { placeholder: "请输入原料名称" }, elparams: { placeholder: "请选择原料" }, fetchData: () => this.$http.get("/pms/material/page", { params: { limit: 999, page: 1 } }), // rules: { required: true, message: "必填项不能为空", trigger: "change" }, }, { input: true, label: "上料量", prop: "qty", rules: [{ required: true, message: "必填项不能为空", trigger: "blur" }, { type: 'number', message: '请输入正确的数字类型', trigger: 'blur', transform: val => Number(val) }], elparams: { placeholder: "请输入上料量" }, }, { select: true, label: "破碎作业", prop: "statusDictValue", options: [{ label: '正常停止', value: 0 }, { label: '废除', value: '1' }], elparams: { placeholder: "破碎作业", filterable: true } }, ], [ { prop: 'silo1', label: '上料料仓1', select: true, options: [], rules: { required: true, message: "必填项不能为空", trigger: "blur" }, fetchData: () => this.$http.get("/pms/materialStorage/page", { params: { page: 1, limit: 999, typeDictValue: '0' } }), elparams: { placeholder: "请选择上料料仓1" } }, { prop: 'silo2', label: '上料料仓2', select: true, options: [], rules: { required: true, message: "必填项不能为空", trigger: "blur" }, fetchData: () => this.$http.get("/pms/materialStorage/page", { params: { page: 1, limit: 999, typeDictValue: '0' } }), elparams: { placeholder: "请选择上料料仓2" } }, { prop: 'silo3', label: '上料料仓3', select: true, options: [], rules: { required: true, message: "必填项不能为空", trigger: "blur" }, fetchData: () => this.$http.get("/pms/materialStorage/page", { params: { page: 1, limit: 999, typeDictValue: '0' } }), elparams: { placeholder: "请选择上料料仓3" } }, ], [ { datetime: true, label: "开始上料时间", prop: "startTime", rules: { required: true, message: "必填项不能为空", trigger: "blur" }, elparams: { placeholder: "请选择上料时间", type: 'datetime' }, }, { datetime: true, label: "结束上料时间", prop: "endTime", rules: { required: true, message: "必填项不能为空", trigger: "blur" }, elparams: { placeholder: "请选择上料结束时间", type: 'datetime' }, }, { input: true, label: "描述信息", prop: "description", elparams: { placeholder: "描述信息" } }, ], [{ input: true, label: "备注", prop: "remark", elparams: { placeholder: "备注" } }], ], operations: [ { name: "add", label: "保存", type: "primary", permission: "pms:brokeLog:save", showOnEdit: false }, { name: "update", label: "更新", type: "primary", permission: "pms:brokeLog:update", showOnEdit: true }, { name: "reset", label: "重置", type: "warning", showAlways: true }, // { name: 'cancel', label: '取消', showAlways: true }, ], }, }; // 备注:弹窗弹出的时间和网速有关...... return { dialogConfigs: dialogJustFormConfigs, tableConfig: { table: null, // 此处可省略,el-table 上的配置项 column: tableProps, // el-column-item 上的配置项 }, headFormConfigs: { rules: null, // 名称是由 BaseSearchForm.vue 组件固定的 fields: headFormFields, // 名称是由 BaseSearchForm.vue 组件固定的 }, urls: { base: "/pms/brokeLog", page: "/pms/brokeLog/page", // subase: '/pms/blenderStepParam', // subpage: '/pms/blenderStepParam/page', // more... }, }; }