123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248 |
- import { ref, reactive, toRefs } from "vue";
- import * as Exceljs from "exceljs";
- import { saveAs } from "file-saver";
- import { formatTime, formatAmount3, floatAdd } from "@/utils/index";
- import { cloneDeep } from "lodash-es";
- import { isFunction } from "@/utils/is";
- import { useUserStore } from "@/stores/modules/user";
- import { ElButton, ElMessage, ElPopconfirm, ElMessageBox } from "element-plus";
- import { CommonDynamicSelect } from "@/api/modules/common";
- import { useHooks } from "@/views/quote/bednetQuote/hooks/index";
- import { use } from "vxe-table";
- interface WidgetTableItem {
- label: string;
- dscrp: any;
- qty?: number | string;
- costamt?: number | string;
- useqty?: number | string;
- price?: number | string;
- [key: string]: any;
- }
- interface defaultState {
- tableData: any;
- oriTableData: WidgetTableItem[];
- enumMap: any;
- }
- interface wfQingdanProps {
- data: any;
- mxdata?: any;
- /**
- * @description 属性枚举
- */
- enumMap?: any;
- /**
- * @description 面料tab分类
- */
- fabricMx?: any;
- formulakindenum?: any;
- }
- export const useHooksCpQuote = (t?: any) => {
- const { userInfo } = useUserStore();
- const state = reactive<defaultState>({
- tableData: [],
- oriTableData: [
- {
- label: "床垫编码",
- dscrp: data => data.mattresscode,
- qty: "",
- costamt: "",
- useqty: "",
- price: ""
- },
- {
- label: "床垫名称",
- dscrp: data => data.mattressname,
- qty: "",
- costamt: "",
- useqty: "",
- price: ""
- },
- {
- label: "床垫类别",
- dscrp: data => {
- let _enum = state.enumMap.get("mattresstypeid");
- let result = "";
- if (_enum) {
- result = _enum.find(t => t.value == data.mattresstypeid).label ?? "";
- }
- return result;
- },
- qty: "",
- costamt: "",
- useqty: "",
- price: ""
- },
- {
- label: "床垫规格",
- dscrp: data => {
- return `${data.mattress_width} * ${data.mattress_length} * ${data.mattress_height}`;
- },
- qty: "",
- costamt: "",
- useqty: "",
- price: ""
- },
- {
- label: "拆装、布套",
- dscrp: data => {
- let arr = [];
- if (Number(data.if_m_chai) == 1) {
- arr.push("面拆");
- }
- if (Number(data.if_z_chai) == 1) {
- arr.push("中拆");
- }
- if (Number(data.if_d_chai) == 1) {
- arr.push("底拆");
- }
- if (Number(data.if_n_butao) == 1) {
- arr.push("内布套");
- }
- if (Number(data.if_w_butao) == 1) {
- arr.push("外布套");
- }
- return arr.join(" ");
- },
- qty: "",
- costamt: "",
- useqty: "",
- price: ""
- }
- ],
- enumMap: null
- });
- const isFilterPrice = data => {
- return formatAmount3({ val: data });
- };
- const wf_retrieve_qingdan_bednet = async (data: any) => {
- const { getDataMxAdd, getDataMxSpring, dataCallbackMx } = useHooks(t);
- let s_bednet_qingdan = [];
- // let bednetMxData = [];
- // let bednetMxSpringData = [];
- console.log("data :>> ", data);
- let res = await getDataMxAdd({ arg_bednetid: data.list[0].bednetid });
- let mxResult = dataCallbackMx(res);
- console.log("wf_retrieve_qingdan_bednet mxResult :>> ", mxResult);
- let ls_床网名称,
- ls_区区,
- ls_卷包,
- ls_规格,
- ls_排列,
- ls_床网高度,
- ls_弹簧,
- ls_边铁,
- ls_底面无纺布,
- ls_上垫层物料,
- ls_下垫层物料,
- ls_入袋无纺布,
- ls_四周加硬排数,
- ls_弹叉,
- ls_海绵包边物料,
- ls_填充海绵物料 = "";
- let item: any = {};
- let res2 = await getDataMxSpring({ arg_bednetid: data.list[0].bednetid });
- let springResult = dataCallbackMx(res2);
- console.log("springResult :>> ", springResult);
- //床网名称
- s_bednet_qingdan.push({
- pzname: "床网名称"
- });
- let enumItem = data.tableinfo.columns.find((item: any) => item.field == "bednettypeid");
- console.log("bednettypeid enumItem :>> ", enumItem);
- let _pznamemx = "";
- if (enumItem) {
- _pznamemx = enumItem.enum.find((item: any) => item.value == data.list[0].bednettypeid)?.label;
- }
- //床网类型
- s_bednet_qingdan.push({
- pzname: "床网类型",
- pznamemx: _pznamemx,
- amt: 0,
- useqty: 0
- });
- ls_床网名称 = s_bednet_qingdan[1].pznamemx;
- //规格
- s_bednet_qingdan.push({
- pzname: "规格",
- pznamemx: data.list[0].mattress_width + "*" + data.list[0].mattress_length + "*" + data.list[0].mattress_height,
- amt: 0,
- useqty: 0
- });
- ls_规格 = data.list[0].mattress_width + "*" + data.list[0].mattress_length;
- //排列
- s_bednet_qingdan.push({
- pzname: "排列",
- pznamemx: mxResult.list[0].spring_qty_width + "*" + mxResult.list[0].spring_qty_length,
- amt: 0,
- useqty: 0
- });
- ls_排列 = mxResult.list[0].spring_qty_width + "*" + mxResult.list[0].spring_qty_length;
- //床网高度
- s_bednet_qingdan.push({
- pzname: "床网高度",
- pznamemx: mxResult.list[0].bednet_height + "高",
- amt: 0,
- useqty: 0
- });
- ls_床网高度 = mxResult.list[0].bednet_height;
- item = {
- pzname: "弹簧线径/高度/口径/中心直径/圈数",
- pznamemx: "",
- amt: 0,
- useqty: 0
- };
- //弹簧线径/高度/口径/中心直径/圈数
- if (Number(mxResult.list[0].if_part) == 0) {
- item.pznamemx = mxResult.list[0].springname;
- ls_弹簧 = mxResult.list[0].springname;
- } else {
- let ls_left, ls_right, ls_t_temp;
- if (springResult.list.length > 0) {
- //提取 / 之前的字符串
- ls_left = springResult.list[1].springname.split("/")[0];
- //提取 / 之后的字符串
- ls_right = springResult.list[1].springname.split("/")[1];
- ls_t_temp = ls_left;
- springResult.list.map((t, i) => {
- if (i >= 1 && !ls_t_temp) {
- //提取 / 之前的字符串
- ls_left = t.springname.split("/")[0];
- //提取 / 之后的字符串
- ls_t_temp = ls_t_temp + "+" + ls_left;
- }
- });
- }
- ls_弹簧 = ls_t_temp + "/" + ls_right;
- }
- s_bednet_qingdan.push(item);
- //多区弹簧/高度/口径/中心直径/圈数
- // springResult.list.map((t, i) => {
- // s_bednet_qingdan.push({
- // pzname: `多区弹簧${i + 1}/高度/口径/中心直径/圈数`,
- // pznamemx: t.springname,
- // amt: 0,
- // useqty: 0
- // });
- // });
- for (let i = 0; i < 5; i++) {
- s_bednet_qingdan.push({
- pzname: `多区弹簧${i + 1}/高度/口径/中心直径/圈数`,
- pznamemx: springResult.list[i]?.springname ?? "",
- amt: 0,
- useqty: 0
- });
- }
- //边铁条数
- item = {
- pzname: "边铁条数",
- pznamemx: "",
- amt: 0,
- useqty: 0
- };
- if (Number(mxResult.list[0].side_iron_qty) > 0) {
- item.pznamemx = mxResult.list[0].side_iron_qty + "条";
- ls_边铁 = Number(mxResult.list[0].side_iron_qty) + "条边铁";
- } else {
- ls_边铁 = "无边铁";
- }
- s_bednet_qingdan.push(item);
- //底面无纺布
- item = {
- pzname: "底面无纺布",
- pznamemx: "",
- amt: 0,
- useqty: 0
- };
- if (Number(mxResult.list[0].fabrics2_mtrlid) > 0) {
- let enumItem = mxResult.tableinfo.columns.find((item: any) => item.field == "fabrics2_mtrlid");
- let _pznamemx = "";
- if (enumItem) {
- _pznamemx = enumItem.enum.find((item: any) => item.value == mxResult.list[0].fabrics2_mtrlid)?.label;
- }
- item.pznamemx = _pznamemx;
- ls_底面无纺布 = _pznamemx;
- } else {
- ls_底面无纺布 = "";
- }
- s_bednet_qingdan.push(item);
- //入袋无纺布
- item = {
- pzname: "入袋无纺布",
- pznamemx: "",
- amt: 0,
- useqty: 0
- };
- if (Number(mxResult.list[0].fabrics1_mtrlid) > 0) {
- let enumItem = mxResult.tableinfo.columns.find((item: any) => item.field == "fabrics1_mtrlid");
- let _pznamemx = "";
- if (enumItem) {
- _pznamemx = enumItem.enum.find((item: any) => item.value == mxResult.list[0].fabrics1_mtrlid)?.label;
- }
- item.pznamemx = _pznamemx;
- ls_入袋无纺布 = _pznamemx;
- } else {
- ls_入袋无纺布 = "";
- }
- s_bednet_qingdan.push(item);
- //上垫层物料
- item = {
- pzname: "上垫层物料",
- pznamemx: "",
- amt: 0,
- useqty: 0
- };
- if (data.list[0].mtrl_felt_name) {
- item.pznamemx = data.list[0].mtrl_felt_name;
- ls_上垫层物料 = data.list[0].mtrl_felt_name;
- } else {
- ls_上垫层物料 = "";
- }
- s_bednet_qingdan.push(item);
- //下垫层物料
- item = {
- pzname: "下垫层物料",
- pznamemx: "",
- amt: 0,
- useqty: 0
- };
- if (data.list[0].mtrl_felt_x_name) {
- item.pznamemx = data.list[0].mtrl_felt_x_name;
- ls_下垫层物料 = data.list[0].mtrl_felt_x_name;
- } else {
- ls_下垫层物料 = "";
- }
- s_bednet_qingdan.push(item);
- //四周加硬排数
- item = {
- pzname: "四周加硬排数",
- pznamemx: "",
- amt: 0,
- useqty: 0
- };
- if (Number(mxResult.list[0].hard_around_row) > 0) {
- item.pznamemx = mxResult.list[0].hard_around_row + "排" + mxResult.list[0].hard_around_springname;
- ls_四周加硬排数 = "四周加硬" + mxResult.list[0].hard_around_row + "排" + mxResult.list[0].hard_around_springname;
- } else {
- ls_四周加硬排数 = "";
- }
- s_bednet_qingdan.push(item);
- //四周加硬弹簧线径/高度/口径/中心直径/圈数
- item = {
- pzname: "四周加硬弹簧线径/高度/口径/中心直径/圈数",
- pznamemx: "",
- amt: 0,
- useqty: 0
- };
- if (Number(mxResult.list[0].if_hard_around) > 0) {
- item.pznamemx = mxResult.list[0].hard_around_springname;
- }
- s_bednet_qingdan.push(item);
- //海绵包边物料
- item = {
- pzname: "海绵包边物料",
- pznamemx: "",
- amt: 0,
- useqty: 0
- };
- if (data.list[0].mtrl_sponge_name) {
- item.pznamemx = data.list[0].mtrl_sponge_name;
- ls_海绵包边物料 = data.list[0].sponge_thickness + "分" + data.list[0].sponge_height + "高" + data.list[0].mtrl_sponge_name;
- } else {
- ls_海绵包边物料 = "";
- }
- s_bednet_qingdan.push(item);
- //海绵包边物料厚度
- item = {
- pzname: "海绵包边物料厚度",
- pznamemx: "",
- amt: 0,
- useqty: 0
- };
- if (Number(data.list[0].sponge_thickness) > 0) {
- item.pznamemx = data.list[0].sponge_thickness + "分";
- }
- s_bednet_qingdan.push(item);
- //填充海绵物料
- item = {
- pzname: "填充海绵物料",
- pznamemx: "",
- amt: 0,
- useqty: 0
- };
- if (data.list[0].mtrl_sponge_tc_name) {
- item.pznamemx = data.list[0].mtrl_sponge_tc_name;
- ls_填充海绵物料 =
- data.list[0].sponge_tc_thickness + "分" + data.list[0].sponge_tc_height + "高" + data.list[0].mtrl_sponge_tc_name;
- } else {
- ls_填充海绵物料 = "";
- }
- s_bednet_qingdan.push(item);
- //填充包边物料厚度
- item = {
- pzname: "填充包边物料厚度",
- pznamemx: "",
- amt: 0,
- useqty: 0
- };
- if (Number(data.list[0].sponge_tc_thickness) > 0) {
- item.pznamemx =
- data.list[0].sponge_tc_thickness + "分厚," + data.list[0].sponge_tc_height + "分高," + data.list[0].mtrl_sponge_tc_name;
- }
- s_bednet_qingdan.push(item);
- //封边物料
- item = {
- pzname: "封边物料",
- pznamemx: "",
- amt: 0,
- useqty: 0
- };
- if (data.list[0].mtrl_edge_name) {
- item.pznamemx = data.list[0].mtrl_edge_name;
- }
- s_bednet_qingdan.push(item);
- //封边高度
- item = {
- pzname: "封边高度",
- pznamemx: "",
- amt: 0,
- useqty: 0
- };
- if (Number(data.list[0].edge_height) > 0) {
- item.pznamemx = data.list[0].edge_height + "高";
- }
- s_bednet_qingdan.push(item);
- //胶条包角
- item = {
- pzname: "胶条包角",
- pznamemx: "",
- amt: 0,
- useqty: 0
- };
- if (Number(data.list[0].if_rsorwa) > 0) {
- item.pznamemx = "有";
- }
- s_bednet_qingdan.push(item);
- //海绵打孔
- item = {
- pzname: "海绵打孔",
- pznamemx: "",
- amt: 0,
- useqty: 0
- };
- if (Number(data.list[0].if_sponge_drilling) > 0) {
- item.pznamemx = "有";
- }
- s_bednet_qingdan.push(item);
- //弹叉数量
- item = {
- pzname: "弹叉数量",
- pznamemx: "",
- amt: 0,
- useqty: 0
- };
- if (Number(data.list[0].fork_qty) > 0) {
- item.pznamemx = data.list[0].fork_qty + "只弹叉";
- ls_弹叉 = data.list[0].fork_qty + "只弹叉";
- }
- s_bednet_qingdan.push(item);
- //15分布条
- item = {
- pzname: "15分布条",
- pznamemx: "",
- amt: 0,
- useqty: 0
- };
- if (Number(data.list[0].if_15strip) > 0) {
- item.pznamemx = "有";
- }
- s_bednet_qingdan.push(item);
- //蛇线线径
- item = {
- pzname: "蛇线线径",
- pznamemx: "",
- amt: 0,
- useqty: 0
- };
- if (Number(data.list[0].snake_wire_diameter) > 0) {
- item.pznamemx = data.list[0].snake_wire_diameter;
- }
- s_bednet_qingdan.push(item);
- //四周口袋弹簧排数
- item = {
- pzname: "四周口袋弹簧排数",
- pznamemx: "",
- amt: 0,
- useqty: 0
- };
- if (Number(mxResult.list[0].pocket_around_row) > 0) {
- item.pznamemx = mxResult.list[0].pocket_around_row + "排";
- }
- s_bednet_qingdan.push(item);
- //四周口袋弹簧线径/高度/口径/中心直径/圈数
- item = {
- pzname: "四周口袋弹簧线径/高度/口径/中心直径/圈数",
- pznamemx: "",
- amt: 0,
- useqty: 0
- };
- if (Number(mxResult.list[0].if_pocket_around) > 0) {
- item.pznamemx = mxResult.list[0].pocket_around_springname;
- }
- s_bednet_qingdan.push(item);
- //设置床网名称
- //床网类型丨规格丨排列丨高度丨单/多区丨线径丨边铁丨海绵包边丨四周加硬丨弹叉丨底面物料
- let ls_temp_name = s_bednet_qingdan[1].pznamemx + "丨" + s_bednet_qingdan[3].pznamemx + "丨" + s_bednet_qingdan[4].pznamemx; // + s_bednet_qingdan[3].pznamemx + '丨'
- if (Number(mxResult.list[0].if_part) > 0) {
- ls_temp_name += "丨" + data.list[0].duo_qv_str + "区";
- } else {
- if (s_bednet_qingdan[5].pznamemx != "") {
- ls_temp_name += "丨" + "单区";
- } else {
- ls_temp_name += "丨" + "多区";
- }
- }
- if (Number(mxResult.list[0].if_part) > 0) {
- ls_区区 = data.list[0].duo_qv_str + "区";
- } else {
- ls_区区 = "单区";
- }
- if (s_bednet_qingdan[5].pznamemx != "") {
- ls_temp_name += "丨" + s_bednet_qingdan[5].pznamemx;
- } else {
- if (s_bednet_qingdan[6].pznamemx != "") {
- ls_temp_name += "丨" + s_bednet_qingdan[6].pznamemx.split("/")[0];
- }
- if (s_bednet_qingdan[7].pznamemx != "") {
- ls_temp_name += "丨" + s_bednet_qingdan[7].pznamemx.split("/")[0];
- }
- if (s_bednet_qingdan[8].pznamemx != "") {
- ls_temp_name += "丨" + s_bednet_qingdan[8].pznamemx.split("/")[0];
- }
- if (s_bednet_qingdan[9].pznamemx != "") {
- ls_temp_name += "丨" + s_bednet_qingdan[9].pznamemx.split("/")[0];
- }
- if (s_bednet_qingdan[10].pznamemx != "") {
- ls_temp_name += "丨" + s_bednet_qingdan[10].pznamemx.split("/")[0];
- }
- }
- if (s_bednet_qingdan[11].pznamemx != "") {
- ls_temp_name += "|" + "有边铁";
- } else {
- ls_temp_name += "|" + "无边铁";
- }
- if (s_bednet_qingdan[19].pznamemx != "") {
- ls_temp_name += "|" + +s_bednet_qingdan[19].pznamemx + s_bednet_qingdan[18].pznamemx + "有海绵包边";
- }
- if (s_bednet_qingdan[16].pznamemx != "") {
- ls_temp_name += "丨" + "四周加硬" + s_bednet_qingdan[16].pznamemx;
- }
- if (s_bednet_qingdan[26].pznamemx != "") {
- ls_temp_name += "丨" + s_bednet_qingdan[26].pznamemx;
- }
- if (s_bednet_qingdan[12].pznamemx != "") {
- ls_temp_name += "丨" + "底面" + s_bednet_qingdan[12].pznamemx;
- } else {
- if (s_bednet_qingdan[14].pznamemx == "") {
- ls_temp_name += "丨" + "底一张" + s_bednet_qingdan[15].pznamemx;
- } else {
- if (s_bednet_qingdan[15].pznamemx == "") {
- ls_temp_name += "丨" + "面一张" + s_bednet_qingdan[14].pznamemx;
- } else {
- ls_temp_name += "丨" + "面底各一张" + s_bednet_qingdan[14].pznamemx;
- }
- }
- }
- if (s_bednet_qingdan[21].pznamemx != "") {
- ls_temp_name += "丨" + s_bednet_qingdan[21].pzname + +s_bednet_qingdan[21].pznamemx;
- }
- ls_卷包 = Number(data.list[0].if_jb) > 0 ? "卷包" : "";
- //20231128修改
- //名称: 袋装网丨单区丨卷包丨90*180丨12*31丨20高丨2.0/16.0/5.70/6.70/5.00丨2条无边铁丨底面75g白色无纺布丨上垫层1张1100g黑毡丨下垫层物料1张100g黑毡丨入袋70g白色无纺布丨四周加硬2排丨10弹叉丨8.分20高HA3070海绵包边丨8.分20高HA3070填充海绵|erp编码:
- if (ls_床网名称.indexOf("袋装") > -1) {
- ls_temp_name =
- ls_床网名称 +
- "丨" +
- ls_区区 +
- "丨" +
- ls_卷包 +
- "丨" +
- ls_规格 +
- "丨" +
- ls_排列 +
- "丨" +
- ls_床网高度 +
- "丨" +
- ls_弹簧 +
- "丨" +
- ls_边铁 +
- "丨" +
- ls_底面无纺布 +
- "丨" +
- ls_上垫层物料 +
- "丨" +
- ls_下垫层物料 +
- "丨" +
- ls_入袋无纺布 +
- "丨" +
- ls_四周加硬排数 +
- "丨" +
- ls_弹叉 +
- "丨" +
- ls_海绵包边物料 +
- "丨" +
- ls_填充海绵物料;
- }
- s_bednet_qingdan[0].pzname = "床网名称";
- s_bednet_qingdan[0].pznamemx = ls_temp_name;
- s_bednet_qingdan[0].amt = data.list[0].nottax_factory_cost;
- s_bednet_qingdan[0].useqty = 0;
- return s_bednet_qingdan;
- };
- const f_get_bednet_qingdan = async (bednetid: any) => {
- if (!Number(bednetid)) return [];
- let _params = {
- dsname: "web_bednet",
- queryparams: {
- arg_bednetid: bednetid
- }
- };
- let res = await CommonDynamicSelect(_params);
- let _data: any = {};
- if (res?.datatable?.length) {
- _data = res?.datatable[0];
- }
- let result = {
- list: res?.datatable,
- tableinfo: res?.tableinfo
- };
- console.log("f_get_bednet_qingdan _data:>> ", _data);
- if (!Number(_data.deptid)) {
- throw new Error(_data.bednetcode + ", deptid错误!");
- return [];
- }
- let deptEnum = state.enumMap.get("deptid");
- let _pricelistid = 0;
- if (deptEnum) {
- let depItem = deptEnum.find((item: any) => item.value == _data.deptid);
- console.log("depItem :>> ", depItem);
- if (depItem) {
- _pricelistid = Number(depItem.pricelistid);
- }
- }
- if (!Number(_data.bednettypeid)) {
- throw new Error(_data.bednetcode + ", bednettypeid错误!");
- }
- if (!Number(_pricelistid)) {
- throw new Error(_data.bednetcode + ", pricelistid错误!");
- }
- let rtStr = await wf_retrieve_qingdan_bednet(result);
- //带上erpcode?
- return rtStr;
- };
- /**
- * @description 刷新报价清单
- */
- const wf_retrieve_qingdan = (params: wfQingdanProps) => {
- let { data, mxdata, fabricMx, formulakindenum, enumMap } = params;
- state.enumMap = enumMap;
- state.tableData = [];
- let _tData = cloneDeep(state.oriTableData);
- state.tableData = _tData.map(item => {
- for (const key in item) {
- if (isFunction(item[key])) {
- item[key] = item[key](data);
- }
- }
- return item;
- });
- console.log("mxdata data:>> ", mxdata, data);
- let _mxitm = null;
- mxdata.map(async (item, index) => {
- switch (item.field) {
- case "tabpage_8":
- case "tabpage_9":
- case "tabpage_10":
- case "tabpage_11":
- case "tabpage_12":
- _mxitm = fabricMx.find(t => t.name == item.field);
- item.data.map(itm => {
- if ((Number(itm.mtrlid ?? 0) > 0 || Number(itm.costamt ?? 0) != 0) && _mxitm.type.includes(Number(itm.formulakind))) {
- let result: any = {};
- result.label = itm.chastr != "" ? itm.chastr : item.label;
- let _formulaName = "";
- if (formulakindenum) {
- _formulaName = formulakindenum.find(t => t.value == itm.formulakind)?.label ?? "";
- }
- _formulaName = _formulaName.replace(item.replace, "");
- // console.log("_formulaName rp:>> ", _formulaName, item.replace);
- result.dscrp = `${_formulaName}:${itm.mtrlname}`;
- if (Number(itm.thickness) > 0) {
- result.dscrp += ` 厚度:${isFilterPrice(itm.thickness)}`;
- }
- result.qty = Number(itm.qty);
- if (userInfo.usermode == 0) {
- result.costamt = isFilterPrice(itm.costamt ?? 0);
- result.useqty = Number(itm.useqty ?? 0);
- result.price = isFilterPrice(itm.price ?? 0);
- }
- result.index = index;
- state.tableData.push(result);
- }
- });
- break;
- case "tabpage_13":
- _mxitm = fabricMx.find(t => t.name == item.field);
- item.data.map(itm => {
- if (
- (Number(itm.mtrlid ?? 0) > 0 || Number(itm.costamt ?? 0) != 0) &&
- !_mxitm.type.includes(Number(itm.formulakind))
- ) {
- let result: any = {};
- // result.label = itm.label;
- result.label = "其他工艺";
- let _formulaName = "";
- if (formulakindenum) {
- _formulaName = formulakindenum.find(t => t.value == itm.formulakind)?.label ?? "";
- }
- _formulaName = _formulaName.replace(item.replace, "");
- result.dscrp = `${_formulaName}:${itm.mtrlname}`;
- if (Number(itm.thickness) > 0) {
- result.dscrp += ` 厚度:${isFilterPrice(itm.thickness)}`;
- }
- result.qty = Number(itm.qty);
- if (userInfo.usermode == 0) {
- result.costamt = isFilterPrice(itm.costamt ?? 0);
- result.useqty = Number(itm.useqty ?? 0);
- result.price = isFilterPrice(itm.price ?? 0);
- }
- result.index = index;
- state.tableData.push(result);
- }
- });
- break;
- case "cushions": // 垫层
- let _index = index;
- console.log("cushions item.data.bednet :>> ", item.data.bednet);
- console.log("cushions item.data.cushions :>> ", item.data.cushions);
- item.data.cushions.map(async itm => {
- if (Number(itm.mtrlid ?? 0) > 0 || Number(itm.costamt ?? 0) != 0 || [999].includes(Number(itm.formulakind))) {
- let result: any = {};
- let _formulaName = "";
- if (formulakindenum) {
- _formulaName = formulakindenum.find(t => t.value == itm.formulakind)?.label ?? "";
- }
- result.label = _formulaName;
- result.dscrp = itm.mtrlname;
- if (![999].includes(Number(itm.formulakind))) {
- if (Number(itm.thickness) > 0) {
- result.dscrp += ` 厚度:${isFilterPrice(itm.thickness)}`;
- }
- result.qty = Number(itm.qty);
- if (userInfo.usermode == 0) {
- result.costamt = isFilterPrice(itm.costamt ?? 0);
- result.useqty = Number(itm.useqty ?? 0);
- result.price = isFilterPrice(itm.price ?? 0);
- }
- result.index = _index;
- state.tableData.push(result);
- } else {
- // 999是床网
- console.log("itm.formulakind 9999:>> ", itm.formulakind);
- let ll_bednetid = 0;
- let ld_bednet_height = 0;
- let s_bednet_qingdan = [];
- // let arg_temp_msg;
- if (item.data.bednet.length && item.data.bednet[0].mtrlid > 0) {
- if (item.data.bednet.length == 1) {
- //单床网
- ll_bednetid = item.data.bednet[0].mtrlid;
- let s_bednet_qingdan = await f_get_bednet_qingdan(ll_bednetid);
- console.log("cushions item.data.bednet s_bednet_qingdan :>> ", s_bednet_qingdan);
- if (s_bednet_qingdan.length) {
- result.dscrp = s_bednet_qingdan[0].pznamemx;
- result.qty = 1;
- if (userInfo.usermode == 0) {
- result.costamt = isFilterPrice(s_bednet_qingdan[0]?.amt ?? 0);
- }
- }
- } else {
- //多床网
- item.data.bednet.map(async t => {
- ll_bednetid = item.data.bednet[0].mtrlid;
- let s_bednet_qingdan = await f_get_bednet_qingdan(ll_bednetid);
- if (s_bednet_qingdan.length) {
- result.dscrp = s_bednet_qingdan[0].pznamemx;
- result.qty = 1;
- if (userInfo.usermode == 0) {
- result.costamt = isFilterPrice(s_bednet_qingdan[0]?.amt ?? 0);
- }
- }
- });
- }
- result.index = _index;
- // 查找数组中,从结尾数起最后出现的index=_index的元素的索引,在起后面插入result
- let _arrData = cloneDeep(state.tableData);
- let _last = _arrData.reverse().findIndex(t => t.index == _index);
- if (_last == -1) {
- state.tableData.push(result);
- } else {
- state.tableData.splice(state.tableData.length - _last, 0, result);
- }
- }
- }
- }
- });
- break;
- case "accessories": // 辅料
- item.data.map(itm => {
- if (Number(itm.mtrlid ?? 0) > 0 || Number(itm.costamt ?? 0) != 0) {
- let result: any = {};
- result.label = itm.label;
- let _formulaName = "";
- if (formulakindenum) {
- _formulaName = formulakindenum.find(t => t.value == itm.formulakind)?.label ?? "";
- }
- result.label = _formulaName;
- result.dscrp = itm.mtrlname;
- if (Number(itm.thickness) > 0) {
- result.dscrp += ` 厚度:${isFilterPrice(itm.thickness)}`;
- }
- result.qty = Number(itm.qty);
- if (userInfo.usermode == 0) {
- result.costamt = isFilterPrice(itm.costamt ?? 0);
- result.useqty = Number(itm.useqty ?? 0);
- result.price = isFilterPrice(itm.price ?? 0);
- }
- result.index = index;
- state.tableData.push(result);
- }
- });
- break;
- case "packag":
- console.log("packag item.data :>> ", item.data, formulakindenum);
- item.data.map(itm => {
- console.log("(Number(itm.mtrlid) > 0 |:>> ", Number(itm.mtrlid) > 0);
- console.log(
- "(N Number(itm.costamt) != 0) :>> ",
- Number(itm.costamt) != 0,
- Number(itm.costamt),
- itm.costamt,
- Number(itm?.costamt),
- Number(itm?.costamt) != 0
- );
- console.log(
- "(Number(itm.mtrlid) > 0 || Number(itm.costamt) != 0) :>> ",
- Number(itm.mtrlid) > 0 || Number(itm.costamt) != 0
- );
- if (Number(itm.mtrlid ?? 0) > 0 || Number(itm.costamt ?? 0) != 0) {
- let result: any = {};
- result.label = itm.label;
- let _formulaName = "";
- if (formulakindenum) {
- _formulaName = formulakindenum.find(t => t.value == itm.formulakind)?.label ?? "";
- }
- result.label = _formulaName;
- result.dscrp = Number(itm.mtrlid) > 0 ? itm.mtrlname : _formulaName;
- if (Number(itm.thickness) > 0) {
- result.dscrp += ` 厚度:${isFilterPrice(itm.thickness)}`;
- }
- result.qty = Number(itm.qty);
- if (userInfo.usermode == 0) {
- result.costamt = isFilterPrice(itm.costamt ?? 0);
- result.useqty = Number(itm.useqty ?? 0);
- result.price = isFilterPrice(itm.price ?? 0);
- }
- result.index = index;
- state.tableData.push(result);
- }
- });
- break;
- }
- });
- console.log("wf_retrieve_qingdan state.tableData :>> ", state.tableData);
- state.tableData.push({
- label: "地区",
- dscrp: data.area ?? "",
- qty: "",
- costamt: "",
- useqty: "",
- price: ""
- });
- state.tableData.push({
- label: "柜型",
- dscrp: data.cabinet_type ?? "",
- qty: "",
- costamt: "",
- useqty: "",
- price: ""
- });
- };
- const formatAmount = (value: any) => {
- return Number(value).toFixed(2);
- // console.log("formatAmount value :>> ", value, formatAmount3({ val: value }));
- // let t = formatAmount3({ val: value })
- // if (t % 1 === 0) {
- // console.log(t);
- // return t
- // } else {
- // return t.toFixed(2)
- // }
- };
- const getSummaries = (data: any, field) => {
- // const { columns, data } = param;
- // console.log("getSummaries param :>> ", param);
- let sums = "";
- const values = data.map(item => Number(item[field]?.toString().replace(/,/g, "")));
- if (!values.every(value => Number.isNaN(value))) {
- // console.log("values :>> ", values);
- sums = `${values.reduce((prev, curr) => {
- // console.log("prev,curr :>> ", prev, curr);
- const value = Number(curr);
- if (!Number.isNaN(value)) {
- return floatAdd(prev, curr);
- } else {
- return prev;
- }
- }, 0)}`;
- }
- return sums;
- };
- const toExcelQuote = (params: wfQingdanProps, fileName: string) => {
- const { data, mxdata } = params;
- console.log("mainData :>> ", data);
- let default_font = { size: 12, name: "宋体" };
- let default_alignment: any = {
- vertical: "middle", // 垂直居中
- horizontal: "left", // 水平居左
- wrapText: true // 自动换行
- };
- const workbook = new Exceljs.Workbook(); // 创建工作簿
- const worksheet = workbook.addWorksheet("sheet1"); // 创建工作表(sheet1)
- // 冻结前7行
- worksheet.views = [{ state: "frozen", xSplit: 0, ySplit: 7 }];
- // // 设置整个工作表的背景颜色为白色
- // worksheet.eachRow(row => {
- // // row.eachCell(cell => {
- // // cell.fill = {
- // // type: "pattern",
- // // pattern: "solid",
- // // bgColor: { argb: "FFFFFFFF" } // 白色
- // // };
- // // });
- // row.eachCell({ includeEmpty: true }, function (cell, rowNumber) {
- // cell.fill = {
- // type: "pattern",
- // pattern: "solid",
- // bgColor: { argb: "FFFFFF" } // 白色
- // };
- // });
- // });
- // 宽度设置
- const ACol = worksheet.getColumn("A");
- ACol.width = 0.78;
- const BCol = worksheet.getColumn("B");
- BCol.width = 13.55;
- BCol.key = "label";
- BCol.style = {
- font: default_font,
- alignment: { ...default_alignment, vertical: "top" }
- };
- const CCol = worksheet.getColumn("C");
- CCol.width = 49.33;
- CCol.key = "dscrp";
- CCol.style = {
- font: default_font,
- alignment: default_alignment
- };
- const DCol = worksheet.getColumn("D");
- DCol.width = 5.69;
- DCol.key = "qty";
- DCol.style = {
- font: default_font,
- alignment: { ...default_alignment, horizontal: "center" }
- };
- const ECol = worksheet.getColumn("E");
- ECol.width = 10;
- ECol.key = "costamt";
- ECol.style = {
- font: default_font,
- alignment: { ...default_alignment, horizontal: "right" }
- };
- const FCol = worksheet.getColumn("F");
- FCol.width = 13;
- FCol.key = "useqty";
- FCol.style = {
- font: default_font,
- alignment: { ...default_alignment, horizontal: "right" }
- };
- const GCol = worksheet.getColumn("G");
- GCol.width = 12.48;
- GCol.key = "price";
- GCol.style = {
- font: default_font,
- alignment: { ...default_alignment, horizontal: "right" }
- };
- //======================================= 第一行 =================================
- // 合并A1到L1的单元格 (大标题)
- worksheet.mergeCells("B1:F1");
- const cellB1 = worksheet.getCell("B1");
- let foreign_cost = formatAmount(data?.foreign_cost);
- let currency = Number(data?.moneyrate) != 1 ? "美金" : "人民币";
- cellB1.value = `报价日期:${formatTime(data.createtime, "{y}-{m}-{d}", false)} 报价金额:${foreign_cost}${currency}报价清单`;
- // 设置第一行的单元格样式
- cellB1.font = { size: 15, bold: true, name: "宋体" };
- cellB1.alignment = default_alignment;
- worksheet.getRow(1).height = 26; // 设置行高
- //======================================= 第二行 =================================
- worksheet.mergeCells("B2:F2");
- const cellB2 = worksheet.getCell("B2");
- cellB2.value = `财务底价:${formatAmount(data.nottax_dept_cost)} 佣金点数:${formatAmount(
- data.commission
- )} 税率:${formatAmount(data.taxrate)} `;
- cellB2.font = default_font;
- cellB2.alignment = default_alignment;
- worksheet.getRow(2).height = 39;
- //======================================= 第三行 =================================
- worksheet.mergeCells("B3:F3");
- const cellB3 = worksheet.getCell("B3");
- cellB3.value = `额外点数:${formatAmount(data.other_rate)} 额外费用:${formatAmount(
- data.extras_cost
- )} 汇率:${formatAmount(data.moneyrate)} `;
- cellB3.font = default_font;
- cellB3.alignment = default_alignment;
- worksheet.getRow(3).height = 18;
- //======================================= 第四行 =================================
- worksheet.mergeCells("B4:F4");
- const cellB4 = worksheet.getCell("B4");
- cellB4.value = `款式费用:${formatAmount(data.hrcost)} 边带费用:${formatAmount(
- data.biandaicost
- )} 总成本:${formatAmount(data.total_cost)} `;
- cellB4.font = default_font;
- cellB4.alignment = default_alignment;
- worksheet.getRow(4).height = 18;
- //======================================= 第五行 =================================
- worksheet.mergeCells("B5:F5");
- const cellB5 = worksheet.getCell("B5");
- cellB5.value = `工厂利润率${formatAmount(data.profitrate)} 工艺点数:${formatAmount(
- data.profitrate_point
- )} 不含税出厂价:${formatAmount(data.nottax_factory_cost)} `;
- cellB5.font = default_font;
- cellB5.alignment = default_alignment;
- worksheet.getRow(5).height = 18;
- //======================================= 第六行 =================================
- worksheet.mergeCells("B6:F6");
- const cellB6 = worksheet.getCell("B6");
- cellB6.value = `部门利润率:${formatAmount(data.dept_profitrate)} FOB费用:${formatAmount(
- data.fob
- )} 部门售价:${formatAmount(data.nottax_dept_cost)} `;
- cellB6.font = default_font;
- cellB6.alignment = default_alignment;
- worksheet.getRow(6).height = 18;
- //======================================= 第七行 =================================
- worksheet.mergeCells("B7:F7");
- const cellB7 = worksheet.getCell("B7");
- cellB7.value = `让利点数:${formatAmount(data.dept_profitrate_rangli)} 海绵款扣点:${formatAmount(data.haimian_point)} `;
- cellB7.font = default_font;
- cellB7.alignment = default_alignment;
- worksheet.getRow(7).height = 18;
- //======================================= 第八行 =================================
- wf_retrieve_qingdan(params);
- const headerRows = worksheet.insertRow(
- 8,
- { label: "项目", dscrp: "内容", qty: "数量", costamt: "金额", useqty: "用量", price: "单价" },
- "n"
- );
- const insertedRows = worksheet.insertRows(9, state.tableData, "n");
- // const cellBSum = worksheet.getCell(`B${9 + state.tableData.length}`);
- // cellBSum.value = "材料合计:";
- // const cellESum = worksheet.getCell(`E${9 + state.tableData.length}`);
- // cellESum.value = getSummaries(state.tableData, "costamt");
- const footerRows = worksheet.insertRow(
- 9 + state.tableData.length,
- { label: "材料合计:", dscrp: "", qty: "", costamt: getSummaries(state.tableData, "costamt"), useqty: "", price: "" },
- "n"
- );
- // 设置单元格边框
- let default_border: any = {
- top: { style: "thin", color: { argb: "FF000000" } },
- left: { style: "thin", color: { argb: "FF000000" } },
- bottom: { style: "thin", color: { argb: "FF000000" } },
- right: { style: "thin", color: { argb: "FF000000" } }
- };
- headerRows.eachCell(cell => {
- cell.border = default_border;
- });
- footerRows.eachCell(cell => {
- cell.border = default_border;
- });
- insertedRows.map(row => {
- row.eachCell(cell => {
- cell.border = default_border;
- });
- });
- // label列内容相同时合并单元格
- let same = 0;
- state.tableData.map((t, i) => {
- // label列内容相同的时候,多行合并单元格
- if (i > 0 && t.label === state.tableData[i - 1].label) {
- same++;
- } else {
- if (same > 0) {
- worksheet.mergeCells(`B${9 + i - 1}:B${9 + i - 1 - same}`);
- }
- same = 0;
- }
- });
- // insertedRows.values = {
- // fill: {
- // type: 'pattern',
- // pattern:'darkVertical',
- // fgColor:{argb:'FFFF0000'}
- // }
- // };
- // let rows = [];
- // state.tableData.map(t => {
- // let arr = [];
- // for (const key in t) {
- // arr.push(t[key]);
- // }
- // rows.push(arr);
- // });
- // // 将表格添加到工作表
- // worksheet.addTable({
- // name: "MyTable",
- // ref: "B8",
- // style: {
- // theme: "",
- // },
- // headerRow: true,
- // totalsRow: true,
- // columns: [
- // { name: "项目", totalsRowLabel: "材料合计:" },
- // { name: "内容" },
- // { name: "数量" },
- // { name: "金额", totalsRowFunction: "sum", },
- // { name: "用量" },
- // { name: "单价" }
- // ],
- // rows: rows
- // });
- // 下载工作簿
- workbook.xlsx.writeBuffer().then(buffer => {
- saveAs(new Blob([buffer], { type: "application/octet-stream" }), fileName + ".xlsx");
- });
- };
- return {
- ...toRefs(state),
- wf_retrieve_qingdan,
- toExcelQuote
- };
- };
|