feat: load status dictionary from public assets
| | |
| | | - `.codex-run`ãOffice éæä»¶å `emergency-repair-web/public/æ°å»º ææ¬ææ¡£.txt` ä»ä¸ºæ¬å°ä¸´æ¶æä»¶ï¼ä¸åºæäº¤ã |
| | | - `emergency-repair-web/public/sensitive-words.json` æ¯ç¨æ·æ¢ææªæäº¤ä¿®æ¹ï¼æ¬è½®ä¸çº³å
¥æäº¤ã |
| | | |
| | | ## 28. æ¶å°¾å¿«ç
§ï¼2026-10-07 å¨ä¸ï¼ä¸å¡åå
¸æ¹ä¸ºåå¸åå¯ä¿®æ¹ï¼ |
| | | |
| | | **å®ç°æ¹å¼** |
| | | - å°ä»»å¡ç¶æãå®å·¥ç¶æãéªæ¶ç¶æåå
¸è¿ç§»å° `emergency-repair-web/public/dict.js`ï¼ä»¥ `window.__APP_DICT__` æ´é²è¿è¡æ¶é
ç½®ã |
| | | - å `src/utils/dict.js` ä¿ç为éé
å±ï¼æä¾å
ç½®å
åºåå
¸ãè¿è¡æ¶åå
¸åå¹¶åå è½½å½æ°ï¼`src/main.js` å¨æè½½åºç¨åå è½½ `dict.js?ts=æ¶é´æ³`ï¼é¿å
æµè§å¨ç¼åæ§åå
¸ã |
| | | - å端æå»ºåæä»¶ä½äº `dist/dict.js`ãåå¸åç´æ¥ä¿®æ¹è¯¥æä»¶ä¸ç `text`ã`type` æç¶æé¡¹ï¼å·æ°é¡µé¢å³å¯çæï¼æ ééæ°æ§è¡ `npm run build`ã |
| | | |
| | | **ä¸»è¦æä»¶** |
| | | - `emergency-repair-web/public/dict.js` |
| | | - `emergency-repair-web/src/utils/dict.js` |
| | | - `emergency-repair-web/src/main.js` |
| | | |
| | | **éªè¯ç»æ** |
| | | - å端 `npm run build` éè¿ï¼`dist/dict.js` æ£å¸¸çæï¼ä»
ææ¢æå
ä½ç§¯åè¦ã |
| | | - 临æ¶å° `public/dict.js` ä¸ `UNREPORTED.text` æ¹ä¸º `æªä¸æ¥[å¤é¨æµè¯]`ï¼ä¸éæ°æå»ºï¼ä»
å·æ°æ
é䏿¥é¡µé¢åçé䏿ç«å³æ¾ç¤ºæ°æåï¼æ¢å¤åå¼åå·æ°ä¹ç«å³æ¢å¤ã |
| | | - æµè§å¨å®é
请æ±å
å« `http://localhost:8082/dict.js?ts=...`ï¼åºç¨å¨åå
¸å è½½å®æååæè½½ï¼æ¥å£ä¸å¯ç¨æ¶ä»ä½¿ç¨å
ç½®å
åºåå
¸ã |
| | | |
| | | **åå¸åæä½** |
| | | - ç¼è¾é¨ç½²ç®å½ä¸ç `dist/dict.js`ï¼ä¿ååå·æ°æµè§å¨å³å¯ãä¸è¦åéæ°æå»ºå端ï¼å¦åä¼ç¨å½åæºç åå
¸è¦çæå·¥ä¿®æ¹ã |
| | | |
| | | ## 21. æ¶å°¾å¿«ç
§ï¼2026-10-06 å¨ä¸ï¼éæ± 21 æé设置èå´åæ¢ï¼ |
| | | |
| | | **æ¬è½®å®æå
容** |
| New file |
| | |
| | | /* |
| | | * è¿è¡æ¶ä¸å¡åå
¸ã |
| | | * åå¸åå¯ç´æ¥ä¿®æ¹é¨ç½²ç®å½ä¸ç dist/dict.jsï¼å·æ°é¡µé¢å³å¯çæï¼æ ééæ°æå»ºå端ã |
| | | */ |
| | | window.__APP_DICT__ = { |
| | | taskStatuses: { |
| | | UNREPORTED: { text: 'æªä¸æ¥', type: 'info' }, |
| | | REPORTED_XCB: { text: '已䏿¥rk_XCB', type: 'warning' }, |
| | | RETURNED: { text: 'ä¸çº§æå', type: 'danger' }, |
| | | XCB_REVIEWED: { text: 'rk_XCBå©çå®¡æ ¸å®æ', type: 'primary' }, |
| | | CMB_APPROVED: { text: 'rk_CMBé¢å¯¼å®¡æ¹å®æ', type: 'success' }, |
| | | JCC_ASSISTANT_APPROVED: { text: 'rk_JCCå©ç审æ¹å®æ', type: 'success' }, |
| | | JCC_DIRECTOR_APPROVED: { text: 'rk_JCCå¤é¿å·²é
', type: 'success' }, |
| | | DISPATCHED: { text: '已派å', type: 'primary' }, |
| | | CANCELLED: { text: 'å·²é项', type: 'info' } |
| | | }, |
| | | completionStatuses: { |
| | | UNFINISHED: { text: 'æªå®å·¥', type: 'info' }, |
| | | WAIT_PARTS: { text: 'å¾
å¤ä»¶', type: 'warning' }, |
| | | WAIT_TEST: { text: 'å®å·¥å¾
è¯éª', type: 'primary' }, |
| | | COMPLETED: { text: 'å®å·¥', type: 'success' } |
| | | }, |
| | | acceptanceStatuses: { |
| | | APPLICATION_PENDING: { text: 'å¾
æäº¤éªæ¶ç³è¯·', type: 'warning' }, |
| | | QUALITY_INSPECTOR_PENDING: { text: 'å¾
è´¨æ£åéªæ¶', type: 'primary' }, |
| | | QUALITY_LEADER_PENDING: { text: 'å¾
è´¨æ£è´è´£äººéªæ¶', type: 'primary' }, |
| | | PRINT_PENDING: { text: 'å¾
æå°è¾åº', type: 'warning' }, |
| | | RATING_PENDING: { text: 'å¾
ä¿®åè´¨éè¯çº§', type: 'warning' }, |
| | | COMPLETED: { text: 'éªæ¶å®æ', type: 'success' }, |
| | | RETURNED_APPLICATION: { text: 'å·²æåéªæ¶ç³è¯·', type: 'danger' }, |
| | | RETURNED_INSPECTOR: { text: 'å·²æåè´¨æ£åéªæ¶', type: 'danger' } |
| | | } |
| | | } |
| | |
| | | import router from './router' |
| | | import './styles/global.css' |
| | | import { installSensitiveWords } from './utils/sensitive' |
| | | import { loadDictionary } from './utils/dict' |
| | | |
| | | Vue.use(ElementUI, { size: 'small' }) |
| | | Vue.config.productionTip = false |
| | |
| | | } |
| | | }) |
| | | |
| | | loadDictionary().then(() => { |
| | | new Vue({ |
| | | router, |
| | | render: h => h(App) |
| | | }).$mount('#app') |
| | | |
| | | installSensitiveWords() |
| | | }) |
| | |
| | | export const taskStatuses = { |
| | | const defaultTaskStatuses = { |
| | | UNREPORTED: { text: 'æªä¸æ¥', type: 'info' }, |
| | | REPORTED_XCB: { text: '已䏿¥rk_XCB', type: 'warning' }, |
| | | RETURNED: { text: 'ä¸çº§æå', type: 'danger' }, |
| | |
| | | CANCELLED: { text: 'å·²é项', type: 'info' } |
| | | } |
| | | |
| | | export const completionStatuses = { |
| | | const defaultCompletionStatuses = { |
| | | UNFINISHED: { text: 'æªå®å·¥', type: 'info' }, |
| | | WAIT_PARTS: { text: 'å¾
å¤ä»¶', type: 'warning' }, |
| | | WAIT_TEST: { text: 'å®å·¥å¾
è¯éª', type: 'primary' }, |
| | | COMPLETED: { text: 'å®å·¥', type: 'success' } |
| | | } |
| | | |
| | | export const acceptanceStatuses = { |
| | | const defaultAcceptanceStatuses = { |
| | | APPLICATION_PENDING: { text: 'å¾
æäº¤éªæ¶ç³è¯·', type: 'warning' }, |
| | | QUALITY_INSPECTOR_PENDING: { text: 'å¾
è´¨æ£åéªæ¶', type: 'primary' }, |
| | | QUALITY_LEADER_PENDING: { text: 'å¾
è´¨æ£è´è´£äººéªæ¶', type: 'primary' }, |
| | |
| | | RETURNED_INSPECTOR: { text: 'å·²æåè´¨æ£åéªæ¶', type: 'danger' } |
| | | } |
| | | |
| | | export const taskStatuses = { ...defaultTaskStatuses } |
| | | export const completionStatuses = { ...defaultCompletionStatuses } |
| | | export const acceptanceStatuses = { ...defaultAcceptanceStatuses } |
| | | |
| | | function normalizeDictionary(source, fallback) { |
| | | if (!source || typeof source !== 'object' || Array.isArray(source)) { |
| | | return fallback |
| | | } |
| | | const result = {} |
| | | Object.keys(source).forEach(key => { |
| | | const item = source[key] |
| | | if (item && typeof item === 'object' && item.text) { |
| | | result[key] = { |
| | | text: String(item.text), |
| | | type: item.type ? String(item.type) : 'info' |
| | | } |
| | | } |
| | | }) |
| | | return Object.keys(result).length ? result : fallback |
| | | } |
| | | |
| | | function replaceDictionary(target, source) { |
| | | Object.keys(target).forEach(key => { delete target[key] }) |
| | | Object.keys(source).forEach(key => { target[key] = source[key] }) |
| | | } |
| | | |
| | | function applyRuntimeDictionary() { |
| | | const runtime = window.__APP_DICT__ || {} |
| | | replaceDictionary(taskStatuses, normalizeDictionary(runtime.taskStatuses, defaultTaskStatuses)) |
| | | replaceDictionary(completionStatuses, normalizeDictionary(runtime.completionStatuses, defaultCompletionStatuses)) |
| | | replaceDictionary(acceptanceStatuses, normalizeDictionary(runtime.acceptanceStatuses, defaultAcceptanceStatuses)) |
| | | } |
| | | |
| | | let loadingPromise = null |
| | | |
| | | export function loadDictionary() { |
| | | if (loadingPromise) { |
| | | return loadingPromise |
| | | } |
| | | |
| | | loadingPromise = new Promise(resolve => { |
| | | const script = document.createElement('script') |
| | | const baseUrl = process.env.BASE_URL || '/' |
| | | script.async = true |
| | | script.src = baseUrl + 'dict.js?ts=' + Date.now() |
| | | script.onload = () => { |
| | | applyRuntimeDictionary() |
| | | resolve() |
| | | } |
| | | script.onerror = () => resolve() |
| | | document.head.appendChild(script) |
| | | }) |
| | | |
| | | return loadingPromise |
| | | } |
| | | |
| | | export function statusMeta(dict, value) { |
| | | return dict[value] || { text: value || '-', type: 'info' } |
| | | } |
| | |
| | | - å½åå端 PID `57312`ï¼çå¬ `http://localhost:8082`ï¼å端 PID `56124`ï¼çå¬ `http://127.0.0.1:8091`ï¼DM8 `127.0.0.1:5236`ï¼Edge CDP `9222`ï¼ç»å½ `admin / admin123`ã |
| | | - `.codex-run`ãOffice éæä»¶å `emergency-repair-web/public/æ°å»º ææ¬ææ¡£.txt` ä»ä¸ºæ¬å°ä¸´æ¶æä»¶ï¼ä¸åºæäº¤ã |
| | | - `emergency-repair-web/public/sensitive-words.json` æ¯ç¨æ·æ¢ææªæäº¤ä¿®æ¹ï¼æ¬è½®ä¸çº³å
¥æäº¤ã |
| | | |
| | | ## äºåäºã2026-10-07 ä¸å¡åå
¸æ¹ä¸ºåå¸åå¯ä¿®æ¹ |
| | | |
| | | | éæ± | ç¶æ | å®ç° | |
| | | | --- | --- | --- | |
| | | | `dict.js` ç§»å° `public`ï¼åå¸åä»å¯ä¿®æ¹ | 已宿 | æ°å¢ `public/dict.js` ä¿åä»»å¡ãå®å·¥ãéªæ¶ç¶æåå
¸ï¼éè¿ `window.__APP_DICT__` æ´é²ï¼`src/utils/dict.js` ä½ä¸ºå è½½åå
åºéé
å±ï¼åºç¨å¯å¨åææ¶é´æ³å è½½ï¼æå»ºåå¯¹åºæä»¶ä¸º `dist/dict.js` | |
| | | |
| | | ### 22.1 主è¦åæ´æä»¶ |
| | | |
| | | - `emergency-repair-web/public/dict.js` |
| | | - `emergency-repair-web/src/utils/dict.js` |
| | | - `emergency-repair-web/src/main.js` |
| | | |
| | | ### 22.2 éªè¯ç»æ |
| | | |
| | | - å端 `npm run build` éè¿ï¼`dist/dict.js` æ£å¸¸çæï¼ä»
ææ¢æå
ä½ç§¯åè¦ã |
| | | - 临æ¶ä¿®æ¹ `public/dict.js` çâæªä¸æ¥âæååï¼ä¸éæ°æå»ºï¼ä»
å·æ°æ
é䏿¥é¡µé¢å³çæï¼æ¢å¤åå·æ°ä¹ç«å³æ¢å¤ã |
| | | - 页é¢èµæºè¯·æ±å
å« `/dict.js?ts=...`ï¼åå¸åä¿®æ¹æä»¶ä¸ä¼è¢«æ§ç¼åé»å¡ã |
| | | |
| | | ### 22.3 åå¸åç»´æ¤è¯´æ |
| | | |
| | | - ç产ç¯å¢ç´æ¥ç¼è¾é¨ç½²ç®å½ä¸ç `dist/dict.js`ï¼å¯ä¿®æ¹ç¶ææ¾ç¤ºæåå `type`ï¼å·æ°é¡µé¢çæã |
| | | - ä¸è¦éæ°æ§è¡å端æå»ºï¼å¦åå½å `public/dict.js` ä¼å次è¦çé¨ç½²ç®å½ä¸çä¿®æ¹ã |
| | | - `dict.js` ä¸å¯ç¨æåæ®µéæ³æ¶ï¼åºç¨ç»§ç»ä½¿ç¨æºç å
ç½®åå
¸ï¼ä¸å½±å页é¢å¯å¨ã |