Cloud Zhang
2024-05-10 9da81a196848053ea60342ed1d3da783efd22a11
锡膏胶水操作
已修改1个文件
已重命名1个文件
已添加9个文件
1034 ■■■■■ 文件已修改
src/api/tigerapi/mes/smt/solder.ts 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/tigerapi/mes/smt/solderhis.ts 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/mes/smt/smttable/index.vue 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/mes/smt/solder/smt_solder/SolderModal.vue 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/mes/smt/solder/smt_solder/index.vue 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/mes/smt/solder/smt_solder/smt_solder.data.ts 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/mes/smt/solder/smt_solder_his/index.vue 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/mes/smt/solder/smt_solder_his/smt_solder.data.ts 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/mes/smt/tool/smt_tool/index.vue 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/mes/smt/tool/smt_tool/wms_item_sum.data.ts 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tigerprojects/test/mqtt/index.vue 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/tigerapi/mes/smt/solder.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,159 @@
import { buildUUID } from '../../../../utils/uuid';
//import { ApiAction, ApiActionPage } from '../../model/baseModel';
import { genAction, Api } from '../../system';
import { useUserStore } from '/@/store/modules/user';
import { defHttp } from '/@/utils/http/axios';
import { isNullOrEmpty } from '/@/utils/is';
import { formatToDateTime } from '/@/utils/dateUtil';
/*
 * èŽ·å–é”¡è†èƒ¶æ°´ä¿¡æ¯
 */
export const getsolderListByPage = async (params: any) => {
  let order = ''
  if (params.order != undefined) {
    order = params.order == 'descend' ? (params.field + ' desc') : params.field
  }
  let sqlcmd = '1=1';
  if (params?.UPN != undefined && params?.UPN != '') {
    sqlcmd += " And UPN like '%" + params?.UPN + "%'";
  }
  let option ={
    UserId:useUserStore().getUserInfo.userId as string,
    ByOrg:true,
    OrgCode:useUserStore().getUserInfo.orgCode as string
  }
  if (!isNullOrEmpty(params.page)) {
    const usParams = genAction('SMT_SOLDER', {
      QueryAble_T: '',
      where: sqlcmd,
      order: order,
      page: {
        pageAble_T: 'string',
        draw: 1,
        pageIndex: params.page,
        pageSize: params.pageSize,
      }
    });
    return getFinishedwarehouseListByPageAsync(usParams);
  } else {
    const usParams = genAction('SMT_SOLDER', {
      QueryAble_T: '',
      where: sqlcmd,
      option
    },option);
    return getFinishedwarehouseListByPageAsync(usParams);
  }
  // const rParams = genActionPage('BIZ_ERP_PROD_IN', sqlcmd, params.page, params.pageSize,option);
  // return getFinishedwarehouseListByPageAsync(rParams);
};
async function getFinishedwarehouseListByPageAsync(params: any) {
  const data = await defHttp.post(
    { url: Api.QueryUrl, params },
    {
      isTransformResponse: false,
    },
  );
  const model = {
    items: data.Data.page.data,
    total: data.Data.page.totals,
  };
  return model;
}
//新增锡膏胶水信息
export const SaveSolder = async (params: Recordable, isUpdate: boolean) => {
  const Solderitem: any = {
    ID: params.ID,
    CREATE_TIME: params?.CREATE_TIME,
    CREATE_USER: params?.CREATE_USER,
    UPDATE_TIME: params?.UPDATE_TIME,
    UPDATE_USER: params?.UPDATE_USER,
    GHOST_ROW: params?.GHOST_ROW,
    AUTH_ORG: params?.AUTH_ORG,
    AUTH_PROD: params?.AUTH_PROD,
    AUTH_WH: params?.AUTH_WH,
    UPN: params.UPN,
    CPN: params.CPN,
    TYPE: params.TYPE,
    STATUS: params?.STATUS,
    EXP_DATE: params.EXP_DATE,
    LINE_CODE: params?.LINE_CODE,
    IS_OUT: params?.IS_OUT,
    OUT_DATE: params?.OUT_DATE,
    OUT_USER: params?.OUT_USER,
    IS_SEND: params?.IS_SEND,
    SEND_DATE: params?.SEND_DATE,
    SEND_USER: params?.SEND_USER,
    IS_OPEN: params?.IS_OPEN,
    OPEN_DATE: params?.OPEN_DATE,
    OPEN_USER: params?.OPEN_USER,
    FIRST_DATE: params?.FIRST_DATE,
    FIRST_USER: params?.FIRST_USER,
    STIR_SEQ: params?.STIR_SEQ,
    STIR_DATE: params?.STIR_DATE,
    STIR_USER: params?.STIR_USER,
    REFREEZE_SEQ: params?.REFREEZE_SEQ,
    REFREEZE_DATE: params?.REFREEZE_DATE,
    REFREEZE_USER: params?.REFREEZE_USER,
    REMARK: params?.REMARK,
  };
  let data;
  if (isUpdate) {
    Solderitem.STATUS=6;
    const time = new Date();
    Solderitem.UPDATE_TIME = formatToDateTime(time);
    Solderitem.UPDATE_USER = useUserStore().getUserInfo.userId as string;
    // regionitem.ORG_CODE = useUserStore().getUserInfo.orgCode as string;
    // regionitem.AUTH_ORG = useUserStore().getUserInfo.orgCode as string;
    data = await defHttp.post(
      { url: Api.UpdateEntity, params: genAction('SMT_SOLDER', Solderitem) },
      {
        errorMessageMode: 'none',
        isTransformResponse: false,
      },
    );
  } else {
    // const usParams = genAction(
    //   'SMT_SOLDER',
    //   "REGION_CODE='" + params.REGION_CODE + "'AND AUTH_ORG='" + regionitem.ORG_CODE + "'",
    // );
    //var check = await isExist(usParams);
    //console.log('check',check)
    //if (!check.Data) {
      Solderitem.ID = buildUUID(); //生成GUID
      Solderitem.UPDATE_TIME = formatToDateTime(new Date());
      Solderitem.CREATE_USER = useUserStore().getUserInfo.userId as string;
      Solderitem.UPDATE_USER = useUserStore().getUserInfo.userId as string;
      // regionitem.ORG_CODE = useUserStore().getUserInfo.orgCode as string;
      // regionitem.AUTH_ORG = useUserStore().getUserInfo.orgCode as string;
      data = await defHttp.post(
        { url: Api.AddEntity, params: genAction('SMT_SOLDER', Solderitem) },
        {
          errorMessageMode: 'none',
          isTransformResponse: false,
        },
      );
    //} else {
      // return check.Message;
      //return '重复了';
    //}
  }
  return data;
};
//下拉列表
// STATUSs å•据状态
export const optionsListApi = async (params: Recordable) => {
  const usParams = genAction('SMT_SOLDER+STATUSs', '');
  return await defHttp.post(
    { url: Api.urlQueryEnum, params: usParams },
    {
      errorMessageMode: 'none',
      isTransformResponse: false,
      // apiUrl: globSetting.taskApiUrl
    },
  );
};
src/api/tigerapi/mes/smt/solderhis.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@
import { buildUUID } from '../../../../utils/uuid';
//import { ApiAction, ApiActionPage } from '../../model/baseModel';
import { genAction, Api } from '../../system';
import { useUserStore } from '/@/store/modules/user';
import { defHttp } from '/@/utils/http/axios';
import { isNullOrEmpty } from '/@/utils/is';
import { formatToDateTime } from '/@/utils/dateUtil';
/*
 * èŽ·å–é”¡è†èƒ¶æ°´ä¿¡æ¯
 */
export const getsolderListByPage = async (params: any) => {
  let order = ''
  if (params.order != undefined) {
    order = params.order == 'descend' ? (params.field + ' desc') : params.field
  }
  let sqlcmd = '1=1';
  if (params?.UPN != undefined && params?.UPN != '') {
    sqlcmd += " And UPN like '%" + params?.UPN + "%'";
  }
  let option ={
    UserId:useUserStore().getUserInfo.userId as string,
    ByOrg:true,
    OrgCode:useUserStore().getUserInfo.orgCode as string
  }
  if (!isNullOrEmpty(params.page)) {
    const usParams = genAction('SMT_SOLDER_HIS', {
      QueryAble_T: '',
      where: sqlcmd,
      order: order,
      page: {
        pageAble_T: 'string',
        draw: 1,
        pageIndex: params.page,
        pageSize: params.pageSize,
      }
    });
    return getFinishedwarehouseListByPageAsync(usParams);
  } else {
    const usParams = genAction('SMT_SOLDER_HIS', {
      QueryAble_T: '',
      where: sqlcmd,
      option
    },option);
    return getFinishedwarehouseListByPageAsync(usParams);
  }
  // const rParams = genActionPage('BIZ_ERP_PROD_IN', sqlcmd, params.page, params.pageSize,option);
  // return getFinishedwarehouseListByPageAsync(rParams);
};
async function getFinishedwarehouseListByPageAsync(params: any) {
  const data = await defHttp.post(
    { url: Api.QueryUrl, params },
    {
      isTransformResponse: false,
    },
  );
  const model = {
    items: data.Data.page.data,
    total: data.Data.page.totals,
  };
  return model;
}
//下拉列表
// STATUSs å•据状态
export const optionsListApi = async (params: Recordable) => {
  const usParams = genAction('SMT_SOLDER+STATUSs', '');
  return await defHttp.post(
    { url: Api.urlQueryEnum, params: usParams },
    {
      errorMessageMode: 'none',
      isTransformResponse: false,
      // apiUrl: globSetting.taskApiUrl
    },
  );
};
src/views/tigerprojects/mes/smt/smttable/index.vue
src/views/tigerprojects/mes/smt/solder/smt_solder/SolderModal.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,142 @@
<template>
  <BasicModal width="700px" :height=300 v-bind="$attrs" @register="register" :title="t('添加锡膏胶水记录')" @ok="handleSubmit">
    <div style="width: 600px;height: 300px;" class="pt-24px pr-12px">
      <BasicForm @register="registerForm" :model="model" />
    </div>
  </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 { SaveSolder,optionsListApi } from '/@/api/tigerapi/mes/smt/solder';
import { useI18n } from '/@/hooks/web/useI18n';
import { useMessage } from '/@/hooks/web/useMessage';
import{ useLocale } from '/@/locales/useLocale';
const { getLocale }=useLocale();
const { t } = useI18n('');
const { createMessage } = useMessage();
const schemas: FormSchema[] = [
  {
    field: 'UPN',
    component: 'Input',
    label: 'UPN',
    defaultValue: '',
    colProps: {
      span: 12,
    },
    required: true,
  },
  {
    field: 'CPN',
    component: 'Input',
    label: 'CPN编码',
    defaultValue: '',
    colProps: {
      span: 12,
    },
    required: true,
  },
  {
    field: 'TYPE',
    label: '类型',
    component: 'ApiSelect',
    colProps: { span: 12 },
    componentProps: {
      api: optionsListApi,
      resultField: 'Data',
      labelField: unref(getLocale)=='zh_CN'?'Desc':'Name',
      valueField: 'Value',
    },
  },
  {
    field: 'EXP_DATE',
    component: 'DatePicker',
    label: '有效期',
    colProps: {
      span: 12,
    },
    required: true,
  },
];
export default defineComponent({
  components: { BasicModal, BasicForm },
  props: {
    userData: { type: Object },
  },
  emit: ['success', 'register'],
  setup(_, { emit }) {
    const modelRef = ref({});
    const [
      registerForm,
      {
        // setFieldsValue,
        // setProps
        validate,
      },
    ] = useForm({
      labelWidth: 120,
      schemas,
      showActionButtonGroup: false,
      actionColOptions: {
        span: 24,
      },
    });
    const [register, { setModalProps, closeModal }] = useModalInner((data) => {
      setModalProps({ confirmLoading: false });
      data && onDataReceive(data);
    });
    function onDataReceive(data) {
      console.log('Data Received', data);
      // æ–¹å¼1;
      // setFieldsValue({
      //   field2: data.data,
      //   field1: data.info,
      // });
      // // æ–¹å¼2
      modelRef.value = { field2: data.data, field1: data.info, SHELF_CODE: '', SHELF_NAME: '' };
      // setProps({
      //   model:{ field2: data.data, field1: data.info }
      // })
    }
    // function handleVisibleChange(v) {
    //   v && props.userData && nextTick(() => onDataReceive(props.userData));
    // }
    async function handleSubmit() {
      try {
        const values = await validate();
        setModalProps({ confirmLoading: true });
        // TODO custom api
        //添加锡膏胶水记录
        const apiAction = SaveSolder(values, unref(false));
        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, schemas, registerForm, model: modelRef, handleSubmit, t };
  },
});
</script>
src/views/tigerprojects/mes/smt/solder/smt_solder/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,136 @@
<template>
  <div>
    <BasicTable @register="registerTable">
      <template #toolbar>
        <a-button color="primary" @click="solderAdd"> æ–°å¢ž </a-button>
      </template>
      <template #action="{ record }">
        <TableAction :actions="[
          {
            icon: 'clarity:info-standard-line',
            tooltip: '报废',
            onClick: handleEdit.bind(null, record),
          },
        ]" />
      </template>
    </BasicTable>
    <Loading :loading="compState.loading" :tip="compState.tip" />
    <!-- <WmsItemDrawer @register="registerDrawer" @success="handleSuccess" /> -->
    <SolderModal @register="registerSolder" @success="handleSuccess" />
  </div>
</template>
<script lang="ts" setup>
import { reactive } from 'vue';
import { aoaToSheetXlsx } from '/@/components/Excel';
import { BasicTable, useTable, TableAction } from '/@/components/Table';
import SolderModal from './SolderModal.vue';
import { useModal } from '/@/components/Modal';
import { columns, searchFormSchema } from './smt_solder.data';
import { getsolderListByPage } from '/@/api/tigerapi/mes/smt/solder';
import { useGo } from '/@/hooks/web/usePage';
import { Loading } from '/@/components/Loading';
import { useMessage } from '/@/hooks/web/useMessage';
import { useI18n } from '/@/hooks/web/useI18n';
import { SaveSolder } from '/@/api/tigerapi/mes/smt/solder';
const { t } = useI18n();
const { createMessage } = useMessage();
const go = useGo();
const compState = reactive({
  absolute: false,
  loading: false,
  tip: '加载中...',
});
const [registerSolder, { openModal: openSolderModal }] = useModal();
const [registerTable,{getForm,getPaginationRef,reload}] = useTable({
  title: '锡膏胶水信息',
  api: getsolderListByPage,
  columns,
  formConfig: {
    labelWidth: 120,
    schemas: searchFormSchema,
  },
  actionColumn: {
    width: 80,
    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()
//     getWmsItemSumByPage(col).then((res) => {
//       res.items.forEach(element => {
//         arr.push({
//           '仓库': element.WH_CODE,
//           '物料代码': element.ITEM_CODE,
//           '物料名称': element.ITEM_NAME,
//           '数量': element.ZK_QTY,
//           '单位': element.UNIT
//         });
//       });
//       const arrHeader = columns.map((column) => column.title);
//       const arrData = arr.map((item) => {
//         return Object.keys(item).map((key) => item[key]);
//       });
//       // ä¿è¯data顺序与header一致
//       if(arr.length<30000){
//         aoaToSheetXlsx({
//         data: arrData,
//         header: arrHeader,
//         filename: '汇总报表.xlsx',
//       });
//       }else{
//         createMessage.error(t('导出数据不能超过三万条,如需要更多的请联系管理员'));
//       }
//       compState.loading = false;
//     })
//   } else {
//     createMessage.error(t('导出数据不能超过三万条,如需要更多的请联系管理员'));
//   }
// }
//跳转到实时库存
function handleEdit(record: any) {
  //跳转页面
  //go('/WmsItem/' + record.ITEM_CODE);
  const apiAction = SaveSolder(record, true);
  apiAction.then((action) => {
    if (action) {
      if (action.IsSuccessed) {
        createMessage.success(t('已报废成功'));
      }
    } else {
      createMessage.error(action.Message);
    }
  });
}
function solderAdd(){
  //alert("新增")
  openSolderModal(true, {
        data: 'content',
        info: 'Info',
    });
}
function handleSuccess() {
  reload();
}
</script>
src/views/tigerprojects/mes/smt/solder/smt_solder/smt_solder.data.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
import { BasicColumn } from '/@/components/Table';
import { FormSchema } from '/@/components/Table';
import { optionsListApi } from '/@/api/tigerapi/wms/wms_item';
import { h } from 'vue';
import { Tag, Tooltip } from 'ant-design-vue';
export const columns: BasicColumn[] = [
  {
    title: '锡膏UPN编码',
    dataIndex: 'UPN',
    width:200,
    sorter: true,
    resizable:true
  },
  {
    title: 'CPN编码',
    dataIndex: 'CPN',
    width: 200,
    sorter: true,
    resizable:true
  },
  {
    title: '类型',
    dataIndex: 'TYPE',
    width: 100,
    sorter: true,
    resizable:true,
    customRender: ({ record }) => {
      const status = record.TYPE;
      var text = '';
      var color = '';
      switch (status) {
        case '0':
          text = '锡膏';
          color = 'green';
          break;
        case '1':
          text = '胶水';
          color = 'blue';
          break;
        default:
          break;
      }
      return h(Tooltip, { title: 'xxxxxx' }, () => h(Tag, { color: color }, () => text));
    },
  },
  {
    title: '超期时间编码',
    dataIndex: 'EXP_DATE',
    width:100,
    sorter: true,
    resizable:true
  },
  {
    title: '创建人',
    dataIndex: 'CREATE_USER',
    width:100,
    sorter: true,
    resizable:true
  }
  ,
  {
    title: '创建时间',
    dataIndex: 'CREATE_TIME',
    width:100,
    sorter: true,
    resizable:true
  }
];
export const searchFormSchema: FormSchema[] = [
  {
    field: 'UPN',
    label: '锡膏UPN编码',
    component: 'Input',
    colProps: { span: 8 },
  }
];
src/views/tigerprojects/mes/smt/solder/smt_solder_his/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,136 @@
<template>
  <div>
    <BasicTable @register="registerTable">
      <!-- <template #toolbar>
        <a-button color="primary" @click="solderAdd"> æ–°å¢ž </a-button>
      </template> -->
      <template #action="{ record }">
        <!-- <TableAction :actions="[
          {
            icon: 'clarity:info-standard-line',
            tooltip: '详情',
            onClick: handleEdit.bind(null, record),
          },
        ]" /> -->
      </template>
    </BasicTable>
    <Loading :loading="compState.loading" :tip="compState.tip" />
    <!-- <WmsItemDrawer @register="registerDrawer" @success="handleSuccess" /> -->
    <!-- <SolderModal @register="registerSolder" @success="handleSuccess" /> -->
  </div>
</template>
<script lang="ts" setup>
import { reactive } from 'vue';
import { aoaToSheetXlsx } from '/@/components/Excel';
import { BasicTable, useTable, TableAction } from '/@/components/Table';
//import SolderModal from './SolderModal.vue';
import { useModal } from '/@/components/Modal';
import { columns, searchFormSchema } from './smt_solder.data';
import { getsolderListByPage } from '/@/api/tigerapi/mes/smt/solderhis';
import { useGo } from '/@/hooks/web/usePage';
import { Loading } from '/@/components/Loading';
import { useMessage } from '/@/hooks/web/useMessage';
import { useI18n } from '/@/hooks/web/useI18n';
import { SaveSolder } from '/@/api/tigerapi/mes/smt/solder';
const { t } = useI18n();
const { createMessage } = useMessage();
const go = useGo();
const compState = reactive({
  absolute: false,
  loading: false,
  tip: '加载中...',
});
//const [registerSolder, { openModal: openSolderModal }] = useModal();
const [registerTable,{getForm,getPaginationRef,reload}] = useTable({
  title: '锡膏胶水历史',
  api: getsolderListByPage,
  columns,
  formConfig: {
    labelWidth: 120,
    schemas: searchFormSchema,
  },
  // actionColumn: {
  //   width: 80,
  //   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()
//     getWmsItemSumByPage(col).then((res) => {
//       res.items.forEach(element => {
//         arr.push({
//           '仓库': element.WH_CODE,
//           '物料代码': element.ITEM_CODE,
//           '物料名称': element.ITEM_NAME,
//           '数量': element.ZK_QTY,
//           '单位': element.UNIT
//         });
//       });
//       const arrHeader = columns.map((column) => column.title);
//       const arrData = arr.map((item) => {
//         return Object.keys(item).map((key) => item[key]);
//       });
//       // ä¿è¯data顺序与header一致
//       if(arr.length<30000){
//         aoaToSheetXlsx({
//         data: arrData,
//         header: arrHeader,
//         filename: '汇总报表.xlsx',
//       });
//       }else{
//         createMessage.error(t('导出数据不能超过三万条,如需要更多的请联系管理员'));
//       }
//       compState.loading = false;
//     })
//   } else {
//     createMessage.error(t('导出数据不能超过三万条,如需要更多的请联系管理员'));
//   }
// }
//跳转到实时库存
function handleEdit(record: any) {
  //跳转页面
  //go('/WmsItem/' + record.ITEM_CODE);
  // const apiAction = SaveSolder(record, true);
  // apiAction.then((action) => {
  //   if (action) {
  //     if (action.IsSuccessed) {
  //       createMessage.success(t('已报废成功'));
  //     }
  //   } else {
  //     createMessage.error(action.Message);
  //   }
  // });
}
// function solderAdd(){
//   //alert("新增")
//   openSolderModal(true, {
//         data: 'content',
//         info: 'Info',
//     });
// }
function handleSuccess() {
  reload();
}
</script>
src/views/tigerprojects/mes/smt/solder/smt_solder_his/smt_solder.data.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,109 @@
import { BasicColumn } from '/@/components/Table';
import { FormSchema } from '/@/components/Table';
import { optionsListApi } from '/@/api/tigerapi/wms/wms_item';
import { h } from 'vue';
import { Tag, Tooltip } from 'ant-design-vue';
export const columns: BasicColumn[] = [
  {
    title: '锡膏UPN编码',
    dataIndex: 'UPN',
    width: 200,
    sorter: true,
    resizable: true
  },
  {
    title: 'CPN编码',
    dataIndex: 'CPN',
    width: 200,
    sorter: true,
    resizable: true
  },
  {
    title: '线别',
    dataIndex: 'LINE_CODE',
    width: 150,
    sorter: true,
    resizable: true
  },
  {
    title: '关联钢网',
    dataIndex: 'SMT_STENCIL',
    width: 150,
    sorter: true,
    resizable: true
  },
  {
    title: '状态',
    dataIndex: 'STATUS',
    width: 100,
    sorter: true,
    resizable: true,
    customRender: ({ record }) => {
      const status = record.STATUS;
      var text = '';
      var color = '';
      switch (status) {
        case 0:
          text = '登记';
          color = 'green';
          break;
        case 1:
          text = '入库';
          color = 'blue';
          break;
        case 2:
          text = '回温';
          color = 'blue';
          break;
        case 3:
          text = '领用';
          color = 'blue';
          break;
        case 4:
          text = '上线';
          color = 'blue';
          break;
        case 5:
          text = '搅拌';
          color = 'blue';
          break;
        case 6:
          text = '下线';
          color = 'blue';
          break;
        case 7:
          text = '用毕';
          color = 'blue';
          break;
        default:
          break;
      }
      return h(Tooltip, { title: 'xxxxxx' }, () => h(Tag, { color: color }, () => text));
    },
  },
  {
    title: '创建人',
    dataIndex: 'CREATE_USER',
    width: 100,
    sorter: true,
    resizable: true
  }
  ,
  {
    title: '创建时间',
    dataIndex: 'CREATE_TIME',
    width: 100,
    sorter: true,
    resizable: true
  }
];
export const searchFormSchema: FormSchema[] = [
  {
    field: 'UPN',
    label: '锡膏UPN编码',
    component: 'Input',
    colProps: { span: 8 },
  }
];
src/views/tigerprojects/mes/smt/tool/smt_tool/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,108 @@
<template>
  <div>
    <BasicTable @register="registerTable">
      <template #toolbar>
        <a-button preIcon="OutR|svg" ghost color="success" @click="aoaToExcel"> å¯¼å‡º </a-button>
      </template>
      <template #action="{ record }">
        <TableAction :actions="[
          {
            icon: 'clarity:info-standard-line',
            tooltip: '查看单据详情',
            onClick: handleEdit.bind(null, record),
          },
        ]" />
      </template>
    </BasicTable>
    <Loading :loading="compState.loading" :tip="compState.tip" />
    <!-- <WmsItemDrawer @register="registerDrawer" @success="handleSuccess" /> -->
  </div>
</template>
<script lang="ts" setup>
import { reactive } from 'vue';
import { aoaToSheetXlsx } from '/@/components/Excel';
import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { columns, searchFormSchema } from './wms_item_sum.data';
import { getWmsItemSumByPage } from '/@/api/tigerapi/wms/wms_item';
import { useGo } from '/@/hooks/web/usePage';
import { Loading } from '/@/components/Loading';
import { useMessage } from '/@/hooks/web/useMessage';
import { useI18n } from '/@/hooks/web/useI18n';
const { t } = useI18n();
const { createMessage } = useMessage();
const go = useGo();
const compState = reactive({
  absolute: false,
  loading: false,
  tip: '加载中...',
});
const [registerTable,{getForm,getPaginationRef}] = useTable({
  title: '库存汇总',
  api: getWmsItemSumByPage,
  columns,
  formConfig: {
    labelWidth: 120,
    schemas: searchFormSchema,
  },
  actionColumn: {
    width: 80,
    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()
    getWmsItemSumByPage(col).then((res) => {
      res.items.forEach(element => {
        arr.push({
          '仓库': element.WH_CODE,
          '物料代码': element.ITEM_CODE,
          '物料名称': element.ITEM_NAME,
          '数量': element.ZK_QTY,
          '单位': element.UNIT
        });
      });
      const arrHeader = columns.map((column) => column.title);
      const arrData = arr.map((item) => {
        return Object.keys(item).map((key) => item[key]);
      });
      // ä¿è¯data顺序与header一致
      if(arr.length<30000){
        aoaToSheetXlsx({
        data: arrData,
        header: arrHeader,
        filename: '汇总报表.xlsx',
      });
      }else{
        createMessage.error(t('导出数据不能超过三万条,如需要更多的请联系管理员'));
      }
      compState.loading = false;
    })
  } else {
    createMessage.error(t('导出数据不能超过三万条,如需要更多的请联系管理员'));
  }
}
//跳转到实时库存
function handleEdit(record: any) {
  go('/WmsItem/' + record.ITEM_CODE);
}
</script>
src/views/tigerprojects/mes/smt/tool/smt_tool/wms_item_sum.data.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
import { BasicColumn } from '/@/components/Table';
import { FormSchema } from '/@/components/Table';
import { optionsListApi } from '/@/api/tigerapi/wms/wms_item';
import { h } from 'vue';
import { Tag } from 'ant-design-vue';
export const columns: BasicColumn[] = [
  {
    title: '仓库',
    dataIndex: 'WH_CODE',
    width:100,
    sorter: true,
    resizable:true
  },
  {
    title: '物料代码',
    dataIndex: 'ITEM_CODE',
    width: 200,
    sorter: true,
    resizable:true
  },
  {
    title: '物料名称',
    dataIndex: 'ITEM_NAME',
    width: 300,
    sorter: true,
    resizable:true
  },
  {
    title: '数量',
    dataIndex: 'ZK_QTY',
    width:100,
    sorter: true,
    resizable:true
  }
];
export const searchFormSchema: FormSchema[] = [
  {
    field: 'WH_CODE',
    label: '仓库',
    component: 'Input',
    colProps: { span: 8 },
  },
  {
    field: 'ITEM_CODE',
    label: '物料代码',
    component: 'Input',
    colProps: { span: 8 },
  }
];
src/views/tigerprojects/test/mqtt/index.vue
@@ -1,7 +1,17 @@
<template>
  <div>
  <div style="margin: auto 10px;">
    <!-- <p></p>
    <p>订阅的主题</p>
    <input type="text">
    <p>发布信息</p>
    <input type="text">
    <button style="color:aquamarine;background-color: brown;" @click="">发送</button>
    &nbsp;
    <div style="background-color:darkgrey;height: 500px; width: 500px;position:relative;left: 260px;top:-110px">
    </div> -->
  </div>
</template>
<script lang="ts">
import { defineComponent, ref, unref } from 'vue';
@@ -12,7 +22,7 @@
  connectTimeout:4000,
  clientId:'mqtt_'+ Math.random().toString(16),
}
client = mqtt.connect('ws://192.168.31.151/mgtt',options)
client = mqtt.connect('ws://broker.emqx.io/mqtt',options)
export default {
  name: 'Helloworld',
  data(){
@@ -27,18 +37,25 @@
    mqttMsg(){
      client.on('connect',(e)=>{
        console.log('连接成功')
        client.subscribe('/test/helloworld',{qos:0},(error)=>{
        client.subscribe('sensor/1/temperature',{qos:0},(error)=>{
          console.log(error)
        })
        client.on("message",(topic,message)=>{
          console.log('收到来自',topic,'的消息',message.tostring())
          console.log('收到来自',topic,'的消息',message.toString())
          if(message.toString()=='hi'){
            client.publish('testtopic/one','hello',{
              qos:0,rein:false
            },(error)=>{
              console.log('error',error)
            })
          }
        })
        client.on("reconnect",(error)=>{
          console.log('正在重连',error)
        })
        client.on("reconnect",(error)=>{
          console.log('连接失败',error)
        })
        // client.on("reconnect",(error)=>{
        //   console.log('正在重连',error)
        // })
        // client.on("reconnect",(error)=>{
        //   console.log('连接失败',error)
        // })
      })
    }
  }