Jelajahi Sumber

销售订单详情

zhuangyunsheng 2 hari lalu
induk
melakukan
d297fb2bb6

+ 1 - 1
src/components/scFormTable/detail.vue

@@ -32,7 +32,7 @@ const compDic = reactive({
 const tableOptions = reactive({
     checkedRows: [],
     maxHeight: 1048,
-    toolbarConfig: { enabled: true, print: false, zoom: false, custom: false },
+    toolbarConfig: { export: false, zoom: false, custom: false },
     ...props.options
 });
 

+ 8 - 6
src/components/scFormTable/index.vue

@@ -62,6 +62,8 @@ const props = defineProps({
     columns: { type: Array, default: () => [] },
     editRules: { type: Object, default: () => ({}) },
     footerField: { type: Array, default: () => [] },
+    footerTitle: { type: Array, default: () => [] },
+    footerMethod: { type: Array, default: () => [] },
     mergeFooterItems: { type: Array, default: () => [] },
 
     selectOptions: { type: Object, default: () => ({}) },
@@ -100,12 +102,12 @@ const gridOptions = reactive({
     footerRowClassName: "vxe-table-footer-cell-required",
     mergeFooterItems: props.mergeFooterItems,
     footerMethod() {
-        return [
-            XEUtils.filter(XEUtils.toTreeArray(props.columns), column => !column.children).map((column, index) => {
-                if (index === 0) return "合计:";
-                if (props.footerField.includes(column.field)) return XEUtils.sum(props.modelValue, column.field);
-            })
-        ]
+        return XEUtils.map(props.footerField, (fields, fieldsIndex) => {
+            return XEUtils.filter(XEUtils.toTreeArray(props.columns), column => !column.children).map((column, index) => {
+                if (index === 0) return props.footerTitle[fieldsIndex] || "合计:";
+                if (fields.includes(column.field)) return props.footerMethod[fieldsIndex] ? props.footerMethod[fieldsIndex](props.modelValue, column.field) : XEUtils.sum(props.modelValue, column.field);
+            });
+        });
     }
 });
 

+ 16 - 27
src/components/scTable/index.vue

@@ -50,6 +50,8 @@ const props = defineProps({
     options: { type: Object, default: () => ({}) }
 });
 
+const foldedFormItems = computed(() => XEUtils.map(XEUtils.orderBy(XEUtils.filter(XEUtils.get(props.formConfig, "items", []), item => XEUtils.get(item, "visible", true)), "orderBy"), (item, index) => ({ ...item, folding: index > 2 })));
+
 const xGrid = ref();
 const gridOptions = reactive({
     id: "xGride-table",
@@ -70,24 +72,13 @@ const gridOptions = reactive({
         collapseStatus: true,
         span: 6,
         items: [
-            ...XEUtils.map(XEUtils.orderBy(XEUtils.get(props, "formConfig.items", []), "orderBy"), (formItem, formIndex) => {
-                return {
-                    ...formItem,
-                    className: ({ $grid, item, data }) => {
-                        const showItems = XEUtils.filter(XEUtils.orderBy(XEUtils.get(props, "formConfig.items", []), "orderBy"), f_item => (XEUtils.isUndefined(f_item.visible) || f_item.visible) && (XEUtils.isUndefined(f_item.visibleMethod) || f_item.visibleMethod({ data })));
-                        const index = XEUtils.findIndexOf(showItems, f_item => f_item.field == item.field);
-                        item.folding = index > 2;
-                        XEUtils.set(formItem, "folding", index > 2);
-                        return "";
-                    }
-                }
-            }), {
+            ...foldedFormItems.value, {
                 align: "right",
                 slots: { default: "queryAction" },
-                className: ({ $grid, item, data }) => {
-                    const showItems = XEUtils.filter(XEUtils.orderBy(XEUtils.get(props, "formConfig.items", []), "orderBy"), formItem => (XEUtils.isUndefined(formItem.visible) || formItem.visible) && (XEUtils.isUndefined(formItem.visibleMethod) || formItem.visibleMethod({ data })));
-                    const spanItems = (!gridOptions.formConfig.collapseStatus && showItems) || XEUtils.filter(showItems, f_item => !f_item.folding);
-
+                visible: foldedFormItems.value.length > 0,
+                collapseNode: foldedFormItems.value.length > 3,
+                className: ({ item }) => {
+                    const spanItems = (!gridOptions.formConfig.collapseStatus && foldedFormItems.value) || XEUtils.filter(foldedFormItems.value, f_item => !f_item.folding);
                     let spanItemsSum = 0;
                     XEUtils.arrayEach(spanItems, s_item => {
                         const spanCount = (s_item.span || 6);
@@ -96,8 +87,6 @@ const gridOptions = reactive({
                     })
                     const remainder = 24 - (spanItemsSum % 24);
 
-                    item.visible = showItems.length > 0;
-                    item.collapseNode = showItems.length > 3;
                     item.span = remainder < 5 && 24 || remainder;
                     return "query-action__item";
                 }
@@ -106,16 +95,16 @@ const gridOptions = reactive({
         ...XEUtils.omit(props.formConfig, "items")
     },
     toolbarConfig: {
-        enabled: false,
-        buttons: [
-            { buttonRender: { name: "$table-search" } }
-        ],
-        print: true,
-        zoom: true,
-        custom: true,
-        refresh: {
+        buttons: [{ buttonRender: { name: "$table-search" } }],
+        // import: true,
+        export: true,
+        // print: true,
+        refresh: true,
+        refreshOptions: {
             queryMethod: () => getData()
         },
+        zoom: true,
+        custom: true,
         ...props.toolbarConfig
     },
     customConfig: {
@@ -134,7 +123,7 @@ const gridOptions = reactive({
         modes: ["insertBottom", "insertTop", "covering"]
     },
     exportConfig: {
-        types: ["xlsx"],
+        type: ["xlsx"],
         modes: XEUtils.find(props.columns, item => XEUtils.get(item, "visible", true) && XEUtils.includes(config.exportExcludeFields, item.type)) && ["current", "selected", "all"] || ["current", "all"],
         columns: XEUtils.filter(props.columns, item => !(XEUtils.includes(config.exportExcludeFields, item.type)) && XEUtils.get(item, "visible", true)),
     },

+ 1 - 6
src/views/basic/customer/index.vue

@@ -2,7 +2,7 @@
 	<el-container class="is-vertical">
         <sc-page-header v-if="!selectable" @add="table_add"></sc-page-header>
 
-        <scTable ref="xGridTable" :apiObj="$API.basic.customer" :formConfig="formConfig" :paramsColums="paramsColums" :toolbarConfig="toolbarConfig" :columns="columns" v-bind="options">
+        <scTable ref="xGridTable" :apiObj="$API.basic.customer" :formConfig="formConfig" :paramsColums="paramsColums" :columns="columns" v-bind="options">
             <template #action="{ row }">
                 <el-button type="primary" link @click="table_edit(row)">
                     <template #icon><sc-iconify icon="ant-design:edit-outlined"></sc-iconify></template>修改
@@ -39,11 +39,6 @@ const props = defineProps({
     options: { type: Object, default: () => ({}) }
 });
 
-const toolbarConfig = reactive({
-    enabled: true,
-    export: true
-});
-
 const selectConfig = reactive({
     options: objectToArray(statusDic),
     events: {

+ 1 - 6
src/views/basic/material/index.vue

@@ -2,7 +2,7 @@
 	<el-container class="is-vertical">
         <sc-page-header v-if="!selectable" @add="table_add"></sc-page-header>
 
-        <scTable ref="xGridTable" :apiObj="$API.basic.material" :formConfig="formConfig" :paramsColums="paramsColums" :toolbarConfig="toolbarConfig" :columns="columns" v-bind="options">
+        <scTable ref="xGridTable" :apiObj="$API.basic.material" :formConfig="formConfig" :paramsColums="paramsColums" :columns="columns" v-bind="options">
             <template #action="{ row }">
                 <el-button type="primary" link @click="table_edit(row)">
                     <template #icon><sc-iconify icon="ant-design:edit-outlined"></sc-iconify></template>修改
@@ -40,11 +40,6 @@ const props = defineProps({
     options: { type: Object, default: () => ({}) }
 });
 
-const toolbarConfig = reactive({
-    enabled: true,
-    export: true
-});
-
 const selectConfig = reactive({
     options: objectToArray(materialDic.type),
     events: {

+ 1 - 6
src/views/basic/qualityPlan/index.vue

@@ -2,7 +2,7 @@
 	<el-container class="is-vertical">
         <sc-page-header @add="table_add"></sc-page-header>
 
-        <scTable ref="xGridTable" :apiObj="$API.basic.qualityPlan" :formConfig="formConfig" :paramsColums="paramsColums" :toolbarConfig="toolbarConfig" :columns="columns">
+        <scTable ref="xGridTable" :apiObj="$API.basic.qualityPlan" :formConfig="formConfig" :paramsColums="paramsColums" :columns="columns">
             <template #code_link="{ row }">
                 <vxe-text status="primary" @click="table_detail(row)">{{ row.code }}</vxe-text>
             </template>
@@ -38,11 +38,6 @@ import { mapFormItemInput, mapFormItemSelect, mapFormItemDatePicker } from "@/co
 import planDetail from "./detail";
 import planDesc from "./desc";
 
-const toolbarConfig = reactive({
-    enabled: true,
-    export: true
-});
-
 const selectConfig = reactive({
     options: objectToArray(reviewStatusDic),
     events: {

+ 1 - 6
src/views/defaultVue/index.vue

@@ -2,7 +2,7 @@
 	<el-container class="is-vertical">
         <sc-page-header @add="table_add"></sc-page-header>
 
-        <scTable ref="xGridTable" :formConfig="formConfig" :toolbarConfig="toolbarConfig" :columns="columns" :options="options">
+        <scTable ref="xGridTable" :formConfig="formConfig" :columns="columns" :options="options">
             <template #action>
                 <el-button type="primary" link>
                     <template #icon><sc-iconify icon="ant-design:edit-outlined"></sc-iconify></template>修改
@@ -19,11 +19,6 @@
 import XEUtils from "xe-utils";
 import { mapFormItemInput } from "@/components/scTable/helper";
 
-const toolbarConfig = reactive({
-    enabled: true,
-    export: true
-});
-
 const formConfig = reactive({
     data: {},
     items: [

+ 1 - 9
src/views/production/bom/index.vue

@@ -2,7 +2,7 @@
 	<el-container class="is-vertical">
         <sc-page-header @add="table_add()"></sc-page-header>
         
-        <scTable ref="xGridTable" :apiObj="$API.production.bom" :formConfig="formConfig" :paramsColums="paramsColums" :toolbarConfig="toolbarConfig" :columns="columns" :treeConfig="treeConfig">
+        <scTable ref="xGridTable" :apiObj="$API.production.bom" :formConfig="formConfig" :paramsColums="paramsColums" :columns="columns" :treeConfig="treeConfig">
             <template #code_link="{ row }">
                 <vxe-text status="primary" @click="table_detail(row)">{{ row.bomCode }}</vxe-text>
             </template>
@@ -46,16 +46,8 @@ import { mapFormItemInput, mapFormItemSelect, mapFormItemDatePicker } from "@/co
 import bomDetail from "./detail";
 import bomDesc from "./desc";
 
-const toolbarConfig = reactive({
-    enabled: true,
-    export: true
-});
-
 const treeConfig = reactive({
     lazy: true,
-    rowField: "id",
-    parentField: "parentId",
-    childrenField: "children",
     hasChildField: "isHaveChildren",
     loadMethod: ({ row }) => API.production.bom.getChild({ id: row.id })
 })

+ 1 - 1
src/views/production/bom/main.js

@@ -17,7 +17,7 @@ export const tableOptions = reactive({
     editRules: {
         quantity: [{ required: true, message: "必须填写" }]
     },
-    footerField: ["quantity"],
+    footerField: [["quantity"]],
     mergeFooterItems: [{ row: 0, col: 0, rowspan: 1, colspan: 5 }],
 
     selectOptions: {

+ 33 - 26
src/views/sales/order/desc.vue

@@ -1,16 +1,20 @@
 <template>
-    <el-dialog v-model="visible" title="工艺路线详情" fullscreen :close-on-click-modal="false" @closed="$emit('closed')">
+    <el-dialog v-model="visible" title="销售订单详情" fullscreen :close-on-click-modal="false" @closed="$emit('closed')">
         <el-main>
             <el-collapse v-model="activeNames">
                 <el-collapse-item title="基本信息" name="basic">
                     <el-descriptions :column="3" label-width="140" border>
-                        <el-descriptions-item label="工艺路线名称" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ descData.name }}</el-descriptions-item>
-                        <el-descriptions-item label="工艺路线编号" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ descData.code }}</el-descriptions-item>
+                        <el-descriptions-item label="单据编号" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ descData.code }}</el-descriptions-item>
+                        <el-descriptions-item label="合同编号" :span="ismobile ? 3 : 1" label-align="right">{{ descData.contractNo }}</el-descriptions-item>
+                        <el-descriptions-item label="单据日期" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ descData.orderDate }}</el-descriptions-item>
+                        <el-descriptions-item label="单据状态" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ XEUtils.get(salesDic.orderStatus, descData.status, descData.status) }}</el-descriptions-item>
+                        <el-descriptions-item label="客户" :span="ismobile ? 3 : 1" label-align="right">{{ descData.customerName }}</el-descriptions-item>
                         <el-descriptions-item label="添加时间" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ descData.createTime }}</el-descriptions-item>
-                        <el-descriptions-item label="工艺路线状态" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ XEUtils.get(statusDic, descData.status, descData.status) }}</el-descriptions-item>
-                        <el-descriptions-item label="时间单位" :span="ismobile ? 3 : 1" label-align="right">{{ XEUtils.get(workmanshipDic.timeUnit, descData.timeUnit, descData.timeUnit) }}</el-descriptions-item>
-                        <el-descriptions-item label="版本号" :span="ismobile ? 3 : 1" label-align="right">{{ descData.version }}</el-descriptions-item>
-                        <el-descriptions-item label="适用产品" :span="3" label-align="right">所有产品</el-descriptions-item>
+                        <el-descriptions-item label="预计交期" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ descData.planReceiveDate }}</el-descriptions-item>
+                        <el-descriptions-item label="实际交期" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ descData.deliveryDate }}</el-descriptions-item>
+                        <el-descriptions-item label="业务员" :span="ismobile ? 3 : 1" label-align="right">{{ descData.managerName }}</el-descriptions-item>
+                        <el-descriptions-item label="收货日期" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ descData.actualReceiveDate }}</el-descriptions-item>
+                        <el-descriptions-item label="客户收货地址" :span="3" label-align="right">{{ descData.deliveryAddress }}</el-descriptions-item>
                         <el-descriptions-item label="概要" :span="3" label-align="right">{{ descData.remark }}</el-descriptions-item>
                         <el-descriptions-item label="附件" :span="3" label-align="right">
                             <sc-upload-file v-model="descData.fileList" hideAdd disabled></sc-upload-file>
@@ -18,11 +22,15 @@
                     </el-descriptions>
                 </el-collapse-item>
 
-                <el-collapse-item title="加工路线" name="route">
-                    <sc-form-table v-model="descData.detailList" v-bind="options" ></sc-form-table>
+                <el-collapse-item title="产品信息" name="material">
+                    <sc-form-table v-model="descData.childrenList" v-bind="tableOptions" disabled></sc-form-table>
                 </el-collapse-item>
 
-                <el-collapse-item title="质检方案" name="plan">
+                <el-collapse-item title="金额信息" name="amount">
+                    <el-descriptions :column="2" label-width="140" border>
+                        <el-descriptions-item label="整单折扣额" label-align="right" min-width="120">{{ descData.freePrice }}</el-descriptions-item>
+                        <el-descriptions-item label="成交金额" label-align="right" min-width="120">{{ descData.actualPrice }}</el-descriptions-item>
+                    </el-descriptions>
                 </el-collapse-item>
             </el-collapse>
         </el-main>
@@ -31,7 +39,7 @@
 
 <script setup>
 import XEUtils from "xe-utils";
-import { statusDic, workmanshipDic } from "@/utils/basicDic";
+import { salesDic } from "@/utils/basicDic";
 import { tableOptions } from "./main";
 import scUploadFile from "@/components/scUpload/file";
 
@@ -41,25 +49,24 @@ const visible = ref(false);
 const store = useStore();
 const ismobile = computed(() => store.state.global.ismobile);
 
-const options = reactive({
-    disabled: true,
-    ...tableOptions,
-    columns: tableOptions.columns.slice(1),
-    mergeFooterItems: [{ row: 0, col: 0, rowspan: 1, colspan: 4 }]
-});
-
-const activeNames = ref(["basic", "route", "plan"]);
+const activeNames = ref(["basic", "material", "amount"]);
 const descData = ref({
     id: null,
-    parentId: null,
-    name: null,
     code: null,
-    timeUnit: "minute",
-    version: "v1.0.0",
-    detailList: [],
+    orderDate: null,
+    customerName: null,
+    contractNo: null,
+    planReceiveDate: null,
+    actualReceiveDate: null,
+    deliveryDate: null,
+    managerName: null,
+    deliveryAddress: null,
+    childrenList: [],
+    freePrice: null,
+    actualPrice: null,
     remark: null,
     fileList: [],
-    status: "enable",
+    status: "pending",
     createTime: null
 });
 
@@ -67,7 +74,7 @@ const setData = data => {
     visible.value = true;
     XEUtils.objectEach(descData.value, (_, key) => {
         if (key == "fileList") XEUtils.set(descData.value, key, XEUtils.map(XEUtils.get(data, key), item => ({ ...item, name: item.fileName })));
-        else if (key == "detailList") XEUtils.set(descData.value, key, XEUtils.map(XEUtils.get(data, key), item => ({ ...item.stage, ...XEUtils.omit(item, "id", "stage") })));
+        else if (key == "childrenList") XEUtils.set(descData.value, key, XEUtils.map(XEUtils.get(data, key), item => ({ ...item.material, quantity: item.materialQuantity, price: item.materialPrice  })));
         else XEUtils.set(descData.value, key, XEUtils.get(data, key));
     });
 }

+ 5 - 8
src/views/sales/order/index.vue

@@ -2,13 +2,13 @@
 	<el-container class="is-vertical">
         <sc-page-header @add="table_add"></sc-page-header>
 
-        <scTable ref="xGridTable" :apiObj="$API.sales.order" :formConfig="formConfig" :paramsColums="paramsColums" :toolbarConfig="toolbarConfig" :columns="columns">
+        <scTable ref="xGridTable" :apiObj="$API.sales.order" :formConfig="formConfig" :paramsColums="paramsColums" :columns="columns">
             <template #code_link="{ row }">
                 <vxe-text status="primary" @click="table_detail(row)">{{ row.code }}</vxe-text>
             </template>
             
             <template #action="{ row }">
-                <el-button type="primary" link @click="table_edit(row)">
+                <el-button v-if="row.status == 'pending'" type="primary" link @click="table_edit(row)">
                     <template #icon><sc-iconify icon="ant-design:edit-outlined"></sc-iconify></template>修改
                 </el-button>
                 <el-button type="primary" link @click="table_del(row)">
@@ -33,11 +33,6 @@ import { mapFormItemInput, mapFormItemSelect, mapFormItemDatePicker } from "@/co
 import orderDetail from "./detail";
 import orderDesc from "./desc";
 
-const toolbarConfig = reactive({
-    enabled: true,
-    export: true
-});
-
 const selectConfig = reactive({
     options: objectToArray(salesDic.orderStatus),
     events: {
@@ -84,8 +79,10 @@ const columns = reactive([
     { visible: false, type: "html", field: "freePrice", title: "整单折扣额", minWidth: 120, sortable: true },
     { type: "html", field: "actualPrice", title: "成交金额", minWidth: 120, sortable: true },
     { type: "html", field: "planReceiveDate", title: "预计交期", minWidth: 120, sortable: true },
-    { visible: false, type: "html", field: "createTime", title: "创建日期", minWidth: 120, sortable: true, formatter: ({ cellValue }) => TOOL.dateFormat(cellValue, "YYYY-MM-DD") || cellValue },
+    { visible: false, type: "html", field: "deliveryDate", title: "实际交期", minWidth: 120, sortable: true },
+    { visible: false, type: "html", field: "actualReceiveDate", title: "收货日期", minWidth: 120, sortable: true },
     { visible: false, type: "html", field: "deliveryAddress", title: "客户收货地址", minWidth: 300, sortable: true },
+    { visible: false, type: "html", field: "createTime", title: "创建日期", minWidth: 120, sortable: true, formatter: ({ cellValue }) => TOOL.dateFormat(cellValue, "YYYY-MM-DD") || cellValue },
     { visible: false, type: "html", field: "remark", title: "概要", minWidth: 300, sortable: true },
     { title: "操作", fixed: "right", width: 140, slots: { default: "action" } }
 ]);

+ 14 - 3
src/views/sales/order/main.js

@@ -6,7 +6,7 @@ export const tableOptions = reactive({
     tableKey: "material",
 
     columns: [
-        { type: "seq", fixed: "left", width: 80, className: "vxe-table-seq-cell__handler", footerAlign: "right", showOverflow: false, params: { hide_del: row => XEUtils.get(row, "isHaveChildren", false) }, slots: { default: "seq_del" } },
+        { type: "seq", fixed: "left", width: 80, className: "vxe-table-seq-cell__handler", footerAlign: "right", showOverflow: false, slots: { default: "seq_del" } },
         { field: "code", title: "产品编码", fixed: "left", minWidth: 150 },
         { field: "name", title: "产品名称", fixed: "left", minWidth: 150 },
         { field: "unit", title: "单位", minWidth: 150 },
@@ -17,8 +17,19 @@ export const tableOptions = reactive({
         quantity: [{ required: true, message: "必须填写" }],
         price: [{ required: true, message: "必须填写" }]
     },
-    footerField: ["quantity", "price"],
-    mergeFooterItems: [{ row: 0, col: 0, rowspan: 1, colspan: 4 }],
+    footerField: [["quantity", "price"], ["quantity"]],
+    footerTitle: ["合计:", "整单标价总额:"],
+    footerMethod: [
+        (data, field) => XEUtils.sum(data, field),
+        (data, field) => XEUtils.sum(XEUtils.map(data, item => XEUtils.multiply(XEUtils.get(item, field), XEUtils.get(item, "price"))))
+    ],
+
+    // 整单标价总额
+    mergeFooterItems: [
+        { row: 0, col: 0, rowspan: 1, colspan: 4 },
+        { row: 1, col: 0, rowspan: 1, colspan: 4 },
+        { row: 1, col: 4, rowspan: 2, colspan: 2 }
+    ],
 
     selectOptions: {
         paramsColums: [

+ 0 - 1
src/views/sales/plan/index.vue

@@ -75,7 +75,6 @@ const options = reactive({
         { column: "createTimeBegin", field: "createTime[0]" },
         { column: "createTimeEnd", field: "createTime[1]" }
     ],
-    toolbarConfig: { enabled: true, export: true },
     treeConfig: { transform: true },
     columns: [
         { type: "seq", fixed: "left", width: 80 },

+ 0 - 1
src/views/system/dept/index.vue

@@ -35,7 +35,6 @@ const options = reactive({
         { column: "orderBy", defaultValue: "deptSort_asc" },
         { column: "nameLike" }
     ],
-    toolbarConfig: { enabled: true, export: true },
     treeConfig: { transform: true, parentField: "pid" },
     columns: [
         { type: "seq", width: 60 },

+ 1 - 6
src/views/system/role/index.vue

@@ -2,7 +2,7 @@
 	<el-container class="is-vertical">
         <sc-page-header @add="table_add"></sc-page-header>
 
-        <scTable ref="xGridTable" :apiObj="$API.system.role" :formConfig="formConfig" :paramsColums="paramsColums" :toolbarConfig="toolbarConfig" :columns="columns">
+        <scTable ref="xGridTable" :apiObj="$API.system.role" :formConfig="formConfig" :paramsColums="paramsColums" :columns="columns">
             <template #action="{ row }">
                 <el-button type="primary" link @click="table_bind(row)">
                     <template #icon><sc-iconify icon="material-symbols:arrow-split"></sc-iconify></template>菜单分配
@@ -29,11 +29,6 @@ import { mapFormItemInput } from "@/components/scTable/helper";
 import roleDetail from "./detail";
 import bindDetail from "./bind";
 
-const toolbarConfig = reactive({
-    enabled: true,
-    export: true
-});
-
 const formConfig = reactive({
     data: {},
     items: [

+ 1 - 6
src/views/system/user/index.vue

@@ -22,7 +22,7 @@
                 </el-main>
             </el-aside>
 
-            <scTable ref="xGridTable" :apiObj="$API.auth.user" :formConfig="formConfig" :paramsColums="paramsColums" :toolbarConfig="toolbarConfig" :columns="columns">
+            <scTable ref="xGridTable" :apiObj="$API.auth.user" :formConfig="formConfig" :paramsColums="paramsColums" :columns="columns">
                 <template #action="{ row }">
                     <el-button type="primary" link @click="password_rest(row)">
                         <template #icon><sc-iconify icon="material-symbols:arrow-split"></sc-iconify></template>重置密码
@@ -69,11 +69,6 @@ const dept_unset = () => {
     refreshTable();
 }
 
-const toolbarConfig = reactive({
-    enabled: true,
-    export: true
-});
-
 const formConfig = reactive({
     data: {},
     items: [

+ 1 - 1
src/views/workmanship/line/history.vue

@@ -11,7 +11,7 @@ const $emit = defineEmits(["closed"]);
 const paramsColums = reactive([]);
 const tableOptions = reactive({
     maxHeight: 1048,
-    toolbarConfig: { enabled: true, print: false, zoom: false, custom: false }
+    toolbarConfig: { export: false, zoom: false, custom: false }
 });
 
 const visible = ref(false);

+ 1 - 6
src/views/workmanship/line/index.vue

@@ -2,7 +2,7 @@
 	<el-container class="is-vertical">
         <sc-page-header v-if="!hidePageHeader" @add="table_add"></sc-page-header>
 
-        <scTable ref="xGridTable" :apiObj="$API.workmanship.route" :formConfig="formConfig" :paramsColums="paramsColums" :toolbarConfig="toolbarConfig" :columns="columns" v-bind="options">
+        <scTable ref="xGridTable" :apiObj="$API.workmanship.route" :formConfig="formConfig" :paramsColums="paramsColums" :columns="columns" v-bind="options">
             <template #code_link="{ row }">
                 <vxe-text status="primary" @click="table_detail(row)">{{ row.code }}</vxe-text>
             </template>
@@ -59,11 +59,6 @@ const props = defineProps({
     options: { type: Object, default: () => ({}) }
 });
 
-const toolbarConfig = reactive({
-    enabled: true,
-    export: true
-});
-
 const selectConfig = reactive({
     visible: !props.hideHandler,
     options: objectToArray(statusDic),

+ 1 - 1
src/views/workmanship/line/main.js

@@ -34,7 +34,7 @@ export const tableOptions = reactive({
         moveNum: [{ required: true, message: "必须填写" }],
         moveTimeHour: [{ required: true, message: "必须填写" }]
     },
-    footerField: ["readyTimeHour", "processNum", "processTimeHour", "moveNum", "moveTimeHour"],
+    footerField: [["readyTimeHour", "processNum", "processTimeHour", "moveNum", "moveTimeHour"]],
     mergeFooterItems: [{ row: 0, col: 0, rowspan: 1, colspan: 5 }],
 
     selectOptions: {

+ 1 - 6
src/views/workmanship/process/index.vue

@@ -2,7 +2,7 @@
 	<el-container class="is-vertical">
         <sc-page-header v-if="!selectable" @add="table_add"></sc-page-header>
 
-        <scTable ref="xGridTable" :apiObj="$API.workmanship.process" :formConfig="formConfig" :paramsColums="paramsColums" :toolbarConfig="toolbarConfig" :columns="columns" v-bind="options">
+        <scTable ref="xGridTable" :apiObj="$API.workmanship.process" :formConfig="formConfig" :paramsColums="paramsColums" :columns="columns" v-bind="options">
             <template #action="{ row }">
                 <el-button type="primary" link @click="table_edit(row)">
                     <template #icon><sc-iconify icon="ant-design:edit-outlined"></sc-iconify></template>修改
@@ -40,11 +40,6 @@ const props = defineProps({
     options: { type: Object, default: () => ({}) }
 });
 
-const toolbarConfig = reactive({
-    enabled: true,
-    export: true
-});
-
 const selectConfig = reactive({
     options: objectToArray(statusDic),
     events: {