From 7339b8a9ccf09e6262cb71ac6c9b724cdfa6fe22 Mon Sep 17 00:00:00 2001 From: zhangwei <1504152376@qq.com> Date: 星期五, 15 八月 2025 16:43:32 +0800 Subject: [PATCH] 'pdf预览'’’ --- src/views/system/dept/utils/hook.tsx | 217 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 181 insertions(+), 36 deletions(-) diff --git a/src/views/system/dept/utils/hook.tsx b/src/views/system/dept/utils/hook.tsx index 70bc46e..7e7a9d7 100644 --- a/src/views/system/dept/utils/hook.tsx +++ b/src/views/system/dept/utils/hook.tsx @@ -1,4 +1,4 @@ -import dayjs from "dayjs"; +// import dayjs from "dayjs"; import editForm from "../form.vue"; import { handleTree } from "@/utils/tree"; import { message } from "@/utils/message"; @@ -12,15 +12,24 @@ getDaimaleixingList, caigourenAdd, caigourenUpdate, - caigourenDelete + caigourenDelete, + caigourenBatchDelete } from "@/api/item/index"; -import { usePublicHooks } from "../../hooks"; +// import { usePublicHooks } from "../../hooks"; import { addDialog } from "@/components/ReDialog"; -import { reactive, ref, onMounted, h } from "vue"; -import type { FormItemProps } from "../utils/types"; -import { cloneDeep, isAllEmpty, deviceDetection } from "@pureadmin/utils"; +import { type Ref, reactive, ref, onMounted, h } from "vue"; +import type { FormItemProps } from "./types"; +import { cloneDeep, deviceDetection, getKeyList } from "@pureadmin/utils"; +// import { useUserStoreHook } from "@/store/modules/user"; +import type { PaginationProps } from "@pureadmin/table"; -export function useDept() { +import pdfPreview from "../../component/pdfPreview.vue"; +// const nowRole = computed(() => { +// return useUserStoreHook().nowRole; +// }); +const selectedNum = ref(0); + +export function useDept(tableRef: Ref) { const form = reactive({ // 鏂板鏃ユ湡鑼冨洿锛屽彲涓� null锛岀被鍨嬩负鏁扮粍 createDateRange: null, @@ -38,6 +47,7 @@ projectName: null, // 浠g悊鏈烘瀯鍚嶇О锛屽彲涓� null锛岀被鍨嬩负瀛楃涓� dailijigoumingcheng: null, + caigourenmingcheng: null, // 涓爣渚涘簲鍟嗗鍚嶏紝鍙负 null锛岀被鍨嬩负瀛楃涓� zhongbiaoName: null, // 涓撳濮撳悕锛屽彲涓� null锛岀被鍨嬩负瀛楃涓� @@ -88,7 +98,7 @@ const formRef = ref(); const dataList = ref([]); const loading = ref(true); - const { tagStyle } = usePublicHooks(); + // const { tagStyle } = usePublicHooks(); const getOrderStatus = row => { const res = state.orderStatusList.find(item => { return row.orderStatus == item.status; @@ -97,21 +107,27 @@ }; const columns: TableColumnList = [ { + label: "鍕鹃�夊垪", // 濡傛灉闇�瑕佽〃鏍煎閫夛紝姝ゅlabel蹇呴』璁剧疆 + type: "selection", + fixed: "left", + reserveSelection: true // 鏁版嵁鍒锋柊鍚庝繚鐣欓�夐」 + }, + { + label: "閲囪喘浜�", + prop: "caigourenmingcheng", + minWidth: 70 + }, + { label: "椤圭洰鍚嶇О", prop: "projectName", width: 180, align: "left" }, { - label: "浠g悊鏈烘瀯", - prop: "dailijigoumingcheng", - minWidth: 70 - }, - { label: "椤圭洰杩涘害", prop: "orderStatus", minWidth: 70, - cellRenderer: ({ row, props }) => getOrderStatus(row) + cellRenderer: ({ row }) => getOrderStatus(row) }, { label: "鎶ュ悕璐�", @@ -126,7 +142,7 @@ { label: "涓爣渚涘簲鍟�", prop: "zhongbiaoName", - minWidth: 70 + minWidth: 180 }, { label: "璇勫涓撳", @@ -137,15 +153,13 @@ label: "璐ㄧ枒", prop: "zhiyi", minWidth: 100, - cellRenderer: ({ row, props }) => ( - <span>{row.status === 1 ? "鏈�" : "鏃�"}</span> - ) + cellRenderer: ({ row }) => <span>{row.status === 1 ? "鏈�" : "鏃�"}</span> }, { label: "鎶曡瘔", prop: "tousu", minWidth: 100, - cellRenderer: ({ row, props }) => ( + cellRenderer: ({ row }) => ( // <el-tag size={props.size} style={tagStyle.value(row.status)}> <span>{row.status === 1 ? "鏈�" : "鏃�"}</span> // </el-tag> @@ -154,13 +168,115 @@ { label: "鎿嶄綔", fixed: "right", - width: 210, + width: 80, + slot: "operation" + } + ]; + const CGRcolumns: TableColumnList = [ + { + label: "鍕鹃�夊垪", // 濡傛灉闇�瑕佽〃鏍煎閫夛紝姝ゅlabel蹇呴』璁剧疆 + type: "selection", + fixed: "left", + reserveSelection: true // 鏁版嵁鍒锋柊鍚庝繚鐣欓�夐」 + }, + { + label: "浠g悊鏈烘瀯", + prop: "dailijigoumingcheng", + minWidth: 70 + }, + { + label: "椤圭洰鍚嶇О", + prop: "projectName", + width: 180, + align: "left" + }, + { + label: "椤圭洰杩涘害", + prop: "orderStatus", + minWidth: 70, + cellRenderer: ({ row }) => getOrderStatus(row) + }, + { + label: "鎶ュ悕璐�", + prop: "baomingfei", + minWidth: 70 + }, + { + label: "鎶曟爣淇濊瘉閲�", + prop: "toubiaobaozhengjin", + minWidth: 70 + }, + { + label: "涓爣渚涘簲鍟�", + prop: "zhongbiaoName", + minWidth: 180 + }, + { + label: "璇勫涓撳", + prop: "zhuanjiaName", + minWidth: 70 + }, + { + label: "璐ㄧ枒", + prop: "zhiyi", + minWidth: 100, + cellRenderer: ({ row }) => <span>{row.status === 1 ? "鏈�" : "鏃�"}</span> + }, + { + label: "鎶曡瘔", + prop: "tousu", + minWidth: 100, + cellRenderer: ({ row }) => ( + // <el-tag size={props.size} style={tagStyle.value(row.status)}> + <span>{row.status === 1 ? "鏈�" : "鏃�"}</span> + // </el-tag> + ) + }, + { + label: "鎿嶄綔", + fixed: "right", + width: 80, slot: "operation" } ]; + /** 褰揅heckBox閫夋嫨椤瑰彂鐢熷彉鍖栨椂浼氳Е鍙戣浜嬩欢 */ function handleSelectionChange(val) { - console.log("handleSelectionChange", val); + selectedNum.value = val.length; + // 閲嶇疆琛ㄦ牸楂樺害 + tableRef.value.setAdaptive(); + } + /** 鍙栨秷閫夋嫨 */ + function onSelectionCancel() { + selectedNum.value = 0; + // 鐢ㄤ簬澶氶�夎〃鏍硷紝娓呯┖鐢ㄦ埛鐨勯�夋嫨 + tableRef.value.getTableRef().clearSelection(); + } + /** 鎵归噺鍒犻櫎 */ + async function onbatchDel() { + // 杩斿洖褰撳墠閫変腑鐨勮 + const curSelected = tableRef.value.getTableRef().getSelectionRows(); + const data = []; + curSelected.forEach(item => { + data.push({ id: item.id }); + }); + const res = await caigourenBatchDelete(data); + if (res.code == "200") { + // 鎺ヤ笅鏉ユ牴鎹疄闄呬笟鍔★紝閫氳繃閫変腑琛岀殑鏌愰」鏁版嵁锛屾瘮濡備笅闈㈢殑id锛岃皟鐢ㄦ帴鍙h繘琛屾壒閲忓垹闄� + message( + `宸插垹闄ら」鐩悕绉颁负 ${getKeyList(curSelected, "projectName")} 鐨勬暟鎹甡, + { + type: "success" + } + ); + onSearch(); + } else { + message(res.message, { + type: "error" + }); + } + tableRef.value.getTableRef().clearSelection(); + onSearch(); } function handleSizeChange(val: number) { console.log(`${val} items per page`); @@ -171,9 +287,22 @@ } function resetForm(formEl) { - if (!formEl) return; - formEl.resetFields(); - onSearch(); + // if (!formEl) return; + // formEl.resetFields(); + // onSearch(); + + addDialog({ + title: `棰勮pdf`, + props: {}, + width: "60%", + draggable: true, + fullscreen: deviceDetection(), + fullscreenIcon: true, + sureBtnLoading: true, + closeOnClickModal: false, + contentRenderer: () => h(pdfPreview, { ref: formRef, formInline: null }) + // jsx 璇硶 锛堟敞鎰忓湪.vue鏂囦欢鍚敤jsx璇硶锛岄渶瑕佸湪script寮�鍚痩ang="tsx"锛� + }); } const checkboxAsRadio = data => { if (data.length > 1) { @@ -181,11 +310,11 @@ } }; async function onSearch() { - loading.value = true; const obj = cloneDeep(form); obj.tousu = obj.tousu.join(""); obj.zhiyi = obj.zhiyi.join(""); - obj.xingzhengquyu = obj.xingzhengquyu.join(""); + obj.xingzhengquyu = obj.xingzhengquyu ? obj.xingzhengquyu.join("") : ""; + loading.value = true; const { result } = await zhaobiaoPageOrder(obj); // 杩欓噷鏄繑鍥炰竴缁存暟缁勭粨鏋勶紝鍓嶇鑷澶勭悊鎴愭爲缁撴瀯锛岃繑鍥炴牸寮忚姹傦細鍞竴id鍔犵埗鑺傜偣parentId锛宲arentId鍙栫埗鑺傜偣id const newData = result.items; loading.value = false; @@ -193,7 +322,7 @@ pagination.pageSize = result.pageSize; pagination.currentPage = result.page; // if (!isAllEmpty(form.name)) { - // // 鍓嶇鎼滅储閮ㄩ棬鍚嶇О + // // 鍓嶇鎼滅储椤圭洰鍚嶇О // newData = newData.filter(item => item.name.includes(form.name)); // } // if (!isAllEmpty(form.status)) { @@ -204,7 +333,7 @@ } function formatHigherDeptOptions(treeList) { - // 鏍规嵁杩斿洖鏁版嵁鐨剆tatus瀛楁鍊煎垽鏂拷鍔犳槸鍚︾鐢╠isabled瀛楁锛岃繑鍥炲鐞嗗悗鐨勬爲缁撴瀯锛岀敤浜庝笂绾ч儴闂ㄧ骇鑱旈�夋嫨鍣ㄧ殑灞曠ず锛堝疄闄呭紑鍙戜腑涔熸槸濡傛锛屼笉鍙兘鍓嶇闇�瑕佺殑姣忎釜瀛楁鍚庣閮戒細杩斿洖锛岃繖鏃堕渶瑕佸墠绔嚜琛屾牴鎹悗绔繑鍥炵殑鏌愪簺瀛楁鍋氶�昏緫澶勭悊锛� + // 鏍规嵁杩斿洖鏁版嵁鐨剆tatus瀛楁鍊煎垽鏂拷鍔犳槸鍚︾鐢╠isabled瀛楁锛岃繑鍥炲鐞嗗悗鐨勬爲缁撴瀯锛岀敤浜庝笂绾ч」鐩骇鑱旈�夋嫨鍣ㄧ殑灞曠ず锛堝疄闄呭紑鍙戜腑涔熸槸濡傛锛屼笉鍙兘鍓嶇闇�瑕佺殑姣忎釜瀛楁鍚庣閮戒細杩斿洖锛岃繖鏃堕渶瑕佸墠绔嚜琛屾牴鎹悗绔繑鍥炵殑鏌愪簺瀛楁鍋氶�昏緫澶勭悊锛� if (!treeList || !treeList.length) return; const newTreeList = []; for (let i = 0; i < treeList.length; i++) { @@ -221,6 +350,7 @@ props: { formInline: { higherDeptOptions: formatHigherDeptOptions(cloneDeep(dataList.value)), + id: row?.id ?? "", projectCode: row?.projectCode ?? "", // 椤圭洰缂栧彿锛堝繀濉級 projectName: row?.projectName ?? "", // 椤圭洰鍚嶇О锛堝繀濉級 hangyepinmu: row?.hangyepinmu ?? null, // 琛屼笟鍝佺洰锛堝彲閫夛級 @@ -231,8 +361,8 @@ toubiaobaozhengjin: row?.toubiaobaozhengjin ?? null, // 鎶曟爣淇濊瘉閲戯紙鍙�夛級 lianhetitoubiao: row?.lianhetitoubiao ?? null, // 鑱斿悎浣撴姇鏍囷紙鍙�夛級 kaibiaofangshi: row?.kaibiaofangshi ?? null, // 寮�鏍囨柟寮忥紙鍙�夛級 - shifoufenbao: row?.shifoufenbao ?? false, // 鏄惁鍒嗗寘锛堝彲閫夛級 - shifoutuisongxuanchuan: row?.shifoutuisongxuanchuan ?? true, // 鏄惁鎺ㄩ�佸浼狅紙鍙�夛級 + shifoufenbao: row?.shifoufenbao ?? "false", // 鏄惁鍒嗗寘锛堝彲閫夛級 + shifoutuisongxuanchuan: row?.shifoutuisongxuanchuan ?? "true", // 鏄惁鎺ㄩ�佸浼狅紙鍙�夛級 caigourenmingcheng: row?.caigourenmingcheng ?? null, // 閲囪喘浜哄悕绉帮紙鍙�夛級 xingzhengquyu: row?.xingzhengquyu.split(",") ?? [], // 琛屾斂鍖哄煙锛堝彲閫夛級 xingzhengquyuName: row?.xingzhengquyuName ?? null, // 琛屾斂鍖哄煙鍚嶇О锛堝彲閫夛級 @@ -258,9 +388,10 @@ draggable: true, fullscreen: deviceDetection(), fullscreenIcon: true, + sureBtnLoading: true, closeOnClickModal: false, contentRenderer: () => h(editForm, { ref: formRef, formInline: null }), - beforeSure: (done, { options }) => { + beforeSure: (done, { options, closeLoading }) => { const FormRef = formRef.value.getRef(); const curData = cloneDeep(options.props.formInline as FormItemProps); async function chores() { @@ -279,14 +410,14 @@ done(); // 鍏抽棴寮规 onSearch(); // 鍒锋柊琛ㄦ牸鏁版嵁 } else { + closeLoading(); message(res.message, { type: "error" }); } } - FormRef.validate(valid => { + FormRef.validate((valid, obj) => { if (valid) { - console.log("curData", curData); // 琛ㄥ崟瑙勫垯鏍¢獙閫氳繃 if (title === "鏂板") { // 瀹為檯寮�鍙戝厛璋冪敤鏂板鎺ュ彛锛屽啀杩涜涓嬮潰鎿嶄綔 @@ -295,6 +426,16 @@ // 瀹為檯寮�鍙戝厛璋冪敤淇敼鎺ュ彛锛屽啀杩涜涓嬮潰鎿嶄綔 chores(); } + } else { + closeLoading(); + const fail = []; + for (const key in obj) { + fail.push(obj[key][0].message); + } + message(fail[0], { + type: "warning" + }); + return false; } }); } @@ -329,19 +470,23 @@ state, loading, columns, + CGRcolumns, dataList, + selectedNum, /** 鎼滅储 */ onSearch, /** 閲嶇疆 */ resetForm, - /** 鏂板銆佷慨鏀归儴闂� */ + /** 鏂板銆佷慨鏀归」鐩� */ openDialog, - /** 鍒犻櫎閮ㄩ棬 */ + /** 鍒犻櫎椤圭洰 */ handleDelete, handleSelectionChange, handleSizeChange, handleCurrentChange, pagination, - checkboxAsRadio + checkboxAsRadio, + onSelectionCancel, + onbatchDel }; } -- Gitblit v1.9.1