pms-aomei/src/views/modules/pms/product/config.js
2023-07-05 11:18:08 +08:00

249 lines
8.5 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";
export default function () {
const tableProps = [
{ type: "index", label: "序号" },
{ prop: "name", label: "物料名称" },
{ prop: "code", label: "物料编码" },
{ prop: "typeDictValue", label: "物料类型", filter: dictFilter("product_type") },
{ prop: "specifications", label: "规格" },
{ prop: "unitDictValue", label: "单位", filter: dictFilter("unit") },
{ prop: "weight", label: "重量", filter: (val) => (val ? val + " kg" : "-") },
{ prop: "processTime", label: "产线完成单位产品用时", width: 200, filter: (val) => val + " (分钟)" },
{ prop: "remark", label: "备注" },
{
prop: "description",
label: "附件信息",
subcomponent: TableTextComponent,
buttonContent: "查看附件",
actionName: "view-attachment",
},
{ prop: "createTime", label: "添加时间", filter: timeFilter },
{
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:product:delete",
},
],
},
];
const headFormFields = [
{
label: "物料名称/编码",
prop: "key",
input: true,
default: { value: "" },
bind: { placeholder: "请输入物料名称或编码" },
},
{
button: {
type: "primary",
name: "查询",
},
},
{
button: {
type: "primary",
name: "新增",
permission: "pms:product:save",
},
bind: {
plain: true
}
},
{
button: {
type: "success",
name: "导入",
permission: "",
},
bind: {
plain: true
}
},
];
const dictList = JSON.parse(localStorage.getItem("dictList") || {});
const dialogConfigs = {
menu: [
{ name: "物料信息", key: "info" },
{ name: "物料属性信息", key: "attr", onlyEditMode: true },
{
name: "附件",
key: "attachment",
onlyEditMode: true,
actionUrl: window.SITE_CONFIG["apiURL"] + "/pms/attachment/uploadFileFormData?typeCode=ProductAttachment",
},
],
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: "请输入设备编码" },
},
// { input: true, label: '版本号', prop: 'version', elparams: { placeholder: '请输入版本号' } },
{
select: true,
label: "物料类型",
prop: "typeDictValue",
options:
"product_type" in dictList
? dictList["product_type"].map((item) => ({ value: item.dictValue, label: item.dictLabel }))
: [],
elparams: { placeholder: "选择一个物料类型" },
},
],
[
// { input: true, label: '单位平方数', prop: 'code', rules: { required: true, message: '必填项不能为空', trigger: 'blur' }, elparams: { placeholder: '请输入设备名称编码' } },
{
select: true,
label: "单位",
prop: "unitDictValue",
options:
"unit" in dictList
? dictList["unit"].map((item) => ({ value: item.dictValue, label: item.dictLabel }))
: [],
elparams: { placeholder: "选择单位" },
},
{
input: true,
label: "规格",
prop: "specifications",
rules: { required: true, message: "必填项不能为空", trigger: "blur" },
elparams: { placeholder: "请输入规格" },
},
{
input: true,
label: "产线完成单位产品用时",
prop: "processTime",
rules: [
{ required: true, message: "必填项不能为空", trigger: "blur" },
{ type: 'number', message: "请输入数字类型", trigger: "blur", transform: val => Number(val) }
],
elparams: { placeholder: "请输入规格" },
},
],
[
{
input: true,
label: "重量",
prop: "weight",
rules: [
{ required: true, message: "必填项不能为空", trigger: "blur" },
{ type: 'number', message: "请输入数字类型", trigger: "blur", transform: val => Number(val) }
],
elparams: { placeholder: "请输入重量" },
},
],
[{ textarea: true, label: "备注", prop: "remark", elparams: { placeholder: "备注" } }],
],
operations: [
{ name: "add", label: "保存", type: "primary", permission: "pms:product:save", showOnEdit: false },
{ name: "update", label: "更新", type: "primary", permission: "pms:product:update", showOnEdit: true },
{ name: "reset", label: "重置", type: "warning", showAlways: true },
// { name: 'cancel', label: '取消', showAlways: true },
],
},
table: {
// extraParams: ['stepId'],
extraParams: "productId",
props: [
{ type: "index", label: "序号" },
// { prop: 'productId', label: '产品ID' },
{ prop: "name", label: "属性名称", isEditField: true },
{ prop: "value", label: "属性值", isEditField: true },
{ prop: "remark", label: "备注", isEditField: true },
{ prop: "createTime", label: "添加时间", filter: timeFilter },
{
prop: "operations",
name: "操作",
fixed: "right",
width: 120,
subcomponent: TableOperaionComponent,
options: [
{ name: { name: "edit", label: "编辑", icon: "edit-outline" }, permission: "pms:productArrt:update" },
{ name: "delete", icon: "delete", label: "删除", emitFull: true, permission: "pms:productArrt:delete" },
],
},
],
data: [
// TOOD 暂时用不到,但获取可以考虑把拉取接口数据的函数迁移到此文件(没有太大必要)
],
},
subDialog: {
extraParam: "productId",
forceAttachCode: true, // 产品属性新增必填 code 字段......
rows: [
[
{
input: true,
label: "属性名称",
prop: "name",
rules: { required: true, message: "必填项不能为空", trigger: "blur" },
elparams: { placeholder: "请输入属性名称" },
},
{
input: true,
label: "属性值",
prop: "value",
rules: { required: true, message: "必填项不能为空", trigger: "blur" },
elparams: { placeholder: "请输入属性值" },
},
],
[{ textarea: true, label: "备注", prop: "remark", elparams: { placeholder: "添加备注" } }],
],
operations: [
{ name: "add", label: "保存", type: "primary", permission: "pms:productArrt:save", showOnEdit: false },
{ name: "update", label: "更新", type: "primary", permission: "pms:productArrt:update", showOnEdit: true },
],
},
};
return {
dialogConfigs,
tableConfig: {
table: null, // 此处可省略el-table 上的配置项
column: tableProps, // el-column-item 上的配置项
},
headFormConfigs: {
rules: null, // 名称是由 BaseSearchForm.vue 组件固定的
fields: headFormFields, // 名称是由 BaseSearchForm.vue 组件固定的
},
urls: {
base: "/pms/product",
page: "/pms/product/page",
subase: "/pms/productArrt",
subpage: "/pms/productArrt/page",
importUrl: "/pms/product/import",
templateUrl: '/importTemplates/productImport.xlsx'
},
};
}