import { ref, reactive, computed, toRefs } from "vue"; import { Table } from "@/hooks/interface"; import { ColumnProps } from "@/components/LjVxeTable/interface"; import { ALLOW_EDIT_STATE } from "@/config/index"; import { SaveDept, DeleteDept, AuditDept } from "@/api/modules/saleprice"; import { ElMessage, ElMessageBox } from "element-plus"; interface defaultState { /** * @description 单据当前状态 */ orderStatus: string; /** * @description 列表Ref */ VxeTableRef: any; /** * @description 详情页Ref */ LjDetailRef: any; } const state = reactive({ orderStatus: "", VxeTableRef: null, LjDetailRef: null }); /** * @description 表格多选数据操作 * @param {String} rowKey 当表格可以多选时,所指定的 id * */ export const useHooks = (t?: any) => { // 表格配置项 const columns: ColumnProps[] = [ { type: "checkbox", width: 80, fixed: "left" }, { field: "deptname", title: "部门名称", basicinfo: { el: "input", span: 2, editable: ALLOW_EDIT_STATE, rules: [{ required: true }] } }, { field: "pricelistid", title: "价格表", basicinfo: { el: "select", span: 2, editable: ALLOW_EDIT_STATE, rules: [{ required: true }], defaultValue: 0 } }, { field: "springtypeid", title: "弹簧分类", basicinfo: { el: "select", span: 1, editable: ALLOW_EDIT_STATE, defaultValue: 0, rules: [{ required: true }] } }, { field: "moneyrate", title: "汇率", basicinfo: { el: "input", span: 1, editable: ALLOW_EDIT_STATE, props: { placeholder: "请输入汇率" }, rules: [{ required: true, pattern: new RegExp(/^\d+(\.\d+)?$/), message: "汇率不能为0", trigger: "change" }] } }, { field: "profitrate", title: "利润率", basicinfo: { el: "input", span: 1, editable: ALLOW_EDIT_STATE, props: { placeholder: "请输入利润率" }, rules: [{ required: true, pattern: new RegExp(/^\d+(\.\d+)?$/), message: "利润率不能为0", trigger: "change" }] } }, { field: "discount", title: "折扣率", basicinfo: { el: "input", span: 1, editable: ALLOW_EDIT_STATE, props: { placeholder: "请输入折扣率" }, rules: [{ required: true, pattern: new RegExp(/^\d+(\.\d+)?$/), message: "折扣率不能为0", trigger: "change" }] } }, { field: "if_rate_auto", title: "是否自动读取汇率", datatype: "checkbox", basicinfo: { el: "switch", editable: ALLOW_EDIT_STATE } }, { field: "createtime", title: "建立时间", basicinfo: { visible: false } }, { field: "modemp", title: "修改人", basicinfo: { visible: false } }, { field: "moddate", title: "修改时间", basicinfo: { visible: false } }, { field: "auditemp", title: "审核人", basicinfo: { visible: false } }, { field: "audidate", title: "审核时间", basicinfo: { visible: false } }, { field: "manage_amt", title: "部门管理费", basicinfo: { el: "input", editable: ALLOW_EDIT_STATE, span: 1, props: { placeholder: "请输入部门管理费" } // rules: [{ trigger: "change" }] } }, { field: "mtrltype", title: "默认物料类别", basicinfo: { el: "tree-select", span: 2, editable: ALLOW_EDIT_STATE } }, { field: "managerate", title: "管理费用点", basicinfo: { el: "input", props: { type: "number" }, span: 2, editable: ALLOW_EDIT_STATE } }, { field: "com_profitrate", title: "公司利润率", basicinfo: { el: "input", props: { type: "number" }, span: 2, editable: ALLOW_EDIT_STATE } }, { field: "dannum1_rate", title: "散单利润浮动", basicinfo: { el: "input", props: { type: "number" }, span: 2, editable: ALLOW_EDIT_STATE } }, { field: "dannum2_rate", title: "标准利润浮动", basicinfo: { el: "input", props: { type: "number" }, span: 2, editable: ALLOW_EDIT_STATE } }, { field: "dannum3_rate", title: "大单利润浮动", basicinfo: { el: "input", props: { type: "number" }, span: 2, editable: ALLOW_EDIT_STATE } }, { field: "dannum4_rate", title: "小单利润浮动", basicinfo: { el: "input", props: { type: "number" }, span: 2, editable: ALLOW_EDIT_STATE } }, { field: "taxes_rate", title: "非报关产品税金补偿", basicinfo: { el: "input", props: { type: "number" }, span: 2, editable: ALLOW_EDIT_STATE } } ]; // 保存 const fSave = (param: any) => { return new Promise((resolve, reject) => { ElMessageBox.confirm("是否确定要保存吗?", "询问", { confirmButtonText: "是", cancelButtonText: "否", type: "warning" }) .then(() => { SaveDept(param).then(() => { ElMessage.success("保存成功!"); state.VxeTableRef?.refresh(); resolve({}); }); }) .catch(() => { ElMessage({ type: "info", message: "操作取消" }); }); }); }; // 删除 const fDelete = () => { const checkDate = state.VxeTableRef?.element.getCheckboxRecords(); if (checkDate.length === 0) { ElMessage.error("请选择要删除的数据!"); return; } const delArr = checkDate.map((item: any) => { return { deptid: parseInt(item.deptid), deptname: item.deptname }; }); ElMessageBox.confirm("是否确定要删除吗?", "询问", { confirmButtonText: "是", cancelButtonText: "否", type: "warning" }) .then(() => { DeleteDept({ list: delArr }).then(() => { ElMessage.success("删除成功!"); state.VxeTableRef?.refresh(); }); }) .catch(() => { ElMessage({ type: "info", message: "操作取消" }); }); }; // 审核 const fAudit = type => { let operate = "审核"; switch (type) { case 1: operate = "撤审"; break; case 2: operate = "反禁用"; break; case 3: operate = "禁用"; break; default: operate = "审核"; break; } const checkDate = state.VxeTableRef?.element.getCheckboxRecords(); if (checkDate.length === 0) { ElMessage.error(`请选择要${operate}的数据!`); return; } const delArr = checkDate.map((item: any) => { return { deptid: parseInt(item.deptid) }; }); ElMessageBox.confirm(`是否确定要${operate}吗?`, "询问", { confirmButtonText: "是", cancelButtonText: "否", type: "warning" }) .then(() => { AuditDept({ list: delArr, type }).then(() => { ElMessage.success(`${operate}成功!`); state.VxeTableRef?.refresh(); }); }) .catch(() => { ElMessage({ type: "info", message: "操作取消" }); }); }; return { ...toRefs(state), columns, fSave, fDelete, fAudit }; };