From 8d6f97a29f9e98e1c190625868b41f93dc020945 Mon Sep 17 00:00:00 2001
From: Cloud Zhang <941187371@qq.com>
Date: 星期四, 16 五月 2024 16:16:32 +0800
Subject: [PATCH] 小修改

---
 src/views/tigerprojects/mes/smt/smttable/index.vue |  437 ++++++++++++++++++++----------------------------------
 1 files changed, 162 insertions(+), 275 deletions(-)

diff --git a/src/views/tigerprojects/mes/smt/smttable/index.vue b/src/views/tigerprojects/mes/smt/smttable/index.vue
index 2d3b0c3..2928305 100644
--- a/src/views/tigerprojects/mes/smt/smttable/index.vue
+++ b/src/views/tigerprojects/mes/smt/smttable/index.vue
@@ -1,285 +1,172 @@
 <template>
-  <PageWrapper title="鏂欑珯琛ㄥ鍏�" contentFullHeight>
-    <CollapseContainer title="鏂欑珯琛ㄤ俊鎭�">
-      <BasicForm
-        autoFocusFirstItem
-        :labelWidth="200"
-        :schemas="schemas"
-        :actionColOptions="{ span: 24 }"
-        :submitButtonOptions="{ text: '瀵煎叆' }"
-        @submit="handleSubmit"
-        @reset="handleReset"
-      />
-    </CollapseContainer>
-    <BasicTable @register="registerTable" />
-  </PageWrapper>
+  <div>
+    <BasicTable @register="registerTable">
+      <template #toolbar>
+        <a-button color="primary" @click="addTool"> 娣诲姞 </a-button>
+        <a-button ghost color="primary" @click="aoaToExcel"> 瀵煎嚭 </a-button>
+        <a-button ghost color="primary" @click="ExcelToaoa"> 瀵煎叆 </a-button>
+      </template>
+      <template #action="{ record }">
+        <TableAction :actions="[
+      {
+        icon: 'clarity:note-edit-line',
+        tooltip: '淇敼',
+        onClick: handleEdit.bind(null, record),
+      },
+      {
+        icon: 'ant-design:delete-outlined',
+        tooltip: '鍒犻櫎',
+        popConfirm: {
+          title: '鏄惁纭鍒犻櫎?',
+          placement: 'left',
+          confirm: handleDelete.bind(null, record),
+        },
+      },
+    ]" />
+      </template>
+    </BasicTable>
+    <Loading :loading="compState.loading" :tip="compState.tip" />
+    <!-- <WmsItemDrawer @register="registerDrawer" @success="handleSuccess" /> -->
+    <SmttableDrawer @register="registerDrawer" @success="handleSuccess" />
+    <SmttableModal @register="registerSmttable" @success="handleSuccess" />
+  </div>
 </template>
-<script lang="ts">
-  import { computed, defineComponent, unref, ref } from 'vue';
-  import { BasicColumn, BasicTable, useTable } from '/@/components/Table';
-  import { BasicForm, FormSchema } from '/@/components/Form/index';
-  import { CollapseContainer } from '/@/components/Container';
-  import { useMessage } from '/@/hooks/web/useMessage';
-  import { PageWrapper } from '/@/components/Page';
+<script lang="ts" setup>
+import { reactive, unref } from 'vue';
+import { aoaToSheetXlsx } from '/@/components/Excel';
+import { BasicTable, useTable, TableAction } from '/@/components/Table';
+import SmttableDrawer from './SmttableDrawer.vue';
+import SmttableModal from './SmttableModal.vue';
+import { useDrawer } from '/@/components/Drawer';
+import { columns, searchFormSchema } from './smttbale.data';
+import { getSmttableListByPage, DeleteSmttable } from '/@/api/tigerapi/mes/smt/smttable';
+import { useGo } from '/@/hooks/web/usePage';
+import { Loading } from '/@/components/Loading';
+import { useMessage } from '/@/hooks/web/useMessage';
+import { useI18n } from '/@/hooks/web/useI18n';
+import { useModal } from '/@/components/Modal';
 
-  import { optionsListApi } from '/@/api/demo/select';
-  import { useDebounceFn } from '@vueuse/core';
-  import { cloneDeep } from 'lodash-es';
-  import { uploadApi } from '/@/api/sys/upload';
+const { t } = useI18n();
+const { createMessage } = useMessage();
+const [registerDrawer, { openDrawer }] = useDrawer();
+const go = useGo();
 
-  const valueSelectA = ref<string[]>([]);
-  const valueSelectB = ref<string[]>([]);
-  const options = ref<Recordable[]>([]);
-  for (let i = 1; i < 10; i++) options.value.push({ label: '閫夐」' + i, value: `${i}` });
+const compState = reactive({
+  absolute: false,
+  loading: false,
+  tip: '鍔犺浇涓�...',
+});
+const [registerSmttable, { openModal: openSmttableModal }] = useModal();
+const [registerTable, { getForm, getPaginationRef, reload }] = useTable({
+  title: '宸ュ崟鏂欑珯琛�',
+  api: getSmttableListByPage,
+  columns,
+  formConfig: {
+    labelWidth: 120,
+    schemas: searchFormSchema,
+  },
+  actionColumn: {
+    width: 120,
+    title: '鎿嶄綔',
+    dataIndex: 'action',
+    slots: { customRender: 'action' },
+    fixed: 'right', //undefined,
+  },
+  ellipsis: true,
+  useSearchForm: true,
+  showTableSetting: false,
+  bordered: true,
+  showIndexColumn: false,
+});
+let arr: any[] = [];
+//瀵煎嚭
+function aoaToExcel() {
+  const totals = getPaginationRef().total
+  if (totals < 30000) {
+    arr = [];
+    compState.loading = true;
+    const col = getForm().getFieldsValue()
+    getSmttableListByPage(col).then((res) => {
+      res.items.forEach(element => {
 
-  const optionsA = computed(() => {
-    return cloneDeep(unref(options)).map((op) => {
-      op.disabled = unref(valueSelectB).indexOf(op.value) !== -1;
-      return op;
-    });
-  });
-  const optionsB = computed(() => {
-    return cloneDeep(unref(options)).map((op) => {
-      op.disabled = unref(valueSelectA).indexOf(op.value) !== -1;
-      return op;
-    });
-  });
-
-  const schemas: FormSchema[] = [
-    {
-      field: 'field1',
-      component: 'Select',
-      label: '绾垮埆',
-      colProps: {
-        span: 8,
-      },
-      componentProps: {
-        options: [
-          {
-            label: 'L8',
-            value: '1',
-            key: '1',
-          },
-          {
-            label: 'L9',
-            value: '2',
-            key: '2',
-          },
-        ],
-      },
-    },
-    {
-      field: 'field2',
-      component: 'Select',
-      label: '鏈哄彴',
-      colProps: {
-        span: 8,
-      },
-      componentProps: {
-        options: [
-          {
-            label: 'L8-1',
-            value: '1',
-            key: '1',
-          },
-          {
-            label: 'L9-1',
-            value: '2',
-            key: '2',
-          },
-        ],
-      },
-    },
-    {
-      field: 'field5',
-      component: 'Input',
-      label: '鏈虹鍚嶇О',
-      colProps: {
-        span: 8,
-      },
-    },
-    {
-      field: 'field6',
-      component: 'Upload',
-      label: '鏂欑珯琛ㄦ枃浠朵笂浼�',
-      colProps: {
-        span: 8,
-      },
-      rules: [{ required: true, message: '璇烽�夋嫨涓婁紶鏂囦欢' }],
-      componentProps: {
-        api: uploadApi,
-      },
-    },
-    {
-      field: 'field9',
-      component: 'Switch',
-      label: '姝e弽闈�',
-      colProps: {
-        span: 8,
-      },
-    },
-  ];
-
-  const columns: BasicColumn[] = [
-    {
-      title: 'SMT_CODE',
-      dataIndex: 'SMT_CODE',
-    },
-    {
-      title: 'MACHINCE_SN',
-      dataIndex: 'MACHINCE_SN',
-    },
-    {
-      title: 'SLOT_NO',
-      dataIndex: 'SLOT_NO',
-    },
-    {
-      title: 'FEEDER',
-      dataIndex: 'FEEDER',
-    },
-    {
-      title: 'MATERIAL_NO',
-      dataIndex: 'MATERIAL_NO',
-    },
-    {
-      title: 'QTY',
-      dataIndex: 'QTY',
-    },
-    {
-      title: '鍒涘缓鏃堕棿',
-      dataIndex: 'CREATE_TIME',
-      width: 180,
-    },
-    {
-      title: '澶囨敞',
-      dataIndex: 'REMARK',
-    },
-  ];
-
-  const data = [
-    {
-      ID: '1',
-      SMT_CODE: 'Y18121001',
-      MACHINCE_SN: 'L8-1',
-      SLOT_NO: '11',
-      FEEDER: '8MM',
-      MATERIAL_NO: '32083241',
-      QTY: 1,
-      LOCATION: '',
-      UPDATE_TIME: '2023-02-06',
-      CREATE_TIME: '2023-02-06',
-      REMARK: '',
-    },
-    {
-      ID: '2',
-      SMT_CODE: 'Y18121001',
-      MACHINCE_SN: 'L8-1',
-      SLOT_NO: '11',
-      FEEDER: '8MM',
-      MATERIAL_NO: '32080000',
-      QTY: 1,
-      LOCATION: '',
-      UPDATE_TIME: '2023-02-06',
-      CREATE_TIME: '2023-02-06',
-      REMARK: '',
-    },
-    {
-      ID: '3',
-      SMT_CODE: 'Y18121001',
-      MACHINCE_SN: 'L8-1',
-      SLOT_NO: '11',
-      FEEDER: '8MM',
-      MATERIAL_NO: '32083242',
-      QTY: 1,
-      LOCATION: '',
-      UPDATE_TIME: '2023-02-06',
-      CREATE_TIME: '2023-02-06',
-      REMARK: '',
-    },
-    {
-      ID: '4',
-      SMT_CODE: 'Y18121001',
-      MACHINCE_SN: 'L8-1',
-      SLOT_NO: '13',
-      FEEDER: '8MM',
-      MATERIAL_NO: '32083251',
-      QTY: 1,
-      LOCATION: '',
-      UPDATE_TIME: '2023-02-06',
-      CREATE_TIME: '2023-02-06',
-      REMARK: '',
-    },
-    {
-      ID: '5',
-      SMT_CODE: 'Y18121001',
-      MACHINCE_SN: 'L8-1',
-      SLOT_NO: '12',
-      FEEDER: '8MM',
-      MATERIAL_NO: '32083202',
-      QTY: 1,
-      LOCATION: '',
-      UPDATE_TIME: '2023-02-06',
-      CREATE_TIME: '2023-02-06',
-      REMARK: '',
-    },
-  ];
-
-  export default defineComponent({
-    components: {
-      BasicForm,
-      CollapseContainer,
-      PageWrapper,
-      BasicTable,
-    },
-    setup() {
-      const check = ref(null);
-      const { createMessage } = useMessage();
-      const keyword = ref<string>('');
-      const searchParams = computed<Recordable>(() => {
-        return { keyword: unref(keyword) };
+        arr.push({
+          '鍏宠仈宸ュ崟鍙�': element.WORK_ORDER,
+          '浜у搧缂栫爜': element.PROD_CODE,
+          '鐗╂枡缂栫爜': element.ITEM_CODE,
+          '鏇夸唬鏂�': element.SUBITEM_CODE,
+          '鍗曚綅': element.UNIT,
+          '鍗曚綅鐢ㄩ噺': element.UNIT_QTY,
+          '浜х嚎缂栫爜': element.LINE_CODE,
+          '璐寸墖鏈虹紪鐮�': element.SMT_CODE,
+          '閽㈢綉缂栫爜': element.SMT_STENCIL,
+          '绔欎綅鍙�': element.SLOT_NO,
+          '璐寸墖浣嶇疆': element.LOCATION,
+          '椋炶揪缂栫爜': element.FEEDER_CODE,
+          '椋炶揪绫诲瀷': element.FEEDER_TYPE,
+          '鍔犲伐闈�': element.PCB_SURFACE,
+          '涓婃枡椤哄簭': element.LOAD_SEQ,
+          '鍒涘缓浜�': element.CREATE_USER,
+          '鍒涘缓鏃堕棿': element.CREATE_TIME,
+        });
       });
-
-      function onSearch(value: string) {
-        keyword.value = value;
+      const arrHeader = columns.map((column) => column.title);
+      const arrData = arr.map((item) => {
+        return Object.keys(item).map((key) => item[key]);
+      });
+      // 淇濊瘉data椤哄簭涓巋eader涓�鑷�
+      if (arr.length < 30000) {
+        aoaToSheetXlsx({
+          data: arrData,
+          header: arrHeader,
+          filename: '宸ュ崟鏂欑珯琛ㄤ俊鎭�.xlsx',
+        });
+      } else {
+        createMessage.error(t('瀵煎嚭鏁版嵁涓嶈兘瓒呰繃涓変竾鏉★紝濡傞渶瑕佹洿澶氱殑璇疯仈绯荤鐞嗗憳'));
       }
-      const [registerTable, { reload }] = useTable({
-        columns,
-        dataSource: data,
-        useSearchForm: false,
-        bordered: true,
-        showIndexColumn: false,
-        actionColumn: {
-          width: 80,
-          title: '鎿嶄綔',
-          dataIndex: 'action',
-          slots: { customRender: 'action' },
-          fixed: undefined,
-        },
-      });
 
-      return {
-        schemas,
-        optionsListApi,
-        optionsA,
-        optionsB,
-        valueSelectA,
-        valueSelectB,
-        onSearch: useDebounceFn(onSearch, 300),
-        searchParams,
-        handleReset: () => {
-          keyword.value = '';
-        },
-        handleSubmit: (values: any) => {
-          createMessage.success('click search,values:' + JSON.stringify(values));
-        },
-        handleChange: (list: string[]) => {
-          createMessage.info(`宸蹭笂浼犳枃浠�${JSON.stringify(list)}`);
-        },
-        check,
-        uploadApi,
-        registerTable,
-        reload,
-      };
-    },
+      compState.loading = false;
+
+    })
+
+  } else {
+    createMessage.error(t('瀵煎嚭鏁版嵁涓嶈兘瓒呰繃涓変竾鏉★紝濡傞渶瑕佹洿澶氱殑璇疯仈绯荤鐞嗗憳'));
+  }
+
+
+}
+//瀵煎叆
+function ExcelToaoa() {
+  openSmttableModal(true, {
+    data: 'content',
+    info: 'Info',
   });
+}
+//娣诲姞
+function addTool() {
+  openDrawer(true, {
+    isUpdate: false,
+  });
+}
+//缂栬緫
+function handleEdit(record: any) {
+  openDrawer(true, {
+    isUpdate: true,
+    record
+  });
+}
+function handleSuccess() {
+  reload();
+}
+//鍒犻櫎
+function handleDelete(record: any) {
+  const apiAction = DeleteSmttable(record.ID);
+  apiAction.then((action) => {
+    if (action.IsSuccessed) {
+      createMessage.success(t('宸插垹闄�'));
+      reload();
+    } else {
+      createMessage.success(t('鍒犻櫎鎿嶄綔澶辫触'));
+    }
+  });
+}
 </script>

--
Gitblit v1.9.3