From 23a2fff92f73b9759849a8016601a6817d7470b1 Mon Sep 17 00:00:00 2001 From: zhangwei <1504152376@qq.com> Date: 星期一, 25 八月 2025 17:30:30 +0800 Subject: [PATCH] - --- src/views/system/dept/detail.vue | 85 +++++++---- src/views/system/dept/index.vue | 17 +- src/components/ReUploadZ/index.vue | 1 src/views/system/component/pdfPreview.vue | 9 + src/api/item/index.ts | 26 +++ src/views/system/aboutItem/form.vue | 2 /dev/null | 0 vite.config.ts | 3 src/views/system/dept/uploadform.vue | 67 ++++++++ src/views/system/dept/utils/hook.tsx | 63 +++++--- src/views/system/dept/utils/types.ts | 5 src/views/system/dept/utils/detail.tsx | 88 ++++++++++++ src/views/system/dept/form.vue | 42 ++++- src/api/util.ts | 3 14 files changed, 321 insertions(+), 90 deletions(-) diff --git a/src/api/item/index.ts b/src/api/item/index.ts index b634c48..143fe1a 100644 --- a/src/api/item/index.ts +++ b/src/api/item/index.ts @@ -110,6 +110,21 @@ }); }; +// 鎷涙爣浠g悊鍒嗛〉鏌ヨ闈炴斂搴滆鍗曞鐞� +export const findWechatOpenId = (data?: object) => { + return http.request<PageResult>("post", baseUrlApi(""), { + data + }); +}; + +// 閲囪喘浠g悊浜哄鍔犻潪鏀垮簻璁㈠崟澶勭悊鑾峰彇鑱旂郴鏂瑰紡 +export const addgetcontact = () => { + return http.request<Result>( + "post", + baseUrlApi("/api/tenderOrder/addgetcontact") + ); +}; + // 閲囪喘浠g悊浜哄鍔犻潪鏀垮簻璁㈠崟澶勭悊 export const caigourenAdd = (data?: object) => { return http.request<Result>("post", baseUrlApi("/api/tenderOrder/add"), { @@ -117,6 +132,17 @@ }); }; +// 閲囪喘浠g悊浜哄鍔犻潪鏀垮簻璁㈠崟澶勭悊 +export const updateTittle = (data?: object) => { + return http.request<Result>( + "post", + baseUrlApi("/api/tenderOrder/updateTittle"), + { + data + } + ); +}; + // 閲囪喘浠g悊浜烘洿鏂伴潪鏀垮簻璁㈠崟澶勭悊 export const caigourenUpdate = (data?: object) => { return http.request<Result>("post", baseUrlApi("/api/tenderOrder/update"), { diff --git a/src/api/util.ts b/src/api/util.ts index 1fc9504..c64c0cd 100644 --- a/src/api/util.ts +++ b/src/api/util.ts @@ -2,7 +2,8 @@ export const baseUrlApi = (url: string) => process.env.NODE_ENV === "development" ? `/api${url}` - : `192.168.18.52:5005${url}`; + : `192.168.18.15:5005${url}`; +// : `192.168.18.52:5005${url}`; export const uploadUrlApi = (url: string) => process.env.NODE_ENV === "development" ? `/oss${url}` diff --git a/src/components/ReUploadZ/index.vue b/src/components/ReUploadZ/index.vue index 5742721..9439832 100644 --- a/src/components/ReUploadZ/index.vue +++ b/src/components/ReUploadZ/index.vue @@ -64,6 +64,7 @@ newFormInline.value.biangengwenjian = path; } else { newFormInline.value.zhaobiaowenjian = path; + newFormInline.value.ZhaobiaowenjianName = file.name; } }); } diff --git a/src/views/system/aboutItem/form.vue b/src/views/system/aboutItem/form.vue index d189790..2ae6d95 100644 --- a/src/views/system/aboutItem/form.vue +++ b/src/views/system/aboutItem/form.vue @@ -21,7 +21,7 @@ baomingfei: null, // 鎶ュ悕璐癸紙鍙�夛級 toubiaobaozhengjin: null, // 鎶曟爣淇濊瘉閲戯紙鍙�夛級 lianhetitoubiao: null, // 鑱斿悎浣撴姇鏍囷紙鍙�夛級 - kaibiaofangshi: null, // 寮�鏍囨柟寮忥紙鍙�夛級 + kaibiaofangshi: "绾歌川鏍�", // 寮�鏍囨柟寮忥紙鍙�夛級 shifoufenbao: "false", // 鏄惁鍒嗗寘锛堝彲閫夛級 shifoutuisongxuanchuan: "true", // 鏄惁鎺ㄩ�佸浼狅紙鍙�夛級 caigourenmingcheng: null, // 閲囪喘浜哄悕绉帮紙鍙�夛級 diff --git a/src/views/system/component/pdfPreview.vue b/src/views/system/component/pdfPreview.vue index 48748a0..54cdfa1 100644 --- a/src/views/system/component/pdfPreview.vue +++ b/src/views/system/component/pdfPreview.vue @@ -15,8 +15,13 @@ </template> <script setup lang="ts"> -import { ref } from "vue"; -import pdfSrc from "./鍥涘窛鎷涙爣鎶曟爣浜ゆ槗鏈嶅姟骞冲彴鐢ㄦ埛鎿嶄綔鎵嬪唽锛堜唬鐞嗘満鏋勶級.pdf"; +import { ref, defineProps } from "vue"; +defineProps({ + pdfSrc: { + type: String, + default: "" + } +}); let isLoading = ref(true); const iframeLoaded = () => { console.log("jjjjjj"); diff --git "a/src/views/system/component/\345\233\233\345\267\235\346\213\233\346\240\207\346\212\225\346\240\207\344\272\244\346\230\223\346\234\215\345\212\241\345\271\263\345\217\260\347\224\250\346\210\267\346\223\215\344\275\234\346\211\213\345\206\214\357\274\210\344\273\243\347\220\206\346\234\272\346\236\204\357\274\211.pdf" "b/src/views/system/component/\345\233\233\345\267\235\346\213\233\346\240\207\346\212\225\346\240\207\344\272\244\346\230\223\346\234\215\345\212\241\345\271\263\345\217\260\347\224\250\346\210\267\346\223\215\344\275\234\346\211\213\345\206\214\357\274\210\344\273\243\347\220\206\346\234\272\346\236\204\357\274\211.pdf" deleted file mode 100644 index 786d820..0000000 --- "a/src/views/system/component/\345\233\233\345\267\235\346\213\233\346\240\207\346\212\225\346\240\207\344\272\244\346\230\223\346\234\215\345\212\241\345\271\263\345\217\260\347\224\250\346\210\267\346\223\215\344\275\234\346\211\213\345\206\214\357\274\210\344\273\243\347\220\206\346\234\272\346\236\204\357\274\211.pdf" +++ /dev/null Binary files differ diff --git a/src/views/system/dept/detail.vue b/src/views/system/dept/detail.vue index ec82377..2cb6698 100644 --- a/src/views/system/dept/detail.vue +++ b/src/views/system/dept/detail.vue @@ -1,11 +1,13 @@ <script setup lang="tsx"> -import { ref, reactive, onMounted, computed, PropType } from "vue"; +import { ref, reactive, onMounted, computed, PropType, h } from "vue"; import { useRenderIcon } from "@/components/ReIcon/src/hooks"; import { useDept } from "./utils/hook"; import { useDetail } from "./utils/detail"; import { getTenderOrderDetail } from "@/api/item/index"; const isLoading = ref(false); import { addDialog } from "@/components/ReDialog"; +import pdfPreview from "@/views/system/component/pdfPreview.vue"; +import { deviceDetection } from "@pureadmin/utils"; interface Emits { (e: "backListPage"): void; } @@ -17,7 +19,7 @@ import IconParkSolidBack from "~icons/icon-park-solid/back"; const { openDialog } = useDept(ref({})); -const { openUploadDialog, state } = useDetail(); +const { openUploadDialog, state, changeDialog } = useDetail(); defineOptions({ name: "itemdetail" }); @@ -30,27 +32,16 @@ }; const previewPdf = pdfUrl => { addDialog({ - width: "80%", - title: "纭淇℃伅", - contentRenderer: () => ( - <iframe - type="application/pdf" - src={pdfUrl} - width="800" - height="600" - ></iframe> - ), // jsx 璇硶 锛堟敞鎰忓湪.vue鏂囦欢鍚敤jsx璇硶锛岄渶瑕佸湪script寮�鍚痩ang="tsx"锛� - closeCallBack: ({ options, args }) => { - // options.props 鏄搷搴斿紡鐨� - // const { formInline } = options.props as FormProps; - // const text = `濮撳悕锛�${formInline.user} 鍩庡競锛�${formInline.region}`; - if (args?.command === "cancel") { - // 鎮ㄧ偣鍑讳簡鍙栨秷鎸夐挳 - // active.value -= 1; - } else if (args?.command === "sure") { - } else { - } - } + title: `棰勮pdf`, + props: {}, + width: "60%", + draggable: true, + fullscreen: deviceDetection(), + fullscreenIcon: true, + sureBtnLoading: true, + closeOnClickModal: false, + contentRenderer: () => h(pdfPreview, { pdfSrc: pdfUrl }) + // jsx 璇硶 锛堟敞鎰忓湪.vue鏂囦欢鍚敤jsx璇硶锛岄渶瑕佸湪script寮�鍚痩ang="tsx"锛� }); }; </script> @@ -80,7 +71,12 @@ </div> </template> <div> - <el-descriptions class="margin-top" :column="3" border> + <el-descriptions + class="margin-top" + :column="3" + border + label-width="120" + > <el-descriptions-item label="椤圭洰缂栧彿"> {{ state.nowInfo.projectCode }} </el-descriptions-item> @@ -93,9 +89,9 @@ <el-descriptions-item label="鑱斿悎浣撴姇鏍�"> {{ state.nowInfo.lianhetitoubiao }} </el-descriptions-item> - <!-- <el-descriptions-item label="Remarks"> + <el-descriptions-item label="寮�鏍囨柟寮�"> + {{ state.nowInfo.kaibiaofangshi }} </el-descriptions-item> - <el-descriptions-item label="Address" /> --> </el-descriptions> </div> </el-card> @@ -114,11 +110,18 @@ <div> <el-form label-width="auto" style="max-width: 1000px"> <el-form-item label="椤圭洰淇℃伅锛�"> - 鎶曟爣鎶ュ悕寮�濮嬫椂闂达細 - {{ state.nowInfo.toubiaoStartDate ?? "鏆傛棤" }} - 鎶曟爣鎶ュ悕鎴鏃堕棿锛� - {{ state.nowInfo.toubiaoEndDate }} - 寮�鏍囨椂闂达細{{ state.nowInfo.kaibiaoDate }} + <span class="mr-4"> + 鎶曟爣鎶ュ悕寮�濮嬫椂闂达細{{ + state.nowInfo.toubiaoStartDate ?? "鏆傛棤" + }} + </span> + <span class="mr-4"> + 鎶曟爣鎶ュ悕鎴鏃堕棿锛� + {{ state.nowInfo.toubiaoEndDate ?? "鏆傛棤" }} + </span> + <span class="mr-4"> + 寮�鏍囨椂闂达細{{ state.nowInfo.kaibiaoDate ?? "鏆傛棤" }} + </span> </el-form-item> <el-form-item label="涓婁紶鍏憡锛�"> <el-button @@ -126,7 +129,7 @@ type="primary" plain size="small" - @click="openUploadDialog('涓婁紶')" + @click="openUploadDialog('涓婁紶', state.nowInfo)" > 涓婁紶鍏憡 </el-button> @@ -152,7 +155,23 @@ > 鐐瑰嚮棰勮 </el-button> - <el-button type="primary" plain size="small"> + <el-button + v-if="state.nowInfo?.changeOrder" + type="primary" + plain + size="small" + @click=" + previewPdf(state.nowInfo.changeOrder.biangengwenjian) + " + > + 鐐瑰嚮棰勮鍙樻洿鍏憡 + </el-button> + <el-button + type="primary" + plain + size="small" + @click="changeDialog('涓婁紶鍙樻洿', state.nowInfo)" + > 淇敼鏍囬 </el-button> </div> diff --git a/src/views/system/dept/form.vue b/src/views/system/dept/form.vue index 4c55292..15fe259 100644 --- a/src/views/system/dept/form.vue +++ b/src/views/system/dept/form.vue @@ -8,7 +8,7 @@ import { Operation } from "@element-plus/icons-vue"; import { getCaigoufangshiList } from "@/api/item/index"; -const { state } = useDept(ref({})); +const { state, nowRole } = useDept(ref({})); const props = withDefaults(defineProps<FormProps>(), { formInline: () => ({ id: "", @@ -22,7 +22,7 @@ baomingfei: null, // 鎶ュ悕璐癸紙鍙�夛級 toubiaobaozhengjin: null, // 鎶曟爣淇濊瘉閲戯紙鍙�夛級 lianhetitoubiao: null, // 鑱斿悎浣撴姇鏍囷紙鍙�夛級 - kaibiaofangshi: null, // 寮�鏍囨柟寮忥紙鍙�夛級 + kaibiaofangshi: "绾歌川鏍�", // 寮�鏍囨柟寮忥紙鍙�夛級 shifoufenbao: "false", // 鏄惁鍒嗗寘锛堝彲閫夛級 shifoutuisongxuanchuan: "true", // 鏄惁鎺ㄩ�佸浼狅紙鍙�夛級 caigourenmingcheng: null, // 閲囪喘浜哄悕绉帮紙鍙�夛級 @@ -96,10 +96,9 @@ </el-form-item> </re-col> <re-col :value="6" :xs="24" :sm="24"> - <el-form-item label="椤圭洰缂栧彿"> + <el-form-item label="椤圭洰缂栧彿" prop="projectCode"> <el-input v-model="newFormInline.projectCode" - clearable placeholder="璇疯緭鍏ラ」鐩紪鍙�" /> @@ -353,7 +352,10 @@ </p> </re-col> <re-col :value="6" :xs="24" :sm="24"> - <el-form-item label="浠g悊鏈烘瀯鍚嶇О" prop="dailijigoumingcheng"> + <el-form-item + label="浠g悊鏈烘瀯鍚嶇О" + :prop="nowRole.code == 'DLJG' ? 'dailijigoumingcheng' : ''" + > <el-input v-model="newFormInline.dailijigoumingcheng" clearable @@ -362,7 +364,10 @@ </el-form-item> </re-col> <re-col :value="6" :xs="24" :sm="24"> - <el-form-item label="鑱旂郴浜�" prop="dailiLianxiren"> + <el-form-item + label="鑱旂郴浜�" + :prop="nowRole.code == 'DLJG' ? 'dailiLianxiren' : ''" + > <el-input v-model="newFormInline.dailiLianxiren" clearable @@ -371,7 +376,10 @@ </el-form-item> </re-col> <re-col :value="6" :xs="24" :sm="24"> - <el-form-item label="鑱旂郴鐢佃瘽" prop="dailiLianxidianhua"> + <el-form-item + label="鑱旂郴鐢佃瘽" + :prop="nowRole.code == 'DLJG' ? 'dailiLianxidianhua' : ''" + > <el-input v-model="newFormInline.dailiLianxidianhua" clearable @@ -380,7 +388,10 @@ </el-form-item> </re-col> <re-col :value="6" :xs="24" :sm="24"> - <el-form-item label="鐢靛瓙閭" prop="dailiDianziyoujian"> + <el-form-item + label="鐢靛瓙閭" + :prop="nowRole.code == 'DLJG' ? 'dailiDianziyoujian' : ''" + > <el-input v-model="newFormInline.dailiDianziyoujian" clearable @@ -389,7 +400,10 @@ </el-form-item> </re-col> <re-col :value="12" :xs="24" :sm="24"> - <el-form-item label="閫氫俊鍦板潃" prop="dailiTongxindizhi"> + <el-form-item + label="閫氫俊鍦板潃" + :prop="nowRole.code == 'DLJG' ? 'dailiTongxindizhi' : ''" + > <el-input v-model="newFormInline.dailiTongxindizhi" clearable @@ -398,7 +412,10 @@ </el-form-item> </re-col> <re-col :value="6" :xs="24" :sm="24"> - <el-form-item label="椤圭洰缁忕悊" prop="dailiXiangmujingli"> + <el-form-item + label="椤圭洰缁忕悊" + :prop="nowRole.code == 'DLJG' ? 'dailiXiangmujingli' : ''" + > <el-input v-model="newFormInline.dailiXiangmujingli" clearable @@ -407,7 +424,10 @@ </el-form-item> </re-col> <re-col :value="6" :xs="24" :sm="24"> - <el-form-item label="鑱旂郴鐢佃瘽" prop="dailijingliLianxidianhua"> + <el-form-item + label="鑱旂郴鐢佃瘽" + :prop="nowRole.code == 'DLJG' ? 'dailijingliLianxidianhua' : ''" + > <el-input v-model="newFormInline.dailijingliLianxidianhua" clearable diff --git a/src/views/system/dept/index.vue b/src/views/system/dept/index.vue index e7225fb..a8368d5 100644 --- a/src/views/system/dept/index.vue +++ b/src/views/system/dept/index.vue @@ -3,13 +3,13 @@ import { useDept } from "./utils/hook"; import { PureTableBar } from "@/components/RePureTableBar"; import { useRenderIcon } from "@/components/ReIcon/src/hooks"; +import { type CusExtendDto } from "@/utils/auth"; import Delete from "~icons/ep/delete"; import EditPen from "~icons/ep/edit-pen"; import Refresh from "~icons/ep/refresh"; import AddFill from "~icons/ri/add-circle-line"; import IconamoonEnterDuotone from "~icons/iconamoon/enter-duotone"; -import { useUserStoreHook } from "@/store/modules/user"; defineOptions({ name: "SystemDept" @@ -39,16 +39,15 @@ pagination, checkboxAsRadio, onSelectionCancel, - onbatchDel + onbatchDel, + nowRole } = useDept(tableRef); function onFullscreen() { // 閲嶇疆琛ㄦ牸楂樺害 tableRef.value.setAdaptive(); } -const nowRole = computed(() => { - return useUserStoreHook().nowRole; -}); + const enterDetail = item => { isList.value = false; nowItem.value = item; @@ -172,7 +171,7 @@ </el-form-item> </el-col> <el-col - v-if="nowRole.code == 'CGR'" + v-if="nowRole.code == 'DLJG'" :xs="24" :sm="12" :md="8" @@ -189,7 +188,7 @@ </el-form-item> </el-col> <el-col - v-if="nowRole.code == 'DLJG'" + v-if="nowRole.code == 'CGR'" :xs="24" :sm="12" :md="8" @@ -230,9 +229,9 @@ <el-button type="primary" :loading="loading" @click="onSearch"> 鎼滅储 </el-button> - <el-button :icon="useRenderIcon(Refresh)" @click="resetForm"> + <!-- <el-button :icon="useRenderIcon(Refresh)" @click="resetForm"> 閲嶇疆 - </el-button> + </el-button> --> <el-button type="primary" @click="openDialog()"> 鏂板 </el-button> diff --git a/src/views/system/dept/uploadform.vue b/src/views/system/dept/uploadform.vue index ad52997..f21bd75 100644 --- a/src/views/system/dept/uploadform.vue +++ b/src/views/system/dept/uploadform.vue @@ -24,11 +24,13 @@ toubiaoEndDate: "", // 鎶曟爣鎶ュ悕缁撴潫鏃堕棿锛堝繀濉紝鏍煎紡锛歽yyy-MM-dd HH:mm:ss锛� kaibiaoDate: "", // 寮�鏍囨椂闂达紙蹇呭~锛屾牸寮忥細yyyy-MM-dd HH:mm:ss锛� zhaobiaowenjian: "", // 鎷涙爣鏂囦欢锛堝繀濉紝闀垮害1-512瀛楃锛� + zhaobiaowenjianName: "", biangengwenjian: "", fujian: "", // 闄勪欢锛堝彲閫夛紝鏈�澶ч暱搴�512瀛楃锛屽彲涓虹┖锛� kaibiaodidian: "" // 寮�鏍囧湴鐐癸紙蹇呭~锛岄暱搴�1-250瀛楃锛� }), - isChange: null + isChange: null, + changeDetail: null }); interface FormInlineType { // 椤圭洰鏍囬 @@ -41,8 +43,12 @@ kaibiaoDate: string | null | undefined; // 鎷涙爣鏂囦欢锛堝彲鑳芥槸鏂囦欢璺緞銆両D鎴栨枃浠跺璞★級 zhaobiaowenjian: string | null | undefined; + // 鎷涙爣鏂囦欢鍚嶏紙鍙兘鏄枃浠惰矾寰勩�両D鎴栨枃浠跺璞★級 + zhaobiaowenjianName?: string | null | undefined; // 鍙樻洿鏂囦欢 biangengwenjian: string | null | undefined; + // 鍙樻洿鏂囦欢 + biangengwenjianName?: string | null | undefined; // 闄勪欢锛堟枃鏈弿杩版垨璺緞锛� fujian: string | null | undefined; // 寮�鏍囧湴鐐� @@ -153,6 +159,23 @@ fetchCredentials(file); // upload.value!.submit(); }; +const handleChangeFile = file => { + console.log(file); + + if (file.status !== "ready") return; + // let suffName = file.name.substring(file.name.lastIndexOf(".") + 1); + // const extension = suffName === "pdf"; + // // const isLt10M = file.size / 1024 / 1024 < 10; + // if (!extension) { + // message(`浠呮敮鎸乸df鏍煎紡锛岃涓婁紶pdf`, { + // type: "error" + // }); + // validateForm.fileList = []; + // return false; + // } + // fetchCredentials(file); + // upload.value!.submit(); +}; // state.formDataNew = { // policy: res.result.policy, //琛ㄥ崟鍩� // "x-oss-signature-version": res.result.x_oss_signature_version, //鎸囧畾绛惧悕鐨勭増鏈拰绠楁硶 @@ -185,15 +208,18 @@ formData.append("key", keyVal); // 鏂囦欢鍚� formData.append("file", file.raw); // file 蹇呴』涓烘渶鍚庝竴涓〃鍗曞煙 uploadFileAli(formData, res.result.url).then(res => { - let path = `${upUrl}"/"${upPath}${upPath};`; + let path = `${upUrl}${keyVal}`; if (props.isChange) { newFormInline.value.biangengwenjian = path; + newFormInline.value.biangengwenjianName = file.name; } else { newFormInline.value.zhaobiaowenjian = path; + newFormInline.value.zhaobiaowenjianName = file.name; } }); } }; +const defaultTime = new Date(2000, 1, 1, 9, 30, 0); const beforeAvatarUpload: UploadProps["beforeUpload"] = rawFile => { isLoading.value = true; if (rawFile.type !== "application/pdf") { @@ -226,10 +252,21 @@ ref="ruleFormRef" :model="newFormInline" :rules="gonggaoRules" - label-width="140px" + :label-width="props.changeDetail ? '50px' : '140px'" > - <el-row :gutter="30"> - <div v-if="props.isChange"> + <el-row v-if="props.changeDetail" :gutter="10"> + <re-col :value="24" :xs="24" :sm="24"> + <el-form-item label="鏍囬" prop="projectName"> + <el-input + v-model="newFormInline.projectName" + clearable + placeholder="璇疯緭鍏ユ爣棰�" + /> + </el-form-item> + </re-col> + </el-row> + <el-row v-else :gutter="30"> + <div v-if="props.isChange" style="width: 100%"> <re-col :value="24" :xs="24" :sm="24"> <el-form-item label="鏍囬" prop="projectName"> <el-input @@ -270,6 +307,7 @@ v-model="newFormInline.toubiaoStartDate" type="datetime" clearable + :default-time="defaultTime" placeholder="璇烽�夋嫨鎶曟爣鎶ュ悕寮�濮嬫椂闂�" value-format="YYYY-MM-DD HH:mm:ss" /> @@ -281,6 +319,7 @@ v-model="newFormInline.toubiaoEndDate" type="datetime" clearable + :default-time="defaultTime" placeholder="璇烽�夋嫨鎶曟爣鎶ュ悕缁撴潫鏃堕棿" value-format="YYYY-MM-DD HH:mm:ss" /> @@ -292,6 +331,7 @@ v-model="newFormInline.kaibiaoDate" type="datetime" clearable + :default-time="defaultTime" placeholder="璇烽�夋嫨寮�鏍囨椂闂�" value-format="YYYY-MM-DD HH:mm:ss" /> @@ -318,6 +358,23 @@ </el-upload> </el-form-item> </re-col> + <re-col v-if="!props.isChange" :value="24" :xs="24" :sm="24"> + <el-form-item label="闄勪欢" prop=""> + <el-upload + ref="upload" + v-model:file-list="validateForm.fileList" + multiple + :on-exceed="handleExceed" + :auto-upload="false" + :on-success="handleAvatarSuccess" + :before-upload="beforeAvatarUpload" + :headers="state.headers" + @change="handleChangeFile" + > + <el-button type="primary">鐐瑰嚮涓婁紶</el-button> + </el-upload> + </el-form-item> + </re-col> <re-col :value="24" :xs="24" :sm="24"> <el-form-item label="寮�鏍囧湴鐐�" prop="kaibiaodidian"> <el-input diff --git a/src/views/system/dept/utils/detail.tsx b/src/views/system/dept/utils/detail.tsx index 8199063..68ef1a9 100644 --- a/src/views/system/dept/utils/detail.tsx +++ b/src/views/system/dept/utils/detail.tsx @@ -9,7 +9,8 @@ import { fabuzhaobiao, changezhaobiao, - getTenderOrderDetail + getTenderOrderDetail, + updateTittle } from "@/api/item/index"; const formRef = ref(); @@ -59,7 +60,85 @@ res = await changezhaobiao(curData); } if (res.code == "200") { - getTenderOrderDetail({ id: row?.id }); + getTenderOrderDetail({ id: row?.id }).then(res => { + state.nowInfo = res.result; + }); + done(); // 鍏抽棴寮规 + } else { + closeLoading(); + message(res.message, { + type: "error" + }); + } + } + FormRef.validate((valid, obj) => { + if (valid) { + // 琛ㄥ崟瑙勫垯鏍¢獙閫氳繃 + if (title === "鏂板") { + // 瀹為檯寮�鍙戝厛璋冪敤鏂板鎺ュ彛锛屽啀杩涜涓嬮潰鎿嶄綔 + chores(); + } else { + // 瀹為檯寮�鍙戝厛璋冪敤淇敼鎺ュ彛锛屽啀杩涜涓嬮潰鎿嶄綔 + chores(); + } + } else { + closeLoading(); + const fail = []; + for (const key in obj) { + fail.push(obj[key][0].message); + } + message(fail[0], { + type: "warning" + }); + return false; + } + }); + } + }); + } + function changeDialog(title = "涓婁紶", row?: TenderInfo) { + addDialog({ + title: `淇敼鏍囬`, + props: { + formInline: { + tenderId: title == "涓婁紶鍙樻洿" ? row?.id : "", + id: title == "涓婁紶" ? row?.id : "", + projectName: row?.projectName ?? "", + toubiaoStartDate: row?.toubiaoStartDate ?? "", //鎶曟爣鎶ュ悕寮�濮嬫椂闂� + toubiaoEndDate: row?.toubiaoEndDate ?? "", //鎶曟爣鎶ュ悕缁撴潫鏃堕棿 + kaibiaoDate: row?.kaibiaoDate ?? "", //寮�鏍囨椂闂� + biangengwenjian: "", //鎷涙爣鏂囦欢 + fujian: row?.fujian ?? "", //闄勪欢 + kaibiaodidian: row?.kaibiaodidian ?? "" //寮�鏍囧湴鐐� + } + }, + width: "30%", + draggable: true, + fullscreen: deviceDetection(), + fullscreenIcon: true, + sureBtnLoading: true, + closeOnClickModal: false, + contentRenderer: () => + h(tenderForm, { + ref: formRef, + formInline: null, + changeDetail: true, + isChange: true + }), + beforeSure: (done, { options, closeLoading }) => { + const FormRef = formRef.value.getRef(); + const curData = cloneDeep(options.props.formInline as TenderInfo); + async function chores() { + // message(`鎮�${title}浜嗛」鐩悕绉颁负${curData.projectName}鐨勮繖鏉℃暟鎹甡, { + // type: "success" + // }); + // curData.dingbiaoguize = curData.dingbiaoguize.join(""); + curData.id = state.nowInfo.id; + const res = await updateTittle(curData); + if (res.code == "200") { + getTenderOrderDetail({ id: row?.id }).then(res => { + state.nowInfo = res.result; + }); done(); // 鍏抽棴寮规 } else { closeLoading(); @@ -129,12 +208,13 @@ ); // 鎷兼帴鏃堕棿鎴冲拰闅忔満鏁� return ( - `${dirPath}/${timestamp}_${randomNumber}` + filename.match(/\.[^.]+$/) + `${dirPath}${timestamp}_${randomNumber}` + filename.match(/\.[^.]+$/) ); } return { openUploadDialog, state, - generateTimestampWithRandom + generateTimestampWithRandom, + changeDialog }; } diff --git a/src/views/system/dept/utils/hook.tsx b/src/views/system/dept/utils/hook.tsx index 51e812e..1aaa5a9 100644 --- a/src/views/system/dept/utils/hook.tsx +++ b/src/views/system/dept/utils/hook.tsx @@ -2,7 +2,7 @@ import editForm from "../form.vue"; import { handleTree } from "@/utils/tree"; import { message } from "@/utils/message"; -import { zhaobiaoPageOrder } from "@/api/item/index"; +import { zhaobiaoPageOrder, findWechatOpenId } from "@/api/item/index"; import { getCaigoufangshiList, @@ -10,6 +10,7 @@ getOrderStatusList, getRegionList, getDaimaleixingList, + addgetcontact, caigourenAdd, caigourenUpdate, caigourenDelete, @@ -17,11 +18,12 @@ } from "@/api/item/index"; // import { usePublicHooks } from "../../hooks"; import { addDialog } from "@/components/ReDialog"; -import { type Ref, reactive, ref, onMounted, h } from "vue"; +import { type Ref, reactive, ref, onMounted, h, computed } 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"; +import { useUserStoreHook } from "@/store/modules/user"; import pdfPreview from "../../component/pdfPreview.vue"; // const nowRole = computed(() => { @@ -30,6 +32,9 @@ const selectedNum = ref(0); export function useDept(tableRef: Ref) { + const nowRole = computed(() => { + return useUserStoreHook().nowRole; + }); const form = reactive({ // 鏂板鏃ユ湡鑼冨洿锛屽彲涓� null锛岀被鍨嬩负鏁扮粍 createDateRange: null, @@ -101,7 +106,7 @@ // const { tagStyle } = usePublicHooks(); const getOrderStatus = row => { const res = state.orderStatusList.find(item => { - return row.orderStatus == item.status; + return row.orderStatus == item.value; }); return res?.label; }; @@ -310,6 +315,7 @@ } }; async function onSearch() { + findWechatOpenId(); const obj = cloneDeep(form); obj.tousu = obj.tousu.join(""); obj.zhiyi = obj.zhiyi.join(""); @@ -344,7 +350,9 @@ return newTreeList; } - function openDialog(title = "鏂板", row?: FormItemProps) { + async function openDialog(title = "鏂板", row?: FormItemProps) { + const { result } = title == "鏂板" ? await addgetcontact() : ""; + addDialog({ title: `${title}椤圭洰`, props: { @@ -360,28 +368,36 @@ baomingfei: row?.baomingfei ?? null, // 鎶ュ悕璐癸紙鍙�夛級 toubiaobaozhengjin: row?.toubiaobaozhengjin ?? null, // 鎶曟爣淇濊瘉閲戯紙鍙�夛級 lianhetitoubiao: row?.lianhetitoubiao ?? null, // 鑱斿悎浣撴姇鏍囷紙鍙�夛級 - kaibiaofangshi: row?.kaibiaofangshi ?? null, // 寮�鏍囨柟寮忥紙鍙�夛級 + kaibiaofangshi: row?.kaibiaofangshi ?? "绾歌川鏍�", // 寮�鏍囨柟寮忥紙鍙�夛級 shifoufenbao: row?.shifoufenbao ?? "false", // 鏄惁鍒嗗寘锛堝彲閫夛級 shifoutuisongxuanchuan: row?.shifoutuisongxuanchuan ?? "true", // 鏄惁鎺ㄩ�佸浼狅紙鍙�夛級 - caigourenmingcheng: row?.caigourenmingcheng ?? null, // 閲囪喘浜哄悕绉帮紙鍙�夛級 + caigourenmingcheng: + row?.caigourenmingcheng ?? result?.caigourenmingcheng, // 閲囪喘浜哄悕绉帮紙鍙�夛級 xingzhengquyu: row?.xingzhengquyu.split(",") ?? [], // 琛屾斂鍖哄煙锛堝彲閫夛級 xingzhengquyuName: row?.xingzhengquyuName ?? null, // 琛屾斂鍖哄煙鍚嶇О锛堝彲閫夛級 - jigoudaima: row?.jigoudaima ?? null, // 鏈烘瀯浠g爜锛堝彲閫夛級 + jigoudaima: row?.jigoudaima ?? result?.jigoudaima, // 鏈烘瀯浠g爜锛堝彲閫夛級 daimaleixing: row?.daimaleixing ?? null, // 浠g爜绫诲瀷锛堝彲閫夛級 - lianxiren: row?.lianxiren ?? null, // 鑱旂郴浜猴紙鍙�夛級 - lianxidianhua: row?.lianxidianhua ?? null, // 鑱旂郴鐢佃瘽锛堝彲閫夛級 - tongxindizhi: row?.tongxindizhi ?? null, // 閫氫俊鍦板潃锛堝彲閫夛級 - dianziyoujian: row?.dianziyoujian ?? null, // 鐢靛瓙閭欢锛堝彲閫夛級 - xiangmujingbanren: row?.xiangmujingbanren ?? null, // 椤圭洰缁忓姙浜猴紙鍙�夛級 + lianxiren: row?.lianxiren ?? result?.lianxiren, // 鑱旂郴浜猴紙鍙�夛級 + lianxidianhua: row?.lianxidianhua ?? result?.lianxidianhua, // 鑱旂郴鐢佃瘽锛堝彲閫夛級 + tongxindizhi: row?.tongxindizhi ?? result?.tongxindizhi, // 閫氫俊鍦板潃锛堝彲閫夛級 + dianziyoujian: row?.dianziyoujian ?? result?.dianziyoujian, // 鐢靛瓙閭欢锛堝彲閫夛級 + xiangmujingbanren: + row?.xiangmujingbanren ?? result?.xiangmujingbanren, // 椤圭洰缁忓姙浜猴紙鍙�夛級 zhiwu: row?.zhiwu ?? null, // 鑱屽姟锛堝彲閫夛級 jingbanrendianhua: row?.jingbanrendianhua ?? null, // 缁忓姙浜虹數璇濓紙鍙�夛級 - dailijigoumingcheng: row?.dailijigoumingcheng ?? null, // 浠g悊鏈烘瀯鍚嶇О锛堝彲閫夛級 - dailiLianxiren: row?.dailiLianxiren ?? null, // 浠g悊鏈烘瀯鑱旂郴浜猴紙鍙�夛級 - dailiLianxidianhua: row?.dailiLianxidianhua ?? null, // 浠g悊鏈烘瀯鑱旂郴鐢佃瘽锛堝彲閫夛級 - dailiDianziyoujian: row?.dailiDianziyoujian ?? null, // 浠g悊鏈烘瀯鐢靛瓙閭欢锛堝彲閫夛級 - dailiTongxindizhi: row?.dailiTongxindizhi ?? null, // 浠g悊鏈烘瀯閫氫俊鍦板潃锛堝彲閫夛級 - dailiXiangmujingli: row?.dailiXiangmujingli ?? null, // 浠g悊鏈烘瀯椤圭洰缁忕悊锛堝彲閫� - dailijingliLianxidianhua: row?.dailijingliLianxidianhua ?? null // 浠g悊鏈烘瀯椤圭洰缁忕悊鑱旂郴鐢佃瘽锛堝彲閫夛級 + dailijigoumingcheng: + row?.dailijigoumingcheng ?? result?.dailijigoumingcheng, // 浠g悊鏈烘瀯鍚嶇О锛堝彲閫夛級 + dailiLianxiren: row?.dailiLianxiren ?? result?.dailiLianxiren, // 浠g悊鏈烘瀯鑱旂郴浜猴紙鍙�夛級 + dailiLianxidianhua: + row?.dailiLianxidianhua ?? result?.dailiLianxidianhua, // 浠g悊鏈烘瀯鑱旂郴鐢佃瘽锛堝彲閫夛級 + dailiDianziyoujian: + row?.dailiDianziyoujian ?? result?.dailiDianziyoujian, // 浠g悊鏈烘瀯鐢靛瓙閭欢锛堝彲閫夛級 + dailiTongxindizhi: + row?.dailiTongxindizhi ?? result?.dailiTongxindizhi, // 浠g悊鏈烘瀯閫氫俊鍦板潃锛堝彲閫夛級 + dailiXiangmujingli: + row?.dailiXiangmujingli ?? result?.dailiXiangmujingli, // 浠g悊鏈烘瀯椤圭洰缁忕悊锛堝彲閫� + dailijingliLianxidianhua: + row?.dailijingliLianxidianhua ?? result?.dailijingliLianxidianhua // 浠g悊鏈烘瀯椤圭洰缁忕悊鑱旂郴鐢佃瘽锛堝彲閫夛級 } }, width: "80%", @@ -395,9 +411,6 @@ const FormRef = formRef.value.getRef(); const curData = cloneDeep(options.props.formInline as FormItemProps); async function chores() { - message(`鎮�${title}浜嗛」鐩悕绉颁负${curData.projectName}鐨勮繖鏉℃暟鎹甡, { - type: "success" - }); // curData.dingbiaoguize = curData.dingbiaoguize.join(""); curData.xingzhengquyu = curData.xingzhengquyu.join(","); let res; @@ -409,6 +422,9 @@ if (res.code == "200") { done(); // 鍏抽棴寮规 onSearch(); // 鍒锋柊琛ㄦ牸鏁版嵁 + message(`鎮�${title}浜嗛」鐩悕绉颁负${curData.projectName}鐨勮繖鏉℃暟鎹甡, { + type: "success" + }); } else { closeLoading(); message(res.message, { @@ -487,6 +503,7 @@ pagination, checkboxAsRadio, onSelectionCancel, - onbatchDel + onbatchDel, + nowRole }; } diff --git a/src/views/system/dept/utils/types.ts b/src/views/system/dept/utils/types.ts index 2a03a0f..e0289a5 100644 --- a/src/views/system/dept/utils/types.ts +++ b/src/views/system/dept/utils/types.ts @@ -49,6 +49,10 @@ // 鎷涙爣鏂囦欢锛岄暱搴�1-512瀛楃 zhaobiaowenjian: string; biangengwenjian: string; + // 鎷涙爣鏂囦欢鍚嶏紙鍙兘鏄枃浠惰矾寰勩�両D鎴栨枃浠跺璞★級 + zhaobiaowenjianName?: string | null | undefined; + // 鍙樻洿鏂囦欢 + biangengwenjianName?: string | null | undefined; // 闄勪欢锛屽彲涓虹┖锛屾渶澶ч暱搴�512瀛楃 fujian?: string; // 寮�鏍囧湴鐐癸紝闀垮害1-250瀛楃 @@ -61,6 +65,7 @@ interface TenderProps { formInline: TenderInfo; isChange: boolean; + changeDetail?: boolean; } export type { FormItemProps, FormProps, TenderInfo, TenderProps }; diff --git a/vite.config.ts b/vite.config.ts index 4befb5e..81216e4 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -27,7 +27,8 @@ proxy: { "/api": { // 杩欓噷濉啓鍚庣鍦板潃http://114.132.78.38:8096 http://192.168.0.36:5005 - target: "http://192.168.18.52:5005", + target: "http://192.168.18.15:5005", + // target: "http://192.168.18.52:5005", changeOrigin: true, rewrite: path => path.replace(/^\/api/, "") }, -- Gitblit v1.9.1