src/utils/fileNameCheck.js
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,153 @@ /** * æ¥éåéä»¶æä»¶åè§èæ ¡éªï¼2026-10-15ï¼ * * ä¸å¡å£å¾ï¼ä¸å¡æ¹ç¡®è®¤ï¼ï¼ * 1. å¿ é¡»å å«ä¸æï¼è³å° 1 个æ±åï¼ââ"为æ¹ä¾¿æ¥éªéä»¶ï¼è¯·ç¨ä¸æè§èå½åéä»¶ï¼" * 2. 廿æ©å±ååçä¸»å¹²ï¼æå符æ°è®¡ç®ä¸è½è¶ è¿ 20 个åââ"为æ¹ä¾¿æ¥éªéä»¶ï¼éä»¶ååé¿åº¦ä¸è½è¶ è¿20个åï¼" * 3. ä¸è½å å«ç©ºæ ¼å / \ : * ? " < > | # % çç¹æ®å符 * 4. å䏿ç»è¡å ä¸è½éåï¼æ¯è¾æ¶å¿½ç¥æ©å±å大å°åä¸é¦å°¾ç©ºæ ¼ï¼ * * 使ç¨åºæ¯ï¼ * - ä¸ä¼ æååè°ï¼ä¸åæ ¼ â å¼¹æç¤ºä¸ä¸å å ¥åè¡¨ï¼ * - ä¿å/æäº¤åï¼è°ç¨ checkDetails ç»ä¸æ ¡éªï¼ä¸åæ ¼åæ¦ä¸ä¸å 许ä¿åï¼ * - å端ä¿åæ¥å£å¦æåå£å¾çäºæ¬¡æ ¡éªï¼é²æ¢ç»è¿å端ï¼ã */ /** 主干ï¼å»æ©å±åï¼æå¤§åç¬¦æ° */ export const MAX_MAIN_LENGTH = 20; /** æ±å */ const RE_CHINESE = /[\u4e00-\u9fa5]/; /** éæ³å符ï¼ç©ºæ ¼ï¼å«å类空ç½ï¼+ / \ : * ? " < > | # % */ const RE_ILLEGAL = /[\s/\\:*?"<>|#%]/; export const MSG_NO_CHINESE = "为æ¹ä¾¿æ¥éªéä»¶ï¼è¯·ç¨ä¸æè§èå½åéä»¶ï¼"; export const MSG_TOO_LONG = "为æ¹ä¾¿æ¥éªéä»¶ï¼éä»¶ååé¿åº¦ä¸è½è¶ è¿20个åï¼"; export const MSG_ILLEGAL = '为æ¹ä¾¿æ¥éªéä»¶ï¼éä»¶åä¸è½å å«ç©ºæ ¼å / \\ : * ? " < > | # % çç¹æ®å符ï¼'; export const MSG_DUPLICATE = "为æ¹ä¾¿æ¥éªéä»¶ï¼åä¸è¡å ä¸è½æéåçéä»¶ï¼"; /** * å主干ï¼å»ææåä¸ä¸ªæ©å±åï¼ * @param {string} fileName åå§æä»¶å * @returns {string} 主干 */ export function mainName(fileName) { const s = (fileName || "").trim(); const i = s.lastIndexOf("."); return i > 0 ? s.substring(0, i) : s; } /** * å个æä»¶åæ ¡éª * @param {string} fileName åå§æä»¶å * @returns {{ok: boolean, msg: string, main: string}} */ export function checkFileName(fileName) { const name = (fileName || "").trim(); if (!name) { return { ok: false, msg: MSG_NO_CHINESE, main: "" }; } if (RE_ILLEGAL.test(name)) { return { ok: false, msg: MSG_ILLEGAL, main: mainName(name) }; } const main = mainName(name); if (!RE_CHINESE.test(main)) { return { ok: false, msg: MSG_NO_CHINESE, main }; } // æå符æ°è®¡ï¼ç¨æ©å±è¿ç®ç¬¦æç ç¹è®¡æ°ï¼ä¸æ/忝/æ°å/å ¨è§å计 1ï¼ if ([...main].length > MAX_MAIN_LENGTH) { return { ok: false, msg: MSG_TOO_LONG, main }; } return { ok: true, msg: "", main }; } /** åé件项æ¾ç¤ºåï¼ä¸å页é¢å段åå¯è½æ¯ name / fileNameï¼åä¸å°å°±è¿å空串表示"ä¸å¤æ"ï¼ */ function itemName(item) { if (!item) return ""; if (typeof item === "string") return item; return item.name || item.fileName || ""; } /** * ä¸ç»éä»¶æ ¡éªï¼å«åè¡éåï¼ * @param {Array} list éä»¶æ°ç»ï¼å ç´ å½¢å¦ {name, url} * @returns {{ok: boolean, msg: string, index: number}} */ export function checkFileList(list) { const arr = list || []; const seen = {}; for (let i = 0; i < arr.length; i++) { const name = itemName(arr[i]); if (!name) continue; // åä¸å°åæä»¶ååä¸å¤æï¼é¿å è¯¯æ¦ const r = checkFileName(name); if (!r.ok) { return { ok: false, msg: r.msg, index: i }; } const key = name.trim().toLowerCase(); if (seen[key]) { return { ok: false, msg: MSG_DUPLICATE, index: i }; } seen[key] = true; } return { ok: true, msg: "", index: -1 }; } /** * ä¿ååæ ¡éªæ´åæç»ï¼å票 + éä»¶ï¼ * @param {Array} details æç»è¡æ°ç»ï¼è¡å å« invoicefilesList / annexfilesListï¼æ°ç»ï¼ * @returns {{ok: boolean, msg: string}} */ export function checkDetails(details) { const rows = details || []; for (let i = 0; i < rows.length; i++) { const groups = [ { label: "å票", list: rows[i] && rows[i].invoicefilesList }, { label: "éä»¶", list: rows[i] && rows[i].annexfilesList } ]; for (let g = 0; g < groups.length; g++) { const arr = groups[g].list || []; const seen = {}; for (let j = 0; j < arr.length; j++) { const name = itemName(arr[j]); if (!name) continue; const r = checkFileName(name); if (!r.ok) { return { ok: false, msg: "éä»¶æä»¶åä¸ç¬¦åè¦æ±ï¼æ æ³ä¿åï¼ç¬¬" + (i + 1) + "è¡ç¬¬" + (j + 1) + "个ï¼" + name + "ï¼ââ" + r.msg }; } const key = name.trim().toLowerCase(); if (seen[key]) { return { ok: false, msg: "éä»¶æä»¶åä¸ç¬¦åè¦æ±ï¼æ æ³ä¿åï¼ç¬¬" + (i + 1) + "è¡ç¬¬" + (j + 1) + "个ï¼" + name + "ï¼ââ" + MSG_DUPLICATE }; } seen[key] = true; } } } return { ok: true, msg: "" }; } /** * æ´åéææéä»¶ï¼ä¸åè¡ï¼çæå¹³æ ¡éªï¼ä¾åªæå个æä»¶å表ç页é¢ä½¿ç¨ * @param {Array} lists å¤ä¸ªéä»¶æ°ç» * @returns {{ok: boolean, msg: string}} */ export function checkAllLists(lists) { const all = lists || []; for (let i = 0; i < all.length; i++) { const r = checkFileList(all[i]); if (!r.ok) { return { ok: false, msg: r.msg }; } } return { ok: true, msg: "" }; } src/views/project/components/annexupload/index.vue
@@ -124,7 +124,7 @@ size="small" v-model="uploadtime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="è¯·éæ©ä¸ä¼ æ¶é´" > </el-date-picker> src/views/project/documentfiles/index.vue
@@ -274,7 +274,7 @@ style="width: 220px" v-model="form.uploadtime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" > </el-date-picker> </el-form-item> src/views/project/donatebaseinfo/index.vue
@@ -864,7 +864,7 @@ style="width: 190px" v-model="form.contacttime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©æ¥åæ¶é´" > </el-date-picker> @@ -921,7 +921,7 @@ style="width: 190px" v-model="form.reporttime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©æ¥åæ¶é´" > </el-date-picker> src/views/project/donateconsolationfund/index.vue
@@ -636,7 +636,7 @@ style="width: 100%" v-model="form.createTime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="ç³è¯·æ¥æ" > </el-date-picker> src/views/project/donatefinish/index.vue
@@ -309,7 +309,7 @@ size="small" v-model="form.completetime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="鿩宿æ¶é´" > </el-date-picker> @@ -379,7 +379,7 @@ style="width: 90%" v-model="scope.row.transplanttime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©å¨å®ç§»æ¤æ¶é´" > </el-date-picker> src/views/project/donatefinishcheck/index.vue
@@ -251,7 +251,7 @@ size="small" v-model="form.completetime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="鿩宿æ¶é´" > </el-date-picker> @@ -321,7 +321,7 @@ style="width: 90%" v-model="scope.row.transplanttime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©å¨å®è·åæ¶é´" > </el-date-picker> src/views/project/donatefollowup/index.vue
@@ -340,7 +340,7 @@ size="small" v-model="form.followuptime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©é访æ¶é´" > </el-date-picker> src/views/project/donateorgan/index.vue
@@ -361,7 +361,7 @@ <el-col :span="12"> <el-form-item label="è·åæ¶é´" prop="organgettime"> <el-date-picker clearable size="medium" v-model="form.organgettime" type="date" format="yyyy-MM-dd" disabled value-format="yyyy-MM-dd" placeholder="éæ©å¨å®è·åæ¶é´"> value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©å¨å®è·åæ¶é´"> </el-date-picker> </el-form-item> </el-col> @@ -411,7 +411,7 @@ <el-col :span="12"> <el-form-item label="ç§»æ¤æ¶é´" prop="transplanttime"> <el-date-picker clearable size="medium" v-model="form.transplanttime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="éæ©ç§»æ¤æ¶é´" disabled> value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©ç§»æ¤æ¶é´" disabled> </el-date-picker> </el-form-item> </el-col> src/views/project/donatereview/index.vue
@@ -397,7 +397,7 @@ v-model="form.birthday" type="date" format="yyyy-MM-dd" style="width: 174px" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©åºçæ¥æ" > </el-date-picker> @@ -757,7 +757,7 @@ size="small" v-model="form.reporttime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©æ¥åæ¶é´" > </el-date-picker> src/views/project/donationdetails/index.vue
@@ -222,7 +222,7 @@ size="small" v-model="form.reporttime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©æ¥åæ¥æ" > </el-date-picker> @@ -268,7 +268,7 @@ size="small" v-model="form.birthday" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©åºçæ¥æ" > </el-date-picker> @@ -780,7 +780,7 @@ style="width: 190px" v-model="form.contacttime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©æ¥åæ¶é´" > </el-date-picker> @@ -863,7 +863,7 @@ size="small" v-model="medicineform.hospitalassesstime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©é¢çº§è¯ä¼°æ¶é´" > </el-date-picker> </el-form-item @@ -916,7 +916,7 @@ size="small" v-model="medicineform.provincialassesstime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©ç级è¯ä¼°æ¶é´" > </el-date-picker> </el-form-item></el-col @@ -970,7 +970,7 @@ size="small" v-model="medicineform.coreteamassesstime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="è¯ä¼°æ¶é´" > </el-date-picker> @@ -1389,7 +1389,7 @@ size="small" v-model="ethicform.conclusiontime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©ç»è®ºæ¶é´" > </el-date-picker> @@ -1479,7 +1479,7 @@ style="width: 100%" v-model="scope.row.applicanttime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©åé æ¥æ¶æ¶é´" > </el-date-picker> @@ -1659,7 +1659,7 @@ clearable v-model="witnessform.deathtime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©æ»äº¡æ¶é´" > </el-date-picker> @@ -1698,7 +1698,7 @@ clearable v-model="witnessform.operationbegtime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©ææ¯å¼å§æ¶é´" > </el-date-picker> @@ -1715,7 +1715,7 @@ clearable v-model="witnessform.operationendtime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©ææ¯ç»ææ¶é´" > </el-date-picker> @@ -1734,7 +1734,7 @@ clearable v-model="witnessform.coordinatorInOperating" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©ææ¯å¼å§æ¶é´" > </el-date-picker> @@ -1751,7 +1751,7 @@ clearable v-model="witnessform.coordinatorOutOperating" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©ææ¯ç»ææ¶é´" > </el-date-picker> @@ -1768,7 +1768,7 @@ clearable v-model="witnessform.coordinatorSignTime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©ææ¯ç»ææ¶é´" > </el-date-picker> @@ -1795,7 +1795,7 @@ clearable v-model="witnessform.abdominalaortacannulatime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©è ¹ä¸»å¨èæç®¡æ¶é´" > </el-date-picker> @@ -1812,7 +1812,7 @@ clearable v-model="witnessform.abdominalaortaperfusiontime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©è ¹ä¸»å¨èçæ³¨æ¶é´" > </el-date-picker> @@ -1829,7 +1829,7 @@ clearable v-model="witnessform.portalveincannulatime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©é¨éèèæç®¡æ¶é´" > </el-date-picker> @@ -1846,7 +1846,7 @@ clearable v-model="witnessform.portalveinperfusiontime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©é¨éèçæ³¨æ¶é´" > </el-date-picker> @@ -1865,7 +1865,7 @@ clearable v-model="witnessform.pulmonaryarterycannulatime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©é¨éèæç®¡æ¶é´" > </el-date-picker> @@ -1882,7 +1882,7 @@ clearable v-model="witnessform.pulmonaryarteryperfusiontime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©é¨éèçæ³¨æ¶é´" > </el-date-picker> @@ -1899,7 +1899,7 @@ clearable v-model="witnessform.aortacannulatime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="鿩䏻å¨èæç®¡æ¶é´" > </el-date-picker> @@ -1916,7 +1916,7 @@ clearable v-model="witnessform.aortaperfusiontime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="鿩䏻å¨èçæ³¨æ¶é´" > </el-date-picker> @@ -2029,7 +2029,7 @@ style="width: 100%" v-model="scope.row.organStartTime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="请è¾å ¥è·åå¼å§æ¶é´" > </el-date-picker> @@ -2049,7 +2049,7 @@ style="width: 100%" v-model="scope.row.organgettime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="请è¾å ¥å¨å®ç¦»ä½æ¶é´" > </el-date-picker> @@ -2451,7 +2451,7 @@ size="small" v-model="accomplishform.completetime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="鿩宿æ¶é´" > </el-date-picker> src/views/project/donationwitness/index.vue
@@ -468,7 +468,7 @@ clearable v-model="form.deathtime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©æ»äº¡æ¶é´" > </el-date-picker> @@ -493,7 +493,7 @@ clearable v-model="form.operationbegtime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©ææ¯å¼å§æ¶é´" > </el-date-picker> @@ -505,7 +505,7 @@ clearable v-model="form.operationendtime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©ææ¯ç»ææ¶é´" > </el-date-picker> @@ -526,7 +526,7 @@ clearable v-model="form.abdominalaortacannulatime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©è ¹ä¸»å¨èæç®¡æ¶é´" > </el-date-picker> @@ -542,7 +542,7 @@ clearable v-model="form.abdominalaortaperfusiontime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©è ¹ä¸»å¨èçæ³¨æ¶é´" > </el-date-picker> @@ -564,7 +564,7 @@ clearable v-model="form.portalveincannulatime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©é¨éèèæç®¡æ¶é´" > </el-date-picker> @@ -580,7 +580,7 @@ clearable v-model="form.portalveinperfusiontime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©é¨éèçæ³¨æ¶é´" > </el-date-picker> @@ -601,7 +601,7 @@ clearable v-model="form.pulmonaryarterycannulatime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©é¨éèæç®¡æ¶é´" > </el-date-picker> @@ -617,7 +617,7 @@ clearable v-model="form.pulmonaryarteryperfusiontime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©é¨éèçæ³¨æ¶é´" > </el-date-picker> @@ -635,7 +635,7 @@ clearable v-model="form.aortacannulatime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="鿩䏻å¨èçæ³¨æ¶é´" > </el-date-picker> @@ -651,7 +651,7 @@ clearable v-model="form.aortaperfusiontime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="鿩䏻å¨èçæ³¨æ¶é´" > </el-date-picker> @@ -708,7 +708,7 @@ style="width: 100%" v-model="scope.row.organgettime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©å¨å®è·åæ¶é´" > </el-date-picker> src/views/project/donorcharge/donorcharge/index.vue
@@ -153,7 +153,7 @@ <el-table-column prop="amounttime" align="center" label="æ¥æ¶æ¶é´" width="120"> <template slot-scope="scope"> <el-date-picker clearable size="small" style="width: 100%" v-model="scope.row.amounttime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="æ¥æ¶æ¶é´"> value-format="yyyy-MM-dd HH:mm:ss" placeholder="æ¥æ¶æ¶é´"> </el-date-picker> </template> </el-table-column> <el-table-column prop="amount" align="center" label="å·²æ¶è´¹ç¨" width="120"> @@ -164,7 +164,7 @@ <el-table-column prop="amounttime" align="center" label="æ¶æ¬¾æ¶é´" width="120"> <template slot-scope="scope"> <el-date-picker clearable size="small" style="width: 100%" v-model="scope.row.amounttime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="æ¶æ¬¾æ¶é´" @blur="getdays(scope.row)"> value-format="yyyy-MM-dd HH:mm:ss" placeholder="æ¶æ¬¾æ¶é´" @blur="getdays(scope.row)"> </el-date-picker> </template> </el-table-column> <el-table-column prop="organcharge" align="center" label="æ åè´¹ç¨" width="120"> src/views/project/donorcharge/donorchargedetail/index.vue
@@ -180,7 +180,7 @@ style="width: 100%" v-model="scope.row.amounttime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="宿¶æ¶é´" > </el-date-picker> @@ -243,7 +243,7 @@ style="width: 100%" v-model="scope.row.organtime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="ç§»æ¤æ¶é´" > </el-date-picker> src/views/project/ethicalReview/index.vue
@@ -293,7 +293,7 @@ size="small" v-model="form.createTime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©ç»è®ºæ¶é´" > </el-date-picker> src/views/project/fund/applyDetail/index.vue
@@ -13,7 +13,7 @@ <el-col :span="5"> <el-form-item label="ç³è¯·æ¥æ" prop="applyTime"> <el-date-picker clearable :disabled="true" style="width: 100%" v-model="form.applyTime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="æ¥ æ"> value-format="yyyy-MM-dd HH:mm:ss" placeholder="æ¥ æ"> </el-date-picker> </el-form-item> </el-col> @@ -795,6 +795,7 @@ import OrgSelecter from "@/views/project/components/orgselect"; import { getToken } from "@/utils/auth"; import { moneySum, moneyMul, moneySub, moneyRound } from "@/utils/money"; import { checkFileName, checkDetails } from "@/utils/fileNameCheck"; import CustomImageViewer from "@/components/CustomImageViewer"; // æ ¹æ®ä½ çè·¯å¾è°æ´ export default { @@ -1561,6 +1562,11 @@ }, /** æäº¤æé® */ submitForm: debounce(function () { // 2026-10-15ï¼ä¿ååéä»¶æä»¶åè§èæ ¡éªï¼ä» æ°å¢åæ®ï¼èåæ®çåå²éä»¶ç±å端æ"åªæ ¡éªæ¬æ¬¡åæ´"æ¾è¡ï¼ if (!this.checkDetailFileNames()) { return; } if (!this.randomnumber) { this.randomnumber = this.generateRandomString(9); this.form.randomnumber = this.randomnumber; @@ -2343,6 +2349,11 @@ }, // æ¥åæéç«å»ä¿å Savenow() { // 2026-10-15ï¼ä¿ååéä»¶æä»¶åè§èæ ¡éªï¼ä» æ°å¢åæ®ï¼èåæ®çåå²éä»¶ç±å端æ"åªæ ¡éªæ¬æ¬¡åæ´"æ¾è¡ï¼ if (!this.checkDetailFileNames()) { return; } if (!this.randomnumber) { this.randomnumber = this.generateRandomString(9); this.form.randomnumber = this.randomnumber; @@ -2927,7 +2938,43 @@ } }, /** * 2026-10-15ï¼ä¸ä¼ æ¶æ ¡éªéä»¶æä»¶åï¼ä¸å¡è¦æ±ï¼ä¸åæ ¼ç«å³æç¤ºä¸ä¸å å ¥å表ï¼ã * è§åä¸å端 AttachmentNameValidator åå£å¾ï¼å¿ é¡»å«ä¸æ / 廿æ©å±åå主干 â¤20 å / * ä¸å«ç©ºæ ¼å / \ : * ? " < > | # % çç¹æ®å符ã */ checkUploadFileName(file) { const raw = file && file.raw ? file.raw.name : file && file.name; const r = checkFileName(raw); if (!r.ok) { this.$modal.msgError(r.msg); return false; } return true; }, /** * 2026-10-15ï¼ä¿ååæ ¡éªæ´åæç»éä»¶æä»¶åï¼å«åä¸è¡å éåï¼ã * å£å¾ï¼ä¸å¡ç¡®è®¤ï¼ï¼åªæ ¡éª"æ¬æ¬¡åæ´"çéä»¶ââèåæ®éå·²åå¨çä¸åè§éä»¶åä¸è½æä¿å塿» * ï¼å¦åèåæ®æ¹ä¸ä¸ªéé¢é½åä¸è¿å»ï¼ãå端æ id 读æ§è®°å½æ¾è¡åå²éä»¶ï¼å端æ¿ä¸å°"åªäºæ¯åå²" * çæå¨ä¿¡æ¯ï¼å æ¤**ä» æ°å¢åæ®**åä¿å忦æªï¼ç¼è¾èåæ®æ¶æ°å¢çä¸åè§éä»¶ç±åç«¯äºæ¬¡æ ¡éªæ¦ä¸ã */ checkDetailFileNames() { if (this.form && this.form.id) { return true; } const c = checkDetails(this.rbDetails); if (!c.ok) { this.$modal.msgError(c.msg); return false; } return true; }, uploadSccess(response, file, fileList) { if (!this.checkUploadFileName(file)) { return; } this.rbDetails; const config = { headers: { Authorization: "Bearer " + this.ICDtoken } src/views/project/fund/applyDetail0/index.vue
@@ -12,7 +12,7 @@ style="width: 100%" v-model="form.createTime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="ç³è¯·æ¥æ" > </el-date-picker> @@ -1228,6 +1228,7 @@ import OrgSelecter from "@/views/project/components/orgselect"; import { getToken } from "@/utils/auth"; import { moneySum, moneyAdd, moneySub, moneyMul, moneyRound } from "@/utils/money"; import { checkFileName, checkDetails } from "@/utils/fileNameCheck"; export default { //importå¼å ¥çç»ä»¶éè¦æ³¨å ¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ @@ -1845,6 +1846,11 @@ }, /** æäº¤æé® */ submitForm: debounce(function() { // 2026-10-15ï¼ä¿ååéä»¶æä»¶åè§èæ ¡éªï¼ä» æ°å¢åæ®ï¼èåæ®çåå²éä»¶ç±å端æ"åªæ ¡éªæ¬æ¬¡åæ´"æ¾è¡ï¼ if (!this.checkDetailFileNames()) { return; } if (!this.randomnumber) { this.randomnumber = this.generateRandomString(9); this.form.randomnumber = this.randomnumber; @@ -2523,6 +2529,11 @@ }, // æ¥åæéç«å»ä¿å Savenow() { // 2026-10-15ï¼ä¿ååéä»¶æä»¶åè§èæ ¡éªï¼ä» æ°å¢åæ®ï¼èåæ®çåå²éä»¶ç±å端æ"åªæ ¡éªæ¬æ¬¡åæ´"æ¾è¡ï¼ if (!this.checkDetailFileNames()) { return; } if (!this.randomnumber) { this.randomnumber = this.generateRandomString(9); this.form.randomnumber = this.randomnumber; @@ -2998,7 +3009,43 @@ // console.log(response.msg); // } // }, /** * 2026-10-15ï¼ä¸ä¼ æ¶æ ¡éªéä»¶æä»¶åï¼ä¸å¡è¦æ±ï¼ä¸åæ ¼ç«å³æç¤ºä¸ä¸å å ¥å表ï¼ã * è§åä¸å端 AttachmentNameValidator åå£å¾ï¼å¿ é¡»å«ä¸æ / 廿æ©å±åå主干 â¤20 å / * ä¸å«ç©ºæ ¼å / \ : * ? " < > | # % çç¹æ®å符ã */ checkUploadFileName(file) { const raw = file && file.raw ? file.raw.name : file && file.name; const r = checkFileName(raw); if (!r.ok) { this.$modal.msgError(r.msg); return false; } return true; }, /** * 2026-10-15ï¼ä¿ååæ ¡éªæ´åæç»éä»¶æä»¶åï¼å«åä¸è¡å éåï¼ã * å£å¾ï¼ä¸å¡ç¡®è®¤ï¼ï¼åªæ ¡éª"æ¬æ¬¡åæ´"çéä»¶ââèåæ®éå·²åå¨çä¸åè§éä»¶åä¸è½æä¿å塿» * ï¼å¦åèåæ®æ¹ä¸ä¸ªéé¢é½åä¸è¿å»ï¼ãå端æ id 读æ§è®°å½æ¾è¡åå²éä»¶ï¼å端æ¿ä¸å°"åªäºæ¯åå²" * çæå¨ä¿¡æ¯ï¼å æ¤**ä» æ°å¢åæ®**åä¿å忦æªï¼ç¼è¾èåæ®æ¶æ°å¢çä¸åè§éä»¶ç±åç«¯äºæ¬¡æ ¡éªæ¦ä¸ã */ checkDetailFileNames() { if (this.form && this.form.id) { return true; } const c = checkDetails(this.rbDetails); if (!c.ok) { this.$modal.msgError(c.msg); return false; } return true; }, uploadSccess(response, file, fileList) { if (!this.checkUploadFileName(file)) { return; } this.rbDetails; //è·å票æ®ä¿¡æ¯ä½ç½® src/views/project/fund/ethicalExpertFeeApply/index.vue
@@ -285,7 +285,7 @@ style="width: 100%" v-model="form.applyTime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="ç³è¯·æ¥æ" > </el-date-picker> src/views/project/fund/expertFeeApply/index.vue
@@ -318,7 +318,7 @@ style="width: 100%" v-model="form.applyTime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="ç³è¯·æ¥æ" > </el-date-picker> src/views/project/fund/officeExpenseApply/index.vue
@@ -226,7 +226,7 @@ style="width: 100%" v-model="form.applyTime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="ç³è¯·æ¥æ" > </el-date-picker> @@ -1928,7 +1928,9 @@ if (response.code == 200) { this.form.filename = file.raw.name; this.$modal.msgSuccess(response.msg); this.fileList.push({ name: response.fileName, url: response.fileName }); // 2026-10-15ï¼å表éç name ç¨æä½äººçåå§æä»¶åï¼ä¸è¦ç¨ response.fileNameï¼é£æ¯åå¨è·¯å¾ï¼ã // ä¿åæ¶åªåå urlï¼form.annexbankcard åçæ¯éå·æ¼æ¥ç urlï¼ï¼æä»¥è¿éåªå½±åä¸ä¼ æ¡çæ¾ç¤ºã this.fileList.push({ name: file.raw.name, url: response.fileName }); } else { console.log(response.msg); } src/views/project/fund/performanceApply/index.vue
@@ -53,7 +53,7 @@ <el-form-item label="ç³è¯·æ¥æ" prop="applyTime"> <el-date-picker format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" v-model="queryParams.value1" type="daterange" range-separator="è³" src/views/project/fund/performancedetails/index.vue
@@ -12,7 +12,7 @@ style="width: 100%" v-model="form.applyTime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="ç³è¯·æ¥æ" :disabled="true" > @@ -919,6 +919,7 @@ import OrgSelecter from "@/views/project/components/orgselect"; import { getToken } from "@/utils/auth"; import { moneySum, moneyAdd, moneySub, moneyRound } from "@/utils/money"; import { checkFileName, checkDetails } from "@/utils/fileNameCheck"; import CustomImageViewer from "@/components/CustomImageViewer"; export default { @@ -1660,6 +1661,11 @@ }, /** æäº¤æé® */ submitForm: debounce(function() { // 2026-10-15ï¼ä¿ååéä»¶æä»¶åè§èæ ¡éªï¼ä» æ°å¢åæ®ï¼èåæ®çåå²éä»¶ç±å端æ"åªæ ¡éªæ¬æ¬¡åæ´"æ¾è¡ï¼ if (!this.checkDetailFileNames()) { return; } if (!this.randomnumber) { this.randomnumber = this.generateRandomString(9); this.form.randomnumber = this.randomnumber; @@ -2178,6 +2184,11 @@ }, // æ¥åæéç«å»ä¿å Savenow() { // 2026-10-15ï¼ä¿ååéä»¶æä»¶åè§èæ ¡éªï¼ä» æ°å¢åæ®ï¼èåæ®çåå²éä»¶ç±å端æ"åªæ ¡éªæ¬æ¬¡åæ´"æ¾è¡ï¼ if (!this.checkDetailFileNames()) { return; } if (!this.randomnumber) { this.randomnumber = this.generateRandomString(9); this.form.randomnumber = this.randomnumber; @@ -2759,7 +2770,43 @@ this.Networkheader = string.slice(0, index + 4); // æªå8032åå ¶åé¨å符 } }, /** * 2026-10-15ï¼ä¸ä¼ æ¶æ ¡éªéä»¶æä»¶åï¼ä¸å¡è¦æ±ï¼ä¸åæ ¼ç«å³æç¤ºä¸ä¸å å ¥å表ï¼ã * è§åä¸å端 AttachmentNameValidator åå£å¾ï¼å¿ é¡»å«ä¸æ / 廿æ©å±åå主干 â¤20 å / * ä¸å«ç©ºæ ¼å / \ : * ? " < > | # % çç¹æ®å符ã */ checkUploadFileName(file) { const raw = file && file.raw ? file.raw.name : file && file.name; const r = checkFileName(raw); if (!r.ok) { this.$modal.msgError(r.msg); return false; } return true; }, /** * 2026-10-15ï¼ä¿ååæ ¡éªæ´åæç»éä»¶æä»¶åï¼å«åä¸è¡å éåï¼ã * å£å¾ï¼ä¸å¡ç¡®è®¤ï¼ï¼åªæ ¡éª"æ¬æ¬¡åæ´"çéä»¶ââèåæ®éå·²åå¨çä¸åè§éä»¶åä¸è½æä¿å塿» * ï¼å¦åèåæ®æ¹ä¸ä¸ªéé¢é½åä¸è¿å»ï¼ãå端æ id 读æ§è®°å½æ¾è¡åå²éä»¶ï¼å端æ¿ä¸å°"åªäºæ¯åå²" * çæå¨ä¿¡æ¯ï¼å æ¤**ä» æ°å¢åæ®**åä¿å忦æªï¼ç¼è¾èåæ®æ¶æ°å¢çä¸åè§éä»¶ç±åç«¯äºæ¬¡æ ¡éªæ¦ä¸ã */ checkDetailFileNames() { if (this.form && this.form.id) { return true; } const c = checkDetails(this.rbDetails); if (!c.ok) { this.$modal.msgError(c.msg); return false; } return true; }, uploadSccess(response, file, fileList) { if (!this.checkUploadFileName(file)) { return; } this.rbDetails; const config = { headers: { Authorization: "Bearer " + this.ICDtoken } src/views/project/fundcheck/ethicalExpertFeeCheck/index.vue
@@ -41,7 +41,7 @@ </el-col> <el-col :span="8"> <el-form-item label="ç³è¯·æ¥æ" prop="applyTime"> <el-date-picker format="yyyy-MM-dd" @change="selectapplication" value-format="yyyy-MM-dd" <el-date-picker format="yyyy-MM-dd" @change="selectapplication" value-format="yyyy-MM-dd HH:mm:ss" v-model="applyTime" type="daterange" range-separator="è³" start-placeholder="ç³è¯·å¼å§æ¥æ" end-placeholder="ç³è¯·ç»ææ¥æ" @keyup.enter.native="flowconclusion"> </el-date-picker> @@ -312,7 +312,7 @@ <el-form-item label="ç³è¯·æ¥æ" prop="applyTime"> <!-- <el-input v-model="form.donorno" placeholder="请è¾å ¥ç³è¯·æ¥æ" /> --> <el-date-picker clearable style="width: 100%" v-model="form.applyTime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="ç³è¯·æ¥æ"> value-format="yyyy-MM-dd HH:mm:ss" placeholder="ç³è¯·æ¥æ"> </el-date-picker> </el-form-item> </el-col> src/views/project/fundcheck/expertFeeCheck/index.vue
@@ -48,7 +48,7 @@ </el-col> <el-col :span="8"> <el-form-item label="ç³è¯·æ¥æ" prop="createTime"> <el-date-picker format="yyyy-MM-dd" @change="selectapplication" value-format="yyyy-MM-dd" <el-date-picker format="yyyy-MM-dd" @change="selectapplication" value-format="yyyy-MM-dd HH:mm:ss" v-model="createTime" type="daterange" range-separator="è³" start-placeholder="ç³è¯·å¼å§æ¥æ" end-placeholder="ç³è¯·ç»ææ¥æ" @keyup.enter.native="flowconclusion"> </el-date-picker> @@ -158,7 +158,7 @@ <el-form-item label="ç³è¯·æ¥æ" prop="createTime"> <!-- <el-input v-model="form.donorno" placeholder="请è¾å ¥ç³è¯·æ¥æ" /> --> <el-date-picker clearable style="width: 100%" v-model="form.createTime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="ç³è¯·æ¥æ"> value-format="yyyy-MM-dd HH:mm:ss" placeholder="ç³è¯·æ¥æ"> </el-date-picker> </el-form-item> </el-col> src/views/project/fundcheck/medicalCostCheck/index.vue
@@ -48,7 +48,7 @@ </el-col> <el-col :span="8"> <el-form-item label="ç³è¯·æ¥æ" prop="createTime"> <el-date-picker format="yyyy-MM-dd" @change="selectapplication" value-format="yyyy-MM-dd" <el-date-picker format="yyyy-MM-dd" @change="selectapplication" value-format="yyyy-MM-dd HH:mm:ss" v-model="createTime" type="daterange" range-separator="è³" start-placeholder="ç³è¯·å¼å§æ¥æ" end-placeholder="ç³è¯·ç»ææ¥æ" @keyup.enter.native="flowconclusion"> </el-date-picker> @@ -146,7 +146,7 @@ <el-form-item label="ç³è¯·æ¥æ" prop="createTime"> <!-- <el-input v-model="form.donorno" placeholder="请è¾å ¥ç³è¯·æ¥æ" /> --> <el-date-picker clearable style="width: 100%" v-model="form.createTime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="ç³è¯·æ¥æ"> value-format="yyyy-MM-dd HH:mm:ss" placeholder="ç³è¯·æ¥æ"> </el-date-picker> </el-form-item> </el-col> src/views/project/fundcheck/officeExpenseCheck/index.vue
@@ -48,7 +48,7 @@ </el-col> <el-col :span="8"> <el-form-item label="ç³è¯·æ¥æ" prop="createTime"> <el-date-picker format="yyyy-MM-dd" @change="selectapplication" value-format="yyyy-MM-dd" <el-date-picker format="yyyy-MM-dd" @change="selectapplication" value-format="yyyy-MM-dd HH:mm:ss" v-model="createTime" type="daterange" range-separator="è³" start-placeholder="ç³è¯·å¼å§æ¥æ" end-placeholder="ç³è¯·ç»ææ¥æ" @keyup.enter.native="flowconclusion"> </el-date-picker> @@ -149,7 +149,7 @@ <el-form-item label="ç³è¯·æ¥æ" prop="createTime"> <!-- <el-input v-model="form.donorno" placeholder="请è¾å ¥ç³è¯·æ¥æ" /> --> <el-date-picker clearable style="width: 100%" v-model="form.createTime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="ç³è¯·æ¥æ"> value-format="yyyy-MM-dd HH:mm:ss" placeholder="ç³è¯·æ¥æ"> </el-date-picker> </el-form-item> </el-col> src/views/project/fundcheck/performanceCheck/index.vue
@@ -34,7 +34,7 @@ </el-col> <el-col :span="8"> <el-form-item label="ç³è¯·æ¥æ" prop="createTime"> <el-date-picker format="yyyy-MM-dd" @change="selectapplication" value-format="yyyy-MM-dd" v-model="createTime" <el-date-picker format="yyyy-MM-dd" @change="selectapplication" value-format="yyyy-MM-dd HH:mm:ss" v-model="createTime" type="daterange" range-separator="è³" start-placeholder="ç³è¯·å¼å§æ¥æ" end-placeholder="ç³è¯·ç»ææ¥æ" @keyup.enter.native="flowconclusion"> </el-date-picker> src/views/project/fundflow/index.vue
@@ -31,7 +31,7 @@ <el-form-item label="ç³è¯·æ¥æ" prop="createTime"> <el-date-picker format="yyyy-MM-dd" value-format="yyyy-MM-dd hh:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" v-model="queryParams.createTime" type="date" placeholder="è¯·éæ©ç³è¯·æ¥æ" src/views/project/itemexpense/index.vue
@@ -97,6 +97,13 @@ <el-table-column label="è´¹ç¨éé¢" align="center" prop="expense" /> <el-table-column label="è´¹ç¨è¯´æ" align="center" prop="expensedescribe" /> <el-table-column label="å¯ç¨ç¶æ" align="center" prop="usestate" /> <el-table-column label="æ ¡éªæ¨¡å¼" align="center" prop="validateMode" width="110"> <template slot-scope="scope"> <el-tag v-if="scope.row.validateMode == 3" type="danger">䏿 ¡éª</el-tag> <el-tag v-else-if="scope.row.validateMode == 2" type="warning">æ ¡éªæé</el-tag> <el-tag v-else>å¼ºå¶æ ¡éª</el-tag> </template> </el-table-column> <el-table-column label="夿³¨" align="center" prop="remark" /> <el-table-column label="æä½" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope"> @@ -140,6 +147,13 @@ </el-form-item> <el-form-item label="å¯ç¨ç¶æ" prop="usestate"> <el-input v-model="form.usestate" placeholder="请è¾å ¥å¯ç¨ç¶æ" /> </el-form-item> <el-form-item label="æ ¡éªæ¨¡å¼" prop="validateMode"> <el-select v-model="form.validateMode" placeholder="è¯·éæ©ä¸å®¶è´¹æ ¡éªæ¨¡å¼" style="width: 100%"> <el-option label="å¼ºå¶æ ¡éªï¼ä¸éè¿ä¸è½ä¿åï¼" :value="1" /> <el-option label="æ ¡éªæéï¼ä» æéï¼å 许ä¿åï¼" :value="2" /> <el-option label="䏿 ¡éªï¼è·³è¿éé¢ç±»æ ¡éªï¼" :value="3" /> </el-select> </el-form-item> <el-form-item label="夿³¨" prop="remark"> <el-input v-model="form.remark" placeholder="请è¾å ¥å¤æ³¨" /> @@ -222,6 +236,7 @@ expense: null, expensedescribe: null, usestate: null, validateMode: 1, remark: null, delFlag: null, createBy: null, src/views/project/medicalevaluation/index.vue
@@ -411,7 +411,7 @@ size="small" v-model="form.hospitalassesstime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©é¢çº§è¯ä¼°æ¶é´" > </el-date-picker> </el-form-item @@ -464,7 +464,7 @@ size="small" v-model="form.provincialassesstime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©ç级è¯ä¼°æ¶é´" > </el-date-picker> </el-form-item></el-col @@ -518,7 +518,7 @@ size="small" v-model="form.coreteamassesstime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="è¯ä¼°æ¶é´" > </el-date-picker> src/views/project/organallocation/index.vue
@@ -338,7 +338,7 @@ style="width: 100%" v-model="form.applicanttime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©æ¥æ¶æ¶é´" > </el-date-picker> src/views/project/organallocation/index0.vue
@@ -199,7 +199,7 @@ <el-col :span="12"> <el-form-item label="è·åæ¶é´" prop="organgettime"> <el-date-picker clearable size="medium" v-model="form.organgettime" type="date" format="yyyy-MM-dd" disabled value-format="yyyy-MM-dd" placeholder="éæ©å¨å®è·åæ¶é´"> value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©å¨å®è·åæ¶é´"> </el-date-picker> </el-form-item> </el-col> @@ -249,7 +249,7 @@ <el-col :span="12"> <el-form-item label="ç§»æ¤æ¶é´" prop="transplanttime"> <el-date-picker clearable size="medium" v-model="form.transplanttime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="éæ©ç§»æ¤æ¶é´" disabled> value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©ç§»æ¤æ¶é´" disabled> </el-date-picker> </el-form-item> </el-col> src/views/project/organization/index.vue
@@ -273,7 +273,7 @@ size="small" v-model="form.registertime" type="datetime" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©æ³¨åæ¶é´" > </el-date-picker> src/views/project/relativesconfirmation/index.vue
@@ -589,7 +589,7 @@ size="small" v-model="form.signdate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©ç¾åæ¥æ" > </el-date-picker> @@ -746,7 +746,7 @@ style="width: 310px" v-model="evaluationForm.hospitalassesstime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©é¢çº§è¯ä¼°æ¶é´" > </el-date-picker> @@ -793,7 +793,7 @@ style="width: 310px" v-model="evaluationForm.provincialassesstime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©ç级è¯ä¼°æ¶é´" > </el-date-picker> @@ -841,7 +841,7 @@ style="width: 310px" v-model="evaluationForm.coreteamassesstime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="è¯ä¼°æ¶é´" > </el-date-picker> src/views/project/tallage/computingBill/index.vue
@@ -42,7 +42,7 @@ ><el-form-item label="ç®ç¨æ¶é´" prop="donateno"> <el-date-picker v-model="form.taxedtime" value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" format="yyyy-MM-dd HH:mm" :disabled="true" placeholder="éæ©æ¶é´" src/views/project/travelexpenseapply/edit.vue
@@ -64,7 +64,7 @@ <el-col :span="7"> <el-form-item label="ç³è¯·æ¥æ" prop="applyTime"> <el-date-picker style="width: 100%" v-model="form.applyTime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="ç³è¯·æ¥æ"> value-format="yyyy-MM-dd HH:mm:ss" placeholder="ç³è¯·æ¥æ"> </el-date-picker> </el-form-item> </el-col> @@ -101,7 +101,7 @@ <el-table-column prop="starttime" slot="" label="åºåæ¥æ" fixed align="center" width="150"> <template slot-scope="scope"> <el-date-picker clearable size="small" style="width: 100%" v-model="scope.row.starttime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="åºåæ¥æ" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="åºåæ¥æ" @change="getStandard(scope.row)"> </el-date-picker> </template> @@ -115,7 +115,7 @@ <el-table-column prop="endtime" slot="" label="å°è¾¾æ¥æ" align="center" width="150" fixed> <template slot-scope="scope"> <el-date-picker clearable size="small" style="width: 100%" v-model="scope.row.endtime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="å°è¾¾æ¥æ"> type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="å°è¾¾æ¥æ"> </el-date-picker> </template> </el-table-column> src/views/project/travelexpenseapply/index.vue
@@ -18,7 +18,7 @@ </el-col> <el-col :span="8"> <el-form-item label="æ¥éæ¥æ" prop="applyTime"> <el-date-picker format="yyyy-MM-dd" value-format="yyyy-MM-dd" v-model="value1" type="daterange" <el-date-picker format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" v-model="value1" type="daterange" @change="selecttime" range-separator="è³" start-placeholder="æ¥éå¼å§æ¥æ" end-placeholder="æ¥éç»ææ¥æ" @keyup.enter.native="handlQuery"> </el-date-picker> @@ -143,7 +143,7 @@ <el-row><el-col :span="5"> <el-form-item label="ç³è¯·æ¥æ" prop="applyTime"> <el-date-picker style="width: 100%" v-model="form.applyTime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="ç³è¯·æ¥æ"> value-format="yyyy-MM-dd HH:mm:ss" placeholder="ç³è¯·æ¥æ"> </el-date-picker> </el-form-item> </el-col> @@ -352,7 +352,7 @@ } } }" clearable size="small" style="width: 100%" v-model="scope.row.starttime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="å¼å§æ¥æ" @blur="getdays(scope.row)"> value-format="yyyy-MM-dd HH:mm:ss" placeholder="å¼å§æ¥æ" @blur="getdays(scope.row)"> </el-date-picker> </template> </el-table-column> @@ -368,7 +368,7 @@ } } }" clearable size="small" style="width: 100%" v-model="scope.row.endtime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="ç»ææ¥æ" @blur="getdays(scope.row)"> value-format="yyyy-MM-dd HH:mm:ss" placeholder="ç»ææ¥æ" @blur="getdays(scope.row)"> </el-date-picker> </template> </el-table-column> @@ -563,7 +563,7 @@ width="150"> <template slot-scope="scope"> <el-date-picker clearable size="small" style="width: 100%" v-model="scope.row.paiddate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="ææ¬¾æ¥æ" :disabled="true"> value-format="yyyy-MM-dd HH:mm:ss" placeholder="ææ¬¾æ¥æ" :disabled="true"> </el-date-picker> </template> </el-table-column> src/views/project/travelexpenseapply/travelexpensedetail/index.vue
@@ -10,7 +10,7 @@ style="width: 100%" v-model="form.applyTime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="ç³è¯·æ¥æ" :disabled="true" > @@ -370,7 +370,7 @@ style="width: 100%" v-model="scope.row.starttime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="å¼å§æ¥æ" @blur="getdays(scope.row)" > @@ -402,7 +402,7 @@ style="width: 100%" v-model="scope.row.endtime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="ç»ææ¥æ" @blur="getdays(scope.row)" > @@ -849,7 +849,7 @@ <el-table-column prop="paiddate" slot="" label="ææ¬¾æ¥æ" fixed align="center" width="150"> <template slot-scope="scope"> <el-date-picker clearable size="small" style="width: 100%" v-model="scope.row.paiddate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="ææ¬¾æ¥æ" :disabled="true"> value-format="yyyy-MM-dd HH:mm:ss" placeholder="ææ¬¾æ¥æ" :disabled="true"> </el-date-picker> </template> </el-table-column>--> @@ -1306,6 +1306,7 @@ import { getToken } from "@/utils/auth"; import debounce from "lodash/debounce"; import { moneySum, moneyAdd, moneyRound } from "@/utils/money"; import { checkFileName, checkDetails } from "@/utils/fileNameCheck"; export default { components: { Treeselect, @@ -1690,7 +1691,43 @@ }, //æä»¶ä¸ä¼ æååè° /** * 2026-10-15ï¼ä¸ä¼ æ¶æ ¡éªéä»¶æä»¶åï¼ä¸å¡è¦æ±ï¼ä¸åæ ¼ç«å³æç¤ºä¸ä¸å å ¥å表ï¼ã * è§åä¸å端 AttachmentNameValidator åå£å¾ï¼å¿ é¡»å«ä¸æ / 廿æ©å±åå主干 â¤20 å / * ä¸å«ç©ºæ ¼å / \ : * ? " < > | # % çç¹æ®å符ã */ checkUploadFileName(file) { const raw = file && file.raw ? file.raw.name : file && file.name; const r = checkFileName(raw); if (!r.ok) { this.$modal.msgError(r.msg); return false; } return true; }, /** * 2026-10-15ï¼ä¿ååæ ¡éªæ´åæç»éä»¶æä»¶åï¼å«åä¸è¡å éåï¼ã * å£å¾ï¼ä¸å¡ç¡®è®¤ï¼ï¼åªæ ¡éª"æ¬æ¬¡åæ´"çéä»¶ââèåæ®éå·²åå¨çä¸åè§éä»¶åä¸è½æä¿å塿» * ï¼å¦åèåæ®æ¹ä¸ä¸ªéé¢é½åä¸è¿å»ï¼ãå端æ id 读æ§è®°å½æ¾è¡åå²éä»¶ï¼å端æ¿ä¸å°"åªäºæ¯åå²" * çæå¨ä¿¡æ¯ï¼å æ¤**ä» æ°å¢åæ®**åä¿å忦æªï¼ç¼è¾èåæ®æ¶æ°å¢çä¸åè§éä»¶ç±åç«¯äºæ¬¡æ ¡éªæ¦ä¸ã */ checkDetailFileNames() { if (this.form && this.form.id) { return true; } const c = checkDetails(this.rbDetails); if (!c.ok) { this.$modal.msgError(c.msg); return false; } return true; }, uploadSccess(response, file, fileList) { if (!this.checkUploadFileName(file)) { return; } this.rbDetails; const config = { headers: { Authorization: "Bearer " + this.ICDtoken } @@ -1711,14 +1748,11 @@ name: file.name, url: URL.createObjectURL(blob) }); // console.log(file.response.url); // console.log(file); this.pdfimgsrcList.push(file.response.url); this.fileListto.push({ name: file.response.fileName, url: file.response.url }); // 2026-10-15ï¼å é¤è¿éçç¬¬äºæ¬¡ pushã忥䏿¬¡ä¸ä¼ ä¼å fileListto / pdfimgsrcList // åå两æ¡ï¼ä¸ç¬¬äºæ¡ç name åçæ¯ file.response.fileNameï¼åå¨è·¯å¾ï¼ï¼è remove() // 伿æ´ä¸ª fileListto ååå° rbDetails[atpresent].annexfilesListï¼å¯¼è´æç»éä»¶é // æ··å ¥è·¯å¾å½¢æç nameï¼è¢«éä»¶æä»¶åæ ¡éªè¯¯æ¦ï¼å端没æ"è·¯å¾å½¢æè·³è¿"è±å ï¼ï¼ // åæ¶ç¥¨æ®å表ä¼å¤åºä¸è¡ã console.log(URL.createObjectURL(blob), "ur转æ¢"); }) .catch(error => { @@ -2760,6 +2794,11 @@ /** æäº¤ä¿åæé® */ submitForm: debounce(function (data) { // 2026-10-15ï¼ä¿ååéä»¶æä»¶åè§èæ ¡éªï¼ä» æ°å¢åæ®ï¼èåæ®çåå²éä»¶ç±å端æ"åªæ ¡éªæ¬æ¬¡åæ´"æ¾è¡ï¼ if (!this.checkDetailFileNames()) { return; } this.$refs["form"].validate(valid => { if (valid) { //ç¥¨æ®æä»¶å¤ç @@ -2983,6 +3022,11 @@ }, // æ¥åæéç«å»ä¿å Savenow() { // 2026-10-15ï¼ä¿ååéä»¶æä»¶åè§èæ ¡éªï¼ä» æ°å¢åæ®ï¼èåæ®çåå²éä»¶ç±å端æ"åªæ ¡éªæ¬æ¬¡åæ´"æ¾è¡ï¼ if (!this.checkDetailFileNames()) { return; } this.Savereminder = false; this.Reminderquantity = 0; this.totalquantity = 0; src/views/project/travelexpensecheck/index.vue
@@ -59,7 +59,7 @@ <el-row> <el-col :span="8"> <el-form-item label="ç³è¯·æ¥æ" prop="applyTime"> <el-date-picker format="yyyy-MM-dd" value-format="yyyy-MM-dd" v-model="value1" type="daterange" <el-date-picker format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" v-model="value1" type="daterange" @blur="onpick" range-separator="è³" start-placeholder="æ¥éç³è¯·å¼å§æ¥æ" end-placeholder="æ¥éç³è¯·ç»ææ¥æ" @keyup.enter.native="handleQuery"> </el-date-picker> @@ -157,7 +157,7 @@ <el-col :span="5"> <el-form-item label="ç³è¯·æ¥æ" prop="applyTime"> <el-date-picker style="width: 100%" v-model="form.applyTime" :disabled="true" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="ç³è¯·æ¥æ"> value-format="yyyy-MM-dd HH:mm:ss" placeholder="ç³è¯·æ¥æ"> </el-date-picker> </el-form-item> </el-col> @@ -305,7 +305,7 @@ } } }" clearable size="small" style="width: 100%" v-model="scope.row.starttime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="å¼å§æ¥æ" @blur="getallowance(scope.row)"> value-format="yyyy-MM-dd HH:mm:ss" placeholder="å¼å§æ¥æ" @blur="getallowance(scope.row)"> </el-date-picker> </template> </el-table-column> @@ -321,7 +321,7 @@ } } }" clearable size="small" style="width: 100%" v-model="scope.row.endtime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="ç»ææ¥æ" @blur="getallowance(scope.row)"> value-format="yyyy-MM-dd HH:mm:ss" placeholder="ç»ææ¥æ" @blur="getallowance(scope.row)"> </el-date-picker> </template> </el-table-column> @@ -549,7 +549,7 @@ width="150"> <template slot-scope="scope"> <el-date-picker clearable size="small" style="width: 100%" v-model="scope.row.paiddate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="ææ¬¾æ¥æ" :disabled="true" value-format="yyyy-MM-dd HH:mm:ss" placeholder="ææ¬¾æ¥æ" :disabled="true" @blur="getallowance(scope.row)"> </el-date-picker> </template> src/views/project/unitCost/particulars/index.vue
@@ -199,7 +199,7 @@ v-model="scope.row.receiveTime" :disabled="true" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" placeholder="æ¥æ¶æ¥æ" > </el-date-picker> @@ -258,7 +258,7 @@ <el-table-column prop="amounttime" align="center" label="æ¶æ¬¾æ¥æ" width="200"> <template slot-scope="scope"> <el-date-picker clearable size="small" style="width: 100%" v-model="scope.row.amounttime" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="æ¶æ¬¾æ¥æ"> value-format="yyyy-MM-dd HH:mm:ss" placeholder="æ¶æ¬¾æ¥æ"> </el-date-picker> </template> </el-table-column>