123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387 |
- <template>
- <div class="table-box">
- <LjVxeTable
- ref="vxeTableRef"
- row-key="mattressid"
- :columns="columns"
- :init-param="initParams"
- :request-api="getData"
- :data-callback="dataCallback"
- :dwname="DwnameEnum.mattressInterface"
- :table-props="tableProps"
- :table-events="tableEvents"
- :auto-load-layout="false"
- :search-btn-size-extent="[]"
- pagination
- :page-change-call-back="autoUpdateTableCheckbox"
- >
- <!-- 表格 header 按钮 -->
- <template #tableHeader>
- <LjHeaderMenu :update="dialogVisible" :action="action" />
- </template>
- </LjVxeTable>
- </div>
- </template>
- <script setup lang="ts" name="mattressQuote">
- import { ref, onMounted, inject } from "vue";
- import { useRouter } from "vue-router";
- import { MattressYWAudit, MattressJSAudit, MattressJS2Audit } from "@/api/modules/quote";
- import { CommonDynamicSelect } from "@/api/modules/common";
- import { ColumnProps } from "@/components/LjVxeTable/interface";
- import LjDrawer from "@/components/LjDrawer/index.vue";
- import { useHooks } from "./hooks/index";
- import LjDialog from "@/components/LjDialog/index.vue";
- import LjHeaderMenu from "@/components/LjHeaderMenu/index.vue";
- import { useI18n } from "vue-i18n";
- import { useAuthButtons } from "@/hooks/useAuthButtons";
- import { DwnameEnum } from "@/enums/dwnameEnum";
- import { formatToDateTime, formatToDate } from "@/utils/dateUtil";
- import { cloneDeep } from "lodash-es";
- import { useGlobalStore } from "@/stores/modules/global";
- import { ElMessage, ElMessageBox, ElNotification } from "element-plus";
- import { detailAction } from "@/components/LjDetail/interface";
- import mittBus from "@/utils/mittBus";
- import { MittEnum } from "@/enums/mittEnum";
- import { getCurrentRecords } from "@/utils/index";
- import { usePageRouter } from "@/hooks/usePageRouter";
- const { t } = useI18n();
- const router = useRouter();
- const globalStore = useGlobalStore();
- const { initParams, columns, toCreateMtrl, toCreateORDelMtrlPf, YWAudit, JSAudit, JS2Audit } = useHooks(t);
- // const { toExcelQuote } = useHooksCpQuote();
- const { CheckPower, CheckOption, buttonNew, buttonDefault } = useAuthButtons(t);
- const { pageOpen } = usePageRouter();
- const dialogVisible = ref(false);
- const vxeTableRef = ref();
- const enumMap = ref(new Map());
- const getData = (params: any) => {
- console.log("getData mattress params :>> ", params);
- let newParams: any = {};
- params.pageNum && (newParams.pageindex = params.pageNum);
- params.pageSize && (newParams.pagesize = params.pageSize);
- params.orderstr && (newParams.orderstr = params.orderstr);
- delete params.pageNum;
- delete params.pageSize;
- delete params.orderstr;
- let _params = cloneDeep(params);
- newParams.queryParams = _params;
- newParams.dsname = "web_mattress_interfacelist";
- return CommonDynamicSelect(newParams, DwnameEnum.mattressInterface);
- };
- const handleDBlClickTable = ({ row, rowIndex, $rowIndex, column, columnIndex, $columnIndex, $event }: any) => {
- if (globalStore.detailBlank) {
- // 打开新的窗口
- const routeUrl = router.resolve({
- path: `/erpapi/mattressInterface/detail`,
- query: {
- id: row.mattressid,
- code: row.mattresscode
- }
- });
- window.open(routeUrl.href, "_blank");
- } else {
- // 打开新的标签页
- // router.push(`/erpapi/mattressInterface/detail?id=${row.mattressid}&code=${row.mattresscode}`);
- router.push({
- path: `/erpapi/mattressInterface/detail/${row.mattressid}`,
- query: {
- code: row.mattresscode
- }
- });
- }
- };
- const rowClsNameFunc = (data: any) => {
- const { row, rowIndex, $rowIndex } = data;
- if (Number(row.creatmtrlqd_flag) != 1) {
- if (Number(row.creatmtrl_flag) == 0) {
- return "vxecol-danger";
- } else {
- return "vxecol-blue";
- }
- }
- return "";
- };
- const tableProps = {
- height: "auto",
- editConfig: { trigger: "click", mode: "cell" },
- rowClassName: rowClsNameFunc,
- treeConfig: {
- expandAll: true,
- transform: true,
- rowField: "mattressid",
- parentField: "parentid"
- },
- checkboxConfig: {
- showHeader: true,
- checkStrictly: true
- },
- exportConfig: {
- filename: t("menu.rpMsttake") + formatToDate(new Date(), "YYYY-MM-DD HH:mm:ss")
- }
- };
- // 返回绑定的事件
- const tableEvents = {
- // "checkbox-change": handleCheckboxChange,
- // "checkbox-all": handleCheckboxChange,
- // "checkbox-range-change": handleCheckboxChange,
- // "current-change": handleCurrentChanged
- "cell-dblclick": handleDBlClickTable
- // "cell-click": handleClickTable
- };
- /**
- * @description 按钮展示
- */
- const action: detailAction[] = [
- buttonDefault({
- label: t("common.redo"),
- clickFunc: item => {
- vxeTableRef.value.refresh();
- }
- }),
- buttonDefault({
- label: t("common.view"),
- clickFunc: item => {
- const { curRecords } = getCurrentRecords(vxeTableRef.value);
- // vxeTableRef.value.refresh();
- handleDBlClickTable({ row: curRecords[0] });
- }
- }),
- // [
- // buttonDefault({
- // label: "业务补充",
- // power: 79,
- // clickFunc: item => {
- // routeToEdit(1);
- // }
- // }),
- // buttonDefault({
- // label: "业务审核",
- // power: 80,
- // clickFunc: item => {
- // const { curRecords } = getCurrentRecords(vxeTableRef.value);
- // YWAudit(1, curRecords, () => {
- // vxeTableRef.value.refresh();
- // });
- // }
- // }),
- // buttonDefault({
- // label: "业务撤审",
- // power: 81,
- // clickFunc: item => {
- // const { curRecords } = getCurrentRecords(vxeTableRef.value);
- // YWAudit(0, curRecords, () => {
- // vxeTableRef.value.refresh();
- // });
- // }
- // }),
- // ],
- // [
- buttonDefault({
- label: "产品补充",
- power: 82,
- clickFunc: item => {
- routeToEdit(2);
- }
- }),
- buttonDefault({
- label: "产品补充审核",
- power: 83,
- clickFunc: item => {
- const { curRecords } = getCurrentRecords(vxeTableRef.value);
- JSAudit(1, curRecords, () => {
- vxeTableRef.value.refresh();
- });
- }
- }),
- buttonDefault({
- label: "产品补充撤审",
- power: 84,
- clickFunc: item => {
- const { curRecords } = getCurrentRecords(vxeTableRef.value);
- JSAudit(0, curRecords, () => {
- ElNotification({
- title: t("sys.api.operationSuccess"),
- message: "产品补充审核后,需重新生成L1物料",
- type: "warning"
- });
- vxeTableRef.value.refresh();
- });
- }
- }),
- // ],
- // [
- buttonDefault({
- label: "清单补充",
- power: 85,
- clickFunc: item => {
- routeToEdit(3);
- }
- }),
- buttonDefault({
- label: "清单补充审核",
- power: 86,
- clickFunc: item => {
- const { curRecords } = getCurrentRecords(vxeTableRef.value);
- JS2Audit(1, curRecords, () => {
- vxeTableRef.value.refresh();
- });
- }
- }),
- buttonDefault({
- label: "清单补充撤审",
- power: 87,
- clickFunc: item => {
- const { curRecords } = getCurrentRecords(vxeTableRef.value);
- JS2Audit(0, curRecords, () => {
- vxeTableRef.value.refresh();
- });
- }
- }),
- // ],
- // [
- buttonDefault({
- label: "生成/更新物料",
- power: 88,
- clickFunc: item => {
- const { curRecords } = getCurrentRecords(vxeTableRef.value);
- if (!curRecords.length) {
- ElMessage.warning(t("business.tips.mattress.records"));
- return;
- }
- let list = curRecords.map(item => item.mattressid);
- toCreateMtrl(1, list);
- }
- }),
- // ],
- // [
- buttonDefault({
- label: "生成金蝶清单",
- power: 90,
- clickFunc: item => {
- const { curRecords } = getCurrentRecords(vxeTableRef.value);
- if (!curRecords.length) {
- ElMessage.warning(t("business.tips.mattress.records"));
- return;
- }
- let list = curRecords.map(item => item.mattressid);
- toCreateORDelMtrlPf(1, list);
- }
- })
- // buttonDefault({
- // label: "删除金蝶清单",
- // power: 91,
- // clickFunc: item => {
- // const { curRecords } = getCurrentRecords(vxeTableRef.value);
- // if (!curRecords.length) {
- // ElMessage.warning(t("business.tips.mattress.records"));
- // return;
- // }
- // toCreateORDelMtrlPf(0, curRecords[curRecords.length - 1].mattressid);
- // }
- // })
- // ]
- ];
- const dataCallback = (data: any) => {
- if (data.tableinfo?.columns) {
- data.tableinfo?.columns.map((item: any) => {
- if (item?.enum) {
- enumMap.value.set(item.field, item.enum);
- }
- });
- }
- return {
- list: data.datatable,
- tableinfo: data.tableinfo,
- total: data.totalcnt,
- pageNum: data.pageindex,
- pageSize: data.pagesize
- };
- };
- const routeToEdit = async type => {
- const { $table, curRecords } = getCurrentRecords(vxeTableRef.value);
- if (!curRecords.length) {
- ElMessage.warning(t("business.tips.mattress.records"));
- return;
- }
- const _cur = curRecords[curRecords.length - 1];
- // router.push(`/erpapi/mattressInterface/${type}/edit?id=${_cur.mattressid}&code=${_cur.mattresscode}&type=${type}`);
- try {
- if (type === 1) {
- if (_cur.yw_flag == 1) {
- throw new Error(_cur.mattresscode + ":已业务补充审核,无法修改");
- }
- } else if (type === 2) {
- if (_cur.js1_flag == 1) {
- throw new Error(_cur.mattresscode + ":已产品补充审核,无法修改");
- }
- } else if (type === 3) {
- if (_cur.js2_flag == 1) {
- throw new Error(_cur.mattresscode + ":已清单补充审核,无法修改");
- }
- }
- } catch (error) {
- ElMessage.error(error.message);
- return false;
- }
- pageOpen({
- name: "mattressInterfaceEditYw",
- params: {
- id: _cur.mattressid,
- code: _cur.mattresscode
- },
- query: {
- code: _cur.mattresscode,
- type: type
- }
- });
- // router.push({
- // path: `/erpapi/mattressInterface/edit/${_cur.mattressid}`,
- // query: {
- // id: _cur.mattressid,
- // code: _cur.mattresscode,
- // type: type
- // }
- // });
- };
- /**
- * @description 监听框架属性变化
- */
- mittBus.on(MittEnum.MattressList, () => {
- vxeTableRef.value.refresh();
- });
- const autoUpdateTableCheckbox = () => {
- const $table = vxeTableRef.value.element;
- if ($table) {
- $table.setAllTreeExpand(true);
- }
- };
- </script>
|