Cloud Zhang
2024-05-16 31b5d6cea1cc0a89391debbb1a87f54972ccfb78
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<template>
  <BasicModal width="1200px" :height=600 v-bind="$attrs" ok-text="保存" @register="register" :title="t('导入工单料站表')"
    @ok="handleSubmit">
      <ImpExcel style="width: 100px;" @success="loadDataSuccess" dateFormat="YYYY-MM-DD">
        <a-button class="m-3"> 导入Excel </a-button>
        
      </ImpExcel>
      <p style="color: red;" v-text="err"></p>
    <a-card :title="t('列表')" :bordered="false" class="!mt-5">
      <div>
        <!-- :columns="dtlColumns"
        :dataSource="data" -->
        <PageWrapper dense contentFullHeight contentClass="flex">
          <BasicTable v-for="(table, index) in tableListRef" :key="index" :title="table.title" :columns="table.columns"
            :dataSource="table.dataSource" />
        </PageWrapper>
      </div>
    </a-card>
  </BasicModal>
</template>
<script lang="ts">
import { defineComponent, ref, nextTick, unref } from 'vue';
import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
import { SaveSmttable, ExportTable,SaveExportTable } from '/@/api/tigerapi/mes/smt/smttable';
import { useI18n } from '/@/hooks/web/useI18n';
import { useMessage } from '/@/hooks/web/useMessage';
import { useLocale } from '/@/locales/useLocale';
import { PageWrapper } from '/@/components/Page';
import { ImpExcel, ExcelData } from '/@/components/Excel';
import { BasicTable, BasicColumn } from '/@/components/Table';
 
const { getLocale } = useLocale();
 
const { t } = useI18n('');
const { createMessage } = useMessage();
export default defineComponent({
  components: { BasicModal, BasicForm, PageWrapper, ImpExcel,BasicTable },
  props: {
    userData: { type: Object },
  },
  emit: ['success', 'register'],
  setup(_, { emit }) {
    const modelRef = ref({});
    const tableListRef = ref<
      {
        title: string;
        columns?: any[];
        dataSource?: any[];
      }[]
    >([]);
 
    const tableListRef2 = ref<
      {
        title: string;
        columns?: any[];
        dataSource?: any[];
      }[]
    >([]);
 
    const [register, { setModalProps, closeModal }] = useModalInner((data) => {
      setModalProps({ confirmLoading: false });
      tableListRef.value = [];
    });
    var err=ref('');
    async function loadDataSuccess(excelDataList: ExcelData[]) {
      tableListRef.value = [];
      
      for (const excelData of excelDataList) {
        const {
          header,
          results,
          meta: { sheetName },
        } = excelData;
        const columns: BasicColumn[] = [];
        columns.push({title:"处理方式",dataIndex:"处理方式"});
        columns.push({title:'原因',dataIndex:'原因'})
        for (const title of header) {
          columns.push({ title, dataIndex: title });
        }
        tableListRef.value.push({ title: sheetName, dataSource: results, columns });
      }
      console.log('console.log(tableListRef.value);',tableListRef.value);
      var res=await ExportTable(tableListRef.value)
      if(res.IsSuccessed){
        tableListRef.value[0].dataSource=res.Data
        err.value='';
      }else{
        tableListRef.value = [];
        createMessage.error('导入失败'+res.Message);
        err.value=res.Message;
      }
      
    }
 
    // function handleVisibleChange(v) {
    //   v && props.userData && nextTick(() => onDataReceive(props.userData));
    // }
 
    async function handleSubmit() {
      try {
        const values = tableListRef.value;
        setModalProps({ confirmLoading: true });
        // TODO custom api
        //添加锡膏胶水记录
        const apiAction = SaveExportTable(tableListRef.value);
        apiAction.then((action) => {
          if (action) {
            if (action.IsSuccessed) {
              closeModal();
              createMessage.success(t('导入成功'));
              emit('success', {
                isUpdate: unref(false),
                values: { ...values, id: 0 },
              });
            }
          } else {
            createMessage.error(t('导入失败,代码已使用'));
          }
        });
      } finally {
        setModalProps({ confirmLoading: false });
      }
    }
 
    return { register, model: modelRef, handleSubmit, loadDataSuccess, tableListRef,err,t };
  },
});
</script>