已删除10个文件
已修改39个文件
已复制1个文件
已添加10个文件
已重命名2个文件
| | |
| | | .DS_Store |
| | | node_modules |
| | | /dist |
| | | |
| | | |
| | | # local env files |
| | | .env.local |
| | | .env.*.local |
| | | |
| | | # Log files |
| | | # Logs |
| | | logs |
| | | *.log |
| | | npm-debug.log* |
| | | yarn-debug.log* |
| | | yarn-error.log* |
| | | pnpm-debug.log* |
| | | lerna-debug.log* |
| | | |
| | | node_modules |
| | | .DS_Store |
| | | dist |
| | | dist-ssr |
| | | coverage |
| | | *.local |
| | | |
| | | /cypress/videos/ |
| | | /cypress/screenshots/ |
| | | |
| | | # Editor directories and files |
| | | .vscode/* |
| | | !.vscode/extensions.json |
| | | .idea |
| | | .vscode |
| | | *.suo |
| | | *.ntvs* |
| | | *.njsproj |
| | | *.sln |
| | | *.sw? |
| | | |
| | | *.tsbuildinfo |
¶Ô±ÈÐÂÎļþ |
| | |
| | | { |
| | | "recommendations": ["Vue.volar"] |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | # Maint |
| | | |
| | | This template should help get you started developing with Vue 3 in Vite. |
| | | |
| | | ## Recommended IDE Setup |
| | | |
| | | [VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur). |
| | | |
| | | ## Customize configuration |
| | | |
| | | See [Vite Configuration Reference](https://vite.dev/config/). |
| | | |
| | | ## Project Setup |
| | | |
| | | ```sh |
| | | npm install |
| | | ``` |
| | | |
| | | ### Compile and Hot-Reload for Development |
| | | |
| | | ```sh |
| | | npm run dev |
| | | ``` |
| | | |
| | | ### Compile and Minify for Production |
| | | |
| | | ```sh |
| | | npm run build |
| | | ``` |
ÎļþÃû´Ó ÏîÄ¿´úÂë/client/public/index.html ÐÞ¸Ä |
| | |
| | | <!DOCTYPE html> |
| | | <html lang=""> |
| | | <head> |
| | | <meta charset="utf-8" /> |
| | | <meta charset="UTF-8" /> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge" /> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1.0" /> |
| | | <!-- <link rel="icon" href="/favicon.ico" /> --> |
| | | <meta |
| | | name="keywords" |
| | | content=".netccore,dotnet core,vue,element,element plus,vue3" |
| | | /> |
| | | <!-- <meta |
| | | http-equiv="Content-Security-Policy" |
| | | content="upgrade-insecure-requests" |
| | | /> --> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
| | | <link rel="icon" href="./logo.png" /> |
| | | <meta name="description" content="" /> |
| | | <title>æºè½æç©æ§å¶ç³»ç»</title> |
| | | </head> |
| | | |
| | | <body> |
| | | <noscript> |
| | | <!-- <noscript> |
| | | <strong |
| | | >We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work |
| | | properly without JavaScript enabled. Please enable it to |
| | | continue.</strong |
| | | > |
| | | </noscript> |
| | | </noscript> --> |
| | | <div id="app"></div> |
| | | <!-- built files will be auto injected --> |
| | | <script type="module" src="/src/main.js"></script> |
| | | </body> |
| | | </html> |
| | | <style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | { |
| | | "compilerOptions": { |
| | | "paths": { |
| | | "@/*": ["./src/*"] |
| | | } |
| | | }, |
| | | "exclude": ["node_modules", "dist"] |
| | | } |
| | |
| | | { |
| | | "name": "wideseawcs", |
| | | "version": "0.1.0", |
| | | "name": "maint", |
| | | "version": "0.0.0", |
| | | "private": true, |
| | | "type": "module", |
| | | "scripts": { |
| | | "serve": "vue-cli-service serve", |
| | | "build": "vue-cli-service build", |
| | | "test:unit": "vue-cli-service test:unit", |
| | | "lint": "vue-cli-service lint" |
| | | "dev": "vite", |
| | | "build": "vite build", |
| | | "preview": "vite preview" |
| | | }, |
| | | "dependencies": { |
| | | "@element-plus/icons-vue": "^2.1.0", |
| | | "@microsoft/signalr": "^6.0.4", |
| | | "ali-oss": "^6.17.1", |
| | | "axios": "^0.21.1", |
| | | "core-js": "^3.6.5", |
| | | "echarts": "^5.0.2", |
| | | "@element-plus/icons-vue": "^2.3.1", |
| | | "ali-oss": "^6.22.0", |
| | | "axios": "^1.8.3", |
| | | "chart.js": "^4.4.7", |
| | | "echarts": "^5.6.0", |
| | | "element-china-area-data": "^6.1.0", |
| | | "element-plus": "^2.2.14", |
| | | "js-cookie": "^3.0.5", |
| | | "jsencrypt": "^3.3.2", |
| | | "less": "^4.1.1", |
| | | "print-js": "^1.6.0", |
| | | "vue": "^3.2.37", |
| | | "vue-3d-model": "^1.4.1", |
| | | "vue-draggable-next": "^2.0.1", |
| | | "vue-qr": "^4.0.9", |
| | | "vue-router": "^4.0.0-0", |
| | | "vuex": "^4.0.0-0", |
| | | "wangeditor": "^4.7.6", |
| | | "xlsx": "^0.18.5" |
| | | "element-plus": "^2.9.6", |
| | | "pinia": "^2.3.0", |
| | | "scss": "^0.2.4", |
| | | "vue": "^3.5.13", |
| | | "vue-3d-model": "2.0.0-alpha.4", |
| | | "vue-chartjs": "^5.3.2", |
| | | "vue-router": "^4.5.0", |
| | | "vuex": "^4.0.2", |
| | | "wangeditor": "^4.7.15" |
| | | }, |
| | | "devDependencies": { |
| | | "@babel/plugin-syntax-dynamic-import": "^7.8.3", |
| | | "@vue/cli-plugin-babel": "~4.5.0", |
| | | "@vue/cli-plugin-eslint": "~4.5.0", |
| | | "@vue/cli-plugin-router": "~4.5.0", |
| | | "@vue/cli-plugin-unit-mocha": "~4.5.0", |
| | | "@vue/cli-plugin-vuex": "~4.5.0", |
| | | "@vue/cli-service": "~4.5.0", |
| | | "@vue/compiler-sfc": "^3.0.0", |
| | | "@vue/test-utils": "^2.0.0-0", |
| | | "babel-eslint": "^10.1.0", |
| | | "chai": "^4.1.2", |
| | | "cross-env": "^7.0.3", |
| | | "less": "^4.1.1", |
| | | "less-loader": "^7.3.0", |
| | | "stylus": "^0.54.7", |
| | | "stylus-loader": "^3.0.2" |
| | | }, |
| | | "eslintConfig": { |
| | | "root": true, |
| | | "env": { |
| | | "node": true |
| | | }, |
| | | "extends": [ |
| | | "plugin:vue/essential", |
| | | "@vue/standard" |
| | | ], |
| | | "rules": { |
| | | "indent": [ |
| | | 1, |
| | | 4 |
| | | ] |
| | | }, |
| | | "parserOptions": { |
| | | "parser": "babel-eslint" |
| | | } |
| | | }, |
| | | "eslintIgnore": [ |
| | | "*" |
| | | ] |
| | | "@vitejs/plugin-vue": "^5.2.1", |
| | | "@vitejs/plugin-vue-jsx": "^4.1.1", |
| | | "less": "^4.2.2", |
| | | "sass-embedded": "^1.83.1", |
| | | "sass-loader": "^7.3.1", |
| | | "vite": "^6.0.5", |
| | | "vite-plugin-vue-devtools": "^7.6.8" |
| | | } |
| | | } |
| | |
| | | <template> |
| | | <div id="nav"></div> |
| | | <el-config-provider :locale="locale"> |
| | | <router-view /> |
| | | </el-config-provider> |
| | | </template> |
| | | <script> |
| | | import { ElConfigProvider } from "element-plus"; |
| | | import zhCn from "element-plus/lib/locale/lang/zh-cn"; |
| | | export default { |
| | | name: "vol_app", |
| | | components: { |
| | | [ElConfigProvider.name]: ElConfigProvider, //æ·»å ç»ä»¶ |
| | | }, |
| | | data() { |
| | | return { |
| | | locale: zhCn, |
| | | }; |
| | | }, |
| | | }; |
| | | <script setup> |
| | | import { RouterLink, RouterView } from "vue-router"; |
| | | </script> |
| | | <style lang="less"> |
| | | .header { |
| | | //èªå®ä¹ |
| | | .el-select__wrapper { |
| | | min-height: 2rem; |
| | | font-size: 0.88rem; |
| | | line-height: 1.25rem; |
| | | box-shadow: none !important; |
| | | border: none; |
| | | outline: none; |
| | | } |
| | | .el-select__placeholder.is-transparent { |
| | | color: #101010; |
| | | font-size: 0.88rem; |
| | | } |
| | | |
| | | .el-input__inner { |
| | | min-height: 2rem; |
| | | line-height: 1.25rem; |
| | | height: 2rem; |
| | | font-size: 0.88rem; |
| | | width: 15rem; |
| | | } |
| | | <template> |
| | | <RouterView /> |
| | | </template> |
| | | |
| | | .el-input__wrapper { |
| | | box-shadow: none !important; |
| | | } |
| | | |
| | | .el-input__wrapper.is-focus { |
| | | box-shadow: none !important; |
| | | } |
| | | } |
| | | |
| | | .el-menu-item.is-active { |
| | | color: #fff !important; |
| | | background-color: #1f63ff; |
| | | } |
| | | |
| | | .el-menu-item:hover { |
| | | outline: 0 !important; |
| | | color: #fff !important; |
| | | background-color: #1f63ff !important; |
| | | } |
| | | |
| | | .el-menu { |
| | | border: 0 !important; |
| | | } |
| | | |
| | | .paginationBox { |
| | | /deep/ .btn-prev { |
| | | //ä¸ä¸é¡µæé® |
| | | background-color: #ffff; |
| | | color: #101010 60%; |
| | | font-size: 0.88rem; |
| | | } |
| | | |
| | | /deep/ .btn-next { |
| | | //ä¸ä¸é¡µæé® |
| | | background-color: #fff; |
| | | color: #101010 60%; |
| | | font-size: 0.88rem; |
| | | } |
| | | |
| | | /deep/ .el-pagination__jump { |
| | | color: #000; //åå¾ï¼ï¼é¡µ |
| | | font-size: 0.88rem; |
| | | } |
| | | |
| | | /deep/ .el-input__inner { |
| | | color: #020202; //æåé¢è² |
| | | } |
| | | |
| | | /deep/ .el-pager li { |
| | | //æé®å表 |
| | | border-radius: 0.19rem; |
| | | background-color: rgba(255, 255, 255, 1); |
| | | color: rgba(2, 2, 2, 0.6); |
| | | font-size: 0.88rem; |
| | | text-align: center; |
| | | border: 0.06rem solid rgba(220, 220, 220, 1); |
| | | margin-right: 0.5rem; |
| | | } |
| | | |
| | | /deep/ .el-pager li:hover { |
| | | //æé®å表 hover |
| | | color: rgba(38, 111, 232, 1); |
| | | border: 0.06rem solid rgba(38, 111, 232, 1); |
| | | } |
| | | } |
| | | |
| | | <style lang="scss"> |
| | | /* ç¼ååªä½æ¥è¯¢ï¼æ ¹æ®å±å¹å¤§å°æ¹åhtmlçåä½å¤§å° */ |
| | | |
| | | @media screen and (max-width: 1200px) { |
| | | html { |
| | | font-size: 10px; |
| | |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | // #app { |
| | | // width: 100vw; |
| | | // height: 100vh; |
| | | // display: flex; |
| | | // align-items: center; |
| | | // justify-content: center; |
| | | // } |
| | | #app { |
| | | font-family: Avenir, Helvetica, Arial, sans-serif; |
| | | -webkit-font-smoothing: antialiased; |
| | | -moz-osx-font-smoothing: grayscale; |
| | | height: 100%; |
| | | width: 100%; |
| | | } |
| | | |
| | | .el-alert--error.is-light { |
| | | border: 1px solid #ffe0e0; |
| | | } |
| | | |
| | | .el-alert--error.is-light { |
| | | color: #f74444 !important; |
| | | } |
| | | |
| | | .el-alert--warning.is-light { |
| | | border: 1px solid #ffe6c1; |
| | | } |
| | | |
| | | .el-alert--info.is-light { |
| | | border: 1px solid #e6e5e5; |
| | | } |
| | | |
| | | .el-alert--info .el-alert__description { |
| | | color: #6b6b6b !important; |
| | | } |
| | | |
| | | .el-alert--warning.is-light { |
| | | background-color: #fdf6ec; |
| | | color: #d68409 !important; |
| | | } |
| | | |
| | | .el-alert--success.is-light { |
| | | border: 1px solid #cdf7b8; |
| | | } |
| | | |
| | | .el-alert--success.is-light .el-alert__description { |
| | | color: #3baf02 !important; |
| | | } |
| | | </style> |
| | |
| | | |
| | | const router = useRouter(); |
| | | axios.defaults.timeout = 50000; |
| | | axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8' |
| | | axios.defaults.headers.post["Content-Type"] = |
| | | "application/x-www-form-urlencoded;charset=UTF-8"; |
| | | axios.defaults.headers.post["Content-Type"] = "multipart/form-data"; |
| | |
| | | //è·å任塿¨¡æ¿(ç³»ç»æ¥å£) |
| | | export const Add = (data) => http.get(`api/NjTask/Add`, data) |
| | | |
| | | //æ´æ°ä»»å¡ |
| | | export const Update = (data) => http.post(`/api/NjTask/UpdateData`, data) |
| | | |
| | | //æ¥è¯¢æ¥å£ |
| | | |
| | | //æ¹éå é¤ |
| | | export const Delete = (data) => http.post(`/api/NjTask/Del`, data) |
| | | |
| | | |
| | | |
| | | //å¯¼åº |
| | | export const ExportApi = (data) => http.download(`/api/NjTask/Export`, data, "æ°æ®.xlsx", "å è½½ä¸") |
| | |
| | | //è·åå¥ç |
| | | export const ArticleInfom = (data) => http.post(`/api/ArticleInfom/GetPageData`, data) |
| | | //å¯¼åº |
| | | export const ExportApi = (data) => http.download('/api/Process/Export', data, "å·¥èºæ°æ®.xlsx", "å è½½ä¸") |
| | | export const ExportApi = (data) => http.download('/api/Process/Export', data, "å·¥èºæ°æ®.xlsx", "å è½½ä¸") |
| | | |
| | | //å é¤å·¥èº |
| | | export const DelProcess = (data) => http.post(`/api/Process/Del`, data) |
| | | |
| | | //è·æ°æè
ç¼è¾å·¥èº |
| | | export const AddOrUpdateProcess = (data) => http.post(`/api/Process/AddOrUpdateProcess`, data) |
| | |
| | | import http from "../http"; |
| | | |
| | | //å½åä½ä¸è·åæ°æ® ç±»å« |
| | | // /api/Putake/ShowPutake |
| | | export const ShowPutake = (data) => http.post("api/Putake/ShowPutake", data); |
| | | |
| | | //æ¥çä»»å¡è¯¦æ
|
| | | // /api/Putake/GetNjtake |
| | | export const GetNjtake = (data) => http.post("api/Putake/GetNjtake", data); |
| | | |
| | | //确认é¢å |
| | | ///api/Putake/ChangeStatus |
| | | export const ChangeStatus = (data) => http.post("api/Putake/ChangeStatus", data); |
| | | |
| | | //æ°æ®è®°å½ |
| | | ///api/Putake/Add |
| | | export const Add = (data) => http.post("api/Putake/Add", data); |
| | | |
| | | //æ°æ®è®°å½æ¥ç详æ
|
| | |
| | | export const DeleteData = (data) => http.post('/api/Template/Del', data) |
| | | |
| | | //å¯¼åº |
| | | export const ExportApi = (data) => http.post('/api/Template/Export', data, "æ¨¡æ¿æ°æ®.xlsx", "å è½½ä¸") |
| | | export const ExportApi = (data) => http.download('/api/Template/Export', data, "æ¨¡æ¿æ°æ®.xlsx", "å è½½ä¸") |
| | |
| | | // è·åæ°æ® |
| | | export const GetPageData = (data) => http.post("/api/Putake/GetPageData", data) |
| | | |
| | | //æ°è·åæ°æ®æ¥å£ |
| | | export const GetPageDataNew = (data) => http.post(`/api/User/PermissionView?userId=${data.userId}&group=${data.group}`) |
| | | |
| | | // æ¥ç详æ
|
| | | export const GetDetail = (data) => http.get(`/api/NjTask/GetNjdetail?njtaskID=${data}`) |
| | | //æ¹åç¶æ |
| | | export const ChangeStatus = (data) => http.post("/api/Putake/ChangeStatus", data) |
| | | export const ChangeStatus = (data) => http.post(`/api/Putake/ChangeStatus?id=${data.id}&gruops=${data.gruops}&Creater=${data.creater}`) |
| | | |
| | | //æ¹éå¯¼åº |
| | | export const ExportApi = (data) => http.download("/api/Putake/Export", data, "æ°æ®.xlsx", "å è½½ä¸") |
| | | //è·åæ°å大屿°æ® |
| | | export const GetScreenData = (data) => http.get(`/api/Process/Getcircuit?group=${data.group}&takeid=${data.takeid}`) |
| | | |
| | | //ä¸ä¸æ¥ |
| | | export const GetPre = (data) => http.post(`/api/Process/PreviousProcess`, data) |
| | | |
| | | //ä¸ä¸æ¥ |
| | | export const GetNext = (data, flag) => http.post(`/api/Process/Nextprocess?flag=${flag}`, data) |
| | | //宿 |
| | | export const Complete = (data) => http.post(`/api/Putake/ChangeStatus`, data) |
| | | |
| | | //è·ååç©å¼ |
| | | export const GetTorque = (data) => http.post(`/api/TorqueOp/Checkvalue`, data) |
| | |
| | | //è·åè´¦å·ä¿¡æ¯ |
| | | export const GetUserInfo = (data) => http.post('/api/User/getCurrentUserInfo', data) |
| | | |
| | | //ä¿®æ¹å¯ç |
| | | export const UpdatePassword = (data) => http.post('/api/User/modifyPwd', data) |
| | | //ä¿®æ¹å¯ç id=${data.id}& |
| | | export const UpdatePassword = (data) => http.post(`/api/User/modifyPwd?newPwd=${data.newPwd}&oldPwd=${data.oldPwd}`) |
| | | // |
| | | export const UpdatePwd = (data) => http.post(`/api/User/UpdatePwd?id=${data.id}&newPwd=${data.newPwd}&oldPwd=${data.oldPwd}`) |
| | | |
| | | //导åºç¨æ·å表 |
| | | export const ExportApi = (data) => http.download("/api/User/Export", data, "ç¨æ·åè¡¨æ°æ®.xlsx", "å è½½ä¸"); |
| | | //导åºç¨æ·è§è² |
| | | export const ExportApi1 = (data) => http.download("/api/Sys_Role/Export", data, "ç¨æ·è§è²æ°æ®.xlsx", "å è½½ä¸"); |
| | | |
| | | //ç¨æ·ä¸ä¼ 头å |
| | | export const UploadAvatar = (data) => http.upload('/api/User/UploadAvatar?userId=${data.userId}', data.files) |
| | | |
| | | //æ°å»ºç¨æ· |
| | | export const AddUserApi = (data) => http.post('/api/User/AddUser', data,) |
| | | |
| | | //ç¼è¾ç¨æ· |
| | | export const EditUserApi = (data) => http.post('/api/User/UploaUser', data) |
| | | //ä¿åä¸ªäººä¿¡æ¯ |
| | | export const Upuserbase = (data) => http.post('/api/User/Upuserbase', data) |
| | | |
copy from "\351\241\271\347\233\256\344\273\243\347\240\201/client/public/3D/test.gltf"
copy to "\351\241\271\347\233\256\344\273\243\347\240\201/client/src/assets/3D/test.gltf"
| | |
| | | <template> |
| | | <div class="router-loading" style="background: #eeeeee5c;"> |
| | | <div class="router-loading" style="background: #eeeeee5c"> |
| | | <div class="spanner"> |
| | | <span></span> |
| | | <span></span> |
| | |
| | | export default { |
| | | data() { |
| | | return {}; |
| | | } |
| | | }, |
| | | }; |
| | | </script> |
| | | <style scoped> |
| | |
| | | </draggable> |
| | | </template> |
| | | <script> |
| | | import { VueDraggableNext } from 'vue-draggable-next'; |
| | | // import { VueDraggableNext } from 'vue-draggable-next'; |
| | | import { defineComponent, ref, reactive } from 'vue'; |
| | | |
| | | export default defineComponent({ |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import VolElementMenuChild from "./VolElementMenuChild"; |
| | | // import VolElementMenuChild from "./VolElementMenuChild"; |
| | | import { useRouter } from "vue-router"; |
| | | |
| | | import { |
| | |
| | | node-key="key" |
| | | :props="{ label: 'label' }" |
| | | > |
| | | <template #default="{data,node }"> |
| | | <template #default="{ data, node }"> |
| | | <!-- <el-checkbox v-model="node.checked"></el-checkbox> --> |
| | | <!-- {{getNode(node, data)}} --> |
| | | <!-- {{node.checked}} --> |
| | | <!-- è¿éè¿æç¹é®é¢ï¼åé¢å¤ç --> |
| | | {{ data.label}}</template |
| | | <!-- {{getNode(node, data)}} --> |
| | | <!-- {{node.checked}} --> |
| | | <!-- è¿éè¿æç¹é®é¢ï¼åé¢å¤ç --> |
| | | {{ data.label }}</template |
| | | > |
| | | </el-tree-select> |
| | | <template |
| | |
| | | v-else-if="item.type == 'cascader'" |
| | | :options="item.data" |
| | | :props="{ |
| | | checkStrictly: item.changeOnSelect || item.checkStrictly |
| | | checkStrictly: item.changeOnSelect || item.checkStrictly, |
| | | }" |
| | | @change="item.onChange" |
| | | > |
| | |
| | | type="textarea" |
| | | :autosize="{ |
| | | minRows: item.minRows || 2, |
| | | maxRows: item.maxRows || 10 |
| | | maxRows: item.maxRows || 10, |
| | | }" |
| | | :placeholder="item.placeholder ? item.placeholder : item.title" |
| | | /> |
| | |
| | | <script> |
| | | const rule = { |
| | | change: [ |
| | | 'checkbox', |
| | | 'select', |
| | | 'date', |
| | | 'datetime', |
| | | 'drop', |
| | | 'radio', |
| | | 'cascader' |
| | | "checkbox", |
| | | "select", |
| | | "date", |
| | | "datetime", |
| | | "drop", |
| | | "radio", |
| | | "cascader", |
| | | ], // 2020.05.31å¢å 级èç±»å |
| | | phone: /^[1][3,4,5,6,7,8,9][0-9]{9}$/, |
| | | decimal: /(^[\-0-9][0-9]*(.[0-9]+)?)$/, |
| | | number: /(^[\-0-9][0-9]*([0-9]+)?)$/ |
| | | number: /(^[\-0-9][0-9]*([0-9]+)?)$/, |
| | | }; |
| | | const inputTypeArr = ['text', 'string', 'mail', 'textarea', 'password']; |
| | | const inputTypeArr = ["text", "string", "mail", "textarea", "password"]; |
| | | const types = { |
| | | int: 'number', |
| | | byte: 'number', |
| | | decimal: 'number', // "float", |
| | | string: 'string', |
| | | bool: 'boolean', |
| | | date: 'datetime', |
| | | date: 'date', |
| | | mail: 'email' |
| | | int: "number", |
| | | byte: "number", |
| | | decimal: "number", // "float", |
| | | string: "string", |
| | | bool: "boolean", |
| | | date: "datetime", |
| | | date: "date", |
| | | mail: "email", |
| | | }; |
| | | //表åéªè¯æ³¨æï¼æ¯æ¬¡éªè¯é½å¿
é¡»æ§è¡callback,å¦åéªè¯ä¸æ§è¡åè°æ¹æ³ |
| | | const colPow = Math.pow(10, 3); |
| | | import FormExpand from './VolForm/VolFormRender'; |
| | | import FormExpand from "./VolForm/VolFormRender"; |
| | | import { |
| | | defineAsyncComponent, |
| | | defineComponent, |
| | |
| | | toRefs, |
| | | getCurrentInstance, |
| | | onMounted, |
| | | watch |
| | | } from 'vue'; |
| | | watch, |
| | | } from "vue"; |
| | | export default defineComponent({ |
| | | components: { |
| | | FormExpand, |
| | | 'vol-upload': defineAsyncComponent(() => |
| | | import('@/components/basic/VolUpload.vue') |
| | | "vol-upload": defineAsyncComponent(() => |
| | | import("@/components/basic/VolUpload.vue") |
| | | ), |
| | | 'vol-wang-editor': defineAsyncComponent(() => |
| | | import('@/components/editor/VolWangEditor.vue') |
| | | ) |
| | | "vol-wang-editor": defineAsyncComponent(() => |
| | | import("@/components/editor/VolWangEditor.vue") |
| | | ), |
| | | }, |
| | | props: { |
| | | loadKey: { |
| | | // æ¯å¦å è½½formRulesåæ®µé
ç½®çæ°æ®æº |
| | | type: Boolean, |
| | | default: true |
| | | default: true, |
| | | }, |
| | | width: { |
| | | // 表å宽度 |
| | | type: Number, |
| | | default: 0 |
| | | default: 0, |
| | | }, |
| | | labelWidth: { |
| | | // 表å左边labelæåæ ç¾ç宽度 |
| | | type: Number, |
| | | default: 100 |
| | | default: 100, |
| | | }, |
| | | formRules: { |
| | | // 表åé
ç½®è§åï¼å¦å段类åï¼æ¯å¦å¿
å¡« |
| | | type: Array, |
| | | default: [] |
| | | default: [], |
| | | }, |
| | | formFields: { |
| | | type: Object, |
| | | default: () => { |
| | | return {}; |
| | | } |
| | | }, |
| | | }, |
| | | editor: { |
| | | // 2021.01.16ç¼è¾å¨ä¿¡æ¯ {uploadImgUrl:"",upload:null//ä¸ä¼ æ¹æ³} |
| | | type: Object, |
| | | default: () => { |
| | | return {}; |
| | | } |
| | | }, |
| | | }, |
| | | size: { |
| | | type: String, //large / default / small |
| | | default: 'large' |
| | | default: "large", |
| | | }, |
| | | select2Count: { |
| | | //è¶
åºæ°éæ¾ç¤ºselect2ç»ä»¶ |
| | | type: Number, |
| | | default: 500 |
| | | } |
| | | default: 500, |
| | | }, |
| | | }, |
| | | computed: { |
| | | rules() { |
| | |
| | | }, 100); |
| | | } |
| | | return ruleResult; |
| | | } |
| | | }, |
| | | }, |
| | | setup(props, context) { |
| | | const { appContext, proxy } = getCurrentInstance(); |
| | |
| | | }); |
| | | } |
| | | row.forEach((item, yIndex) => { |
| | | if (item.type == 'number') { |
| | | if (item.type == "number") { |
| | | numberFields.push(item.field); |
| | | } |
| | | // ç®ååªæ¯æselectåéè¿ç¨æç´¢ï¼remoteè¿ç¨ä»åå°åå
¸æ°æ®æºè¿è¡æç´¢ï¼url仿å®çurlæç´¢ |
| | |
| | | // åå§åæ°æ®æºç©ºå¯¹è±¡ |
| | | if (item.dataKey) { |
| | | // 䏿æ¡é½å¼ºå¶è®¾ç½®ä¸ºå符串类å |
| | | item.columnType = 'string'; |
| | | item.columnType = "string"; |
| | | if (!item.data) { |
| | | item.data = []; |
| | | } |
| | | } |
| | | |
| | | if (item.range || item.type == 'range') { |
| | | if (item.range || item.type == "range") { |
| | | if ( |
| | | !(props.formFields[item.field] instanceof Array) || |
| | | props.formFields[item.field].length != 2 |
| | | ) { |
| | | props.formFields[item.field] = ['', '']; |
| | | props.formFields[item.field] = ["", ""]; |
| | | } |
| | | rangeFields.push(item.field); |
| | | } |
| | |
| | | |
| | | if (keys.length == 0) return; |
| | | appContext.config.globalProperties.http |
| | | .post('/api/Sys_Dictionary/GetVueDictionary', keys) |
| | | .post("/api/Sys_Dictionary/GetVueDictionary", keys) |
| | | .then((dic) => { |
| | | bindOptions(dic, binds); |
| | | proxy.$emit('dicInited', dic); |
| | | proxy.$emit("dicInited", dic); |
| | | }); |
| | | }; |
| | | const bindOptions = (dic, binds) => { |
| | |
| | | if (d.data.length > props.select2Count) { |
| | | if ( |
| | | !binds.some((x) => { |
| | | return x.key == d.dicNo && x.type == 'cascader'; |
| | | return x.key == d.dicNo && x.type == "cascader"; |
| | | }) |
| | | ) { |
| | | d.data.forEach((item) => { |
| | |
| | | // å¦æææ°æ®çå䏿¥è¯¢ |
| | | if (x.data.length > 0) return true; |
| | | //2022.03.13å¢å çº§èæ°æ®æºèªå¨è½¬æ¢ |
| | | if (x.type == 'cascader' || x.type == 'treeSelect') { |
| | | if (x.type == "cascader" || x.type == "treeSelect") { |
| | | let _data = JSON.parse(JSON.stringify(d.data)); |
| | | let cascaderArr = appContext.config.globalProperties.base.convertTree( |
| | | _data, |
| | | (node, data, isRoot) => { |
| | | if (!node.inited) { |
| | | node.inited = true; |
| | | node.label = node.value; |
| | | node.value = node.key; |
| | | let cascaderArr = |
| | | appContext.config.globalProperties.base.convertTree( |
| | | _data, |
| | | (node, data, isRoot) => { |
| | | if (!node.inited) { |
| | | node.inited = true; |
| | | node.label = node.value; |
| | | node.value = node.key; |
| | | } |
| | | } |
| | | } |
| | | ); |
| | | ); |
| | | props.formRules.forEach((option) => { |
| | | option.forEach((item) => { |
| | | if (item.dataKey == x.key) { |
| | |
| | | } |
| | | }); |
| | | }); |
| | | } else if (d.data.length > 0 && !d.data[0].hasOwnProperty('key')) { |
| | | } else if (d.data.length > 0 && !d.data[0].hasOwnProperty("key")) { |
| | | let source = d.data, |
| | | newSource = new Array(source.length); |
| | | for (let index = 0; index < source.length; index++) { |
| | | newSource[index] = { |
| | | key: source['key'] + '', |
| | | value: source['value'] |
| | | key: source["key"] + "", |
| | | value: source["value"], |
| | | }; |
| | | } |
| | | x.data.push(...newSource); |
| | |
| | | const initUpload = (item, init) => { |
| | | if (!init) return; |
| | | if ( |
| | | ['img', 'excel', 'file'].indexOf(item.type != -1) || |
| | | item.columnType == 'img' |
| | | ["img", "excel", "file"].indexOf(item.type != -1) || |
| | | item.columnType == "img" |
| | | ) { |
| | | // åªæ¯æ²¡è®¾ç½®æ¯å¦èªå¨ä¸ä¼ çï¼é»è®¤é½æ¯éæ©æä»¶åèªå¨ä¸ä¼ |
| | | if (!item.hasOwnProperty('autoUpload')) { |
| | | if (!item.hasOwnProperty("autoUpload")) { |
| | | item.autoUpload = true; |
| | | } |
| | | if (!item.hasOwnProperty('fileList')) { |
| | | if (!item.hasOwnProperty("fileList")) { |
| | | item.fileList = true; |
| | | } |
| | | if (!item.hasOwnProperty('downLoad')) { |
| | | if (!item.hasOwnProperty("downLoad")) { |
| | | item.downLoad = true; |
| | | } |
| | | if (!item.removeBefore) { |
| | |
| | | let result = true; |
| | | volform.value.validate((valid) => { |
| | | if (!valid) { |
| | | appContext.config.globalProperties.$message.error('æ°æ®éªè¯æªéè¿!'); |
| | | appContext.config.globalProperties.$message.error("æ°æ®éªè¯æªéè¿!"); |
| | | result = false; |
| | | } else if (typeof callback === 'function') { |
| | | } else if (typeof callback === "function") { |
| | | try { |
| | | callback(valid); |
| | | } catch (error) { |
| | |
| | | rangeFields, |
| | | numberFields, |
| | | validate, |
| | | volform |
| | | volform, |
| | | // initFormRules, |
| | | // initSource |
| | | }; |
| | |
| | | created() { |
| | | this.formRules.forEach((rules) => { |
| | | rules.forEach((option) => { |
| | | if (option.type == 'treeSelect' && option.multiple === undefined) { |
| | | if (option.type == "treeSelect" && option.multiple === undefined) { |
| | | option.multiple = true; |
| | | } |
| | | }); |
| | |
| | | data() { |
| | | return { |
| | | // remoteCall: true, |
| | | errorImg: 'this.src="' + require('@/assets/imgs/error-img.png') + '"' |
| | | errorImg: |
| | | 'this.src="' + |
| | | new URL("../assets/imgs/error-img.png", import.meta.url).href + |
| | | '"', |
| | | // span: 1, |
| | | // rangeFields: [], |
| | | }; |
| | |
| | | }, |
| | | getSrc(path) { |
| | | if (!path) return; |
| | | if (!this.base.isUrl(path) && path.indexOf('.') != -1) { |
| | | if (!this.base.isUrl(path) && path.indexOf(".") != -1) { |
| | | return this.http.ipAddress + path; |
| | | } |
| | | return path; |
| | |
| | | // æ¯å¦ä¸ºå¾çæä»¶çæ ¼å¼å¹¶å¯¹å段çè½¬æ¢ææ°ç»ï¼[{name:'1.jpg',path:'127.0.0.1/ff/1.jpg'}] |
| | | isFile(item, formFields) { |
| | | if ( |
| | | item.type == 'img' || |
| | | item.columnType == 'img' || |
| | | item.type == 'excel' || |
| | | item.type == 'file' |
| | | item.type == "img" || |
| | | item.columnType == "img" || |
| | | item.type == "excel" || |
| | | item.type == "file" |
| | | ) { |
| | | this.convertFileToArray(item, formFields); |
| | | return true; |
| | |
| | | return; |
| | | } |
| | | // å°ä»¥éå·éå¼çæä»¶å岿æ°ç»127.0.0.1/aa/1.jpg,å°127.0.0.1/aa/2.jpg |
| | | if (typeof fileInfo === 'string') { |
| | | if (fileInfo.trim() === '') { |
| | | if (typeof fileInfo === "string") { |
| | | if (fileInfo.trim() === "") { |
| | | formFields[item.field] = []; |
| | | return; |
| | | } |
| | | // 妿æä»¶è·¯å¾æ¯å符串ï¼å使ç¨ï¼æå |
| | | fileInfo = fileInfo.replace(/\\/g, '/'); |
| | | let files = fileInfo.split(','); |
| | | fileInfo = fileInfo.replace(/\\/g, "/"); |
| | | let files = fileInfo.split(","); |
| | | formFields[item.field] = []; |
| | | for (let index = 0; index < files.length; index++) { |
| | | let file = files[index]; |
| | | let splitFile = file.split('/'); |
| | | let splitFile = file.split("/"); |
| | | formFields[item.field].push({ |
| | | name: splitFile.length > 0 ? splitFile[splitFile.length - 1] : file, |
| | | path: file // this.base.isUrl(file) ? file : this.http.ipAddress + file, |
| | | path: file, // this.base.isUrl(file) ? file : this.http.ipAddress + file, |
| | | }); |
| | | } |
| | | } |
| | |
| | | file.path, |
| | | file.name, |
| | | { |
| | | Authorization: this.$store.getters.getToken() |
| | | Authorization: this.$store.getters.getToken(), |
| | | }, |
| | | this.http.ipAddress |
| | | ); |
| | | }, |
| | | validatorPhone(ruleOption, value, callback) { |
| | | if (!ruleOption.required && !value && value != '0') { |
| | | if (!ruleOption.required && !value && value != "0") { |
| | | return callback(); |
| | | } |
| | | if (!rule.phone.test((value || '').trim())) { |
| | | return callback(new Error('请è¾å
¥æ£ç¡®çææºå·')); |
| | | if (!rule.phone.test((value || "").trim())) { |
| | | return callback(new Error("请è¾å
¥æ£ç¡®çææºå·")); |
| | | } |
| | | callback(); |
| | | }, |
| | | validatorPwd(ruleOption, value, callback) { |
| | | if (!ruleOption.required && !value && value != '0') { |
| | | if (!ruleOption.required && !value && value != "0") { |
| | | return callback(); |
| | | } |
| | | if ((value + '').trim().length < 6) { |
| | | return callback(new Error('å¯ç é¿åº¦ä¸è½å°äº6ä½')); |
| | | if ((value + "").trim().length < 6) { |
| | | return callback(new Error("å¯ç é¿åº¦ä¸è½å°äº6ä½")); |
| | | } |
| | | callback(); |
| | | }, |
| | |
| | | ? val.map((x) => { |
| | | return x; |
| | | }) |
| | | : val.split(','); |
| | | : val.split(","); |
| | | for (let index = 0; index < valArr.length; index++) { |
| | | var _item = data.find((x) => { |
| | | return x.key && x.key != '0' && x.key + '' == valArr[index] + ''; |
| | | return x.key && x.key != "0" && x.key + "" == valArr[index] + ""; |
| | | }); |
| | | if (_item) { |
| | | valArr[index] = _item.value; |
| | | } |
| | | } |
| | | return valArr.join(','); |
| | | return valArr.join(","); |
| | | }, |
| | | getText(formFields, item) { |
| | | // 2019.10.24ä¿®å¤è¡¨åselectç»ä»¶ä¸ºåªè¯»ç屿§æ¶æ²¡æç»å®æ°æ®æº |
| | | let text = formFields[item.field]; |
| | | if (typeof text === 'function') return text(formFields); |
| | | if (text === 'null' || text === '' || text === null || text === undefined) |
| | | return '--'; |
| | | if (typeof text === "function") return text(formFields); |
| | | if (text === "null" || text === "" || text === null || text === undefined) |
| | | return "--"; |
| | | //2021.03.02å¢å åªè¯»æ¶æ¥æå¤ç |
| | | if (item.type == 'date') { |
| | | return text.replace('T', ' ').split(' ')[0]; |
| | | if (item.type == "date") { |
| | | return text.replace("T", " ").split(" ")[0]; |
| | | } |
| | | //2021.03.31ä¿®å¤è¡¨åswitchåªè¯»æ¶æ²¡æè½¬æ¢å¼çé®é¢ |
| | | if (item.type == 'switch') { |
| | | return text ? 'æ¯' : 'å¦'; |
| | | if (item.type == "switch") { |
| | | return text ? "æ¯" : "å¦"; |
| | | } |
| | | if (!item.data) return text; |
| | | if (item.type == 'selectList' || item.type == 'checkbox') { |
| | | if (item.type == "selectList" || item.type == "checkbox") { |
| | | return this.convertArrayValue(item.data, text); |
| | | } |
| | | var _item = item.data.find((x) => { |
| | |
| | | // console.log(2); |
| | | }, |
| | | onChange(item, value) { |
| | | if (item.onChange && typeof item.onChange === 'function') { |
| | | if (item.onChange && typeof item.onChange === "function") { |
| | | item.onChange(value, item); |
| | | } |
| | | }, |
| | |
| | | // console.log('undefined'); |
| | | } |
| | | this.remoteCall = false; |
| | | if (item.onChange && typeof item.onChange === 'function') { |
| | | if (item.onChange && typeof item.onChange === "function") { |
| | | item.onChange(value, item); |
| | | } |
| | | }, |
| | |
| | | return; |
| | | } |
| | | if ( |
| | | val == '' || |
| | | val == "" || |
| | | (item.data.length == 1 && |
| | | (val == item.data[0].key || val == item.data[0].value)) |
| | | ) { |
| | |
| | | // å¼¹åºæ¡æåå§åè¡¨åæ¶ç»data设置æ°ç»é»è®¤å¼2 |
| | | // 2020.09.26ä¿®å¤è¿ç¨æç´¢èªå®ä¹urlä¸èµ·ä½ç¨çé®é¢ |
| | | let url; |
| | | if (typeof item.url === 'function') { |
| | | if (typeof item.url === "function") { |
| | | url = item.url(val, item.dataKey, item); |
| | | } else { |
| | | url = |
| | | (item.url || '/api/Sys_Dictionary/GetSearchDictionary') + |
| | | '?dicNo=' + |
| | | (item.url || "/api/Sys_Dictionary/GetSearchDictionary") + |
| | | "?dicNo=" + |
| | | item.dataKey + |
| | | '&value=' + |
| | | "&value=" + |
| | | val; |
| | | } |
| | | this.http.post(url).then((dicData) => { |
| | |
| | | }); |
| | | }, |
| | | getObject(date) { |
| | | if (typeof date === 'object') { |
| | | if (typeof date === "object") { |
| | | return date; |
| | | } |
| | | return new Date(date); |
| | | }, |
| | | reset(sourceObj) { |
| | | // éç½®è¡¨åæ¶ï¼ç¦ç¨è¿ç¨æ¥è¯¢ |
| | | this.$refs['volform'].resetFields(); |
| | | this.$refs["volform"].resetFields(); |
| | | if (this.rangeFields.length) { |
| | | this.rangeFields.forEach((key) => { |
| | | this.formFields[key].splice(0); |
| | |
| | | if ( |
| | | // item.readonly || |
| | | // item.disabled || |
| | | item.type == 'switch' || |
| | | item.type == 'range' |
| | | item.type == "switch" || |
| | | item.type == "range" |
| | | ) |
| | | return { required: false }; |
| | | // ç¨æ·è®¾ç½®çèªå®ä¹æ¹æ³ |
| | | if (item.validator && typeof item.validator === 'function') { |
| | | if (item.validator && typeof item.validator === "function") { |
| | | return { |
| | | validator: (rule, val, callback) => { |
| | | // ç¨æ·èªå®ä¹çæ¹æ³ï¼å¦æè¿åäºå¼ï¼ç´æ¥æ¾ç¤ºè¿åçå¼ï¼éªè¯ä¸éè¿ |
| | | let message = item.validator(rule, val); |
| | | if (message) return callback(new Error(message + '')); |
| | | if (message) return callback(new Error(message + "")); |
| | | return callback(); |
| | | }, |
| | | required: item.required, |
| | | trigger: rule.change.indexOf(item.type) != -1 ? 'change' : 'blur' |
| | | trigger: rule.change.indexOf(item.type) != -1 ? "change" : "blur", |
| | | }; |
| | | } |
| | | if (['img', 'excel', 'file'].indexOf(item.type) != -1) { |
| | | if (["img", "excel", "file"].indexOf(item.type) != -1) { |
| | | return { |
| | | validator: (rule, val, callback) => { |
| | | //2021.09.05ç§»é¤æä»¶ä¸ä¼ é»è®¤å¿
å¡« |
| | |
| | | (!val || !val.length) |
| | | ) { |
| | | return callback( |
| | | new Error(item.type == 'img' ? '请ä¸ä¼ ç
§ç' : '请ä¸ä¼ æä»¶') |
| | | new Error(item.type == "img" ? "请ä¸ä¼ ç
§ç" : "请ä¸ä¼ æä»¶") |
| | | ); |
| | | } |
| | | return callback(); |
| | | }, |
| | | required: item.required, |
| | | trigger: 'change' |
| | | trigger: "change", |
| | | }; |
| | | } |
| | | // 设置æ°åçæå¤§å¼æ°æå°å¼ |
| | | if ( |
| | | item.type == 'number' || |
| | | item.columnType == 'number' || |
| | | item.columnType == 'int' || |
| | | item.type == 'decimal' |
| | | item.type == "number" || |
| | | item.columnType == "number" || |
| | | item.columnType == "int" || |
| | | item.type == "decimal" |
| | | ) { |
| | | // 妿æ¯å¿
å¡«é¡¹çæ°åï¼è®¾ç½®ä¸ä¸ªé»è®¤æå¤§ä¸æå¼å° |
| | | if (item.required && typeof item.min !== 'number') { |
| | | if (item.required && typeof item.min !== "number") { |
| | | item.min = 0; //item.type == "decimal" ? 0.1 : 1; |
| | | } |
| | | |
| | | return { |
| | | required: item.required, |
| | | message: item.title + 'åªè½æ¯æ°å', |
| | | message: item.title + "åªè½æ¯æ°å", |
| | | title: item.title, |
| | | trigger: 'blur', |
| | | trigger: "blur", |
| | | min: item.min, |
| | | max: item.max, |
| | | type: item.columnType || item.type, |
| | | validator: (ruleObj, value, callback) => { |
| | | if (!ruleObj.min && !ruleObj.max) { |
| | | if (ruleObj.required) { |
| | | if ((!value && value != '0') || !rule.decimal.test(value)) { |
| | | return callback(new Error('åªè½æ¯æ°å')); |
| | | if ((!value && value != "0") || !rule.decimal.test(value)) { |
| | | return callback(new Error("åªè½æ¯æ°å")); |
| | | } |
| | | } |
| | | return callback(); |
| | | } |
| | | if (this.isReadonly(item)) return callback(); |
| | | if (ruleObj.type == 'number') { |
| | | if (ruleObj.type == "number") { |
| | | if (!rule.number.test(value)) { |
| | | ruleObj.message = ruleObj.title + 'åªè½æ¯æ´æ°'; |
| | | ruleObj.message = ruleObj.title + "åªè½æ¯æ´æ°"; |
| | | return callback(new Error(ruleObj.message)); |
| | | } |
| | | } else { |
| | | if (!rule.decimal.test(value)) { |
| | | ruleObj.message = ruleObj.title + 'åªè½æ¯æ°å'; |
| | | ruleObj.message = ruleObj.title + "åªè½æ¯æ°å"; |
| | | return callback(new Error(ruleObj.message)); |
| | | } |
| | | } |
| | | if ( |
| | | ruleObj.min !== undefined && |
| | | typeof ruleObj.min === 'number' && |
| | | typeof ruleObj.min === "number" && |
| | | value < ruleObj.min |
| | | ) { |
| | | ruleObj.message = ruleObj.title + 'ä¸è½å°äº' + ruleObj.min; |
| | | ruleObj.message = ruleObj.title + "ä¸è½å°äº" + ruleObj.min; |
| | | return callback(new Error(ruleObj.message)); |
| | | } |
| | | if ( |
| | | ruleObj.max !== undefined && |
| | | typeof ruleObj.max === 'number' && |
| | | typeof ruleObj.max === "number" && |
| | | value > ruleObj.max |
| | | ) { |
| | | ruleObj.message = ruleObj.title + 'ä¸è½å¤§äº' + ruleObj.max; |
| | | ruleObj.message = ruleObj.title + "ä¸è½å¤§äº" + ruleObj.max; |
| | | return callback(new Error(ruleObj.message)); |
| | | } |
| | | return callback(); |
| | | } |
| | | }, |
| | | }; |
| | | } |
| | | |
| | | // ææºãå¯ç éªè¯ |
| | | if (item.type == 'password' || item.type == 'phone') { |
| | | if (item.type == "password" || item.type == "phone") { |
| | | return { |
| | | validator: |
| | | item.type == 'phone' ? this.validatorPhone : this.validatorPwd, |
| | | item.type == "phone" ? this.validatorPhone : this.validatorPwd, |
| | | required: item.required, |
| | | trigger: 'blur' |
| | | trigger: "blur", |
| | | }; |
| | | } |
| | | |
| | | if (!item.required && item.type != 'mail') return { required: false }; |
| | | if (!item.required && item.type != "mail") return { required: false }; |
| | | |
| | | if (!item.hasOwnProperty('type')) item.type = 'text'; |
| | | if (!item.hasOwnProperty("type")) item.type = "text"; |
| | | |
| | | if (inputTypeArr.indexOf(item.type) != -1) { |
| | | let message = |
| | | item.title + |
| | | (item.type == 'mail' ? 'å¿
é¡»æ¯ä¸ä¸ªé®ç®±å°å' : 'ä¸è½ä¸ºç©º'); |
| | | let type = item.type == 'mail' ? 'email' : types[item.columnType]; |
| | | (item.type == "mail" ? "å¿
é¡»æ¯ä¸ä¸ªé®ç®±å°å" : "ä¸è½ä¸ºç©º"); |
| | | let type = item.type == "mail" ? "email" : types[item.columnType]; |
| | | let _rule = { |
| | | required: true, |
| | | message: message, |
| | | trigger: 'blur', |
| | | trigger: "blur", |
| | | type: type, |
| | | validator: (ruleObj, value, callback) => { |
| | | if ( |
| | | !this.isReadonly(item) && |
| | | (value === '' || value === undefined || value === null) |
| | | (value === "" || value === undefined || value === null) |
| | | ) { |
| | | return callback(new Error(ruleObj.message)); |
| | | } |
| | | return callback(); |
| | | } |
| | | }, |
| | | }; |
| | | if (item.type == 'mail') { |
| | | if (item.type == "mail") { |
| | | _rule.validator = undefined; |
| | | return _rule; |
| | | } |
| | | if (item.min) { |
| | | _rule.min = item.min; |
| | | _rule.message = item.title + 'è³å°' + item.min + '个å符!'; |
| | | _rule.message = item.title + "è³å°" + item.min + "个å符!"; |
| | | } |
| | | if (item.max) { |
| | | return [ |
| | |
| | | { |
| | | max: item.max, |
| | | required: true, |
| | | message: item.title + 'æå¤' + item.max + '个å符!', |
| | | trigger: 'blur' |
| | | } |
| | | message: item.title + "æå¤" + item.max + "个å符!", |
| | | trigger: "blur", |
| | | }, |
| | | ]; |
| | | } |
| | | return _rule; |
| | | } |
| | | |
| | | if (item.type == 'radio') { |
| | | if (item.type == "radio") { |
| | | return { |
| | | required: item.required, |
| | | message: 'è¯·éæ©' + item.title, |
| | | trigger: 'change', |
| | | type: 'string' |
| | | message: "è¯·éæ©" + item.title, |
| | | trigger: "change", |
| | | type: "string", |
| | | }; |
| | | } |
| | | if ( |
| | | item.type == 'date' || |
| | | item.type == 'datetime' || |
| | | item.type == 'month' || |
| | | item.type == 'time' |
| | | item.type == "date" || |
| | | item.type == "datetime" || |
| | | item.type == "month" || |
| | | item.type == "time" |
| | | ) { |
| | | return { |
| | | required: true, |
| | | message: 'è¯·éæ©' + item.title, |
| | | trigger: 'change', |
| | | type: item.range ? 'array' : 'string', |
| | | message: "è¯·éæ©" + item.title, |
| | | trigger: "change", |
| | | type: item.range ? "array" : "string", |
| | | validator: (rule, val, callback) => { |
| | | if (this.isReadonly(item)) return callback(); |
| | | // ç¨æ·èªå®ä¹çæ¹æ³ï¼å¦æè¿åäºå¼ï¼ç´æ¥æ¾ç¤ºè¿åçå¼ï¼éªè¯ä¸éè¿ |
| | | if (!val || (item.range && !val.length)) { |
| | | return callback(new Error('è¯·éæ©æ¥æ')); |
| | | return callback(new Error("è¯·éæ©æ¥æ")); |
| | | } |
| | | return callback(); |
| | | } |
| | | }, |
| | | }; |
| | | } |
| | | |
| | | if (item.type == 'cascader') { |
| | | if (item.type == "cascader") { |
| | | return { |
| | | type: 'array', |
| | | type: "array", |
| | | required: true, |
| | | min: item.min || 1, |
| | | // message: "è¯·éæ©" + item.title, |
| | | trigger: 'change', |
| | | trigger: "change", |
| | | validator: (rule, val, callback) => { |
| | | if (this.isReadonly(item)) return callback(); |
| | | // ç¨æ·èªå®ä¹çæ¹æ³ï¼å¦æè¿åäºå¼ï¼ç´æ¥æ¾ç¤ºè¿åçå¼ï¼éªè¯ä¸éè¿ |
| | | let _arr = this.formFields[item.field]; |
| | | if (!_arr || !_arr.length) { |
| | | return callback(new Error('è¯·éæ©' + item.title)); |
| | | return callback(new Error("è¯·éæ©" + item.title)); |
| | | } |
| | | return callback(); |
| | | } |
| | | }, |
| | | }; |
| | | } |
| | | |
| | | if ( |
| | | ['select', 'selectList', 'checkbox', 'cascader', 'treeSelect'].indexOf( |
| | | ["select", "selectList", "checkbox", "cascader", "treeSelect"].indexOf( |
| | | item.type |
| | | ) != -1 |
| | | ) { |
| | | let _rule = { |
| | | type: item.type == 'select' ? 'string' : 'array', |
| | | type: item.type == "select" ? "string" : "array", |
| | | required: true, |
| | | min: item.min || 1, |
| | | message: 'è¯·éæ©' + item.title, |
| | | trigger: 'change', |
| | | message: "è¯·éæ©" + item.title, |
| | | trigger: "change", |
| | | validator: (rule, value, callback) => { |
| | | if (this.isReadonly(item)) return callback(); |
| | | //2021.11.27ä¿®å¤å¤é没ææç¤ºçé®é¢ |
| | | if (value == undefined || value === '') { |
| | | if (value == undefined || value === "") { |
| | | return callback(new Error(rule.message)); |
| | | } else if ( |
| | | (item.type == 'checkbox' || |
| | | item.type == 'selectList' || |
| | | item.type == 'treeSelect') && |
| | | (item.type == "checkbox" || |
| | | item.type == "selectList" || |
| | | item.type == "treeSelect") && |
| | | (!(value instanceof Array) || !value.length) |
| | | ) { |
| | | return callback(new Error(rule.message)); |
| | | } |
| | | return callback(); |
| | | } |
| | | }, |
| | | }; |
| | | |
| | | if (_rule.max) { |
| | | _rule.nax = item.max; |
| | | _rule.message = 'æå¤åªè½éæ©' + item.max + '项'; |
| | | _rule.message = "æå¤åªè½éæ©" + item.max + "项"; |
| | | } |
| | | return _rule; |
| | | } |
| | |
| | | } |
| | | return ( |
| | | date1.valueOf() < |
| | | (typeof date2 == 'number' ? date2 : new Date(date2).valueOf()) |
| | | (typeof date2 == "number" ? date2 : new Date(date2).valueOf()) |
| | | ); |
| | | }, |
| | | getDateOptions(date, item) { |
| | |
| | | if ((!item.min && !item.max) || !date) { |
| | | return false; |
| | | } |
| | | if (item.min && item.min.indexOf(' ') == -1) { |
| | | if (item.min && item.min.indexOf(" ") == -1) { |
| | | //ä¸è®¾ç½®æ¶åç§ï¼åé¢ä¼èªå¨å ä¸ 08:00 |
| | | item.min = item.min + ' 00:00:000'; |
| | | item.min = item.min + " 00:00:000"; |
| | | } |
| | | return ( |
| | | this.compareDate(date, item.min) || !this.compareDate(date, item.max) |
| | | ); |
| | | }, |
| | | getDateFormat(item) { |
| | | if (item.type == 'month') { |
| | | return 'YYYY-MM'; |
| | | if (item.type == "month") { |
| | | return "YYYY-MM"; |
| | | } |
| | | // if (item.type=='time') { |
| | | // return 'HH:mm:ss' |
| | | // } |
| | | //è§https://day.js.org/docs/zh-CN/display/format |
| | | return item.type == 'date' ? 'YYYY-MM-DD' : 'YYYY-MM-DD HH:mm:ss'; |
| | | return item.type == "date" ? "YYYY-MM-DD" : "YYYY-MM-DD HH:mm:ss"; |
| | | }, |
| | | dateRangeChange(val, item) { |
| | | if (!val) { |
| | | this.$emit('update:formFields'); |
| | | this.$emit("update:formFields"); |
| | | return; |
| | | } |
| | | item.onChange && item.onChange(val); |
| | |
| | | filterMethod(value, data) { |
| | | return data.label.includes(value); |
| | | }, |
| | | getNode( label,node, data){ |
| | | console.log(label) |
| | | } |
| | | } |
| | | getNode(label, node, data) { |
| | | console.log(label); |
| | | }, |
| | | }, |
| | | }); |
| | | </script> |
| | | <style lang="less" scoped> |
| | |
| | | padding-left: 5px; |
| | | } |
| | | .el-form-item ::v-deep(textarea) { |
| | | font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', |
| | | 'Microsoft YaHei', '微软é
é»', Arial, sans-serif !important; |
| | | font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", |
| | | "Microsoft YaHei", "微软é
é»", Arial, sans-serif !important; |
| | | } |
| | | .el-form-item ::v-deep(.el-select .el-select__tags > span) { |
| | | display: flex; |
| | |
| | | |
| | | <script> |
| | | import VolBox from "@/components/basic/VolBox.vue"; |
| | | import { el } from "element-plus/es/locale"; |
| | | // import { el } from "element-plus/es/locale"; |
| | | export default { |
| | | components: { VolBox }, |
| | | data() { |
| | |
| | | > |
| | | <div> |
| | | <span style="color: rgb(255, 255, 255); font-size: 0.88rem" |
| | | >è§è²ï¼è¶
级管çå</span |
| | | >è§è²ï¼{{ acountInfo.roleName }}</span |
| | | > |
| | | </div> |
| | | <div style="margin-left: 2rem"> |
| | | <span style="color: rgb(255, 255, 255); font-size: 0.88rem" |
| | | >å§åï¼{{ userName }}</span |
| | | >å§åï¼{{ acountInfo.userTrueName }}</span |
| | | > |
| | | </div> |
| | | <img |
| | |
| | | <script> |
| | | // import { getTreeMenu } from "@/api/menu.js"; |
| | | import { baseUrl } from "../utils"; |
| | | |
| | | import loading from "@/components/basic/RouterLoading"; |
| | | import VolMenu from "@/components/basic/VolElementMenu.vue"; |
| | | import loading from "../components/basic/RouterLoading.vue"; |
| | | // import VolMenu from "@/components/basic/VolElementMenu.vue"; |
| | | import Message from "@/views/index/Message.vue"; |
| | | import MessageConfig from "@/views/index/MessageConfig.js"; |
| | | // import MessageConfig from "@/views/index/MessageConfig.js"; |
| | | |
| | | var imgUrl = require("@/assets/imgs/wms_x.png"); |
| | | var imgUrl = new URL("../assets/imgs/wms_x.png", import.meta.url).href; |
| | | var $this; |
| | | var $interval; |
| | | var $indexDate; |
| | |
| | | import { useRouter, useRoute } from "vue-router"; |
| | | import store from "../store/index"; |
| | | import http from "@/../src/api/http.js"; |
| | | import { GetUserInfo } from "@/api/user"; |
| | | |
| | | export default defineComponent({ |
| | | components: { |
| | | VolMenu, |
| | | // VolMenu, |
| | | loading, |
| | | Message, |
| | | }, |
| | |
| | | }, |
| | | ]); |
| | | const errorImg = ref( |
| | | 'this.src="' + require("@/assets/imgs/error-img.png") + '"' |
| | | 'this.src="' + |
| | | new URL("../assets/imgs/error-img.png", import.meta.url).href + |
| | | '"' |
| | | ); |
| | | const selectId = ref("1"); |
| | | // ãé¦é¡µãæ ç¾åºå·(å½åå³é®éä¸çèå) |
| | |
| | | } |
| | | } |
| | | Object.assign(_config.$tabs, { open: open, close: close }); |
| | | getUser(); |
| | | |
| | | //åå§åèå |
| | | // getTreeMenu().then((res) => { |
| | |
| | | // selectId.value = "1"; |
| | | // }); |
| | | }; |
| | | const acountInfo = ref({}); |
| | | const getUser = () => { |
| | | GetUserInfo({}).then((res) => { |
| | | acountInfo.value = res.data; |
| | | }); |
| | | }; |
| | | created(); |
| | | return { |
| | | menuWidth, |
| | |
| | | closeTabs, |
| | | currentMenuId, |
| | | router, |
| | | acountInfo, |
| | | }; |
| | | }, |
| | | /** |
| | |
| | | // import locale from 'element-plus/lib/locale/lang/zh-cn' |
| | | import * as ElementPlusIconsVue from '@element-plus/icons-vue' |
| | | |
| | | |
| | | |
| | | import permission from './api/permission' |
| | | import viewgird from './components/basic/ViewGrid'; |
| | | |
| | |
| | | { text: 'æç»', value: 3 }, |
| | | { text: '驳å', value: 4 } |
| | | ], |
| | | status:[0,2] //å®¡æ ¸ä¸çæ°æ® |
| | | status: [0, 2] //å®¡æ ¸ä¸çæ°æ® |
| | | // å¾
å®¡æ ¸ = 0, |
| | | // å®¡æ ¸éè¿ = 1, |
| | | // å®¡æ ¸ä¸ = 2, |
| | |
| | | let charts=[ |
| | | { |
| | | path: '/chart', |
| | | name: 'chart', |
| | | component: () => import('@/views/charts/chart.vue') |
| | | }, |
| | | { |
| | | path: '/formChart', |
| | | name: 'formChart', |
| | | component: () => import('@/views/charts/formChart.vue') |
| | | }, |
| | | { |
| | | path: '/flex', |
| | | name: 'flex', |
| | | component: () => import('@/views/charts/flex.vue') |
| | | }] |
| | | let charts = [ |
| | | // { |
| | | // path: '/chart', |
| | | // name: 'chart', |
| | | // component: () => import('@/views/charts/chart.vue') |
| | | // }, |
| | | // { |
| | | // path: '/formChart', |
| | | // name: 'formChart', |
| | | // component: () => import('@/views/charts/formChart.vue') |
| | | // }, |
| | | // { |
| | | // path: '/flex', |
| | | // name: 'flex', |
| | | // component: () => import('@/views/charts/flex.vue') |
| | | // } |
| | | ] |
| | | export default charts |
| | |
| | | alert(error.message); |
| | | } |
| | | localStorage.setItem("route_error", error.message); |
| | | } catch (e) {} |
| | | } catch (e) { } |
| | | window.location.href = "/"; |
| | | }); |
| | | export default router; |
| | |
| | | |
| | | let redirect = [{ |
| | | path: '/404', |
| | | name: '404', |
| | | component: () => import('@/components/redirect/404'), |
| | | meta:{ |
| | | anonymous:true |
| | | } |
| | | }, { |
| | | path: '/401', |
| | | name: '401', |
| | | component: () => import('@/components/redirect/401') |
| | | }, { |
| | | path: '/coding', |
| | | name: 'coding', |
| | | component: () => import('@/components/redirect/coding') |
| | | }, { |
| | | path: '/message', |
| | | name: 'message', |
| | | component: () => import('@/components/redirect/Message.vue') |
| | | }] |
| | | let redirect = [ |
| | | //{ |
| | | // path: '/404', |
| | | // name: '404', |
| | | // component: () => import('../components/redirect/404'), |
| | | // meta: { |
| | | // anonymous: true |
| | | // } |
| | | // }, { |
| | | // path: '/401', |
| | | // name: '401', |
| | | // component: () => import('@/components/redirect/401') |
| | | // }, { |
| | | // path: '/coding', |
| | | // name: 'coding', |
| | | // component: () => import('@/components/redirect/coding') |
| | | // }, { |
| | | // path: '/message', |
| | | // name: 'message', |
| | | // component: () => import('@/components/redirect/Message.vue') |
| | | // } |
| | | ] |
| | | export default redirect; |
| | |
| | | let viewgird = [ |
| | | { |
| | | path: "/Sys_Log", |
| | | name: "sys_Log", |
| | | component: () => import("@/views/system/Sys_Log.vue"), |
| | | }, |
| | | // { |
| | | // path: "/Sys_Log", |
| | | // name: "sys_Log", |
| | | // component: () => import("@/views/system/Sys_Log.vue"), |
| | | // }, |
| | | { |
| | | path: "/Sys_User", |
| | | name: "Sys_User", |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import { createStore } from "vuex"; |
| | | const keys = { USER: "user" }; |
| | | function getUserInfo(state) { |
| | | if (state.userInfo) return state.userInfo; |
| | | let userInfo = localStorage.getItem(keys.USER); |
| | | if (userInfo) { |
| | | state.userInfo = JSON.parse(userInfo); |
| | | } |
| | | return state.userInfo; |
| | | } |
| | | export default createStore({ |
| | | state: { |
| | | data: {}, |
| | | permission: [], |
| | | isLoading: false, //2020.06.03å¢å è·¯ç±åæ¢æ¶å è½½æç¤º |
| | | userInfo: null, |
| | | // wcsState: true//wcsæå¡ç¶æ |
| | | }, |
| | | mutations: { |
| | | setPermission(state, data) { |
| | | //è°ç¨æ¹å¼ this.$store.commit('setPermission', data) |
| | | if (!data || typeof data != "object") return; |
| | | if (data instanceof Array) { |
| | | state.permission.push(...data); |
| | | } else { |
| | | state.permission = data; |
| | | } |
| | | }, |
| | | setUserInfo(state, data) { |
| | | state.userInfo = data; |
| | | localStorage.setItem(keys.USER, JSON.stringify(data)); |
| | | }, |
| | | clearUserInfo(state) { |
| | | state.permission = []; |
| | | state.userInfo = null; |
| | | localStorage.removeItem(keys.USER); |
| | | }, |
| | | test(state) { |
| | | return 113344; |
| | | }, |
| | | updateLoadingState(state, flag) { |
| | | state.isLoading = flag; |
| | | }, |
| | | }, |
| | | getters: { |
| | | getPermission: (state) => (path) => { |
| | | //è°ç¨æ¹å¼ store.getters.getPermission('sys_User') |
| | | if (!path) return state.permission; |
| | | return state.permission.find((x) => x.path == path); |
| | | }, |
| | | getUserInfo: (state) => () => { |
| | | getUserInfo(state); |
| | | return state.userInfo; |
| | | }, |
| | | getUserName: (state) => () => { |
| | | getUserInfo(state); |
| | | if (state.userInfo) { |
| | | return state.userInfo.userName; |
| | | } |
| | | return "æªè·åå°ç»å½ä¿¡æ¯"; |
| | | }, |
| | | getToken: (state) => () => { |
| | | getUserInfo(state); |
| | | if (state.userInfo) { |
| | | return "Bearer " + state.userInfo.token; |
| | | } |
| | | return ""; |
| | | }, |
| | | isLogin: (state) => () => { |
| | | if (getUserInfo(state)) { |
| | | return true; |
| | | } |
| | | return false; |
| | | }, |
| | | isLoading: (state) => () => { |
| | | return state.isLoading; |
| | | }, |
| | | data: (state) => () => { |
| | | return state.data; |
| | | }, |
| | | getData: (state) => () => { |
| | | return state.data; |
| | | }, |
| | | }, |
| | | actions: { |
| | | setPermission(context, data) { |
| | | context.commit("setPermission", data); //è°ç¨æ¹å¼ store.dispatch('push') |
| | | }, |
| | | toDo(context) { |
| | | return context.Store.m; |
| | | }, |
| | | onLoading(context, flag) { |
| | | context.commit("updateLoadingState", flag); |
| | | }, |
| | | }, |
| | | }); |
| | |
| | | |
| | | export const baseUrl = "http://192.168.0.80:5000/" |
| | | // http://115.159.85.185:9091/ |
| | | // http://192.168.0.80:5000/ |
| | | // 115.159.85.185:9091 |
| | | // http://115.159.85.185:9098/ |
| | | |
| | | |
| | | //对象转FormDataçææ¹æ³ |
| | |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |
| | | // * { |
| | | // box-sizing: border-box; |
| | | // padding: 0; |
| | | // margin: 0; |
| | | // } |
| | | .login-container { |
| | | width: 100%; |
| | | min-height: 100vh; |
| | |
| | | } |
| | | .login-box { |
| | | width: 100%; |
| | | height: ceil(100vh - 8rem); |
| | | height: calc(100vh - 4.57rem); |
| | | display: flex; |
| | | background-color: #f6f7fc; |
| | | .left-img { |
| | |
| | | import { defineComponent, ref, reactive, getCurrentInstance } from "vue"; |
| | | import http from "@/../src/api/http.js"; |
| | | import { ElMessage } from "element-plus"; |
| | | import { lv } from "element-plus/es/locale"; |
| | | // import { lv } from "element-plus/es/locale"; |
| | | export default defineComponent({ |
| | | setup() { |
| | | const selectId = ref(-1); |
| | |
| | | class="role-tree-right flex-col" |
| | | > |
| | | <div class="title" style="display: flex; justify-content: space-between"> |
| | | <div> |
| | | è§è²æé管çï¼{{ |
| | | userInfo.userName ? userInfo.userName : "è¶
级管çå" |
| | | }}ï¼ |
| | | </div> |
| | | <div>è§è²æé管çï¼{{ info.roleName }}ï¼</div> |
| | | <el-icon @click="goBack" size="25"><CloseBold /></el-icon> |
| | | </div> |
| | | <div class="title"> |
| | |
| | | const route = useRoute(); |
| | | const router = useRouter(); |
| | | const userInfo = reactive({}); |
| | | const info = ref({}); |
| | | info.value = JSON.parse(history.state?.info); |
| | | |
| | | const leftCheckChange = (node, selected) => { |
| | | node.actions.forEach((x, index) => { |
| | | x.checked = selected; |
| | |
| | | getUserRole(node); |
| | | }; |
| | | const getUserRole = (item) => { |
| | | selectId.value = item.id; |
| | | roleList.forEach((x) => { |
| | | x.actions.forEach((a) => { |
| | | a.checked = false; |
| | | }); |
| | | }); |
| | | let url = `/api/Sys_Role/getUserTreePermission?roleId=${item.id}`; |
| | | let url = `/api/Sys_Role/getUserTreePermission?roleId=${info.value.roleId}`; |
| | | http.post(url, {}, true).then((result) => { |
| | | if (!result.status) return; |
| | | result.data.forEach((item) => { |
| | |
| | | let $message = |
| | | getCurrentInstance().appContext.config.globalProperties.$message; |
| | | const save = () => { |
| | | if (selectId.value <= 0) { |
| | | return $message.error("è¯·éæ©è§è²!"); |
| | | } |
| | | let userPermissions = []; |
| | | roleList.forEach((x) => { |
| | | let checkedPermission = x.actions.filter((f) => { |
| | |
| | | }); |
| | | } |
| | | }); |
| | | let url = `api/Sys_Role/SavePermission?roleId=${selectId.value}`; |
| | | let url = `api/Sys_Role/SavePermission?roleId=${info.value.roleId}`; |
| | | http.post(url, userPermissions, true).then((result) => { |
| | | $message[result.status ? "success" : "error"](result.message); |
| | | }); |
| | |
| | | |
| | | load(); |
| | | getCurrentTreePermission(); |
| | | |
| | | onActivated(() => { |
| | | let detail = history.state.info; |
| | | userInfo.value = JSON.parse(detail || {}); |
| | | }); |
| | | console.log(userInfo.value); |
| | | getUserRole(); |
| | | console.log("123", info.value); |
| | | |
| | | return { |
| | | list, |
| | |
| | | route, |
| | | goBack, |
| | | router, |
| | | userInfo, |
| | | info, |
| | | }; |
| | | }, |
| | | }); |
| | |
| | | *ä¸å¡è¯·å¨@/extension/system/Sys_Log.jsæ¤å¤ç¼å |
| | | --> |
| | | <template> |
| | | <view-grid ref="grid" |
| | | :columns="columns" |
| | | :detail="detail" |
| | | :editFormFields="editFormFields" |
| | | :editFormOptions="editFormOptions" |
| | | :searchFormFields="searchFormFields" |
| | | :searchFormOptions="searchFormOptions" |
| | | :table="table" |
| | | :extend="extend"> |
| | | </view-grid> |
| | | <view-grid |
| | | ref="grid" |
| | | :columns="columns" |
| | | :detail="detail" |
| | | :editFormFields="editFormFields" |
| | | :editFormOptions="editFormOptions" |
| | | :searchFormFields="searchFormFields" |
| | | :searchFormOptions="searchFormOptions" |
| | | :table="table" |
| | | :extend="extend" |
| | | > |
| | | </view-grid> |
| | | </template> |
| | | <script> |
| | | import extend from "@/extension/system/Sys_Log.js"; |
| | | import { ref, defineComponent } from "vue"; |
| | | export default defineComponent({ |
| | | setup() { |
| | | const table = ref({ |
| | | key: 'Id', |
| | | footer: "Foots", |
| | | cnName: 'ç³»ç»æ¥å¿', |
| | | name: 'Sys_Log', |
| | | url: "/Sys_Log/", |
| | | sortName: "Id" |
| | | }); |
| | | const editFormFields = ref({}); |
| | | const editFormOptions = ref([]); |
| | | const searchFormFields = ref({"BeginDate":"","Url":"","LogType":[],"Success":[],"UserIP":"","ServiceIP":"","Role_Id":""}); |
| | | const searchFormOptions = ref([[{"title":"请æ±å°å","field":"Url","type":"text"},{"title":"ç¨æ·IP","field":"UserIP","type":"text"},{"title":"æå¡å¨IP","field":"ServiceIP","type":"text"}],[{"title":"å¼å§æ¶é´","field":"BeginDate","type":"datetime"},{"dataKey":"restatus","data":[],"title":"ååºç¶æ","field":"Success","type":"selectList"},{"dataKey":"roles","data":[],"title":"è§è²ID","field":"Role_Id","type":"select"}],[{"dataKey":"log","data":[],"title":"æ¥å¿ç±»å","field":"LogType","colSize":12,"type":"checkbox"}]]); |
| | | const columns = ref([{field:'Id',title:'Id',type:'int',width:90,hidden:true,readonly:true,require:true,align:'left'}, |
| | | {field:'BeginDate',title:'å¼å§æ¶é´',type:'datetime',width:140,align:'left',sortable:true}, |
| | | {field:'UserName',title:'ç¨æ·åç§°',type:'string',width:90,align:'left'}, |
| | | {field:'Url',title:'请æ±å°å',type:'string',width:110,align:'left'}, |
| | | {field:'LogType',title:'æ¥å¿ç±»å',type:'string',bind:{ key:'log',data:[]},width:80,align:'left'}, |
| | | {field:'Success',title:'ååºç¶æ',type:'int',bind:{ key:'restatus',data:[]},width:80,align:'left'}, |
| | | {field:'ElapsedTime',title:'æ¶é¿',type:'int',width:60,align:'left'}, |
| | | {field:'RequestParameter',title:'请æ±åæ°',type:'string',width:70,align:'left'}, |
| | | {field:'ResponseParameter',title:'ååºåæ°',type:'string',width:70,align:'left'}, |
| | | {field:'ExceptionInfo',title:'å¼å¸¸ä¿¡æ¯',type:'string',width:70,align:'left'}, |
| | | {field:'UserIP',title:'ç¨æ·IP',type:'string',width:90,align:'left'}, |
| | | {field:'ServiceIP',title:'æå¡å¨IP',type:'string',width:90,hidden:true,align:'left'}, |
| | | {field:'BrowserType',title:'æµè§å¨ç±»å',type:'string',width:90,align:'left'}, |
| | | {field:'User_Id',title:'ç¨æ·ID',type:'int',width:90,hidden:true,align:'left'}, |
| | | {field:'Role_Id',title:'è§è²ID',type:'int',bind:{ key:'roles',data:[]},width:90,hidden:true,align:'left'}, |
| | | {field:'EndDate',title:'ç»ææ¶é´',type:'datetime',width:150,hidden:true,align:'left',sortable:true}]); |
| | | const detail = ref({ |
| | | cnName: "#detailCnName", |
| | | columns: [], |
| | | sortName: "", |
| | | key: "" |
| | | }); |
| | | return { |
| | | table, |
| | | extend, |
| | | editFormFields, |
| | | editFormOptions, |
| | | searchFormFields, |
| | | searchFormOptions, |
| | | columns, |
| | | detail, |
| | | }; |
| | | }, |
| | | import extend from "@/extension/system/Sys_Log.js"; |
| | | import { ref, defineComponent } from "vue"; |
| | | export default defineComponent({ |
| | | setup() { |
| | | const table = ref({ |
| | | key: "Id", |
| | | footer: "Foots", |
| | | cnName: "ç³»ç»æ¥å¿", |
| | | name: "Sys_Log", |
| | | url: "/Sys_Log/", |
| | | sortName: "Id", |
| | | }); |
| | | const editFormFields = ref({}); |
| | | const editFormOptions = ref([]); |
| | | const searchFormFields = ref({ |
| | | BeginDate: "", |
| | | Url: "", |
| | | LogType: [], |
| | | Success: [], |
| | | UserIP: "", |
| | | ServiceIP: "", |
| | | Role_Id: "", |
| | | }); |
| | | const searchFormOptions = ref([ |
| | | [ |
| | | { title: "请æ±å°å", field: "Url", type: "text" }, |
| | | { title: "ç¨æ·IP", field: "UserIP", type: "text" }, |
| | | { title: "æå¡å¨IP", field: "ServiceIP", type: "text" }, |
| | | ], |
| | | [ |
| | | { title: "å¼å§æ¶é´", field: "BeginDate", type: "datetime" }, |
| | | { |
| | | dataKey: "restatus", |
| | | data: [], |
| | | title: "ååºç¶æ", |
| | | field: "Success", |
| | | type: "selectList", |
| | | }, |
| | | { |
| | | dataKey: "roles", |
| | | data: [], |
| | | title: "è§è²ID", |
| | | field: "Role_Id", |
| | | type: "select", |
| | | }, |
| | | ], |
| | | [ |
| | | { |
| | | dataKey: "log", |
| | | data: [], |
| | | title: "æ¥å¿ç±»å", |
| | | field: "LogType", |
| | | colSize: 12, |
| | | type: "checkbox", |
| | | }, |
| | | ], |
| | | ]); |
| | | const columns = ref([ |
| | | { |
| | | field: "Id", |
| | | title: "Id", |
| | | type: "int", |
| | | width: 90, |
| | | hidden: true, |
| | | readonly: true, |
| | | require: true, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "BeginDate", |
| | | title: "å¼å§æ¶é´", |
| | | type: "datetime", |
| | | width: 140, |
| | | align: "left", |
| | | sortable: true, |
| | | }, |
| | | { |
| | | field: "UserName", |
| | | title: "ç¨æ·åç§°", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "Url", |
| | | title: "请æ±å°å", |
| | | type: "string", |
| | | width: 110, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "LogType", |
| | | title: "æ¥å¿ç±»å", |
| | | type: "string", |
| | | bind: { key: "log", data: [] }, |
| | | width: 80, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "Success", |
| | | title: "ååºç¶æ", |
| | | type: "int", |
| | | bind: { key: "restatus", data: [] }, |
| | | width: 80, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "ElapsedTime", |
| | | title: "æ¶é¿", |
| | | type: "int", |
| | | width: 60, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "RequestParameter", |
| | | title: "请æ±åæ°", |
| | | type: "string", |
| | | width: 70, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "ResponseParameter", |
| | | title: "ååºåæ°", |
| | | type: "string", |
| | | width: 70, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "ExceptionInfo", |
| | | title: "å¼å¸¸ä¿¡æ¯", |
| | | type: "string", |
| | | width: 70, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "UserIP", |
| | | title: "ç¨æ·IP", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "ServiceIP", |
| | | title: "æå¡å¨IP", |
| | | type: "string", |
| | | width: 90, |
| | | hidden: true, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "BrowserType", |
| | | title: "æµè§å¨ç±»å", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "User_Id", |
| | | title: "ç¨æ·ID", |
| | | type: "int", |
| | | width: 90, |
| | | hidden: true, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "Role_Id", |
| | | title: "è§è²ID", |
| | | type: "int", |
| | | bind: { key: "roles", data: [] }, |
| | | width: 90, |
| | | hidden: true, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "EndDate", |
| | | title: "ç»ææ¶é´", |
| | | type: "datetime", |
| | | width: 150, |
| | | hidden: true, |
| | | align: "left", |
| | | sortable: true, |
| | | }, |
| | | ]); |
| | | const detail = ref({ |
| | | cnName: "#detailCnName", |
| | | columns: [], |
| | | sortName: "", |
| | | key: "", |
| | | }); |
| | | return { |
| | | table, |
| | | extend, |
| | | editFormFields, |
| | | editFormOptions, |
| | | searchFormFields, |
| | | searchFormOptions, |
| | | columns, |
| | | detail, |
| | | }; |
| | | }, |
| | | }); |
| | | </script> |
| | |
| | | <div class="info"> |
| | | <div style="position: relative"> |
| | | <el-upload |
| | | :disabled="true" |
| | | class="avatar-uploader" |
| | | action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15" |
| | | action="#" |
| | | :show-file-list="false" |
| | | :on-success="handleAvatarSuccess" |
| | | :before-upload="beforeAvatarUpload" |
| | | > |
| | | <img v-if="imageUrl" :src="imageUrl" class="avatar" /> |
| | | <el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon> |
| | | <el-image |
| | | style="width: 100px; height: 100px" |
| | | :src="'http://192.168.0.80:5000' + userInfo.headImageUrl" |
| | | :fit="fit" |
| | | /> |
| | | <!-- <img |
| | | v-if="userInfo.headImageUrl" |
| | | :src="'http://192.168.0.80:5000' + userInfo.headImageUrl" |
| | | class="avatar" |
| | | /> |
| | | <el-icon v-else class="avatar-uploader-icon"> |
| | | <Plus /> |
| | | </el-icon> --> |
| | | </el-upload> |
| | | <span |
| | | style=" |
| | |
| | | /></span> |
| | | </div> |
| | | <el-form |
| | | :model="formInline" |
| | | :model="userInfo" |
| | | style="flex: 1" |
| | | class="demo-form-inline" |
| | | label-position="right" |
| | |
| | | </el-col> |
| | | <el-col :span="3" |
| | | ><el-form-item label="ç¨æ·åç»:"> |
| | | <span>ç»´ä¿é¨</span> |
| | | <span>{{ userInfo.roleName }}</span> |
| | | </el-form-item></el-col |
| | | > |
| | | </el-row> |
| | |
| | | > |
| | | <el-col :span="3"> |
| | | <el-form-item label="ç¨æ·è§è²:"> |
| | | <span>2021-06-30</span> |
| | | <span>{{ userInfo.roleName }}</span> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | </template> |
| | | <el-input |
| | | size="small" |
| | | v-model="form.userName" |
| | | v-model="form.usertruename" |
| | | placeholder="请è¾å
¥" |
| | | style="width: 18.375rem" |
| | | /> |
| | |
| | | > |
| | | </template> |
| | | <el-input |
| | | v-model="form.phoneNo" |
| | | v-model="form.phone" |
| | | size="small" |
| | | placeholder="请è¾å
¥" |
| | | style="width: 18.375rem" |
| | |
| | | <span style="color: red; margin-right: 0.2rem">*</span> |
| | | <span style="font-size: 0.88rem; color: black; font-weight: bold" |
| | | >人è¸å¾ç</span |
| | | ><span |
| | | > |
| | | <!-- <span |
| | | style=" |
| | | color: rgba(255, 0, 0, 1); |
| | | font-size: 0.75rem; |
| | | margin-left: 0.5rem; |
| | | " |
| | | >æ³¨ï¼æå¤å¯ä¸ä¼ ä¸å¼ ï¼å¾çéè¦æ£è§ç人åè¯ä»¶ç
§</span |
| | | > |
| | | > --> |
| | | </div> |
| | | </template> |
| | | <el-upload |
| | | ref="upload" |
| | | name="fileInput" |
| | | class="avatar-uploader" |
| | | action="#" |
| | | action="http://115.159.85.185:9098/api/User/SaveFiles" |
| | | list-type="picture-card" |
| | | :auto-upload="false" |
| | | :limit="3" |
| | | :auto-upload="true" |
| | | limit="1" |
| | | @before-upload="beforeAvatarUpload" |
| | | :on-success="handleAvatarSuccess" |
| | | :file-list="fileList != [] ? fileList : []" |
| | | > |
| | | <el-icon><Plus /></el-icon> |
| | | <el-icon> |
| | | <Plus /> |
| | | </el-icon> |
| | | |
| | | <template #file="{ file }"> |
| | | <div> |
| | |
| | | class="el-upload-list__item-delete" |
| | | @click="handleDownload(file)" |
| | | > |
| | | <el-icon size="15"><Download /></el-icon> |
| | | <el-icon size="15"> |
| | | <Download /> |
| | | </el-icon> |
| | | </span> |
| | | <span |
| | | v-if="!disabled" |
| | | class="el-upload-list__item-delete" |
| | | @click="handleRemove(file)" |
| | | > |
| | | <el-icon size="15"><Delete /></el-icon> |
| | | <el-icon size="15"> |
| | | <Delete /> |
| | | </el-icon> |
| | | </span> |
| | | </span> |
| | | </div> |
| | |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | |
| | | <!-- æ¥çå¾çå¼¹åºæ¡ --> |
| | | <el-dialog v-model="imgdialogVisible" center width="980"> |
| | | <img w-full :src="dialogImageUrl" alt="Preview Image" /> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | <script setup> |
| | | import { ref, reactive } from "vue"; |
| | | import { GetUserInfo, UpdatePassword, UpdateUser } from "@/api/user"; |
| | | import { |
| | | GetUserInfo, |
| | | UpdatePassword, |
| | | UpdateUser, |
| | | Upuserbase, |
| | | } from "@/api/user"; |
| | | import { ElMessage } from "element-plus"; |
| | | const formInline = reactive({ |
| | | user: "", |
| | | region: "", |
| | | date: "", |
| | | }); |
| | | const form = ref({}); |
| | | const newPwd = ref(""); |
| | | const onSubmit = () => { |
| | | // UpdateUser().then((res) => {}); |
| | | console.log(form.value); |
| | | |
| | | console.log("submit!"); |
| | | }; |
| | | const upload = ref(); |
| | | const form = ref({ |
| | | id: JSON.parse(localStorage.getItem("user")).id, |
| | | usertruename: "", |
| | | phone: "", |
| | | files: "", |
| | | }); |
| | | const newPwd = ref(""); |
| | | const dialogVisible = ref(false); |
| | | //æ¥çå¾ç |
| | | const imgdialogVisible = ref(false); |
| | | const fileList = ref([]); |
| | | |
| | | const rules = reactive({ |
| | | oldPwd: [{ required: true, message: "请è¾å
¥æ§å¯ç ", trigger: "blur" }], |
| | | newPwd: [{ required: true, message: "请è¾å
¥æ°å¯ç ", trigger: "blur" }], |
| | |
| | | }); |
| | | }; |
| | | |
| | | const dialogVisible = ref(false); |
| | | const userInfo = ref({}); |
| | | const dialogImageUrl = ref(); |
| | | |
| | | GetUserInfo({}).then((res) => { |
| | | userInfo.value = res.data; |
| | | form.value = res.data; |
| | | console.log(res); |
| | | userInfo.value = Object.assign({}, res.data); |
| | | form.value.usertruename = res.data.userTrueName; |
| | | form.value.phone = res.data.phoneNo; |
| | | }); |
| | | //å¾çé¢è§ |
| | | const handlePictureCardPreview = (url) => { |
| | | dialogImageUrl.value = url.url; |
| | | imgdialogVisible.value = true; |
| | | }; |
| | | |
| | | //å¾çå é¤ |
| | | const handleRemove = (file) => { |
| | | upload.value.handleRemove(file); |
| | | }; |
| | | const onSubmit = () => { |
| | | |
| | | if (form.value.files == "") { |
| | | ElMessage({ message: "å¾çä¸è½ä¸ºç©º", type: "warning" }); |
| | | return; |
| | | } |
| | | if (form.value.usertruename == "") { |
| | | ElMessage({ message: "å§åä¸è½ä¸ºç©º", type: "warning" }); |
| | | return; |
| | | } |
| | | if (form.value.phone == "") { |
| | | ElMessage({ message: "çµè¯ä¸è½ä¸ºç©º", type: "warning" }); |
| | | return; |
| | | } |
| | | Upuserbase(form.value).then((res) => { |
| | | ElMessage({ message: "ä¿®æ¹æå", type: "success" }); |
| | | dialogVisible.value = false; |
| | | initData(); |
| | | }); |
| | | }; |
| | | const beforeAvatarUpload = (val) => { |
| | | console.log(val); |
| | | }; |
| | | const handleAvatarSuccess = (val) => { |
| | | form.value.files = "/image/" + val.data; |
| | | }; |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .personal { |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .info { |
| | | display: flex; |
| | | height: 10rem; |
| | | background-color: #fff; |
| | | align-items: center; |
| | | |
| | | :deep(.avatar-uploader .el-upload) { |
| | | border: 1px dashed var(--el-border-color); |
| | | border-radius: 50%; |
| | |
| | | height: 6.25rem; |
| | | text-align: center; |
| | | } |
| | | |
| | | .el-form { |
| | | .el-row { |
| | | .el-col { |
| | |
| | | :deep(.el-form-item__label) { |
| | | font-size: 0.875rem; |
| | | } |
| | | |
| | | span { |
| | | font-size: 0.875rem; |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .mation { |
| | | flex: 1; |
| | | margin-top: 1.25rem; |
| | |
| | | padding: 1.1875rem 2.0625rem; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | :deep(.el-dialog) { |
| | | margin-top: 180px; |
| | | } |
| | | |
| | | :deep(.el-dialog .el-dialog__body) { |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | } |
| | | |
| | | .avatar-uploader .avatar { |
| | | width: 7rem; |
| | | height: 7rem; |
| | | display: block; |
| | | } |
| | | |
| | | :deep(.avatar-uploader .el-upload) { |
| | | width: 7rem; |
| | | height: 7rem; |
| | |
| | | overflow: hidden; |
| | | transition: var(--el-transition-duration-fast); |
| | | } |
| | | |
| | | :deep(.el-upload-list__item) { |
| | | width: 7rem; |
| | | height: 7rem; |
| | | } |
| | | |
| | | .avatar-uploader .el-upload:hover { |
| | | border-color: var(--el-color-primary); |
| | | } |
| | |
| | | size="small" |
| | | /> |
| | | </div> |
| | | <!-- <div class="serch_box"> |
| | | <div class="serchb">å
¨å±æç´¢</div> |
| | | <div class="serch_box"> |
| | | <div class="serchb"> |
| | | <el-select |
| | | v-model="queryForm.selectType" |
| | | placeholder="è¯·éæ©" |
| | | size="small" |
| | | style="width: 100%; height: 100%; font-size: 0.15rem" |
| | | > |
| | | <el-option |
| | | v-for="item in selectoptions" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | /> |
| | | </el-select> |
| | | </div> |
| | | <input |
| | | v-model="queryForm.selectName" |
| | | v-model="queryForm.selectInput" |
| | | placeholder="请è¾å
¥å
³é®è¯æç´¢" |
| | | style="border-left: 0.06rem solid #e2e2e2" |
| | | /> |
| | | </div> --> |
| | | </div> |
| | | <el-button |
| | | type="primary" |
| | | size="small" |
| | | style="margin-left: 0.98rem; height: 2rem" |
| | | @click="handleQuery" |
| | | >æ¥è¯¢</el-button |
| | | > |
| | | <el-button size="small" style="height: 2rem">éç½®</el-button> |
| | | <el-button size="small" style="height: 2rem" @click="resetQuery" |
| | | >éç½®</el-button |
| | | > |
| | | </div> |
| | | <div class="btns"> |
| | | <div style="display: flex; align-items: center"> |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | " |
| | | ><el-icon style="margin-right: 0.2rem"><Plus /></el-icon |
| | | ><el-icon style="margin-right: 0.2rem"> <Plus /> </el-icon |
| | | >æ°å»º</el-button |
| | | > |
| | | <!-- å·¥å
·å表æ°å»º --> |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | " |
| | | ><el-icon style="margin-right: 0.2rem"><Plus /></el-icon |
| | | ><el-icon style="margin-right: 0.2rem"> <Plus /> </el-icon |
| | | >æ°å»º</el-button |
| | | > |
| | | <el-button |
| | |
| | | <el-table-column prop="articleName" label="ä¿¡æ¯åç§°" align="center" /> |
| | | <el-table-column prop="articleType" label="è§æ ¼åå·" align="center" /> |
| | | <el-table-column prop="articleUnit" label="åä½" align="center" /> |
| | | <el-table-column prop="category" label="æå±åç±»" align="center" /> |
| | | <!-- <el-table-column prop="category" label="æå±åç±»" align="center" /> --> |
| | | <el-table-column prop="createDate" label="åå»ºæ¥æ" align="center" /> |
| | | <el-table-column label="æä½" align="center"> |
| | | <template #default="scope"> |
| | |
| | | align="center" |
| | | /> |
| | | <el-table-column prop="toolUnit" label="åä½" align="center" /> |
| | | <el-table-column prop="" label="æå±åç±»" align="center" /> |
| | | <!-- <el-table-column prop="" label="æå±åç±»" align="center" /> --> |
| | | <el-table-column prop="toolremark" label="夿³¨" align="center" /> |
| | | <el-table-column prop="createtime" label="åå»ºæ¥æ" align="center" /> |
| | | <el-table-column prop="address" label="æä½" align="center"> |
| | |
| | | :before-close="handleClose" |
| | | :show-close="false" |
| | | :align-center="true" |
| | | @close="resetForm(formRef)" |
| | | > |
| | | <template #title> |
| | | <div |
| | |
| | | > |
| | | </div> |
| | | </template> |
| | | <el-form :model="forminfo" label-width="auto" label-position="top"> |
| | | <el-form |
| | | :model="forminfo" |
| | | label-width="auto" |
| | | label-position="top" |
| | | :rules="rules" |
| | | ref="formRef" |
| | | :hide-required-asterisk="true" |
| | | > |
| | | <el-row :gutter="20"> |
| | | <el-col :span="8"> |
| | | <el-form-item> |
| | | <el-form-item prop="articleName"> |
| | | <template #label> |
| | | <div style="display: flex; align-items: flex-end"> |
| | | <span style="color: red; margin-right: 0.2rem">*</span> |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item> |
| | | <el-form-item prop="articleType"> |
| | | <template #label> |
| | | <div style="display: flex; align-items: flex-end"> |
| | | <span style="color: red; margin-right: 0.2rem">*</span> |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item> |
| | | <el-form-item prop="articleUnit"> |
| | | <template #label> |
| | | <div style="display: flex; align-items: flex-end"> |
| | | <span style="color: red; margin-right: 0.2rem">*</span> |
| | |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="8"> |
| | | <el-form-item> |
| | | <template #label> |
| | | <div style="display: flex; align-items: flex-end"> |
| | | <span style="color: red; margin-right: 0.2rem">*</span> |
| | | <span |
| | | style="font-size: 0.88rem; color: black; font-weight: bold" |
| | | >æå±åç±»</span |
| | | > |
| | | </div> |
| | | </template> |
| | | <el-input |
| | | size="small" |
| | | v-model="forminfo.category" |
| | | placeholder="请è¾å
¥" |
| | | /> |
| | | <!-- <el-select v-model="value" placeholder="è¯·éæ©" size="small"> |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | /> |
| | | </el-select> --> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="16"> |
| | | <el-form-item> |
| | | <el-form-item prop="articleRemark"> |
| | | <template #label> |
| | | <div style="display: flex; align-items: flex-end"> |
| | | <span style="color: red; margin-right: 0.2rem">*</span> |
| | |
| | | <el-button |
| | | size="small" |
| | | type="primary" |
| | | @click="CreateInformation" |
| | | @click="CreateInformation(formRef)" |
| | | style="height: 2rem; font-size: 0.88rem" |
| | | > |
| | | ä¿å |
| | |
| | | :before-close="handleClose" |
| | | :show-close="false" |
| | | :align-center="true" |
| | | @close="resetForm(ruleFormRef)" |
| | | > |
| | | <template #title> |
| | | <div |
| | |
| | | > |
| | | </div> |
| | | </template> |
| | | <el-form :model="formtool" label-width="auto" label-position="top"> |
| | | <el-form |
| | | :model="formtool" |
| | | label-width="auto" |
| | | label-position="top" |
| | | ref="ruleFormRef" |
| | | :rules="toolRules" |
| | | :hide-required-asterisk="true" |
| | | > |
| | | <el-row :gutter="20"> |
| | | <el-col :span="8"> |
| | | <el-form-item> |
| | | <el-form-item prop="toolName"> |
| | | <template #label> |
| | | <div style="display: flex; align-items: flex-end"> |
| | | <span style="color: red; margin-right: 0.2rem">*</span> |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item> |
| | | <el-form-item prop="specification"> |
| | | <template #label> |
| | | <div style="display: flex; align-items: flex-end"> |
| | | <span style="color: red; margin-right: 0.2rem">*</span> |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item> |
| | | <el-form-item prop="toolUnit"> |
| | | <template #label> |
| | | <div style="display: flex; align-items: flex-end"> |
| | | <span style="color: red; margin-right: 0.2rem">*</span> |
| | |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="8"> |
| | | <el-form-item> |
| | | <template #label> |
| | | <div style="display: flex; align-items: flex-end"> |
| | | <span style="color: red; margin-right: 0.2rem">*</span> |
| | | <span |
| | | style="font-size: 0.88rem; color: black; font-weight: bold" |
| | | >æå±åç±»</span |
| | | > |
| | | </div> |
| | | </template> |
| | | <el-input |
| | | size="small" |
| | | v-model="formtool.category" |
| | | placeholder="请è¾å
¥" |
| | | /> |
| | | <!-- <el-select v-model="value" placeholder="è¯·éæ©" size="small"> |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | /> |
| | | </el-select> --> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="16"> |
| | | <el-form-item> |
| | | <el-form-item prop="toolremark"> |
| | | <template #label> |
| | | <div style="display: flex; align-items: flex-end"> |
| | | <span style="color: red; margin-right: 0.2rem">*</span> |
| | |
| | | <el-button |
| | | size="small" |
| | | type="primary" |
| | | @click="addToolApi" |
| | | @click="addToolApi(ruleFormRef)" |
| | | style="height: 2rem; font-size: 0.88rem" |
| | | > |
| | | ä¿å |
| | |
| | | </div> |
| | | </template> |
| | | <script setup> |
| | | import { ref, reactive, onMounted } from "vue"; |
| | | import { ref, reactive, onMounted, toRef } from "vue"; |
| | | import { ElMessage, ElMessageBox } from "element-plus"; |
| | | import { formatTime } from "@/utils/index.js"; |
| | | import { |
| | |
| | | deleteToolData, |
| | | deleteBasicinformation, |
| | | } from "@/api/newapi/Basicinformation.js"; |
| | | |
| | | const queryForm = reactive({ |
| | | // åå§åæ°æ® |
| | | const obj = { |
| | | selectName: "", |
| | | selectTime: [], // æ¶é´èå´ |
| | | }); |
| | | selectType: "", //éæ©çç±»å |
| | | selectInput: "", //è¾å
¥çæ°æ® |
| | | }; |
| | | //æç´¢ä¼ çæ°æ® |
| | | const queryForm = toRef({ ...obj }); |
| | | const tableData = ref([]); |
| | | const options = ref([]); |
| | | const props = { multiple: true }; |
| | | const table = ref(false); |
| | | const toolList = ref([]); |
| | | |
| | | const isactive = ref(1); |
| | | const dialogVisible = ref(false); |
| | | const dialogVisible1 = ref(false); |
| | | |
| | | const selectoptions = ref([]); |
| | | const infoOpitions = ref([ |
| | | { |
| | | value: "articleName", |
| | | label: "ä¿¡æ¯åç§°", |
| | | }, |
| | | { |
| | | value: "articleType", |
| | | label: "è§æ ¼åå·", |
| | | }, |
| | | ]); |
| | | |
| | | const toolsOpitions = ref([ |
| | | { |
| | | value: "toolName", |
| | | label: "å·¥å
·åç§°", |
| | | }, |
| | | { |
| | | value: "specification", |
| | | label: "è§æ ¼åå·", |
| | | }, |
| | | ]); |
| | | |
| | | const forminfo = ref({ |
| | | articleName: "", |
| | | articleType: "", |
| | | articleUnit: "", |
| | | category: "", |
| | | articleremark: "", |
| | | createDate: formatTime(new Date()), |
| | | createDate: formatTime(new Date()), //å建æ¶é´ |
| | | creater: JSON.parse(localStorage.getItem("user")).userName, //å建人 |
| | | }); |
| | | const isactive = ref(1); |
| | | const claimdialogVisible = ref(false); |
| | | const dialogVisible = ref(false); |
| | | const dialogVisible1 = ref(false); |
| | | const TorquedialogVisible = ref(false); |
| | | const toolList = ref([]); |
| | | const formtool = ref({ |
| | | toolName: "", |
| | | specification: 0, |
| | | toolUnit: "", |
| | | toolremark: "", |
| | | createtime: formatTime(new Date()), |
| | | createDate: formatTime(new Date()), //å建æ¶é´ |
| | | creater: JSON.parse(localStorage.getItem("user")).userName, //å建人 |
| | | modifier: JSON.parse(localStorage.getItem("user")).userName, //ä¿®æ¹äºº |
| | | modifyDate: formatTime(new Date()), //ä¿®æ¹æ¶é´ |
| | | }); |
| | | |
| | | const toolRules = reactive({ |
| | | toolName: [{ required: true, message: "请è¾å
¥å·¥å
·åç§°", trigger: "blur" }], |
| | | specification: [{ required: true, message: "请è¾å
¥è§æ ¼", trigger: "blur" }], |
| | | toolUnit: [{ required: true, message: "请è¾å
¥åä½", trigger: "blur" }], |
| | | toolremark: [{ required: true, message: "请è¾å
¥å¤æ³¨", trigger: "blur" }], |
| | | }); |
| | | const rules = reactive({ |
| | | articleName: [{ required: true, message: "请è¾å
¥å·¥å
·åç§°", trigger: "blur" }], |
| | | articleType: [{ required: true, message: "请è¾å
¥è§æ ¼", trigger: "blur" }], |
| | | articleUnit: [{ required: true, message: "请è¾å
¥åä½", trigger: "blur" }], |
| | | articleremark: [{ required: true, message: "请è¾å
¥å¤æ³¨", trigger: "blur" }], |
| | | }); |
| | | const ruleFormRef = ref(); |
| | | const formRef = ref(); |
| | | //æ¹åç¶æ |
| | | selectoptions.value = infoOpitions.value; |
| | | const changeactive = (index) => { |
| | | isactive.value = index; |
| | | if (index == 1) { |
| | | initData(); |
| | | if (isactive.value == 1) { |
| | | selectoptions.value = infoOpitions.value; |
| | | } else { |
| | | getTool(); |
| | | selectoptions.value = toolsOpitions.value; |
| | | } |
| | | initData(); |
| | | }; |
| | | const infoType = ref("æ°å»º"); |
| | | |
| | | const Useradd = () => { |
| | | infoType.value = "æ°å»º"; |
| | | dialogVisible.value = true; |
| | |
| | | }; |
| | | |
| | | //æ°å»ºä¿¡æ¯å表 |
| | | const CreateInformation = () => { |
| | | if (infoType.value == "æ°å»º") { |
| | | addBasicinformation(forminfo.value).then((res) => { |
| | | ElMessage({ |
| | | message: "æ°å»ºæå", |
| | | type: "success", |
| | | }); |
| | | dialogVisible.value = false; |
| | | initData(); |
| | | }); |
| | | } else { |
| | | editBasicinformation(forminfo.value).then((res) => { |
| | | ElMessage({ |
| | | message: "ä¿®æ¹æå", |
| | | type: "success", |
| | | }); |
| | | dialogVisible.value = false; |
| | | initData(); |
| | | }); |
| | | } |
| | | }; |
| | | // æ¥çåç© |
| | | const Findtorque = () => { |
| | | TorquedialogVisible.value = true; |
| | | }; |
| | | |
| | | //å页请æ±åæ° |
| | | const pageQuery = ref({ |
| | | page: 1, //å½åé¡µé¢ |
| | | rows: 10, //æ¯é¡µæ¾ç¤ºæ¡æ° |
| | | order: "desc", //æåºæ¹å¼ |
| | | sort: "createDate", //æåºå段 |
| | | wheres: "", //æ¡ä»¶æ¥è¯¢ |
| | | }); |
| | | |
| | | //å页页é¢å¤§å°æ¹å |
| | | const handleSizeChange = (val) => { |
| | | pageQuery.value.rows = val; |
| | | initData(); |
| | | }; |
| | | |
| | | //å页页颿¹å |
| | | const handleCurrentChange = (val) => { |
| | | pageQuery.value.page = val; |
| | | initData(); |
| | | }; |
| | | const pageTotal = ref(0); |
| | | const initData = () => { |
| | | // æ¥è¯¢æ¡ä»¶ |
| | | const startTime = formatTime(queryForm.selectTime[0]); |
| | | const endTime = formatTime(queryForm.selectTime[1]); |
| | | const filter = [ |
| | | { |
| | | name: "grouptype", |
| | | value: queryForm.selectType, |
| | | displayType: "String", |
| | | }, |
| | | { |
| | | name: "pustatus", |
| | | value: queryForm.selectName, |
| | | displayType: "String", |
| | | }, |
| | | { name: "dispatchtime", value: startTime, displayType: "ThanOrEqual" }, |
| | | { name: "dispatchtime", value: endTime, displayType: "LessOrEqual" }, |
| | | ]; |
| | | getBasicinformation({ |
| | | ...pageQuery.value, |
| | | filter, |
| | | }).then((res) => { |
| | | tableData.value = res.rows; |
| | | pageTotal.value = res.total; |
| | | const CreateInformation = async (formEl) => { |
| | | if (!formEl) return; |
| | | await formEl.validate((valid, fields) => { |
| | | if (valid) { |
| | | if (infoType.value == "æ°å»º") { |
| | | addBasicinformation(forminfo.value).then((res) => { |
| | | ElMessage({ |
| | | message: "æ°å»ºæå", |
| | | type: "success", |
| | | }); |
| | | dialogVisible.value = false; |
| | | initData(); |
| | | }); |
| | | } else { |
| | | editBasicinformation(forminfo.value).then((res) => { |
| | | ElMessage({ |
| | | message: "ä¿®æ¹æå", |
| | | type: "success", |
| | | }); |
| | | dialogVisible.value = false; |
| | | initData(); |
| | | }); |
| | | } |
| | | } else { |
| | | console.log("error submit!", fields); |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | //æ°æ®æ£ç´¢äºä»¶ |
| | | const handleQuery = () => { |
| | | pageQuery.value.page = 1; |
| | | initData(); |
| | | }; |
| | | const resetQuery = () => { |
| | | queryForm.value = { selectName: "å
¨é¨ç¶æ", selectTime: [] }; |
| | | pageQuery.value.page = 1; |
| | | initData(); |
| | | }; |
| | | const toolType = ref("æ°å»º"); |
| | | const addTool = () => { |
| | | toolType.value = "æ°å»º"; |
| | |
| | | formtool.value = data; |
| | | toolType.value = "ç¼è¾"; |
| | | dialogVisible1.value = true; |
| | | console.log(formtool.value); |
| | | }; |
| | | //æ°å»ºå·¥å
· |
| | | const addToolApi = () => { |
| | | if (toolType.value == "æ°å»º") { |
| | | addToolData(formtool.value).then((res) => { |
| | | ElMessage({ |
| | | message: "æ°å»ºæå", |
| | | type: "success", |
| | | }); |
| | | dialogVisible1.value = false; |
| | | getTool(); |
| | | }); |
| | | } else { |
| | | editToolData(formtool.value).then((res) => { |
| | | ElMessage({ |
| | | message: "ä¿®æ¹æå", |
| | | type: "success", |
| | | }); |
| | | dialogVisible1.value = false; |
| | | getTool(); |
| | | }); |
| | | } |
| | | const addToolApi = async (formEl) => { |
| | | if (!formEl) return; |
| | | await formEl.validate((valid, fields) => { |
| | | if (valid) { |
| | | if (toolType.value == "æ°å»º") { |
| | | addToolData(formtool.value).then((res) => { |
| | | ElMessage({ |
| | | message: "æ°å»ºæå", |
| | | type: "success", |
| | | }); |
| | | dialogVisible1.value = false; |
| | | initData(); |
| | | }); |
| | | } else { |
| | | editToolData(formtool.value).then((res) => { |
| | | ElMessage({ |
| | | message: "ä¿®æ¹æå", |
| | | type: "success", |
| | | }); |
| | | dialogVisible1.value = false; |
| | | initData(); |
| | | }); |
| | | } |
| | | } else { |
| | | console.log("error submit!", fields); |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | //è·åå·¥å
·è¡¨ä¿¡æ¯ |
| | | const getTool = () => { |
| | | const startTime = formatTime(queryForm.selectTime[0]); |
| | | const endTime = formatTime(queryForm.selectTime[1]); |
| | | const filter = [ |
| | | { name: "dispatchtime", value: startTime, displayType: "ThanOrEqual" }, |
| | | { name: "dispatchtime", value: endTime, displayType: "LessOrEqual" }, |
| | | ]; |
| | | getToolData({ |
| | | ...pageQuery.value, |
| | | filter, |
| | | }).then((res) => { |
| | | toolList.value = res.rows; |
| | | pageTotal.value = res.total; |
| | | }); |
| | | }; |
| | | // const getTool = () => { |
| | | // const startTime = formatTime(queryForm.value.selectTime[0]); |
| | | // const endTime = formatTime(queryForm.value.selectTime[1]); |
| | | // const filter = [ |
| | | // { name: "dispatchtime", value: startTime, displayType: "ThanOrEqual" }, |
| | | // { name: "dispatchtime", value: endTime, displayType: "LessOrEqual" }, |
| | | // ]; |
| | | // getToolData({ |
| | | // ...pageQuery.value, |
| | | // filter, |
| | | // }).then((res) => { |
| | | // toolList.value = res.rows; |
| | | // pageTotal.value = res.total; |
| | | // }); |
| | | // }; |
| | | //æ¹éå é¤ |
| | | const ids = ref([]); |
| | | const InfoSelectionChange = (val) => { |
| | |
| | | } else { |
| | | deleteToolData(ids.value).then((res) => { |
| | | ElMessage({ message: "å 餿å", type: "success" }); |
| | | getTool(); |
| | | initData(); |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | //å页请æ±åæ° |
| | | const pageQuery = ref({ |
| | | page: 1, //å½åé¡µé¢ |
| | | rows: 10, //æ¯é¡µæ¾ç¤ºæ¡æ° |
| | | order: "desc", //æåºæ¹å¼ |
| | | sort: "createDate", //æåºå段 |
| | | wheres: "", //æ¡ä»¶æ¥è¯¢ |
| | | }); |
| | | |
| | | //å页页é¢å¤§å°æ¹å |
| | | const handleSizeChange = (val) => { |
| | | pageQuery.value.rows = val; |
| | | initData(); |
| | | }; |
| | | |
| | | //å页页颿¹å |
| | | const handleCurrentChange = (val) => { |
| | | pageQuery.value.page = val; |
| | | initData(); |
| | | }; |
| | | const pageTotal = ref(0); |
| | | //åå§åæ°æ® |
| | | const initData = () => { |
| | | // æ¥è¯¢æ¡ä»¶ |
| | | const startTime = formatTime(queryForm.value.selectTime[0]); |
| | | const endTime = formatTime(queryForm.value.selectTime[1]); |
| | | const filter = [ |
| | | { |
| | | name: "grouptype", |
| | | value: queryForm.value.selectType, |
| | | displayType: "String", |
| | | }, |
| | | { |
| | | name: queryForm.value.selectType, |
| | | value: queryForm.value.selectInput, |
| | | displayType: "like", |
| | | }, |
| | | { |
| | | name: "pustatus", |
| | | value: queryForm.value.selectName, |
| | | displayType: "String", |
| | | }, |
| | | { name: "dispatchtime", value: startTime, displayType: "ThanOrEqual" }, |
| | | { name: "dispatchtime", value: endTime, displayType: "LessOrEqual" }, |
| | | ]; |
| | | if (isactive.value == 1) { |
| | | getBasicinformation({ |
| | | ...pageQuery.value, |
| | | filter, |
| | | }).then((res) => { |
| | | tableData.value = res.rows; |
| | | pageTotal.value = res.total; |
| | | }); |
| | | } else { |
| | | getToolData({ |
| | | ...pageQuery.value, |
| | | filter, |
| | | }).then((res) => { |
| | | toolList.value = res.rows; |
| | | pageTotal.value = res.total; |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | //æ°æ®æ£ç´¢äºä»¶ |
| | | const handleQuery = () => { |
| | | pageQuery.value.page = 1; |
| | | initData(); |
| | | }; |
| | | //éç½®æ¹æ³ |
| | | const resetQuery = () => { |
| | | queryForm.value = Object.assign({}, obj); |
| | | pageQuery.value.page = 1; |
| | | initData(); |
| | | }; |
| | | |
| | | //é置表å |
| | | const resetForm = (formEl) => { |
| | | if (!formEl) return; |
| | | formEl.resetFields(); |
| | | forminfo.value = Object.assign( |
| | | {}, |
| | | { |
| | | articleName: "", |
| | | articleType: "", |
| | | articleUnit: "", |
| | | articleremark: "", |
| | | createDate: formatTime(new Date()), //å建æ¶é´ |
| | | creater: JSON.parse(localStorage.getItem("user")).userName, //å建人 |
| | | } |
| | | ); |
| | | formtool.value = Object.assign( |
| | | {}, |
| | | { |
| | | toolName: "", |
| | | specification: 0, |
| | | toolUnit: "", |
| | | toolremark: "", |
| | | createDate: formatTime(new Date()), //å建æ¶é´ |
| | | creater: JSON.parse(localStorage.getItem("user")).userName, //å建人 |
| | | modifier: JSON.parse(localStorage.getItem("user")).userName, //ä¿®æ¹äºº |
| | | modifyDate: formatTime(new Date()), //ä¿®æ¹æ¶é´ |
| | | } |
| | | ); |
| | | }; |
| | | |
| | | onMounted(() => { |
| | |
| | | .Basicinformation { |
| | | display: flex; |
| | | background-color: #fff; |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .checkbox { |
| | | width: 11rem; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | margin-top: 1rem; |
| | | margin-left: 1.31rem; |
| | | |
| | | .item { |
| | | width: 5rem; |
| | | height: 1.88rem; |
| | |
| | | line-height: 1.88rem; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .isactive { |
| | | background-color: rgba(16, 16, 16, 1); |
| | | color: rgba(255, 255, 255, 1); |
| | | } |
| | | } |
| | | |
| | | .serch { |
| | | display: flex; |
| | | margin-top: 1.31rem; |
| | | align-items: center; |
| | | |
| | | .time_box { |
| | | display: flex; |
| | | align-items: center; |
| | | text-align: center; |
| | | margin-left: 0.98rem; |
| | | |
| | | .time { |
| | | box-sizing: border-box; |
| | | width: 6.88rem; |
| | |
| | | justify-content: center; |
| | | } |
| | | } |
| | | |
| | | .serch_box { |
| | | display: flex; |
| | | align-items: center; |
| | | text-align: center; |
| | | margin-left: 0.98rem; |
| | | border-radius: 0.38rem; |
| | | |
| | | .serchb { |
| | | box-sizing: border-box; |
| | | width: 6.88rem; |
| | | height: 2rem; |
| | | text-align: center; |
| | | border: 0.06rem solid rgba(222, 222, 222, 1); |
| | | border-radius: 0.25rem 0 0 0.25rem; |
| | | font-size: 0.75rem; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | input { |
| | | box-sizing: border-box; |
| | | outline: none; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .btns { |
| | | display: flex; |
| | | justify-content: space-between; |
| | |
| | | box-sizing: border-box; |
| | | } |
| | | } |
| | | |
| | | .my-header { |
| | | height: 3.84rem; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | border-bottom: 0.06rem solid rgba(233, 233, 233, 1); |
| | | } |
| | | |
| | | .avatar-uploader .avatar { |
| | | width: 7rem; |
| | | height: 7rem; |
| | | display: block; |
| | | } |
| | | |
| | | :deep(.avatar-uploader .el-upload) { |
| | | width: 7rem; |
| | | height: 7rem; |
| | |
| | | overflow: hidden; |
| | | transition: var(--el-transition-duration-fast); |
| | | } |
| | | |
| | | :deep(.el-upload-list__item) { |
| | | width: 7rem; |
| | | height: 7rem; |
| | | } |
| | | |
| | | .avatar-uploader .el-upload:hover { |
| | | border-color: var(--el-color-primary); |
| | | } |
| | |
| | | .confirmButtonClass { |
| | | margin-right: 10px; |
| | | } |
| | | |
| | | .el-message-box .el-message-box__btns { |
| | | flex-direction: row-reverse !important; |
| | | justify-content: normal !important; |
| | |
| | | > |
| | | {{ title }} |
| | | </h4> |
| | | <el-icon size="25" @click="close"><CloseBold /></el-icon> |
| | | <el-icon size="25" @click="close"> |
| | | <CloseBold /> |
| | | </el-icon> |
| | | </div> |
| | | </template> |
| | | <div> |
| | |
| | | size="small" |
| | | /> |
| | | </div> |
| | | <!-- <div class="serch_box"> |
| | | <div class="serch_box"> |
| | | <div class="serchb"> |
| | | <el-select |
| | | v-model="queryForm.selectType" |
| | |
| | | placeholder="请è¾å
¥å
³é®è¯æç´¢" |
| | | style="border-left: 0.06rem solid #e2e2e2" |
| | | /> |
| | | </div> --> |
| | | </div> |
| | | <el-button |
| | | type="primary" |
| | | size="small" |
| | |
| | | border: '0.01rem solid #eee', |
| | | }" |
| | | > |
| | | <el-table-column prop="setpNum" label="åºå·" min-width="2%" /> |
| | | <el-table-column prop="nodal" label="åºå·" min-width="2%" /> |
| | | <el-table-column |
| | | prop="craftsStep" |
| | | label="å·¥èºé¡¶ç¹/æ¥éª¤" |
| | |
| | | <el-table-column prop="date" label="ç©æ" min-width="1%" /> |
| | | <!-- <el-table-column prop="date" label="å¾çè§é¢" min-width="2%" /> --> |
| | | <el-table-column prop="" label="æ¯å¦æ¶å" min-width="2%" /> |
| | | <el-table-column prop="nodal" label="æåº" min-width="1%" /> |
| | | <el-table-column prop="setpNum" label="æåº" min-width="1%" /> |
| | | <el-table-column prop="date" label="å建人" min-width="2%"> |
| | | <template #default=""> |
| | | {{ user }} |
| | |
| | | @click="Editcraft(scope.row, 'ç¼è¾')" |
| | | >ç¼è¾</el-button |
| | | > |
| | | <el-button type="text" size="small">å é¤</el-button> |
| | | <el-button type="text" size="small" @click="delProcess(scope.row)" |
| | | >å é¤</el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | title="å·¥èºä¿¡æ¯" |
| | | width="50%" |
| | | :show-close="false" |
| | | @close="handleClose" |
| | | @close="resetForm(ruleFormRef)" |
| | | > |
| | | <template #header="{ titleId, titleClass }"> |
| | | <div class="my-craftheader"> |
| | |
| | | <el-col :span="8" |
| | | ><el-form-item prop="tools"> |
| | | <template #label> |
| | | <span style="font-size: 0.88rem; color: black">å·¥å
·</span> |
| | | <div style="display: flex; align-items: center"> |
| | | <span style="display: flex; color: red; margin-right: 0.25rem" |
| | | >*</span |
| | | > |
| | | <span style="font-size: 0.88rem; color: black">å·¥å
·</span> |
| | | </div> |
| | | </template> |
| | | <el-select |
| | | v-model="form.tools" |
| | | v-model="tools" |
| | | placeholder="è¯·éæ©" |
| | | multiple |
| | | filterable |
| | |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-form-item prop="Unit"> |
| | | <el-form-item prop="checkList"> |
| | | <template #label> |
| | | <span style="font-size: 0.88rem; color: black">éæ©å¥ç</span> |
| | | <div style="display: flex; align-items: center"> |
| | | <span style="display: flex; color: red; margin-right: 0.25rem" |
| | | >*</span |
| | | > |
| | | <span style="font-size: 0.88rem; color: black">éæ©å¥ç</span> |
| | | </div> |
| | | </template> |
| | | <div |
| | | style=" |
| | |
| | | " |
| | | > |
| | | <el-input |
| | | placeholder="请è¾å
¥å
容" |
| | | style="height: 2rem" |
| | | placeholder="æç´¢" |
| | | style="height: 2rem; background: #f5f5f5; border: none" |
| | | :prefix-icon="Search" |
| | | v-model="value" |
| | | ></el-input> |
| | | <div |
| | | style="height: 1.25rem; display: flex; align-items: center" |
| | |
| | | <span |
| | | style="color: rgba(28, 31, 35, 0.8); font-size: 0.75rem" |
| | | >å
±{{ checkList.length }}项</span |
| | | ><span |
| | | > |
| | | <!-- <span |
| | | @click="handleCheckAllChange" |
| | | style=" |
| | | color: rgba(28, 31, 35, 0.8); |
| | | font-size: 0.75rem; |
| | | margin-left: 0.38rem; |
| | | cursor: pointer; |
| | | " |
| | | >å
¨é</span |
| | | > |
| | | > --> |
| | | </div> |
| | | </div> |
| | | <el-scrollbar height="20rem" style="padding-left: 0.88rem"> |
| | | <el-checkbox-group |
| | | :indeterminate="isIndeterminate" |
| | | @change="checkChange" |
| | | v-model="checkList" |
| | | style="display: flex; flex-direction: column" |
| | | > |
| | | <el-checkbox |
| | | :max="2" |
| | | v-for="item in sleeveData" |
| | | :key="item.id" |
| | | :label="item.articleName" |
| | | :value="item" |
| | | :value="{ |
| | | ...item, |
| | | num: 1, |
| | | }" |
| | | /> |
| | | </el-checkbox-group> |
| | | </el-scrollbar> |
| | |
| | | >å·²é{{ checkList.length }}项</span |
| | | > |
| | | <span |
| | | @click="clear" |
| | | style=" |
| | | color: rgb(65, 70, 76); |
| | | font-size: 0.88rem; |
| | | margin-left: 1rem; |
| | | cursor: pointer; |
| | | " |
| | | >æ¸
空</span |
| | | > |
| | |
| | | justify-content: space-between; |
| | | margin: 0.5rem 0; |
| | | " |
| | | v-for="(item, index) in checkList" |
| | | :key="item" |
| | | v-for="item in checkList" |
| | | :key="item.id" |
| | | class="scrollbar-demo-item" |
| | | > |
| | | <span> |
| | |
| | | </div> |
| | | </template> |
| | | <script setup> |
| | | import { ref, reactive, onMounted } from "vue"; |
| | | import { formatTime } from "@/utils/index.js"; |
| | | import { ref, reactive, onMounted, toRef } from "vue"; |
| | | import { Search } from "@element-plus/icons-vue"; |
| | | import { |
| | | GetSleeveandStep, |
| | | GetProcess, |
| | |
| | | ArticleInfom, |
| | | GetTool, |
| | | ExportApi, |
| | | DelProcess, |
| | | AddOrUpdateProcess, |
| | | } from "@/api/newapi/Process"; |
| | | import { ElMessage } from "element-plus"; |
| | | import { exportExcel } from "@/utils/index.js"; |
| | | //å·¥èºæç»å¼¹åºæ¡ |
| | | const detailsDialogVisible = ref(false); |
| | | import { formatTime } from "@/utils/index.js"; |
| | | |
| | | // åå§åæ°æ® |
| | | const obj = { |
| | | selectName: "", |
| | | selectTime: [], // æ¶é´èå´ |
| | | selectType: "", //éæ©çç±»å |
| | | selectInput: "", //è¾å
¥çæ°æ® |
| | | }; |
| | | //å·¥èºæç»æ°æ® |
| | | const gridData = ref([]); |
| | | //å¥çæ°æ® |
| | | const sleeveData = ref([]); |
| | | //éæ©çå¥çæ°æ® |
| | | const checkList = ref([]); |
| | | //çµæ°æ°é |
| | | const electric = ref(null); |
| | | //æºæ¢°æ°é |
| | | const mechanical = ref(null); |
| | | //å°æ² |
| | | const trench = ref(null); |
| | | //æ°å¢å·¥èº/ç¼è¾å·¥èº |
| | | const type = ref("æ°å¢"); |
| | | //è·åæ°æ® |
| | | const title = ref("çµæ°"); |
| | | //表årefå¼ |
| | | const ruleFormRef = ref(); |
| | | //ç¨æ·æ°æ® |
| | | const user = ref(null); |
| | | |
| | | const tools = ref([]); |
| | | //æç´¢ |
| | | const queryForm = reactive({ |
| | | selectName: "", |
| | | selectTime: [], // æ¶é´èå´ |
| | | selectType: "", |
| | | selectInput: "", |
| | | }); |
| | | const queryForm = toRef({ ...obj }); |
| | | const isIndeterminate = ref(true); |
| | | //å·¥èºæç»å¼¹åºæ¡ |
| | | const detailsDialogVisible = ref(false); |
| | | //æ°å¢å·¥èºå¼¹åºæ¡ |
| | | const craftdialogVisible = ref(false); |
| | | //æç´¢åæ®µéæ© |
| | | const selectoptions = ref([ |
| | | { |
| | | value: "setpNum", |
| | |
| | | label: "å·¥å
·", |
| | | }, |
| | | ]); |
| | | //éæ©çå¥çæ°æ® |
| | | const checkList = ref([]); |
| | | //è·åæ°æ® |
| | | const title = ref("çµæ°"); |
| | | const showdetails = (val) => { |
| | | detailsDialogVisible.value = true; |
| | | title.value = val; |
| | | initData(title.value); |
| | | // GetProcess(val).then((res) => { |
| | | // gridData.value = res.data; |
| | | // }); |
| | | }; |
| | | //æ°å¢å·¥èº/ç¼è¾å·¥èº |
| | | const craftdialogVisible = ref(false); |
| | | const type = ref("æ°å¢"); |
| | | //æ¯å¦æ¶å |
| | | const isoptions = reactive([ |
| | | { label: "æ¯", value: "æ¯" }, |
| | | { label: "å¦", value: "å¦" }, |
| | | ]); |
| | | |
| | | //表åè§å |
| | | const rules = reactive({ |
| | | craftstype: [ |
| | | { required: true, message: "è¯·éæ©å·¥èºç±»å", trigger: "change" }, |
| | | ], |
| | | nodal: [{ required: true, message: "è¯·éæ©èç¹", trigger: "change" }], |
| | | craftsStep: [{ required: true, message: "请è¾å
¥å·¥èºæ¥éª¤", trigger: "blur" }], |
| | | craftContent: [ |
| | | { required: true, message: "请è¾å
¥å·¥èºå
容", trigger: "blur" }, |
| | | ], |
| | | sleeveNum: [{ required: true, message: "请è¾å
¥å¥çæ°é", trigger: "blur" }], |
| | | }); |
| | | |
| | | //æ°å¢å·¥èº/ç¼è¾å·¥èºè¡¨åæ°æ® |
| | | const form = ref({ |
| | | craftType: "", //å·¥èºç±»åï¼ç»ï¼ |
| | | nodal: "", //èç¹ |
| | | craftstype: "", //å·¥èºç±»åï¼ç»ï¼ |
| | | nodal: 0, //èç¹ |
| | | craftsStep: "", //å·¥èºæ¥éª¤ |
| | | craftContent: "", //å·¥èºå
容 |
| | | sleeveNum: "", //å¥çæ°é |
| | | tools: "", //å·¥å
· |
| | | isinvolved: "", //æ¯å¦æ¶å |
| | | sort: "", //æåº |
| | | craftID: 1, |
| | | setpNum: "", |
| | | torqueOne: null, |
| | | torqueOne: 0, |
| | | torqueOneQuantity: 0, |
| | | torqueSum: 0, |
| | | torqueTwo: null, |
| | | torqueTwoQuantity: 0, |
| | | articleOne: "", |
| | | articleOneid: "", |
| | | articleTowid: "", |
| | | articleTwo: "", |
| | | torqueSum: 0, |
| | | torqueTwo: 0, |
| | | torqueTwoQuantity: 0, |
| | | creater: localStorage.getItem("user") |
| | | ? JSON.parse(localStorage.getItem("user")).userName |
| | | : "", |
| | | createDate: formatTime(new Date()), |
| | | }); |
| | | const props = { multiple: true }; |
| | | //å¥çæ°æ® |
| | | const sleeveData = ref([]); |
| | | const userName = ref(""); |
| | | |
| | | //æ°å¢å·¥èº |
| | | const addcraft = (row) => { |
| | |
| | | GJoptions.value = res.rows; |
| | | }); |
| | | }; |
| | | |
| | | //ç¼è¾å·¥èº |
| | | const Editcraft = (row) => { |
| | | let data = Object.assign({}, row); |
| | | type.value = "ç¼è¾"; |
| | | detailsDialogVisible.value = false; |
| | | craftdialogVisible.value = true; |
| | | form.value = row; |
| | | console.log(row, form); |
| | | form.value = data; |
| | | tools.value = row.tools ? row.tools.split(",") : ""; |
| | | ArticleInfom({ |
| | | page: 1, |
| | | rows: 100, |
| | | total: 0, |
| | | tableName: "", |
| | | sort: "", |
| | | order: "", |
| | | wheres: "", |
| | | export: true, |
| | | value: "", |
| | | filter: [ |
| | | { |
| | | name: "", |
| | | value: "", |
| | | displayType: "", |
| | | }, |
| | | ], |
| | | }).then((res) => { |
| | | sleeveData.value = res.rows; |
| | | }); |
| | | GetTool({ |
| | | page: 1, |
| | | rows: 100, |
| | | total: 0, |
| | | tableName: "", |
| | | sort: "", |
| | | order: "", |
| | | wheres: "", |
| | | export: true, |
| | | value: "", |
| | | filter: [ |
| | | { |
| | | name: "", |
| | | value: "", |
| | | displayType: "", |
| | | }, |
| | | ], |
| | | }).then((res) => { |
| | | GJoptions.value = res.rows; |
| | | }); |
| | | }; |
| | | //è§å |
| | | const ruleFormRef = ref(); |
| | | const rules = reactive({ |
| | | craftType: [{ required: true, message: "è¯·éæ©å·¥èºç±»å", trigger: "change" }], |
| | | nodal: [{ required: true, message: "è¯·éæ©èç¹", trigger: "change" }], |
| | | craftsStep: [{ required: true, message: "请è¾å
¥å·¥èºæ¥éª¤", trigger: "blur" }], |
| | | craftContent: [ |
| | | { required: true, message: "请è¾å
¥å·¥èºå
容", trigger: "blur" }, |
| | | ], |
| | | sleeveNum: [{ required: true, message: "请è¾å
¥å¥çæ°é", trigger: "blur" }], |
| | | }); |
| | | |
| | | const showdetails = (val) => { |
| | | detailsDialogVisible.value = true; |
| | | title.value = val; |
| | | initData(title.value); |
| | | // GetProcess(val).then((res) => { |
| | | // gridData.value = res.data; |
| | | // }); |
| | | }; |
| | | //ä¿å |
| | | const addprocess = async (formEl) => { |
| | | userName.value = JSON.parse(localStorage.getItem("user")).userName; |
| | | let string = ""; |
| | | form.value.tools.forEach((item) => { |
| | | string += item.toolName + ","; |
| | | }); |
| | | |
| | | if (tools.value.length == 0) { |
| | | ElMessage({ |
| | | message: "è¯·éæ©å·¥å
·", |
| | | type: "warning", |
| | | }); |
| | | return; |
| | | } |
| | | string = tools.value |
| | | .map((item) => { |
| | | return item.toolName; |
| | | }) |
| | | .join(","); |
| | | if (checkList.value.length == 0) { |
| | | ElMessage({ |
| | | message: "è¯·éæ©å¥ç", |
| | | type: "warning", |
| | | }); |
| | | return; |
| | | } |
| | | form.value.articleOneid = checkList.value[0].id; |
| | | form.value.articleOne = checkList.value[0].num; |
| | | form.value.articleTowid = checkList.value[1].id; |
| | | form.value.articleTwo = checkList.value[1].num; |
| | | form.value.creater = userName.value; |
| | | form.value.tools = string; |
| | | form.value.craftType = title.value; |
| | | form.value.craftstype = title.value; |
| | | form.value.torqueOneQuantity = tools.value.length; |
| | | form.value.id = form.value.craftID ? form.value.craftID : ""; |
| | | console.log(form.value); |
| | | |
| | | if (!formEl) return; |
| | | await formEl.validate((valid, fields) => { |
| | | if (valid) { |
| | | AddProcess(form.value).then((res) => { |
| | | AddOrUpdateProcess(form.value).then((res) => { |
| | | ElMessage({ |
| | | message: res.message, |
| | | message: form.value.craftID ? "ä¿®æ¹æå" : "å建æå", |
| | | type: "success", |
| | | }); |
| | | craftdialogVisible.value = false; |
| | |
| | | GJoptions.value = []; |
| | | } |
| | | }; |
| | | //æ¯å¦æ¶å |
| | | const isoptions = reactive([ |
| | | { label: "æ¯", value: "æ¯" }, |
| | | { label: "å¦", value: "å¦" }, |
| | | ]); |
| | | const user = ref(null); |
| | | |
| | | //å页请æ±åæ° |
| | | const pageQuery = ref({ |
| | | page: 1, //å½åé¡µé¢ |
| | | rows: 10, //æ¯é¡µæ¾ç¤ºæ¡æ° |
| | | order: "desc", //æåºæ¹å¼ |
| | | sort: "craftID", //æåºå段 |
| | | sort: "", //æåºå段 |
| | | wheres: "", //æ¡ä»¶æ¥è¯¢ |
| | | }); |
| | | |
| | | //页é¢åå§åæ°æ® |
| | | const initData = (val) => { |
| | | // æ¥è¯¢æ¡ä»¶ |
| | | const startTime = formatTime(queryForm.selectTime[0]); |
| | | const endTime = formatTime(queryForm.selectTime[1]); |
| | | const startTime = formatTime(queryForm.value.selectTime[0]); |
| | | const endTime = formatTime(queryForm.value.selectTime[1]); |
| | | const filter = [ |
| | | { |
| | | name: "gruop", |
| | | name: "CraftType", |
| | | value: val, |
| | | displayType: "Contains", |
| | | displayType: "String", |
| | | }, |
| | | { |
| | | name: queryForm.selectType, |
| | | value: queryForm.selectInput, |
| | | displayType: "Equal", |
| | | name: queryForm.value.selectType, |
| | | value: queryForm.value.selectInput, |
| | | displayType: "like", |
| | | }, |
| | | { |
| | | name: "pustatus", |
| | | value: queryForm.selectName, |
| | | value: queryForm.value.selectName, |
| | | displayType: "Contains", |
| | | }, |
| | | { name: "createTime", value: startTime, displayType: "ThanOrEqual" }, |
| | |
| | | gridData.value = res.rows; |
| | | }); |
| | | }; |
| | | //æ°æ®æ£ç´¢äºä»¶ |
| | | const handleQuery = () => { |
| | | pageQuery.value.page = 1; |
| | | initData(title.value); |
| | | }; |
| | | // éç½®æ¹æ³ |
| | | const resetQuery = () => { |
| | | queryForm.value = Object.assign({}, obj); |
| | | pageQuery.value.page = 1; |
| | | initData(title.value); |
| | | }; |
| | | //é置表å |
| | | const resetForm = (formEl) => { |
| | | if (!formEl) return; |
| | | formEl.resetFields(); |
| | | form.value = Object.assign( |
| | | {}, |
| | | { |
| | | craftstype: "", //å·¥èºç±»åï¼ç»ï¼ |
| | | nodal: 0, //èç¹ |
| | | craftsStep: "", //å·¥èºæ¥éª¤ |
| | | craftContent: "", //å·¥èºå
容 |
| | | sleeveNum: "", //å¥çæ°é |
| | | tools: "", //å·¥å
· |
| | | isinvolved: "", //æ¯å¦æ¶å |
| | | setpNum: "", |
| | | torqueOne: 0, |
| | | torqueOneQuantity: 0, |
| | | articleOne: "", |
| | | articleOneid: "", |
| | | articleTowid: "", |
| | | articleTwo: "", |
| | | torqueSum: 0, |
| | | torqueTwo: 0, |
| | | torqueTwoQuantity: 0, |
| | | creater: "", |
| | | createDate: formatTime(new Date()), |
| | | } |
| | | ); |
| | | }; |
| | | //å¯¼åºæ¹æ³ |
| | | const printExcel = () => { |
| | | // æ¥è¯¢æ¡ä»¶ |
| | | const startTime = formatTime(queryForm.selectTime[0]); |
| | | const endTime = formatTime(queryForm.selectTime[1]); |
| | | const startTime = formatTime(queryForm.value.selectTime[0]); |
| | | const endTime = formatTime(queryForm.value.selectTime[1]); |
| | | const filter = [ |
| | | { |
| | | name: "gruop", |
| | |
| | | displayType: "String", |
| | | }, |
| | | { |
| | | name: queryForm.selectType, |
| | | value: queryForm.selectInput, |
| | | name: queryForm.value.selectType, |
| | | value: queryForm.value.selectInput, |
| | | displayType: "String", |
| | | }, |
| | | { |
| | | name: "pustatus", |
| | | value: queryForm.selectName, |
| | | value: queryForm.value.selectName, |
| | | displayType: "String", |
| | | }, |
| | | { name: "createTime", value: startTime, displayType: "ThanOrEqual" }, |
| | |
| | | filter, |
| | | }); |
| | | }; |
| | | |
| | | //æ°æ®æ£ç´¢äºä»¶ |
| | | const handleQuery = () => { |
| | | pageQuery.value.page = 1; |
| | | initData(title.value); |
| | | //æ¸
空 |
| | | const clear = () => { |
| | | checkList.value = []; |
| | | }; |
| | | const resetQuery = () => { |
| | | queryForm.value = { selectTime: [] }; |
| | | pageQuery.value.page = 1; |
| | | initData(title.value); |
| | | const checkChange = (e) => { |
| | | console.log(e, checkList.value); |
| | | }; |
| | | |
| | | // const handleChange = () => { |
| | | // console.log(checkList.value); |
| | | // }; |
| | | const handleClose = () => { |
| | | const handleChange = () => { |
| | | console.log(checkList.value); |
| | | }; |
| | | const handleCheckAllChange = (val) => { |
| | | console.log(val); |
| | | checkList.value = val ? sleeveData.value : []; |
| | | isIndeterminate.value = false; |
| | | console.log(checkList.value); |
| | | }; |
| | | // å é¤å·¥èº |
| | | const delProcess = (val) => { |
| | | console.log(val); |
| | | |
| | | DelProcess([val.craftID]).then((res) => { |
| | | ElMessage({ |
| | | message: "å 餿å", |
| | | type: "success", |
| | | }); |
| | | initData(title.value); |
| | | }); |
| | | }; |
| | | |
| | | onMounted(() => { |
| | |
| | | display: flex; |
| | | justify-content: center; |
| | | background-color: rgba(0, 0, 0, 0.3); |
| | | |
| | | .content { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | |
| | | margin-top: 5.88rem; |
| | | width: 75rem; |
| | | |
| | | .content-list { |
| | | display: flex; |
| | | flex-direction: column; |
| | |
| | | width: 22.69rem; |
| | | height: 11.44rem; |
| | | background-color: #fff; |
| | | |
| | | .list_top { |
| | | display: flex; |
| | | padding: 1.38rem 1.38rem; |
| | | box-sizing: border-box; |
| | | |
| | | .list_top_left { |
| | | margin-right: 0.94rem; |
| | | } |
| | | } |
| | | |
| | | .list_bottom { |
| | | height: 3.06rem; |
| | | display: flex; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .my-header { |
| | | height: 3.94rem; |
| | | display: flex; |
| | |
| | | padding-left: 2.06rem; |
| | | border-bottom: 0.06rem solid rgba(233, 233, 233, 1); |
| | | } |
| | | |
| | | .serch { |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | .time_box { |
| | | display: flex; |
| | | align-items: center; |
| | |
| | | justify-content: center; |
| | | } |
| | | } |
| | | |
| | | .serch_box { |
| | | display: flex; |
| | | align-items: center; |
| | | text-align: center; |
| | | margin-left: 0.98rem; |
| | | border-radius: 0.38rem; |
| | | |
| | | .serchb { |
| | | box-sizing: border-box; |
| | | width: 6.88rem; |
| | |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | input { |
| | | box-sizing: border-box; |
| | | outline: none; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .my-craftheader { |
| | | height: 3.94rem; |
| | | display: flex; |
| | |
| | | border-bottom: 0.06rem solid rgba(233, 233, 233, 1); |
| | | } |
| | | } |
| | | |
| | | .avatar-uploader .avatar { |
| | | width: 7rem; |
| | | height: 7rem; |
| | | display: block; |
| | | } |
| | | |
| | | :deep(.avatar-uploader .el-upload) { |
| | | width: 7rem; |
| | | height: 7rem; |
| | |
| | | overflow: hidden; |
| | | transition: var(--el-transition-duration-fast); |
| | | } |
| | | |
| | | :deep(.el-upload-list__item) { |
| | | width: 7rem; |
| | | height: 7rem; |
| | | } |
| | | |
| | | .avatar-uploader .el-upload:hover { |
| | | border-color: var(--el-color-primary); |
| | | } |
| | |
| | | size="small" |
| | | /> |
| | | </div> |
| | | <!-- <div class="serch_box"> |
| | | <div class="serch_box"> |
| | | <div class="serchb"> |
| | | <el-select |
| | | v-model="queryForm.selectType" |
| | |
| | | placeholder="请è¾å
¥å
³é®è¯æç´¢" |
| | | style="border-left: 0.06rem solid #e2e2e2" |
| | | /> |
| | | </div> --> |
| | | </div> |
| | | <el-button |
| | | @click="handleQuery" |
| | | type="primary" |
| | |
| | | <el-table-column prop="account" label="ç»å½è´¦å·" align="center" /> |
| | | <el-table-column prop="trurName" label="çå®å§å" align="center" /> |
| | | <el-table-column prop="logIP" label="ç»å½IP" align="center" /> |
| | | <el-table-column prop="createdate" label="ç»å½æ¶é´" align="center" /> |
| | | <el-table-column prop="createDate" label="ç»å½æ¶é´" align="center" /> |
| | | </el-table> |
| | | </div> |
| | | <div |
| | |
| | | </div> |
| | | </template> |
| | | <script setup> |
| | | import { ref, reactive, onMounted } from "vue"; |
| | | import { ref, reactive, onMounted, toRef } from "vue"; |
| | | import { ElMessage, ElMessageBox } from "element-plus"; |
| | | import { formatTime } from "@/utils/index.js"; |
| | | import { |
| | |
| | | ExportApi2, |
| | | ExportApi3, |
| | | } from "@/api/newapi/Datalogging"; |
| | | import { login } from "@/api/login"; |
| | | const obj = { |
| | | selectName: "", |
| | | selectTime: [], // æ¶é´èå´ |
| | |
| | | selectInput: "", |
| | | value: "", |
| | | }; |
| | | const queryForm = ref({ |
| | | selectName: "", |
| | | selectTime: [], // æ¶é´èå´ |
| | | selectType: "", |
| | | selectInput: "", |
| | | value: "", |
| | | }); |
| | | const queryForm = toRef({ ...obj }); |
| | | |
| | | const tableData = ref([]); |
| | | const options = ref([ |
| | |
| | | ]); |
| | | const props = { multiple: true }; |
| | | |
| | | const table = ref(false); |
| | | const form = reactive({}); |
| | | const isactive = ref(1); |
| | | const claimdialogVisible = ref(false); |
| | |
| | | page: 1, //å½åé¡µé¢ |
| | | rows: 10, //æ¯é¡µæ¾ç¤ºæ¡æ° |
| | | order: "desc", //æåºæ¹å¼ |
| | | sort: "createTime", //æåºå段 |
| | | sort: "", //æåºå段 |
| | | wheres: "", //æ¡ä»¶æ¥è¯¢ |
| | | }); |
| | | const datildata = ref({}); |
| | |
| | | }, |
| | | ]; |
| | | const selectoptions = ref([]); |
| | | |
| | | // æ¥è¯¢ |
| | | const query = () => { |
| | | if (isactive.value == 1) { |
| | | initData(); |
| | | } else if (isactive.value == 2) { |
| | | WorkinitData(); |
| | | } else { |
| | | LogininitData(); |
| | | } |
| | | }; |
| | | |
| | | selectoptions.value = tasklogging; |
| | | const changeactive = (index) => { |
| | |
| | | } else if (isactive.value == 2) { |
| | | WorkinitData(); |
| | | } else { |
| | | LogininitData(); |
| | | } |
| | | }; |
| | | |
| | |
| | | } else if (isactive.value == 2) { |
| | | WorkinitData(); |
| | | } else { |
| | | LogininitData(); |
| | | } |
| | | }; |
| | | //ä»»å¡è®°å½ |
| | |
| | | { |
| | | name: queryForm.value.selectType, |
| | | value: queryForm.value.selectInput, |
| | | displayType: "String", |
| | | displayType: "like", |
| | | }, |
| | | { name: "createTime", value: startTime, displayType: "ThanOrEqual" }, |
| | | { name: "createTime", value: endTime, displayType: "LessOrEqual" }, |
| | |
| | | LogininitData(); |
| | | } |
| | | }; |
| | | |
| | | //éç½®æ¹æ³ |
| | | const resetQuery = () => { |
| | | queryForm.value = { selectName: "", selectTime: [] }; |
| | | queryForm.value = Object.assign({}, obj); |
| | | pageQuery.value.page = 1; |
| | | initData(); |
| | | if (isactive.value == 1) { |
| | | initData(); |
| | | } else if (isactive.value == 2) { |
| | | WorkinitData(); |
| | | } else { |
| | | LogininitData(); |
| | | } |
| | | }; |
| | | |
| | | //æå°æ¹æ³ |
| | | const printExcel = () => { |
| | | // æ¥è¯¢æ¡ä»¶ |
| | | const startTime = formatTime(queryForm.value.selectTime[0]); |
| | |
| | | }); |
| | | } |
| | | }; |
| | | |
| | | const roleINFO = ref(); |
| | | onMounted(() => { |
| | | initData(); |
| | | roleINFO.value = JSON.parse(localStorage.getItem("user")); |
| | | console.log(roleINFO.value); |
| | | }); |
| | | </script> |
| | | <style lang="scss" scoped> |
| | |
| | | size="small" |
| | | /> |
| | | </div> |
| | | <!-- <div class="serch_box"> |
| | | <div class="serch_box"> |
| | | <div class="serchb"> |
| | | <el-select |
| | | v-model="queryForm.selectType" |
| | |
| | | placeholder="请è¾å
¥å
³é®è¯æç´¢" |
| | | style="border-left: 0.06rem solid #e2e2e2" |
| | | /> |
| | | </div> --> |
| | | </div> |
| | | <el-button |
| | | type="primary" |
| | | size="small" |
| | |
| | | <el-button |
| | | type="primary" |
| | | size="small" |
| | | @click="dialogVisible1 = true" |
| | | @click="addData" |
| | | style=" |
| | | width: 5.5rem; |
| | | height: 2rem; |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | " |
| | | ><el-icon style="margin-right: 0.2rem"><Plus /></el-icon |
| | | ><el-icon style="margin-right: 0.2rem"> <Plus /> </el-icon |
| | | >æ°å»º</el-button |
| | | > |
| | | <el-button |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | " |
| | | ><el-icon style="margin-right: 0.2rem"><Plus /></el-icon |
| | | ><el-icon style="margin-right: 0.2rem"> <Plus /> </el-icon |
| | | >æå¨è·å</el-button |
| | | > |
| | | <el-button |
| | |
| | | @click="Send(scope.row)" |
| | | >派任å¡</el-button |
| | | > |
| | | <!-- <el-button size="small" type="text" @click="delt">ç¼è¾</el-button> --> |
| | | <el-button size="small" type="text" @click="Editdata(scope.row)" |
| | | >ç¼è¾</el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | /> |
| | | </div> |
| | | </div> |
| | | <!-- ä»»å¡ä¿¡æ¯å¼¹åºæ¡ --> |
| | | <!-- æ°å»º/ç¼è¾ä»»å¡ä¿¡æ¯å¼¹åºæ¡ --> |
| | | <el-dialog |
| | | v-model="dialogVisible1" |
| | | title="" |
| | | width="60%" |
| | | @close="handleClose(ruleFormRef)" |
| | | @close="resetForm(ruleFormRef)" |
| | | style="margin-top: 15.625rem" |
| | | > |
| | | <template #title> |
| | |
| | | v-model="SenddialogVisible" |
| | | title="" |
| | | width="60%" |
| | | @close="handleClose(sendformRef)" |
| | | @close="resetForm(sendformRef)" |
| | | top="2%" |
| | | > |
| | | <template #title> |
| | |
| | | </div> |
| | | </template> |
| | | </el-dialog> --> |
| | | |
| | | <!-- æ¡æ¶æ¹é导å
¥å¼¹åºæ¡ --> |
| | | <el-dialog v-model="importDialogVisible"> |
| | | <UploadExcel |
| | | @importExcelAfter="importExcelAfter" |
| | |
| | | </div> |
| | | </template> |
| | | <script setup> |
| | | import { ref, reactive, onMounted } from "vue"; |
| | | import { ref, reactive, onMounted, toRef } from "vue"; |
| | | import { useRouter } from "vue-router"; |
| | | import { |
| | | GetPageData, |
| | |
| | | GetTemplateList, |
| | | Delete, |
| | | ExportApi, |
| | | Update, |
| | | } from "@/api/newapi/NjTask"; |
| | | import { GetUerType } from "@/api/user"; |
| | | import { formatTime } from "@/utils/index.js"; |
| | | import { ElMessage } from "element-plus"; |
| | | import UploadExcel from "@/components/basic/UploadExcel.vue"; |
| | | |
| | | //使ç¨è·¯ç± |
| | | const router = useRouter(); |
| | | // åå§åæ°æ® |
| | | const obj = { |
| | | selectName: "", |
| | | selectTime: [], // æ¶é´èå´ |
| | | selectType: "", |
| | | selectInput: "", |
| | | selectType: "", //éæ©çç±»å |
| | | selectInput: "", //è¾å
¥çæ°æ® |
| | | }; |
| | | const queryForm = ref({ |
| | | selectName: "", |
| | | selectTime: [], // æ¶é´èå´ |
| | | selectType: "", |
| | | selectInput: "", |
| | | }); |
| | | //æç´¢ä¼ çæ°æ® |
| | | const queryForm = toRef({ ...obj }); |
| | | //页é¢çæ°é |
| | | const pageTotal = ref(0); |
| | | //表åçæ°æ® |
| | | const tableData = ref([]); |
| | | const UerTypeoptions = ref({ |
| | | quality: [], //è´¨æ£ |
| | |
| | | mechanical: [], //æºæ¢° |
| | | trench: [], //å°æ² |
| | | }); |
| | | |
| | | //表åéªè¯è§å |
| | | const rules = reactive({ |
| | | bogie: [{ required: true, message: "请è¾å
¥è½¬åæ¶", trigger: "blur" }], |
| | | coachNum: [{ required: true, message: "请è¾å
¥è½¦å¢å·", trigger: "blur" }], |
| | |
| | | trainKind: [{ required: true, message: "请è¾å
¥è½¦å", trigger: "blur" }], |
| | | trainNum: [{ required: true, message: "请è¾å
¥è½¦ç»å·", trigger: "blur" }], |
| | | }); |
| | | //æ°å»ºç¼è¾è¡¨årefå¼ |
| | | const ruleFormRef = ref(); |
| | | const options = ref([]); |
| | | const props = { multiple: true }; |
| | | const table = ref(false); |
| | | const selectoptions = reactive([ |
| | | { label: "车å", value: "trainkind" }, |
| | | { label: "车ç»", value: "trainNum" }, |
| | | { label: "è¡é", value: "track" }, |
| | | { label: "æ£ä¿®çç»", value: "processkept" }, |
| | | ]); |
| | | //æ·»å /ç¼è¾çè¡¨åæ°æ® |
| | | const form = ref({ |
| | | bogie: "", //è½¬åæ¶ |
| | | coachNum: "", //è½¦å¢ |
| | |
| | | track: "", //è¡é |
| | | trainKind: "", //车å |
| | | trainNum: "", //车ç»å· |
| | | createTime: formatTime(new Date()), //å建æ¶é´ |
| | | createDate: formatTime(new Date()), //å建æ¶é´ |
| | | creater: JSON.parse(localStorage.getItem("user")).userName, //å建人 |
| | | }); |
| | | //å é¤ |
| | | const dialogVisible1 = ref(false); |
| | | //æ´¾ä»»å¡ |
| | | const SenddialogVisible = ref(false); |
| | | //派任å¡è¡¨årefå¼ |
| | | const sendformRef = ref(); |
| | | //æ¹é导å
¥ |
| | | const dialogVisible = ref(false); |
| | | //æ¹é导å
¥æ°æ® |
| | | const gridtableData = ref([]); |
| | | //模æ¿å表 |
| | | const temopitions = ref([]); |
| | | |
| | | const props = { multiple: true }; |
| | | const table = ref(false); |
| | | const type = ref("æ°å»º"); |
| | | //æç´¢éæ©çåæ®µ |
| | | const selectoptions = reactive([ |
| | | { label: "车å", value: "trainkind" }, |
| | | { label: "车ç»", value: "trainNum" }, |
| | | { label: "è¡é", value: "track" }, |
| | | { label: "æ£ä¿®çç»", value: "processkept" }, |
| | | ]); |
| | | //æäº¤çæ°æ®åé |
| | | const sendform = ref({}); |
| | | //æ¹é导å
¥ |
| | | const importDialogVisible = ref(false); |
| | | //ç嬿件ä¸ä¼ æåçåè° |
| | | const importExcelAfter = () => { |
| | | importDialogVisible.value = false; |
| | | initData(); |
| | | }; |
| | | |
| | | //æ°å»ºä»»å¡ä¿¡æ¯ |
| | | const AddNJinfomclick = async (formEl) => { |
| | | if (!formEl) return; |
| | | await formEl.validate((valid, fields) => { |
| | | if (valid) { |
| | | AddNJinfom(form.value).then((res) => { |
| | | if (res.code == 0) { |
| | | ElMessage({ |
| | | message: "å建æå", |
| | | type: "success", |
| | | }); |
| | | dialogVisible1.value = false; |
| | | } |
| | | }); |
| | | if (type.value == "æ°å»º") { |
| | | AddNJinfom(form.value).then((res) => { |
| | | if (res.code == 0) { |
| | | ElMessage({ |
| | | message: "å建æå", |
| | | type: "success", |
| | | }); |
| | | dialogVisible1.value = false; |
| | | initData(); |
| | | } |
| | | }); |
| | | } else { |
| | | //ç¼è¾ |
| | | Update(form.value).then((res) => { |
| | | if (res.code == 0) { |
| | | ElMessage({ |
| | | message: "ä¿®æ¹æå", |
| | | type: "success", |
| | | }); |
| | | dialogVisible1.value = false; |
| | | initData(); |
| | | } |
| | | }); |
| | | } |
| | | } else { |
| | | console.log("error submit!", fields); |
| | | } |
| | | }); |
| | | }; |
| | | //å é¤ |
| | | const dialogVisible1 = ref(false); |
| | | //æ´¾ä»»å¡ |
| | | const SenddialogVisible = ref(false); |
| | | const sendformRef = ref(); |
| | | //æ°å»ºä»»å¡ä¿¡æ¯ |
| | | const addData = () => { |
| | | type.value = "æ°å»º"; |
| | | dialogVisible1.value = true; |
| | | }; |
| | | //ç¼è¾ä»»å¡ä¿¡æ¯ |
| | | const Editdata = (row) => { |
| | | let obj = Object.assign({}, row); |
| | | type.value = "ç¼è¾"; |
| | | dialogVisible1.value = true; |
| | | form.value = obj; |
| | | }; |
| | | |
| | | //æäº¤ |
| | | const sublit = async (formEl) => { |
| | | let data = { |
| | |
| | | type: "success", |
| | | }); |
| | | SenddialogVisible.value = false; |
| | | initData(); |
| | | }); |
| | | } else { |
| | | console.log("error submit!", fields); |
| | |
| | | message: res.message, |
| | | type: "success", |
| | | }); |
| | | initData(); |
| | | SenddialogVisible.value = false; |
| | | }); |
| | | } else { |
| | |
| | | } |
| | | }); |
| | | }; |
| | | //æ¹é导å
¥ |
| | | const dialogVisible = ref(false); |
| | | |
| | | //æ°æ®å¯¼åºçæ¹æ³ |
| | | const printExcel = () => { |
| | | // æ¥è¯¢æ¡ä»¶ |
| | | const startTime = formatTime(queryForm.selectTime[0]); |
| | | const endTime = formatTime(queryForm.selectTime[1]); |
| | | const startTime = formatTime(queryForm.value.selectTime[0]); |
| | | const endTime = formatTime(queryForm.value.selectTime[1]); |
| | | const filter = [ |
| | | { |
| | | name: queryForm.selectType, |
| | | value: queryForm.selectInput, |
| | | name: queryForm.value.selectType, |
| | | value: queryForm.value.selectInput, |
| | | displayType: "String", |
| | | }, |
| | | |
| | |
| | | filter, |
| | | }); |
| | | }; |
| | | //æ¹é导å
¥æ°æ® |
| | | const gridtableData = ref([]); |
| | | // quality: [], //è´¨æ£ |
| | | // electric: [], //çµæ° |
| | | // mechanical: [], //æºæ¢° |
| | | // trench: [], //å°æ² |
| | | //æ´¾ä»»å¡æ¹æ³ |
| | | const Send = (val) => { |
| | | SenddialogVisible.value = true; |
| | | sendform.value = { ...val }; |
| | | getTemplateList(); |
| | | GetUerType().then((res) => { |
| | | UerTypeoptions.value.quality = res.data.filter( |
| | | (item) => item.roleId != 1 && item.roleId == 2 |
| | | ); |
| | | UerTypeoptions.value.quality = res.data.filter((item) => { |
| | | return item.user_Id != 1 && item.roleName.substring(2, 4) == "è´¨æ£"; |
| | | }); |
| | | UerTypeoptions.value.electric = res.data.filter( |
| | | (item) => item.roleId != 1 && item.roleId == 3 |
| | | (item) => |
| | | item.user_Id != 1 && |
| | | item.roleName.substring(2, 4) != "è´¨æ£" && |
| | | item.roleName.substring(0, 2) == "çµæ°" |
| | | ); |
| | | UerTypeoptions.value.mechanical = res.data.filter( |
| | | (item) => item.roleId != 1 && item.roleId == 4 |
| | | (item) => |
| | | item.user_Id != 1 && |
| | | item.roleName.substring(2, 4) != "è´¨æ£" && |
| | | item.roleName.substring(0, 2) == "æºæ¢°" |
| | | ); |
| | | UerTypeoptions.value.trench = res.data.filter( |
| | | (item) => item.roleId != 1 && item.roleId == 5 |
| | | (item) => |
| | | item.user_Id != 1 && |
| | | item.roleName.substring(2, 4) != "è´¨æ£" && |
| | | item.roleName.substring(0, 2) == "å°æ²" |
| | | ); |
| | | }); |
| | | console.log(UerTypeoptions.value); |
| | | }; |
| | | //å 餿¹æ³ |
| | | const delt = () => { |
| | | dialogVisible1.value = true; |
| | | }; |
| | | //æ¹éå é¤ |
| | | const ids = ref([]); |
| | | const SelectionChange = (val) => { |
| | | ids.value = []; |
| | | ids.value = val.map((item) => item.id); |
| | | }; |
| | | const deleteAll = () => { |
| | | if (ids.value.length == 0) { |
| | | ElMessage({ message: "è¯·éæ©è¦å é¤çæ°æ®", type: "error" }); |
| | | return; |
| | | } |
| | | Delete(ids.value).then((res) => { |
| | | ElMessage({ message: "å 餿å", type: "success" }); |
| | | initData(); |
| | | }); |
| | | }; |
| | | const temopitions = ref([]); |
| | | //è·åæææ¨¡æ¿ |
| | | const getTemplateList = () => { |
| | | GetTemplateList({ |
| | |
| | | sendform.value = { ...sendform.value, ...res.data[0] }; |
| | | }); |
| | | }; |
| | | //æ¹éå é¤ |
| | | const ids = ref([]); //æ¹éå é¤çid |
| | | const SelectionChange = (val) => { |
| | | //è·åæ¹éå é¤çid |
| | | ids.value = []; |
| | | ids.value = val.map((item) => item.id); |
| | | }; |
| | | //å é¤éä¸çæ°æ® |
| | | const deleteAll = () => { |
| | | if (ids.value.length == 0) { |
| | | ElMessage({ message: "è¯·éæ©è¦å é¤çæ°æ®", type: "error" }); |
| | | return; |
| | | } |
| | | Delete(ids.value).then((res) => { |
| | | ElMessage({ message: "å 餿å", type: "success" }); |
| | | initData(); |
| | | }); |
| | | }; |
| | | |
| | | //å页请æ±åæ° |
| | | const pageQuery = ref({ |
| | | page: 1, //å½åé¡µé¢ |
| | | rows: 10, //æ¯é¡µæ¾ç¤ºæ¡æ° |
| | | order: "createTime", //æåºæ¹å¼ |
| | | sort: "desc", //æåºå段 |
| | | order: "desc", //æåºæ¹å¼ |
| | | sort: "", //æåºå段 |
| | | wheres: "", //æ¡ä»¶æ¥è¯¢ |
| | | }); |
| | | |
| | |
| | | pageQuery.value.page = val; |
| | | initData(); |
| | | }; |
| | | const pageTotal = ref(0); |
| | | |
| | | //页é¢åå§åæ¹æ³ |
| | | const initData = () => { |
| | | // æ¥è¯¢æ¡ä»¶ |
| | | const startTime = formatTime(queryForm.value.selectTime[0]); |
| | |
| | | { |
| | | name: queryForm.value.selectType, |
| | | value: queryForm.value.selectInput, |
| | | displayType: "String", |
| | | displayType: "like", |
| | | }, |
| | | { name: "createtime", value: startTime, displayType: "ThanOrEqual" }, |
| | | { name: "createtime", value: endTime, displayType: "LessOrEqual" }, |
| | |
| | | pageQuery.value.page = 1; |
| | | initData(); |
| | | }; |
| | | //é置表å |
| | | const resetForm = (formEl) => { |
| | | if (!formEl) return; |
| | | formEl.resetFields(); |
| | | form.value = { |
| | | bogie: "", //è½¬åæ¶ |
| | | coachNum: "", //è½¦å¢ |
| | | processDept: "", //æ£ä¿®çç» |
| | | track: "", //è¡é |
| | | trainKind: "", //车å |
| | | trainNum: "", //车ç»å· |
| | | creater: "", |
| | | createDate: formatTime(new Date()), //å建æ¶é´ |
| | | }; |
| | | }; |
| | | //éç½®æ¹æ³ |
| | | const resetQuery = () => { |
| | | queryForm.value = Object.assign({}, obj); |
| | | pageQuery.value.page = 1; |
| | | initData(); |
| | | }; |
| | | //é置表å |
| | | const handleClose = (formEl) => { |
| | | if (!formEl) return; |
| | | formEl.resetFields(); |
| | | }; |
| | | |
| | | onMounted(() => { |
| | | initData(); |
| | | GetUerType().then((res) => { |
| | | UerTypeoptions.value.quality = res.data.filter( |
| | | (item) => item.roleId != 1 && item.roleName.substring(2, 2) == "è´¨æ£" |
| | | ); |
| | | UerTypeoptions.value.electric = res.data.filter( |
| | | (item) => |
| | | item.roleId != 1 && |
| | | item.roleName.substring(2, 2) != "è´¨æ£" && |
| | | item.roleName.substring(0, 2) == "çµæ°" |
| | | ); |
| | | UerTypeoptions.value.mechanical = res.data.filter( |
| | | (item) => |
| | | item.roleId != 1 && |
| | | item.roleName.substring(2, 2) != "è´¨æ£" && |
| | | item.roleName.substring(0, 2) == "æºæ¢°" |
| | | ); |
| | | UerTypeoptions.value.trench = res.data.filter( |
| | | (item) => |
| | | item.roleId != 1 && |
| | | item.roleName.substring(2, 2) != "è´¨æ£" && |
| | | item.roleName.substring(0, 2) == "å°æ²" |
| | | ); |
| | | }); |
| | | }); |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .Taskmanagement { |
| | | display: flex; |
| | | background-color: #fff; |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .serch { |
| | | display: flex; |
| | | margin-top: 1.31rem; |
| | | align-items: center; |
| | | |
| | | .time_box { |
| | | display: flex; |
| | | align-items: center; |
| | | text-align: center; |
| | | margin-left: 0.98rem; |
| | | |
| | | .time { |
| | | box-sizing: border-box; |
| | | width: 6.88rem; |
| | |
| | | justify-content: center; |
| | | } |
| | | } |
| | | |
| | | .serch_box { |
| | | display: flex; |
| | | align-items: center; |
| | | text-align: center; |
| | | margin-left: 0.98rem; |
| | | border-radius: 0.38rem; |
| | | |
| | | .serchb { |
| | | box-sizing: border-box; |
| | | width: 6.88rem; |
| | |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | input { |
| | | box-sizing: border-box; |
| | | outline: none; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .btns { |
| | | display: flex; |
| | | justify-content: space-between; |
| | |
| | | .confirmButtonClass { |
| | | margin-right: 10px; |
| | | } |
| | | |
| | | .el-message-box .el-message-box__btns { |
| | | flex-direction: row-reverse !important; |
| | | justify-content: normal !important; |
| | |
| | | <el-button |
| | | type="primary" |
| | | size="small" |
| | | @click="add('æ°å»º')" |
| | | @click="addData()" |
| | | style=" |
| | | width: 5.5rem; |
| | | height: 2rem; |
| | |
| | | v-model="dialogVisible" |
| | | title="" |
| | | width="60%" |
| | | @close="handleClose(formRef)" |
| | | @close="resetForm(formRef)" |
| | | top="2%" |
| | | > |
| | | <template #title> |
| | |
| | | </div> |
| | | </template> |
| | | <script setup> |
| | | import { ref, reactive, onMounted } from "vue"; |
| | | import { ref, reactive, onMounted, toRef } from "vue"; |
| | | import { |
| | | GetTemplateList, |
| | | AddData, |
| | |
| | | import { GetUerType } from "@/api/user"; |
| | | import { ElMessage } from "element-plus"; |
| | | import { formatTime } from "@/utils/index.js"; |
| | | const queryForm = reactive({ |
| | | |
| | | const obj = { |
| | | selectName: "", |
| | | selectTime: [], // æ¶é´èå´ |
| | | selectType: "", |
| | | selectInput: "", |
| | | }); |
| | | }; |
| | | const queryForm = toRef({ ...obj }); |
| | | |
| | | //è¡¨åæ°æ® |
| | | const tableData = ref([]); |
| | | const props = { multiple: true }; |
| | | const table = ref(false); |
| | | // const table = ref(false); |
| | | //æ°å»º/ç¼è¾ æäº¤æ°æ® |
| | | const form = ref({ |
| | | templateName: "", |
| | |
| | | fuZhu_Lc: "", |
| | | liJu_Dg: "", |
| | | fuZhu_Dg: "", |
| | | createDate: formatTime(new Date()), //å建æ¶é´ |
| | | creater: JSON.parse(localStorage.getItem("user")).userName, //å建人 |
| | | }); |
| | | |
| | | const selectoptions = ref([ |
| | | { |
| | | value: "çµæ°", |
| | | label: "çµæ°", |
| | | value: "templateName", |
| | | label: "模æ¿åç§°", |
| | | }, |
| | | { |
| | | value: "æºæ¢°", |
| | | label: "æºæ¢°", |
| | | value: "takeName", |
| | | label: "ä»»å¡åç§°", |
| | | }, |
| | | { |
| | | value: "å°æ²", |
| | | label: "å°æ²", |
| | | value: "jiShuYuan", |
| | | label: "ææ¯å", |
| | | }, |
| | | ]); |
| | | //表åè§å |
| | | const rules = reactive({ |
| | | templateName: [ |
| | | { required: true, message: "请è¾å
¥æ¨¡æ¿åç§°", trigger: "blur" }, |
| | |
| | | ], |
| | | fuZhu_Dg: [{ required: true, message: "请è¾å
¥å°æ²è¾
å©å", trigger: "blur" }], |
| | | }); |
| | | |
| | | function cancelClick() { |
| | | table.value = false; |
| | | } |
| | | function confirmClick() { |
| | | table.value = false; |
| | | } |
| | | //å¼¹åºæ¡ |
| | | const dialogVisible = ref(false); |
| | | const UerTypeoptions = ref({ |
| | |
| | | trench: [], //å°æ² |
| | | }); |
| | | const type = ref("æ°å»º"); |
| | | //æ°å»ºç¼è¾ref |
| | | const formRef = ref(); |
| | | //页颿°é |
| | | const pageTotal = ref(0); |
| | | //æ·»å æ¹æ³ |
| | | const add = (val) => { |
| | | type.value = val; |
| | | const addData = () => { |
| | | type.value = "æ°å»º"; |
| | | GetUerType().then((res) => { |
| | | UerTypeoptions.value.quality = res.data.filter( |
| | | (item) => item.roleId != 1 && item.roleId == 2 |
| | | ); |
| | | UerTypeoptions.value.quality = res.data.filter((item) => { |
| | | return item.user_Id != 1 && item.roleName.substring(2, 4) == "è´¨æ£"; |
| | | }); |
| | | UerTypeoptions.value.electric = res.data.filter( |
| | | (item) => item.roleId != 1 && item.roleId == 3 |
| | | (item) => |
| | | item.user_Id != 1 && |
| | | item.roleName.substring(2, 4) != "è´¨æ£" && |
| | | item.roleName.substring(0, 2) == "çµæ°" |
| | | ); |
| | | UerTypeoptions.value.mechanical = res.data.filter( |
| | | (item) => item.roleId != 1 && item.roleId == 4 |
| | | (item) => |
| | | item.user_Id != 1 && |
| | | item.roleName.substring(2, 4) != "è´¨æ£" && |
| | | item.roleName.substring(0, 2) == "æºæ¢°" |
| | | ); |
| | | UerTypeoptions.value.trench = res.data.filter( |
| | | (item) => item.roleId != 1 && item.roleId == 5 |
| | | (item) => |
| | | item.user_Id != 1 && |
| | | item.roleName.substring(2, 4) != "è´¨æ£" && |
| | | item.roleName.substring(0, 2) == "å°æ²" |
| | | ); |
| | | dialogVisible.value = true; |
| | | }); |
| | |
| | | form.value = Object.assign({}, obj); |
| | | dialogVisible.value = true; |
| | | GetUerType().then((res) => { |
| | | UerTypeoptions.value.quality = res.data.filter( |
| | | (item) => item.roleId != 1 && item.roleId == 2 |
| | | ); |
| | | UerTypeoptions.value.quality = res.data.filter((item) => { |
| | | return item.user_Id != 1 && item.roleName.substring(2, 4) == "è´¨æ£"; |
| | | }); |
| | | UerTypeoptions.value.electric = res.data.filter( |
| | | (item) => item.roleId != 1 && item.roleId == 3 |
| | | (item) => |
| | | item.user_Id != 1 && |
| | | item.roleName.substring(2, 4) != "è´¨æ£" && |
| | | item.roleName.substring(0, 2) == "çµæ°" |
| | | ); |
| | | UerTypeoptions.value.mechanical = res.data.filter( |
| | | (item) => item.roleId != 1 && item.roleId == 4 |
| | | (item) => |
| | | item.user_Id != 1 && |
| | | item.roleName.substring(2, 4) != "è´¨æ£" && |
| | | item.roleName.substring(0, 2) == "æºæ¢°" |
| | | ); |
| | | UerTypeoptions.value.trench = res.data.filter( |
| | | (item) => item.roleId != 1 && item.roleId == 5 |
| | | (item) => |
| | | item.user_Id != 1 && |
| | | item.roleName.substring(2, 4) != "è´¨æ£" && |
| | | item.roleName.substring(0, 2) == "å°æ²" |
| | | ); |
| | | dialogVisible.value = true; |
| | | }); |
| | | }; |
| | | // è·åæ°æ® |
| | | const getpagedata = () => {}; |
| | | |
| | | //è·åéè¦å é¤çæ°æ® |
| | | const deletid = ref([]); |
| | |
| | | } |
| | | }); |
| | | }; |
| | | //å¯¼åºæ°æ® |
| | | const printExcel = () => { |
| | | // æ¥è¯¢æ¡ä»¶ |
| | | const startTime = formatTime(queryForm.selectTime[0]); |
| | | const endTime = formatTime(queryForm.selectTime[1]); |
| | | const startTime = formatTime(queryForm.value.selectTime[0]); |
| | | const endTime = formatTime(queryForm.value.selectTime[1]); |
| | | const filter = [ |
| | | { |
| | | name: queryForm.selectType, |
| | | value: queryForm.selectInput, |
| | | displayType: "String", |
| | | name: queryForm.value.selectType, |
| | | value: queryForm.value.selectInput, |
| | | displayType: "like", |
| | | }, |
| | | { |
| | | name: "pustatus", |
| | | value: queryForm.selectName, |
| | | value: queryForm.value.selectName, |
| | | displayType: "String", |
| | | }, |
| | | { name: "createDate", value: startTime, displayType: "ThanOrEqual" }, |
| | |
| | | pageQuery.value.page = val; |
| | | initData(); |
| | | }; |
| | | const pageTotal = ref(0); |
| | | //页é¢åå§åæ°æ® |
| | | const initData = () => { |
| | | // æ¥è¯¢æ¡ä»¶ |
| | | const startTime = formatTime(queryForm.selectTime[0]); |
| | | const endTime = formatTime(queryForm.selectTime[1]); |
| | | const startTime = formatTime(queryForm.value.selectTime[0]); |
| | | const endTime = formatTime(queryForm.value.selectTime[1]); |
| | | const filter = [ |
| | | { |
| | | name: "", |
| | | value: queryForm.selectName, |
| | | displayType: "Contains", |
| | | name: queryForm.value.selectType, |
| | | value: queryForm.value.selectInput, |
| | | displayType: "like", |
| | | }, |
| | | { name: "createDate", value: startTime, displayType: "ThanOrEqual" }, |
| | | { name: "createDate", value: endTime, displayType: "LessOrEqual" }, |
| | |
| | | pageQuery.value.page = 1; |
| | | initData(); |
| | | }; |
| | | //éç½®é¡µé¢ |
| | | const resetQuery = () => { |
| | | queryForm.value = { selectName: "", selectTime: [] }; |
| | | queryForm.value = Object.assign({}, obj); |
| | | pageQuery.value.page = 1; |
| | | initData(); |
| | | }; |
| | | const formRef = ref(); |
| | | |
| | | //é置表å |
| | | const handleClose = (formEl) => { |
| | | const resetForm = (formEl) => { |
| | | if (!formEl) return; |
| | | formEl.resetFields(); |
| | | form.value = { |
| | | templateName: "", |
| | | templateGroup: "", |
| | | takeName: "", |
| | | jiShuYuan: "", |
| | | gongZhang: "", |
| | | zhiJianYuan_Dq: "", |
| | | zhiJianYuan_Lc: "", |
| | | zhiJianYuan_Dg: "", |
| | | liJu_Dq: "", |
| | | fuZhu_Dq: "", |
| | | liJu_Lc: "", |
| | | fuZhu_Lc: "", |
| | | liJu_Dg: "", |
| | | fuZhu_Dg: "", |
| | | }; |
| | | }; |
| | | onMounted(() => { |
| | | initData(); |
| | |
| | | width: 6.88rem; |
| | | height: 2rem; |
| | | text-align: center; |
| | | border: 0.06rem solid rgba(222, 222, 222, 1); |
| | | border-radius: 0.25rem 0 0 0.25rem; |
| | | font-size: 0.75rem; |
| | | display: flex; |
| | |
| | | <template> |
| | | <div class="Startjob"> |
| | | <div class="rect"> |
| | | <div class="rect-top"> |
| | | <div class="rect-top" style="position: relative"> |
| | | <img src="@/assets/TheCurrentJob/left.png" alt="" /> |
| | | <img |
| | | style="margin-left: -1.5rem; margin-right: 4rem" |
| | | src="@/assets/TheCurrentJob/left1.png" |
| | | alt="" |
| | | /> |
| | | <span>å¼å§ä½ä¸ï¼æºæ¢°ï¼</span> |
| | | <span>å¼å§ä½ä¸ï¼{{ title }}ï¼</span> |
| | | <img |
| | | style="margin-right: -1.5rem; margin-left: 4rem" |
| | | src="@/assets/TheCurrentJob/right1.png" |
| | |
| | | <img src="@/assets/TheCurrentJob/right.png" alt="" /> |
| | | </div> |
| | | <div class="rect-center"> |
| | | <div style="display: flex; justify-content: space-between"> |
| | | <div class="rect-item1"> |
| | | <div> |
| | | <img src="@/assets/TheCurrentJob/icon/icon.png" alt="" /> |
| | | <span style="color: rgba(26, 201, 255, 1); font-size: 0.88rem" |
| | | >ä»»å¡ä½ä¸ä¿¡æ¯</span |
| | | <div class="rect-item1"> |
| | | <div style="margin-top: 0.5rem"> |
| | | <img src="@/assets/TheCurrentJob/icon/icon.png" alt="" /> |
| | | <span style="color: rgba(26, 201, 255, 1); font-size: 1.5rem" |
| | | >ä»»å¡ä½ä¸ä¿¡æ¯</span |
| | | > |
| | | </div> |
| | | <div style="height: 100%; width: 100%"> |
| | | <div style="width: 100%; padding-left: 1rem"> |
| | | <div |
| | | style=" |
| | | color: #1ac2f7; |
| | | font-size: 1rem; |
| | | display: flex; |
| | | margin-top: 0.5rem; |
| | | " |
| | | > |
| | | </div> |
| | | <div style="height: 100%; width: 100%"> |
| | | <div style="width: 100%"> |
| | | <span style="width: 6rem; text-align: right; display: block" |
| | | >ä»»å¡åç§°ï¼</span |
| | | ><span>{{ info.takename }}</span> |
| | | </div> |
| | | <div |
| | | style=" |
| | | color: #1ac2f7; |
| | | font-size: 1rem; |
| | | display: flex; |
| | | margin-top: 0.4rem; |
| | | " |
| | | > |
| | | <span style="width: 6rem; text-align: right; display: block" |
| | | >ææ¯åï¼</span |
| | | ><span>{{ info.jishuyuan }}</span> |
| | | </div> |
| | | <div |
| | | style=" |
| | | color: #1ac2f7; |
| | | font-size: 1rem; |
| | | display: flex; |
| | | margin-top: 0.4rem; |
| | | " |
| | | > |
| | | <span style="width: 6rem; text-align: right; display: block" |
| | | >æ£ä¿®å·¥åï¼</span |
| | | ><span>{{ info.gonzhang }}</span> |
| | | </div> |
| | | <div |
| | | style=" |
| | | color: #1ac2f7; |
| | | font-size: 1rem; |
| | | display: flex; |
| | | margin-top: 0.4rem; |
| | | " |
| | | > |
| | | <span style="width: 6rem; text-align: right; display: block" |
| | | >è´¨æ£åï¼</span |
| | | ><span>{{ info.zhijianyuan }}</span> |
| | | </div> |
| | | <div |
| | | style=" |
| | | color: #1ac2f7; |
| | | font-size: 1rem; |
| | | display: flex; |
| | | margin-top: 0.4rem; |
| | | " |
| | | > |
| | | <span style="width: 6rem; text-align: right; display: block" |
| | | >åç©ä½ä¸åï¼</span |
| | | ><span>{{ info.lijuzouyeyuan }}</span> |
| | | </div> |
| | | <div |
| | | style=" |
| | | color: #1ac2f7; |
| | | font-size: 1rem; |
| | | display: flex; |
| | | margin-top: 0.4rem; |
| | | " |
| | | > |
| | | <span style="width: 6rem; text-align: right; display: block" |
| | | >è¾
å©åï¼</span |
| | | ><span>{{ info.fuzyuan }}</span> |
| | | </div> |
| | | <div |
| | | style=" |
| | | position: absolute; |
| | | color: #1ac2f7; |
| | | font-size: 1rem; |
| | | display: flex; |
| | | margin-top: 0.4rem; |
| | | " |
| | | > |
| | | <span style="width: 6rem; text-align: right; display: block" |
| | | >ä»»å¡è¯¦æ
ï¼</span |
| | | > |
| | | <span |
| | | @click="showDetail(!contentShow1)" |
| | | style="color: #1ac2f7; font-size: 0.88rem; cursor: pointer" |
| | | >æ¥ç</span |
| | | > |
| | | <div |
| | | v-if="contentShow1" |
| | | style=" |
| | | color: #1ac2f7; |
| | | font-size: 0.81rem; |
| | | display: flex; |
| | | margin-top: 0.4rem; |
| | | position: relative; |
| | | top: 1.5rem; |
| | | left: -3rem; |
| | | width: 49rem; |
| | | " |
| | | > |
| | | <span style="width: 6rem; text-align: right; display: block" |
| | | >ä»»å¡åç§°ï¼</span |
| | | ><span>è½¬åæ¶</span> |
| | | </div> |
| | | <div |
| | | style=" |
| | | color: #1ac2f7; |
| | | font-size: 0.81rem; |
| | | display: flex; |
| | | margin-top: 0.4rem; |
| | | " |
| | | > |
| | | <span style="width: 6rem; text-align: right; display: block" |
| | | >ææ¯åï¼</span |
| | | ><span>å¼ ä¸</span> |
| | | </div> |
| | | <div |
| | | style=" |
| | | color: #1ac2f7; |
| | | font-size: 0.81rem; |
| | | display: flex; |
| | | margin-top: 0.4rem; |
| | | " |
| | | > |
| | | <span style="width: 6rem; text-align: right; display: block" |
| | | >æ£ä¿®å·¥åï¼</span |
| | | ><span>æå</span> |
| | | </div> |
| | | <div |
| | | style=" |
| | | color: #1ac2f7; |
| | | font-size: 0.81rem; |
| | | display: flex; |
| | | margin-top: 0.4rem; |
| | | " |
| | | > |
| | | <span style="width: 6rem; text-align: right; display: block" |
| | | >è´¨æ£åï¼</span |
| | | ><span>ä¸ä¸</span> |
| | | </div> |
| | | <div |
| | | style=" |
| | | color: #1ac2f7; |
| | | font-size: 0.81rem; |
| | | display: flex; |
| | | margin-top: 0.4rem; |
| | | " |
| | | > |
| | | <span style="width: 6rem; text-align: right; display: block" |
| | | >åç©ä½ä¸åï¼</span |
| | | ><span>çäº</span> |
| | | </div> |
| | | <div |
| | | style=" |
| | | color: #1ac2f7; |
| | | font-size: 0.81rem; |
| | | display: flex; |
| | | margin-top: 0.4rem; |
| | | " |
| | | > |
| | | <span style="width: 6rem; text-align: right; display: block" |
| | | >è¾
å©åï¼</span |
| | | ><span>å°å</span> |
| | | </div> |
| | | <div |
| | | style=" |
| | | color: #1ac2f7; |
| | | font-size: 0.81rem; |
| | | display: flex; |
| | | margin-top: 0.4rem; |
| | | " |
| | | > |
| | | <span style="width: 6rem; text-align: right; display: block" |
| | | >ä»»å¡è¯¦æ
ï¼</span |
| | | > |
| | | <span |
| | | style="color: #1ac2f7; font-size: 0.88rem; cursor: pointer" |
| | | >æ¥ç</span |
| | | > |
| | | <!-- <el-popover placement="bottom" :width="600" trigger="click"> |
| | | <template #reference> |
| | | <span |
| | | style=" |
| | | color: #1ac2f7; |
| | | font-size: 0.88rem; |
| | | cursor: pointer; |
| | | " |
| | | >æ¥ç</span |
| | | ></template |
| | | > |
| | | <el-table |
| | | :data="gridData" |
| | | :data="taskData" |
| | | width="100%" |
| | | :header-cell-style="{ |
| | | color: '#fff', |
| | |
| | | background: '#1373A8', |
| | | }" |
| | | > |
| | | <el-table-column property="date" label="车å" /> |
| | | <el-table-column property="name" label="车ç»" /> |
| | | <el-table-column property="address" label="è¡é" /> |
| | | <el-table-column property="address" label="车å¢å·ä½ç½®" /> |
| | | <el-table-column property="address" label="è½¬åæ¶ä½ç½®" /> |
| | | <el-table-column property="address" label="æ£ä¿®çç»" /> |
| | | <el-table-column property="trainKind" label="车å" /> |
| | | <el-table-column property="trainNum" label="车ç»" /> |
| | | <el-table-column property="track" label="è¡é" /> |
| | | <el-table-column property="coachNum" label="车å¢å·ä½ç½®" /> |
| | | <el-table-column property="bogie" label="è½¬åæ¶ä½ç½®" /> |
| | | <el-table-column property="processDept" label="æ£ä¿®çç»" /> |
| | | </el-table> |
| | | </el-popover> --> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="rect-item2"> |
| | | <div> |
| | | <span style="color: rgba(26, 200, 254, 1); font-size: 0.75rem" |
| | | >å·¥èºé¡¹ç¹/æ¥éª¤å
±<span style="font-size: 1rem; font-weight: bold" |
| | | >23</span |
| | | > |
| | | </span> |
| | | <span |
| | | style=" |
| | | margin-left: 1rem; |
| | | color: rgba(26, 200, 254, 1); |
| | | font-size: 0.75rem; |
| | | " |
| | | >å½åä½ä¸é¡¹ç¹/æ¥éª¤<span |
| | | style="font-size: 1rem; font-weight: bold" |
| | | >3</span |
| | | > |
| | | </span> |
| | | </div> |
| | | </div> |
| | | <div class="rect-item2"> |
| | | <div> |
| | | <span style="color: rgba(26, 200, 254, 1); font-size: 1.2rem" |
| | | >å·¥èºé¡¹ç¹/æ¥éª¤å
±<span |
| | | style="font-size: 1.5rem; font-weight: bold" |
| | | >{{ sunNUm }}</span |
| | | > |
| | | </span> |
| | | <span |
| | | style=" |
| | | margin-left: 1rem; |
| | | color: rgba(26, 200, 254, 1); |
| | | font-size: 1.2rem; |
| | | " |
| | | >å½åä½ä¸é¡¹ç¹/æ¥éª¤<span |
| | | style="font-size: 1.5rem; font-weight: bold" |
| | | >{{ obj.setpNum }}</span |
| | | > |
| | | </span> |
| | | </div> |
| | | <div style="position: absolute; width: 47rem; height: 2.5rem"> |
| | | <el-table |
| | | style="margin-top: 0.88rem" |
| | | :data="gridData" |
| | |
| | | }" |
| | | > |
| | | <el-table-column |
| | | property="date" |
| | | property="craftsStep" |
| | | label="å·¥èºé¡¹ç¹/æ¥éª¤" |
| | | min-width="30%" |
| | | > |
| | | <template #default="scope"> |
| | | <span |
| | | style="color: #1ac2f7; font-size: 0.88rem" |
| | | ></span></template |
| | | ></el-table-column> |
| | | @click="showDetail1(!contentShow)" |
| | | style=" |
| | | color: #1ac2f7; |
| | | font-size: 0.88rem; |
| | | cursor: pointer; |
| | | text-decoration: underline; |
| | | " |
| | | >{{ scope.row.craftsStep }} |
| | | </span></template |
| | | ></el-table-column |
| | | > |
| | | <el-table-column |
| | | property="name" |
| | | property="craftContent" |
| | | label="å·¥èºå
容" |
| | | min-width="70%" |
| | | /> |
| | | > |
| | | <template #default="scope"> |
| | | <span |
| | | @click="true" |
| | | style=" |
| | | color: #ffffff; |
| | | font-size: 0.88rem; |
| | | display: -webkit-box; /* 设置为WebKitå
æ ¸çå¼¹æ§ç忍¡å */ |
| | | -webkit-box-orient: vertical; /* åç´æå */ |
| | | -webkit-line-clamp: 2; /* éå¶æ¾ç¤ºä¸¤è¡ */ |
| | | overflow: hidden; /* éèè¶
åºèå´çå
容 */ |
| | | text-overflow: ellipsis; /* 使ç¨çç¥å· */ |
| | | " |
| | | >{{ scope.row.craftContent }}</span |
| | | ></template |
| | | ></el-table-column |
| | | > |
| | | </el-table> |
| | | <div class="consten" v-if="contentShow"> |
| | | <el-table |
| | | :data="gridData" |
| | | width="100%" |
| | | :header-cell-style="{ |
| | | height: '1.61rem', |
| | | color: '#fff', |
| | | background: '#0A5B91', |
| | | fontSize: '0.88rem', |
| | | }" |
| | | :cell-style="{ |
| | | color: '#fff', |
| | | background: '#147BAF', |
| | | }" |
| | | > |
| | | <el-table-column |
| | | property="craftsStep" |
| | | label="å·¥èºå
容" |
| | | min-width="30%" |
| | | > |
| | | <template #default="scope"> |
| | | <span @click="true" style="color: #fff; font-size: 0.88rem" |
| | | >{{ scope.row.craftContent }} |
| | | </span></template |
| | | ></el-table-column |
| | | > |
| | | <el-table-column |
| | | property="craftsStep" |
| | | label="å·¥å
·" |
| | | min-width="10%" |
| | | > |
| | | <template #default="scope"> |
| | | <span style="color: #ffffff">{{ |
| | | scope.row.tools |
| | | }}</span></template |
| | | ></el-table-column |
| | | > |
| | | <el-table-column |
| | | property="craftsStep" |
| | | label="ç©æ" |
| | | min-width="10%" |
| | | > |
| | | <template #default="scope"> |
| | | <span style="color: #ffffff">{{ |
| | | scope.row.material |
| | | }}</span></template |
| | | ></el-table-column |
| | | > |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="rect-item3"> |
| | | <div> |
| | | <div style="overflow: hidden"> |
| | | <img src="@/assets/TheCurrentJob/icon/icon.png" alt="" /> |
| | | <span style="color: rgba(26, 201, 255, 1); font-size: 0.88rem" |
| | | >åç©å¼æ¾ç¤º</span |
| | | > |
| | | |
| | | <el-scrollbar> |
| | | <div |
| | | style=" |
| | | display: flex; |
| | | justify-content: center; |
| | | flex-direction: column; |
| | | padding-left: 1.5rem; |
| | | padding-top: 0.5rem; |
| | | padding-bottom: 1.5rem; |
| | | box-sizing: border-box; |
| | | " |
| | | > |
| | | <span |
| | | style="color: #ffffff; font-size: 1rem; margin: 0.5rem 0" |
| | | v-for="(item, index) in Torque" |
| | | :key="item.id" |
| | | >{{ |
| | | index + 1 + "ã" + item.torqueSize + " " + "N*m" |
| | | }}</span |
| | | > |
| | | </div> |
| | | </el-scrollbar> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="rect-content"> |
| | | <div |
| | | style=" |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | width: 21.31rem; |
| | | height: 26.88rem; |
| | | background-color: rgba(25, 189, 241, 0.1); |
| | | color: rgba(16, 16, 16, 1); |
| | | font-size: 0.75rem; |
| | | border: 0.06rem solid rgba(26, 200, 254, 1); |
| | | " |
| | | > |
| | | <span style="color: rgba(26, 194, 247, 1); font-size: 1.25rem" |
| | | >çç¸å¾æ¾ç¤º</span |
| | | > |
| | | </div> |
| | | <div |
| | | ref="screenDom" |
| | | style=" |
| | | margin: 0 auto; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | z-index: 999; |
| | | position: absolute; |
| | | top: 42%; |
| | | left: 15%; |
| | | " |
| | | > |
| | | <model-gltf |
| | | :width="400" |
| | | :height="400" |
| | | :backgroundAlpha="0" |
| | | :backgroundColor="'#000000'" |
| | | src="ThreeModel/test.gltf" |
| | | :controlsOptions="{ |
| | | enableZoom, |
| | | }" |
| | | /> |
| | | </div> |
| | | |
| | | <div |
| | | style=" |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | margin-top: 4.25rem; |
| | | margin-top: 30rem; |
| | | " |
| | | > |
| | | <el-button |
| | | :disabled="obj.setpNum == 1" |
| | | @click="Previous(false)" |
| | | type="primary" |
| | | style=" |
| | | width: 5rem; |
| | | height: 1.88rem; |
| | | background-color: rgba(164, 173, 179, 1); |
| | | color: rgba(255, 255, 255, 1); |
| | | font-size: 0.88rem; |
| | | " |
| | | :style="{ |
| | | width: '5rem', |
| | | height: '1.88rem', |
| | | background: |
| | | obj.setpNum == 1 |
| | | ? 'rgba(164, 173, 179, 1)' |
| | | : 'rgba(26, 194, 247, 1)', |
| | | color: 'rgba(255, 255, 255, 1)', |
| | | fontSize: '0.88rem;', |
| | | }" |
| | | >ä¸ä¸æ¥</el-button |
| | | > |
| | | <el-button |
| | | :disabled="obj.setpNum == sunNUm" |
| | | @click="Next(false)" |
| | | type="primary" |
| | | style=" |
| | | width: 5rem; |
| | | height: 1.88rem; |
| | | background-color: rgba(26, 194, 247, 1); |
| | | color: rgba(255, 255, 255, 1); |
| | | font-size: 0.88rem; |
| | | " |
| | | :style="{ |
| | | width: '5rem', |
| | | height: '1.88rem', |
| | | background: |
| | | obj.setpNum != sunNUm |
| | | ? 'rgba(26, 194, 247, 1)' |
| | | : 'rgba(164, 173, 179, 1)', |
| | | color: ' rgba(255, 255, 255, 1)', |
| | | fontSize: '0.88rem', |
| | | }" |
| | | >ä¸ä¸æ¥</el-button |
| | | > |
| | | <el-button |
| | | :disabled="obj.setpNum != sunNUm" |
| | | @click="Completee" |
| | | type="primary" |
| | | style=" |
| | | height: 1.88rem; |
| | | width: 5rem; |
| | | background-color: rgba(164, 173, 179, 1); |
| | | color: rgba(255, 255, 255, 1); |
| | | font-size: 0.88rem; |
| | | " |
| | | :style="{ |
| | | height: '1.88rem', |
| | | width: '5rem', |
| | | background: |
| | | obj.setpNum == sunNUm |
| | | ? 'rgba(26, 194, 247, 1)' |
| | | : 'rgba(164, 173, 179, 1)', |
| | | color: 'rgba(255, 255, 255, 1)', |
| | | fontSize: '0.88rem', |
| | | }" |
| | | >宿ä½ä¸</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- 强å¶è·³è½¬ç¡®è®¤æ¡ --> |
| | | <el-dialog v-model="centerDialogVisible" title="确认" width="300" center> |
| | | <span> å½å任塿ªå®æï¼æ¯å¦å¼ºå¶è·³è½¬å°ä¸ä¸æ¥ï¼ </span> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | | <el-button style="width: 5rem" @click="centerDialogVisible = false" |
| | | >åæ¶</el-button |
| | | > |
| | | <el-button style="width: 5rem" type="primary" @click="Next(true)"> |
| | | 确认 |
| | | </el-button> |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | <script setup> |
| | | import { ref, onMounted } from "vue"; |
| | | import { |
| | | GetScreenData, |
| | | GetPre, |
| | | GetNext, |
| | | Complete, |
| | | GetTorque, |
| | | ChangeStatus, |
| | | } from "@/api/newapi/Thecurrentjob"; |
| | | import { GetPageData } from "@/api/newapi/NjTask"; |
| | | import { useRouter } from "vue-router"; |
| | | import { ElMessage, ElMessageBox } from "element-plus"; |
| | | import { ModelCollada, ModelGltf } from "vue-3d-model"; |
| | | |
| | | const router = useRouter(); |
| | | const gridData = ref([]); |
| | | const contentShow = ref(false); |
| | | const contentShow1 = ref(false); |
| | | const info = ref({}); |
| | | info.value = history.state?.info ? JSON.parse(history.state?.info) : {}; |
| | | const title = ref(""); |
| | | title.value = history.state?.title ? history.state?.title : "æºæ¢°"; |
| | | const enableZoom = ref(false); |
| | | const obj = ref({}); |
| | | const sunNUm = ref(0); |
| | | const Torque = ref(""); |
| | | const showDetail1 = (va1) => { |
| | | contentShow1.value = false; |
| | | contentShow.value = va1; |
| | | }; |
| | | const showDetail = (va1) => { |
| | | contentShow1.value = va1; |
| | | contentShow.value = false; |
| | | checko(); |
| | | }; |
| | | const taskData = ref([]); |
| | | const centerDialogVisible = ref(false); |
| | | const from = ref({ |
| | | group: "", |
| | | takeid: "", |
| | | setnum: 0, |
| | | }); |
| | | const flag = ref(false); |
| | | //ä¸ä¸æ¥ |
| | | const Previous = (val) => { |
| | | from.value.group = info.value.grouptype; |
| | | from.value.takeid = info.value.njtakeid; |
| | | from.value.setnum = obj.value.setpNum; |
| | | flag.value = val; |
| | | console.log(from.value, info.value); |
| | | GetPre(from.value, flag.value).then((res) => { |
| | | gridData.value = [res.data.nex]; |
| | | obj.value = res.data.nex; |
| | | queryData.value.setnum = obj.value.setpNum; |
| | | GetTorque(queryData.value).then((res) => { |
| | | Torque.value = res.data; |
| | | }); |
| | | }); |
| | | }; |
| | | //ä¸ä¸æ¥ |
| | | const Next = (val) => { |
| | | console.log(obj.value); |
| | | from.value.group = info.value.grouptype; |
| | | from.value.takeid = info.value.njtakeid; |
| | | from.value.setnum = obj.value.setpNum; |
| | | flag.value = val; |
| | | |
| | | GetNext(from.value, flag.value).then((res) => { |
| | | if (res.message == "没æå®æå½åæ¥éª¤") { |
| | | gridData.value = res.data.nowdate; |
| | | obj.value = res.data.nowdate[0]; |
| | | if (res.data.nowdate[0].setpNum == obj.value.setpNum) { |
| | | centerDialogVisible.value = true; |
| | | return; |
| | | } |
| | | return; |
| | | } |
| | | centerDialogVisible.value = false; |
| | | gridData.value = [res.data.nex]; |
| | | obj.value = res.data.nex; |
| | | |
| | | queryData.value.setnum = obj.value.setpNum; |
| | | GetTorque(queryData.value).then((res) => { |
| | | Torque.value = res.data; |
| | | }); |
| | | }); |
| | | }; |
| | | //宿 |
| | | const Completee = () => { |
| | | from.value.gruops = info.value.grouptype; |
| | | from.value.id = info.value.njtakeid; |
| | | from.value.creater = info.value.creater; |
| | | console.log(from.value, info.value); |
| | | |
| | | ChangeStatus(from.value).then((res) => { |
| | | ElMessage({ |
| | | message: "æä½å®æ", |
| | | type: "success", |
| | | }); |
| | | router.push("/Thecurrentjob"); |
| | | }); |
| | | }; |
| | | //æ¥çæ°æ® |
| | | const checko = () => { |
| | | console.log(info.value); |
| | | GetPageData({ |
| | | page: 1, |
| | | rows: 10, |
| | | total: 100, |
| | | tableName: "", |
| | | sort: "", |
| | | order: "", |
| | | wheres: "", |
| | | export: true, |
| | | value: "", |
| | | filter: [ |
| | | { |
| | | name: "njtaskid", |
| | | value: info.value.njtakeid, |
| | | displayType: "String", |
| | | }, |
| | | ], |
| | | }).then((res) => { |
| | | console.log(res); |
| | | taskData.value = res.rows; |
| | | }); |
| | | }; |
| | | const queryData = ref({ |
| | | grop: info.value.grouptype, |
| | | takeid: info.value.njtakeid, |
| | | setnum: "", |
| | | }); |
| | | const initData = () => { |
| | | GetScreenData({ |
| | | group: info.value.grouptype, |
| | | takeid: info.value.njtakeid, |
| | | }).then((res) => { |
| | | if (res.message == "è¿åå·¥èºè¡¨ä¸çç¬¬ä¸æ¡") { |
| | | gridData.value = res.data.proNoe; |
| | | obj.value = res.data.proNoe[0]; |
| | | sunNUm.value = res.data.maxproce; |
| | | queryData.value.setnum = obj.value.setpNum; |
| | | GetTorque(queryData.value).then((res) => { |
| | | Torque.value = res.data; |
| | | }); |
| | | return; |
| | | } |
| | | gridData.value = res.data.maxpro; |
| | | sunNUm.value = res.data.maxproce; |
| | | obj.value = res.data.maxpro[0]; |
| | | queryData.value.setnum = obj.value.setpNum; |
| | | GetTorque(queryData.value).then((res) => { |
| | | Torque.value = res.data; |
| | | }); |
| | | }); |
| | | }; |
| | | |
| | | onMounted(() => { |
| | | initData(); |
| | | }); |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | * { |
| | | padding: 0; |
| | | margin: 0; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .Startjob { |
| | | width: 100%; |
| | | height: 100%; |
| | |
| | | padding: 0.2rem; |
| | | box-sizing: border-box; |
| | | background-color: rgba(0, 0, 0, 0.3); |
| | | overflow: hidden; |
| | | |
| | | .rect { |
| | | display: flex; |
| | | flex-direction: column; |
| | |
| | | height: 100%; |
| | | border: 0.1rem solid #02cde6; |
| | | box-shadow: 0rem 0rem 0.3rem #02cde6; |
| | | |
| | | .rect-top { |
| | | display: flex; |
| | | justify-content: center; |
| | |
| | | height: 3rem; |
| | | background: #051d3f; |
| | | text-align: center; |
| | | |
| | | img { |
| | | width: 3.75rem; |
| | | height: 2.81rem; |
| | | } |
| | | |
| | | span { |
| | | color: rgba(26, 194, 247, 1); |
| | | font-size: 1.25rem; |
| | | } |
| | | } |
| | | |
| | | .rect-center { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | width: 100%; |
| | | width: 170vh; |
| | | margin: 0 auto; |
| | | padding: 0.8rem 2.15rem; |
| | | box-sizing: border-box; |
| | | |
| | | .rect-item1 { |
| | | display: flex; |
| | | flex-direction: column; |
| | | width: 11.31rem; |
| | | height: 12.38rem; |
| | | width: 14.31rem; |
| | | height: 15.38rem; |
| | | background-image: url("../../../assets/TheCurrentJob/bg.png"); |
| | | background-repeat: no-repeat; |
| | | background-size: 100% 100%; |
| | | padding: 0.28rem 0.28rem; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .rect-item2 { |
| | | width: 49.88rem; |
| | | height: 12.38rem; |
| | | height: 15.38rem; |
| | | border: 0.1rem solid #02cde6; |
| | | padding: 0.69rem 1.44rem; |
| | | margin-left: 6rem; |
| | | |
| | | .el-table :deep(.el-table__header th) { |
| | | border: solid 1px #1ac0f6; |
| | | color: white; |
| | | } |
| | | |
| | | .consten { |
| | | position: relative; |
| | | top: 0; |
| | | z-index: 999; |
| | | } |
| | | } |
| | | |
| | | .rect-item3 { |
| | | display: flex; |
| | | flex-direction: column; |
| | | width: 11.31rem; |
| | | height: 12.38rem; |
| | | height: 15.38rem; |
| | | background-image: url("../../../assets/TheCurrentJob/bg.png"); |
| | | background-repeat: no-repeat; |
| | | background-size: 100% 100%; |
| | |
| | | box-sizing: border-box; |
| | | } |
| | | } |
| | | |
| | | .rect-content { |
| | | display: flex; |
| | | justify-content: space-between; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | // .el-table :deep(.el-table__header th) { |
| | | // border-bottom: solid 1px #1ac2f7; |
| | | // color: white; |
| | |
| | | border: solid 1px #1ac2f7; |
| | | color: white; |
| | | } |
| | | |
| | | .el-table :deep(.el-table__empty-block) { |
| | | background-color: #137aaf; |
| | | color: #1ac2f7; |
| | | } |
| | | // .el-table :deep(.el-table__body-wrapper) { |
| | | // background-color: #1ac2f7; |
| | | // } |
| | | // .el-popper :deep(.el-popper) { |
| | | // background-color: #ad2525; |
| | | // } |
| | | |
| | | .el-table :deep(.el-table__body-wrapper) { |
| | | background-color: #1ac2f7; |
| | | } |
| | | |
| | | :deep(.el-popper) { |
| | | background-color: #ad2525; |
| | | } |
| | | </style> |
| | |
| | | <div class="content"> |
| | | <div class="checkbox"> |
| | | <div |
| | | v-if="show == 'è¶
级' || show == 'æºæ¢°'" |
| | | :class="['item', isactive == 'æºæ¢°' ? 'isactive' : '']" |
| | | @click="changeactive('æºæ¢°')" |
| | | > |
| | | æºæ¢° |
| | | </div> |
| | | <div |
| | | v-if="show == 'è¶
级' || show == 'çµæ°'" |
| | | :class="['item', isactive == 'çµæ°' ? 'isactive' : '']" |
| | | @click="changeactive('çµæ°')" |
| | | > |
| | | çµæ° |
| | | </div> |
| | | <div |
| | | v-if="show == 'è¶
级' || show == 'å°æ²'" |
| | | :class="['item', isactive == 'å°æ²' ? 'isactive' : '']" |
| | | @click="changeactive('å°æ²')" |
| | | > |
| | |
| | | size="small" |
| | | /> |
| | | </div> |
| | | <!-- <div class="serch_box"> |
| | | <div class="serch_box"> |
| | | <div class="serchb"> |
| | | <el-select |
| | | v-model="queryForm.selectType" |
| | |
| | | placeholder="请è¾å
¥å
³é®è¯æç´¢" |
| | | style="border-left: 0.06rem solid #e2e2e2" |
| | | /> |
| | | </div> --> |
| | | </div> |
| | | <el-button |
| | | @click="handleQuery" |
| | | type="primary" |
| | |
| | | label="æ´¾å·¥æ¥æ" |
| | | align="center" |
| | | /> |
| | | <el-table-column |
| | | prop="finishedtime" |
| | | label="å®ææ¥æ" |
| | | align="center" |
| | | /> |
| | | <el-table-column prop="finishedtime" label="å®ææ¥æ" align="center"> |
| | | <template #default="scope"> |
| | | {{ |
| | | scope.row.finishedtime != "1900-01-01 00:00:00" |
| | | ? scope.row.finishedtime |
| | | : "" |
| | | }} |
| | | </template></el-table-column |
| | | > |
| | | <el-table-column label="æä½" align="center"> |
| | | <template #default="scope"> |
| | | <el-button |
| | |
| | | v-if="scope.row.pustatus == 1" |
| | | size="small" |
| | | type="text" |
| | | @click="router.push('/Startjob')" |
| | | @click="toDetail(scope.row, isactive)" |
| | | >å¼å§ä½ä¸</el-button |
| | | > |
| | | <el-button |
| | |
| | | label="æ´¾å·¥æ¥æ" |
| | | align="center" |
| | | /> |
| | | <el-table-column |
| | | prop="finishedtime" |
| | | label="å®ææ¥æ" |
| | | align="center" |
| | | /> |
| | | <el-table-column prop="finishedtime" label="å®ææ¥æ" align="center"> |
| | | <template #default="scope"> |
| | | {{ |
| | | scope.row.finishedtime != "1900-01-01 00:00:00" |
| | | ? scope.row.finishedtime |
| | | : "" |
| | | }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="æä½" align="center"> |
| | | <template #default="scope"> |
| | | <el-button |
| | |
| | | v-if="scope.row.pustatus == 1" |
| | | size="small" |
| | | type="text" |
| | | @click="claim(scope.row, 2)" |
| | | @click="toDetail(scope.row, isactive)" |
| | | >å¼å§ä½ä¸</el-button |
| | | > |
| | | <el-button |
| | |
| | | label="æ´¾å·¥æ¥æ" |
| | | align="center" |
| | | /> |
| | | <el-table-column |
| | | prop="finishedtime" |
| | | label="å®ææ¥æ" |
| | | align="center" |
| | | /> |
| | | <el-table-column prop="finishedtime" label="å®ææ¥æ" align="center"> |
| | | <template #default="scope"> |
| | | {{ |
| | | scope.row.finishedtime != "1900-01-01 00:00:00" |
| | | ? scope.row.finishedtime |
| | | : "" |
| | | }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="æä½" align="center"> |
| | | <template #default="scope"> |
| | | <el-button |
| | |
| | | v-if="scope.row.pustatus == 1" |
| | | size="small" |
| | | type="text" |
| | | @click="claim(scope.row, 2)" |
| | | @click="toDetail(scope.row, isactive)" |
| | | >å¼å§ä½ä¸</el-button |
| | | > |
| | | <el-button |
| | |
| | | <template #footer> |
| | | <div class="dialog-footer" style="text-align: right"> |
| | | <el-button @click="claimdialogVisible2 = false">åæ¶</el-button> |
| | | <el-button type="primary" @click="claimdialogVisible = false"> |
| | | 确认 |
| | | </el-button> |
| | | <el-button type="primary" @click="changeStatus"> 确认 </el-button> |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | |
| | | </div> |
| | | </template> |
| | | <script setup> |
| | | import { ref, reactive, onMounted } from "vue"; |
| | | import { ref, reactive, onMounted, toRef } from "vue"; |
| | | import { ElMessage, ElMessageBox } from "element-plus"; |
| | | import { useRouter } from "vue-router"; |
| | | import { GetPageData, ExportApi } from "@/api/newapi/Thecurrentjob"; |
| | | import { formatTime } from "@/utils/index.js"; |
| | | import { GetDetail, ChangeStatus } from "@/api/newapi/Thecurrentjob"; |
| | | import { |
| | | GetDetail, |
| | | ChangeStatus, |
| | | GetPageData, |
| | | ExportApi, |
| | | GetPageDataNew, |
| | | } from "@/api/newapi/Thecurrentjob"; |
| | | import { GetSleeveandStep } from "@/api/newapi/Process"; |
| | | import { GetUserInfo } from "@/api/user"; |
| | | |
| | | const router = useRouter(); |
| | | const obj = { |
| | |
| | | selectType: "", |
| | | inputcontent: "", |
| | | }; |
| | | const queryForm = ref({ |
| | | selectName: "", |
| | | selectTime: [], // æ¶é´èå´ |
| | | selectType: "", |
| | | inputcontent: "", |
| | | }); |
| | | const queryForm = toRef({ ...obj }); |
| | | const selectoptions = ref([ |
| | | { |
| | | value: "takename", |
| | |
| | | { |
| | | value: "gonzhang", |
| | | label: "æ£ä¿®å·¥é¿", |
| | | }, |
| | | { |
| | | value: "zhijianyuan", |
| | | label: "è´¨æ£å", |
| | | }, |
| | | { |
| | | value: "lijuzouyeyuan", |
| | | label: "åç©ä½ä¸å", |
| | | }, |
| | | ]); |
| | | const tableData = ref([]); |
| | |
| | | queryForm.selectType = value; |
| | | initData(); |
| | | }; |
| | | //å¼¹åºæ¡ |
| | | const dialogVisible = ref(false); |
| | | //å 餿¹æ³ |
| | | const add = () => { |
| | | dialogVisible.value = true; |
| | | }; |
| | | //ç¼è¾æ¹æ³ |
| | | const Edit = () => { |
| | | dialogVisible.value = true; |
| | | }; |
| | | |
| | | const claimdata = ref({ |
| | | id: "", |
| | | gruops: "", |
| | | creater: JSON.parse(localStorage.getItem("user")).userName, |
| | | createDate: formatTime(new Date()), |
| | | }); |
| | | const TTnum = ref(0); |
| | | //页颿° |
| | | const pageTotal = ref(0); |
| | | //确认é¢å |
| | | const claim = (val, num) => { |
| | | claimdata.value.id = val.njtakeid; |
| | |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | //æ¹åç¶æ |
| | | const changeStatus = () => { |
| | | console.log(claimdata.value); |
| | | ChangeStatus(claimdata.value).then((res) => { |
| | | ElMessage({ |
| | | message: res.msg, |
| | | message: "æå", |
| | | type: "success", |
| | | }); |
| | | claimdialogVisible.value = false; |
| | | claimdialogVisible1.value = false; |
| | | claimdialogVisible2.value = false; |
| | | initData(); |
| | | }); |
| | | }; |
| | |
| | | page: 1, //å½åé¡µé¢ |
| | | rows: 10, //æ¯é¡µæ¾ç¤ºæ¡æ° |
| | | order: "desc", //æåºæ¹å¼ |
| | | sort: "dispatchtime", //æåºå段 |
| | | sort: "", //æåºå段 |
| | | wheres: "", //æ¡ä»¶æ¥è¯¢ |
| | | }); |
| | | |
| | |
| | | pageQuery.value.page = val; |
| | | initData(); |
| | | }; |
| | | const pageTotal = ref(0); |
| | | //æ°æ®åå§å |
| | | const initData = () => { |
| | | let obj = { |
| | | userId: JSON.parse(localStorage.getItem("user")).id, |
| | | group: isactive.value, |
| | | }; |
| | | console.log(obj); |
| | | |
| | | // GetPageDataNew(obj).then((res) => { |
| | | // tableData.value = res.data; |
| | | // pageTotal.value = res.data.length; |
| | | // }); |
| | | // æ¥è¯¢æ¡ä»¶ |
| | | const startTime = formatTime(queryForm.value.selectTime[0]); |
| | | const endTime = formatTime(queryForm.value.selectTime[1]); |
| | |
| | | { |
| | | name: queryForm.value.selectType, |
| | | value: queryForm.value.inputcontent, |
| | | displayType: "String", |
| | | displayType: "like", |
| | | }, |
| | | { |
| | | name: "pustatus", |
| | |
| | | pageTotal.value = res.total; |
| | | }); |
| | | }; |
| | | |
| | | //æå°æ°æ® |
| | | const printExcel = () => { |
| | | // æ¥è¯¢æ¡ä»¶ |
| | | const startTime = formatTime(queryForm.value.selectTime[0]); |
| | |
| | | pageQuery.value.page = 1; |
| | | initData(); |
| | | }; |
| | | |
| | | //éç½®æ£ç´¢äºä»¶ |
| | | const resetQuery = () => { |
| | | queryForm.value = Object.assign({}, obj); |
| | | pageQuery.value.page = 1; |
| | | initData(); |
| | | }; |
| | | //é置表å |
| | | const resetForm = (formEl) => { |
| | | if (!formEl) return; |
| | | formEl.resetFields(); |
| | | }; |
| | | const userInfo = ref(""); |
| | | //è·¯ç±è·³è½¬ |
| | | const toDetail = (row, title) => { |
| | | router.push({ |
| | | name: "Startjob", |
| | | state: { info: JSON.stringify(row), title: title }, |
| | | }); |
| | | }; |
| | | const show = ref(""); |
| | | |
| | | const getuserinfo = () => { |
| | | GetUserInfo().then((res) => { |
| | | console.log(res); |
| | | show.value = res.data.roleName.substring(0, 2); |
| | | if (show.value != "è¶
级") { |
| | | isactive.value = show.value; |
| | | initData(); |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | //æ°æ®åå§å |
| | | onMounted(() => { |
| | | initData(); |
| | | getuserinfo(); |
| | | |
| | | userInfo.value = JSON.parse(localStorage.getItem("user")).userName; |
| | | }); |
| | | </script> |
| | |
| | | size="small" |
| | | /> |
| | | </div> |
| | | <!-- <div class="serch_box"> |
| | | <div class="serch_box"> |
| | | <div class="serchb"> |
| | | <el-select |
| | | v-model="queryForm.selectType" |
| | |
| | | </el-select> |
| | | </div> |
| | | <input |
| | | v-model="queryForm.selectName" |
| | | v-model="queryForm.selectInput" |
| | | placeholder="请è¾å
¥å
³é®è¯æç´¢" |
| | | style="border-left: 0.06rem solid #e2e2e2" |
| | | /> |
| | | </div> --> |
| | | </div> |
| | | <el-button |
| | | @click="handleQuery" |
| | | type="primary" |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | " |
| | | ><el-icon style="margin-right: 0.2rem"><Plus /></el-icon |
| | | ><el-icon style="margin-right: 0.2rem"> <Plus /> </el-icon |
| | | >æ°å»º</el-button |
| | | > |
| | | <!-- ç¨æ·è§è²æ°å»º --> |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | " |
| | | ><el-icon style="margin-right: 0.2rem"><Plus /></el-icon |
| | | ><el-icon style="margin-right: 0.2rem"> <Plus /> </el-icon |
| | | >æ°å»º</el-button |
| | | > |
| | | <el-button |
| | |
| | | <template #default="scope"> |
| | | <el-image |
| | | style="width: 70px; height: 70px" |
| | | :src="scope.row.headImageUrl" |
| | | :src="'http://115.159.85.185:9098' + scope.row.headImageUrl" |
| | | show-progress |
| | | :initial-index="4" |
| | | fit="cover" |
| | |
| | | /> |
| | | <el-table-column label="æä½" align="center" min-width="3%"> |
| | | <template #default="scope"> |
| | | <el-button size="small" type="text" @click="Edit(scope.row)" |
| | | <el-button |
| | | size="small" |
| | | type="text" |
| | | @click="Edit(scope.row)" |
| | | :disabled=" |
| | | scope.row.userName == 'admin' || scope.row.user_Id == '1' |
| | | " |
| | | >ç¼è¾</el-button |
| | | > |
| | | <el-button |
| | | size="small" |
| | | type="text" |
| | | :disabled=" |
| | | scope.row.userName == 'admin' || scope.row.user_Id == '1' |
| | | " |
| | | @click="Editpassword(scope.row)" |
| | | >ä¿®æ¹å¯ç </el-button |
| | | > |
| | |
| | | <el-table-column prop="name" label="è§è²æé" align="center"> |
| | | <template #default="scope"> |
| | | <span |
| | | @click=" |
| | | router.replace({ |
| | | path: `/permission`, |
| | | state: { info: JSON.stringify(scope.row) }, |
| | | }) |
| | | " |
| | | v-if="scope.row.roleId != '20'" |
| | | @click="toDetail(scope.row)" |
| | | style="color: #4386ff; cursor: pointer" |
| | | >管ç</span |
| | | > |
| | |
| | | <el-table-column label="æä½" align="center"> |
| | | <template #default="scope"> |
| | | <span |
| | | v-if="scope.row.roleId != '20'" |
| | | style="color: blue; font-size: 0.88rem; cursor: pointer" |
| | | @click="EditRole(scope.row)" |
| | | >ç¼è¾</span |
| | |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | | /> |
| | | <el-pagination |
| | | v-if="isactive == 2" |
| | | size="small" |
| | | background |
| | | layout="prev, pager, next" |
| | | :current-page="pageQuery.page" |
| | | :page-size="pageQuery.rows" |
| | | :total="pageTotal" |
| | | @size-change="RoleSizeChange" |
| | | @current-change="RoleCurrentChange" |
| | | /> |
| | | </div> |
| | | </div> |
| | | |
| | |
| | | :before-close="handleClose" |
| | | :show-close="false" |
| | | :align-center="true" |
| | | @close="resetForm(formUserRef)" |
| | | > |
| | | <template #title> |
| | | <div |
| | |
| | | :model="formUser" |
| | | label-width="auto" |
| | | label-position="top" |
| | | ref="formRef" |
| | | :rules="rules" |
| | | ref="formUserRef" |
| | | :hide-required-asterisk="true" |
| | | > |
| | | <el-row :gutter="20"> |
| | | <el-col :span="8"> |
| | |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="8"> |
| | | <el-form-item> |
| | | <el-form-item prop="role_Id"> |
| | | <template #label> |
| | | <div style="display: flex; align-items: flex-end"> |
| | | <span style="color: red; margin-right: 0.2rem">*</span> |
| | | <span |
| | | style="font-size: 0.88rem; color: black; font-weight: bold" |
| | | >ç¨æ·è§è²</span |
| | | > |
| | | >ç¨æ·è§è² |
| | | </span> |
| | | </div> |
| | | </template> |
| | | <el-select |
| | |
| | | size="small" |
| | | > |
| | | <el-option |
| | | :disabled="item.value == 20" |
| | | v-for="item in groupOptions" |
| | | :key="item.value" |
| | | :label="item.label" |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item> |
| | | <el-form-item prop="roleName"> |
| | | <template #label> |
| | | <div style="display: flex; align-items: flex-end"> |
| | | <span style="color: red; margin-right: 0.2rem">*</span> |
| | | <span |
| | | style="font-size: 0.88rem; color: black; font-weight: bold" |
| | | >ç¨æ·ç±»å |
| | | </span> |
| | | </div> |
| | | </template> |
| | | <el-select |
| | | v-model="formUser.roleName" |
| | | placeholder="è¯·éæ©" |
| | | size="small" |
| | | > |
| | | <el-option |
| | | v-for="item in roleNameList" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item prop="enable"> |
| | | <template #label> |
| | | <div style="display: flex; align-items: flex-end"> |
| | | <span style="color: red; margin-right: 0.2rem">*</span> |
| | |
| | | <span |
| | | style="font-size: 0.88rem; color: black; font-weight: bold" |
| | | >人è¸å¾ç</span |
| | | ><span |
| | | > |
| | | <!-- <span |
| | | style=" |
| | | color: rgba(255, 0, 0, 1); |
| | | font-size: 0.75rem; |
| | | margin-left: 0.5rem; |
| | | " |
| | | >æ³¨ï¼æå¤å¯ä¸ä¼ ä¸å¼ ï¼å¾çéè¦æ£è§ç人åè¯ä»¶ç
§</span |
| | | > |
| | | > --> |
| | | </div> |
| | | </template> |
| | | <el-upload |
| | | ref="uploadRef" |
| | | name="files" |
| | | class="avatar-uploader" |
| | | action="#" |
| | | action="http://115.159.85.185:9098/api/User/SaveFiles" |
| | | list-type="picture-card" |
| | | :auto-upload="false" |
| | | limit="1" |
| | | :auto-upload="true" |
| | | @before-upload="beforeAvatarUpload" |
| | | :on-change="handleAvatarSuccess" |
| | | :on-success="handleAvatarSuccess" |
| | | :file-list="fileList != [] ? fileList : []" |
| | | > |
| | | <el-icon><Plus /></el-icon> |
| | | <el-icon> |
| | | <Plus /> |
| | | </el-icon> |
| | | <template #file="{ file }"> |
| | | <div> |
| | | <img |
| | |
| | | class="el-upload-list__item-delete" |
| | | @click="handleDownload(file)" |
| | | > |
| | | <el-icon size="15"><Download /></el-icon> |
| | | <el-icon size="15"> |
| | | <Download /> |
| | | </el-icon> |
| | | </span> |
| | | <span |
| | | v-if="!disabled" |
| | | class="el-upload-list__item-delete" |
| | | @click="handleRemove(file)" |
| | | > |
| | | <el-icon size="15"><Delete /></el-icon> |
| | | <el-icon size="15"> |
| | | <Delete /> |
| | | </el-icon> |
| | | </span> |
| | | </span> |
| | | </div> |
| | |
| | | <el-button |
| | | size="small" |
| | | type="primary" |
| | | @click="saveObj" |
| | | @click="saveObj(formUserRef)" |
| | | style="height: 2rem; font-size: 0.88rem" |
| | | > |
| | | ä¿å |
| | |
| | | </div> |
| | | </template> |
| | | <el-form |
| | | :model="formpassword" |
| | | :model="formUser" |
| | | label-width="auto" |
| | | label-position="top" |
| | | ref="formpasswordRef" |
| | |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <el-form-item prop="password"> |
| | | <el-form-item prop="newPwd"> |
| | | <el-input |
| | | style="margin-top: 1rem" |
| | | size="large" |
| | | v-model="formpassword.password" |
| | | v-model="formUser.newPwd" |
| | | placeholder="请è¾å
¥" |
| | | /> |
| | | </el-form-item> |
| | |
| | | :before-close="handleClose" |
| | | :show-close="false" |
| | | :align-center="true" |
| | | @close="resetForm1(formRoleRef)" |
| | | > |
| | | <template #title> |
| | | <div |
| | |
| | | </div> |
| | | </template> |
| | | <script setup> |
| | | import { ref, reactive, onMounted } from "vue"; |
| | | import { ref, reactive, onMounted, toRef } from "vue"; |
| | | import { ElMessage, ElMessageBox } from "element-plus"; |
| | | import { |
| | | GetUserList, |
| | |
| | | DelApi, |
| | | ExportApi, |
| | | ExportApi1, |
| | | UpdatePassword, |
| | | UpdatePwd, |
| | | AddUserApi, |
| | | EditUserApi, |
| | | } from "@/api/user"; |
| | | import { useRouter } from "vue-router"; |
| | | import { formatTime } from "@/utils/index.js"; |
| | |
| | | UpdateRoleApi, |
| | | DeleteRoleApi, |
| | | } from "@/api/role"; |
| | | const queryForm = reactive({ |
| | | let obj = { |
| | | selectName: "", |
| | | selectTime: [], // æ¶é´èå´ |
| | | selectType: "", |
| | | selectInput: "", |
| | | }); |
| | | }; |
| | | const queryForm = toRef({ ...obj }); |
| | | const router = useRouter(); |
| | | |
| | | const tableData = ref([]); |
| | | const grideData = ref([{ id: 1 }]); |
| | | const formRef = ref(); |
| | | const grideData = ref([]); |
| | | //æ°å»ºç¨æ·ref |
| | | const formUserRef = ref(); |
| | | const options = ref([]); |
| | | const props = { multiple: true }; |
| | | const isoptins = ref([ |
| | |
| | | ]); |
| | | //åç» |
| | | const groupOptions = ref([ |
| | | { value: 1, label: "è¶
级管çå" }, |
| | | { value: 2, label: "è´¨æ£ç»" }, |
| | | { value: 3, label: "çµæ°ç»" }, |
| | | { value: 4, label: "æºæ¢°ç»" }, |
| | | { value: 5, label: "å°æ²ç»" }, |
| | | { value: 20, label: "è¶
级管çå" }, |
| | | { value: 21, label: "è´¨æ£ç»" }, |
| | | { value: 22, label: "çµæ°ç»" }, |
| | | { value: 23, label: "æºæ¢°ç»" }, |
| | | { value: 24, label: "å°æ²ç»" }, |
| | | ]); |
| | | const table = ref(false); |
| | | const formUser = ref({ |
| | | user_Id: undefined, |
| | | userName: "", |
| | | role_Id: 2, |
| | | role_Id: 21, |
| | | roleName: "", |
| | | phoneNo: "", |
| | | remark: "", |
| | |
| | | dept_Id: 0, |
| | | enable: 1, |
| | | headImageUrl: "", |
| | | createDate: formatTime(new Date()), //å建æ¶é´ |
| | | creater: JSON.parse(localStorage.getItem("user")).userName, //å建人 |
| | | newPwd: "", |
| | | }); |
| | | const userform = reactive({ |
| | | userName: "", |
| | | description: "", |
| | | const rules = reactive({ |
| | | userName: { |
| | | required: true, |
| | | message: "请è¾å
¥ç¨æ·å", |
| | | trigger: "blur", |
| | | }, |
| | | role_Id: { |
| | | required: true, |
| | | message: "è¯·éæ©è§è²", |
| | | trigger: "change", |
| | | }, |
| | | newPwd: [ |
| | | { |
| | | required: true, |
| | | message: "请è¾å
¥å¯ç ", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | realName: { |
| | | required: true, |
| | | message: "请è¾å
¥å§å", |
| | | trigger: "blur", |
| | | }, |
| | | phoneNo: { |
| | | required: true, |
| | | message: "请è¾å
¥ææºå·", |
| | | trigger: "blur", |
| | | }, |
| | | userTrueName: { |
| | | required: true, |
| | | message: "请è¾å
¥çå®å§å", |
| | | trigger: "blur", |
| | | }, |
| | | }); |
| | | |
| | | const formpasswordRef = ref(); |
| | | const isactive = ref(1); |
| | | const claimdialogVisible = ref(false); |
| | | const dialogVisible = ref(false); |
| | | const imgdialogVisible = ref(false); |
| | | const dialogImageUrl = ref(""); |
| | |
| | | const dialogVisible1 = ref(false); |
| | | //ç¨æ·è§è²æ°å»º |
| | | const dialogVisible2 = ref(false); |
| | | const TorquedialogVisible = ref(false); |
| | | //å页请æ±åæ° |
| | | const pageQuery = ref({ |
| | | page: 1, //å½åé¡µé¢ |
| | | rows: 10, //æ¯é¡µæ¾ç¤ºæ¡æ° |
| | | order: "desc", //æåºæ¹å¼ |
| | | sort: "createDate", //æåºå段 |
| | | wheres: "", //æ¡ä»¶æ¥è¯¢ |
| | | }); |
| | | |
| | | const changeactive = (index) => { |
| | | isactive.value = index; |
| | | if (isactive.value == 1) { |
| | | selectoptions.value = userOptions; |
| | | initData(); |
| | | } else { |
| | | selectoptions.value = roleOptions; |
| | | getRole(); |
| | | } |
| | | }; |
| | | |
| | | //ç鿡件 |
| | | const userOptions = [ |
| | | { |
| | | value: "userName", |
| | |
| | | label: "èç³»æ¹å¼", |
| | | }, |
| | | ]; |
| | | |
| | | const fileList = ref([]); |
| | | const roleNameList = ref([ |
| | | { value: "çµæ°è´¨æ£", label: "çµæ°è´¨æ£" }, |
| | | { value: "æºæ¢°è´¨æ£", label: "æºæ¢°è´¨æ£" }, |
| | | { value: "å°æ²è´¨æ£", label: "å°æ²è´¨æ£" }, |
| | | { value: "çµæ°åç©", label: "çµæ°åç©" }, |
| | | { value: "çµæ°è¾
å©", label: "çµæ°è¾
å©" }, |
| | | { value: "æºæ¢°åç©", label: "æºæ¢°åç©" }, |
| | | { value: "æºæ¢°è¾
å©", label: "æºæ¢°è¾
å©" }, |
| | | { value: "å°æ²åç©", label: "å°æ²åç©" }, |
| | | { value: "å°æ²è¾
å©", label: "å°æ²è¾
å©" }, |
| | | ]); |
| | | const roleOptions = [ |
| | | { |
| | | value: "roleName", |
| | |
| | | ]; |
| | | const selectoptions = ref([]); |
| | | selectoptions.value = userOptions; |
| | | //ç¨æ·ä¿®æ¹å¯ç |
| | | const formpassword = ref({ |
| | | password: "", |
| | | oldPwd: "", |
| | | newPwd: "", |
| | | }); |
| | | const passwordrules = reactive({ |
| | | password: { |
| | | required: true, |
| | | message: "请è¾å
¥å¯ç ", |
| | | trigger: "blur", |
| | | }, |
| | | newPwd: [ |
| | | { |
| | | required: true, |
| | | message: "请è¾å
¥å¯ç ", |
| | | trigger: "blur", |
| | | }, |
| | | { |
| | | min: 6, |
| | | max: 12, |
| | | message: "å¯ç é¿åº¦å¨ 6 å° 12 个å符", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }); |
| | | |
| | | const uploadRef = ref(); |
| | | // //ç¨æ·ä¿®æ¹å¯ç |
| | | // const handleUpdatePassword = (row) => { |
| | | // dialogVisible1.value = true; |
| | | // formUser.value = Object.assign({}, row); |
| | | // }; |
| | | // const UpdatePassword = () => { |
| | | // formpasswordRef.value.validate((valid) => { |
| | | // if (valid) { |
| | | // UpdatePassword({ |
| | | // user_Id: formUser.value.user_Id, |
| | | // oldPwd: formpassword.value.oldPwd, |
| | | // newPwd: formpassword.value.newPwd, |
| | | // }).then((res) => { |
| | | // if (res.code == 200) { |
| | | // ElMessage({ |
| | | // message: "ä¿®æ¹æå", |
| | | // type: "success", |
| | | // }); |
| | | // dialogVisible1.value = false; |
| | | // initData(); |
| | | // } else { |
| | | // ElMessage({ |
| | | // message: res.msg, |
| | | // type: "error", |
| | | // }); |
| | | // } |
| | | // }); |
| | | // } |
| | | // }); |
| | | // }; |
| | | |
| | | const pageTotal = ref(0); |
| | | //ç»å½è®°å½ |
| | | const initData = () => { |
| | | // æ¥è¯¢æ¡ä»¶ |
| | | const startTime = formatTime(queryForm.selectTime[0]); |
| | | const endTime = formatTime(queryForm.selectTime[1]); |
| | | const startTime = formatTime(queryForm.value.selectTime[0]); |
| | | const endTime = formatTime(queryForm.value.selectTime[1]); |
| | | const filter = [ |
| | | { |
| | | name: "", |
| | | value: queryForm.selectType, |
| | | displayType: "int", |
| | | name: queryForm.value.selectType, |
| | | value: queryForm.value.selectInput, |
| | | displayType: "like", |
| | | }, |
| | | { name: "createDate", value: startTime, displayType: "ThanOrEqual" }, |
| | | { name: "createDate", value: endTime, displayType: "LessOrEqual" }, |
| | |
| | | pageTotal.value = res.total; |
| | | }); |
| | | }; |
| | | //å页请æ±åæ° |
| | | const pageQuery = ref({ |
| | | page: 1, //å½åé¡µé¢ |
| | | rows: 10, //æ¯é¡µæ¾ç¤ºæ¡æ° |
| | | order: "desc", //æåºæ¹å¼ |
| | | sort: "", //æåºå段 |
| | | wheres: "", //æ¡ä»¶æ¥è¯¢ |
| | | }); |
| | | |
| | | //æ°æ®æ£ç´¢äºä»¶ |
| | | const handleQuery = () => { |
| | | pageQuery.value.page = 1; |
| | | initData(); |
| | | if (isactive.value == 1) { |
| | | initData(); |
| | | } else { |
| | | getRole(); |
| | | } |
| | | }; |
| | | |
| | | //éç½®æ¥è¯¢æ¡ä»¶ |
| | | const resetQuery = () => { |
| | | queryForm.selectName = ""; |
| | | queryForm.selectInput = ""; |
| | | queryForm.selectTime = []; |
| | | queryForm.selectType = ""; |
| | | queryForm.value = Object.assign({}, obj); |
| | | pageQuery.value.page = 1; |
| | | initData(); |
| | | if (isactive.value == 1) { |
| | | initData(); |
| | | } else { |
| | | getRole(); |
| | | } |
| | | }; |
| | | //å页页é¢å¤§å°æ¹å |
| | | const handleSizeChange = (val) => { |
| | | pageQuery.value.rows = val; |
| | | initData(); |
| | | if (isactive.value == 1) { |
| | | initData(); |
| | | } else { |
| | | getRole(); |
| | | } |
| | | }; |
| | | |
| | | //å页页颿¹å |
| | | const handleCurrentChange = (val) => { |
| | | pageQuery.value.page = val; |
| | | initData(); |
| | | if (isactive.value == 1) { |
| | | initData(); |
| | | } else { |
| | | getRole(); |
| | | } |
| | | }; |
| | | //å页页é¢å¤§å°æ¹å |
| | | const RoleSizeChange = (val) => { |
| | | pageQuery.value.rows = val; |
| | | getRole(); |
| | | const handleAvatarSuccess = (val) => { |
| | | formUser.value.headImageUrl = "/image/" + val.data; |
| | | }; |
| | | //é置表å |
| | | const resetForm = (formEl) => { |
| | | if (!formEl) return; |
| | | formEl.resetFields(); |
| | | formUser.value = { |
| | | user_Id: undefined, |
| | | userName: "", |
| | | role_Id: 21, |
| | | roleName: "", |
| | | phoneNo: "", |
| | | remark: "", |
| | | userPwd: "123456", |
| | | userTrueName: "", |
| | | dept_Id: 0, |
| | | enable: 1, |
| | | headImageUrl: "", |
| | | newPwd: "", |
| | | }; |
| | | }; |
| | | const resetForm1 = (formEl) => { |
| | | if (!formEl) return; |
| | | formEl.resetFields(); |
| | | formRole.value = { |
| | | roleName: "", |
| | | description: "", |
| | | }; |
| | | }; |
| | | |
| | | //å页页颿¹å |
| | | const RoleCurrentChange = (val) => { |
| | | pageQuery.value.page = val; |
| | | getRole(); |
| | | }; |
| | | const handlePictureCardPreview = (uploadFile) => { |
| | | dialogImageUrl.value = uploadFile.url; |
| | | imgdialogVisible.value = true; |
| | | }; |
| | | const handleAvatarSuccess = (val) => { |
| | | console.log(val); |
| | | const handleRemove = (val) => { |
| | | fileList.value = []; |
| | | //ç§»é¤å·²ä¸ä¼ çå¾ç |
| | | formUser.value.headImageUrl = ""; |
| | | }; |
| | | const beforeAvatarUpload = (val) => { |
| | | console.log(val); |
| | | }; |
| | | // const submitUpload = () => { |
| | | // let promise = new Promise((resolve, reject) => { |
| | | // setTimeout(async () => { |
| | | // await uploadRef.value.submit(); |
| | | // resolve("ä¸ä¼ æå"); |
| | | // }); |
| | | // }); |
| | | // return promise; |
| | | // }; |
| | | |
| | | //æ°å»ºç¨æ·è´¦å· |
| | | const saveObj = () => { |
| | | formRef.value.validate((valid) => { |
| | | const saveObj = async (formEl) => { |
| | | // submitUpload(); |
| | | if (!formEl) return; |
| | | await formEl.validate((valid, fields) => { |
| | | if (valid) { |
| | | if (formUser.value.user_Id != undefined) { |
| | | UpdateUser(formUser.value).then((res) => { |
| | |
| | | initData(); |
| | | }); |
| | | } |
| | | } else { |
| | | console.log("error submit!", fields); |
| | | } |
| | | }); |
| | | }; |
| | |
| | | }; |
| | | //ç¼è¾ç¨æ·è´¦å· |
| | | const Edit = (val) => { |
| | | console.log(val); |
| | | let obj = Object.assign({}, val); |
| | | formUser.value = { |
| | | ...obj, |
| | | }; |
| | | if (obj.headImageUrl != "") { |
| | | fileList.value = [ |
| | | { |
| | | name: "1", |
| | | url: "http://192.168.0.80:5000" + obj.headImageUrl, |
| | | }, |
| | | ]; |
| | | } |
| | | |
| | | dialogVisible.value = true; |
| | | formUser.value = obj; |
| | | }; |
| | | const newobj = ref({}); |
| | | //ä¿®æ¹å¯ç |
| | | const Editpassword = (val) => { |
| | | let obj = Object.assign({}, val); |
| | | formUser.value = obj; |
| | | formpassword.value = val; |
| | | newobj.value = val; |
| | | newobj.value = Object.assign({}, val); |
| | | console.log(newobj.value); |
| | | |
| | | dialogVisible1.value = true; |
| | | }; |
| | | //ä¿åä¿®æ¹å¯ç |
| | | const savePassword = async (formEl) => { |
| | | let obj = Object.assign({}, newobj); |
| | | obj.password = formpassword.value.password; |
| | | // obj.password = formpassword.value.password; |
| | | console.log(formUser.value); |
| | | |
| | | let formdata = { |
| | | id: formUser.value.user_Id, |
| | | oldPwd: formUser.value.userPwd, |
| | | newPwd: formUser.value.newPwd, |
| | | }; |
| | | if (!formEl) return; |
| | | await formEl.validate((valid, fields) => { |
| | | if (valid) { |
| | | UpdateUser(obj).then((res) => { |
| | | UpdatePwd(formdata).then((res) => { |
| | | ElMessage({ message: "ä¿®æ¹å¯ç æå", type: "success" }); |
| | | dialogVisible1.value = false; |
| | | initData(); |
| | |
| | | const formRole = ref({ |
| | | roleName: "", |
| | | description: "", |
| | | createDate: formatTime(new Date()), //å建æ¶é´ |
| | | creater: JSON.parse(localStorage.getItem("user")).userName, //å建人 |
| | | }); |
| | | |
| | | //æ°å»ºè§è² |
| | | const AddRole = () => { |
| | | Roletype.value = "æ°å»º"; |
| | |
| | | formRole.value = obj; |
| | | dialogVisible2.value = true; |
| | | }; |
| | | //è·åè§è² |
| | | const getRole = () => { |
| | | GetPageDataApi({ |
| | | page: 1, |
| | | rows: 10, |
| | | total: 100, |
| | | tableName: "", |
| | | sort: "", |
| | | order: "", |
| | | wheres: "", |
| | | export: true, |
| | | value: "", |
| | | filter: [ |
| | | { |
| | | name: "string", |
| | | value: "string", |
| | | displayType: "string", |
| | | }, |
| | | ], |
| | | }).then((res) => { |
| | | const startTime = formatTime(queryForm.value.selectTime[0]); |
| | | const endTime = formatTime(queryForm.value.selectTime[1]); |
| | | const filter = [ |
| | | { |
| | | name: queryForm.value.selectType, |
| | | value: queryForm.value.selectInput, |
| | | displayType: "like", |
| | | }, |
| | | { name: "createDate", value: startTime, displayType: "ThanOrEqual" }, |
| | | { name: "createDate", value: endTime, displayType: "LessOrEqual" }, |
| | | ]; |
| | | GetPageDataApi({ ...pageQuery.value, filter }).then((res) => { |
| | | grideData.value = res.rows; |
| | | pageTotal.value = res.total; |
| | | }); |
| | | }; |
| | | //æå°æ°æ® |
| | | const printExcel = () => { |
| | | // æ¥è¯¢æ¡ä»¶ |
| | | const startTime = formatTime(queryForm.selectTime[0]); |
| | |
| | | }); |
| | | } |
| | | }; |
| | | //åæ¢é¡µé¢ |
| | | const changeactive = (index) => { |
| | | isactive.value = index; |
| | | if (isactive.value == 1) { |
| | | selectoptions.value = userOptions; |
| | | initData(); |
| | | } else { |
| | | selectoptions.value = roleOptions; |
| | | getRole(); |
| | | } |
| | | }; |
| | | |
| | | //æ¹éå é¤ |
| | | const ids = ref([]); |
| | |
| | | }); |
| | | } |
| | | }; |
| | | //管ç |
| | | //è·¯ç±è·³è½¬ |
| | | const toDetail = (row) => { |
| | | router.push({ name: "permission", state: { info: JSON.stringify(row) } }); |
| | | }; |
| | | |
| | | onMounted(() => { |
| | | initData(); |
| | |
| | | .Usermanagement { |
| | | display: flex; |
| | | background-color: #fff; |
| | | |
| | | .content { |
| | | width: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .checkbox { |
| | | width: 11rem; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | margin-top: 1rem; |
| | | margin-left: 1.31rem; |
| | | |
| | | .item { |
| | | width: 5rem; |
| | | height: 1.88rem; |
| | |
| | | line-height: 1.88rem; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .isactive { |
| | | background-color: rgba(16, 16, 16, 1); |
| | | color: rgba(255, 255, 255, 1); |
| | | } |
| | | } |
| | | |
| | | .serch { |
| | | display: flex; |
| | | margin-top: 1.31rem; |
| | | align-items: center; |
| | | |
| | | .time_box { |
| | | display: flex; |
| | | align-items: center; |
| | | text-align: center; |
| | | margin-left: 0.98rem; |
| | | |
| | | .time { |
| | | box-sizing: border-box; |
| | | width: 6.88rem; |
| | |
| | | justify-content: center; |
| | | } |
| | | } |
| | | |
| | | .serch_box { |
| | | display: flex; |
| | | align-items: center; |
| | | text-align: center; |
| | | margin-left: 0.98rem; |
| | | border-radius: 0.38rem; |
| | | |
| | | .serchb { |
| | | box-sizing: border-box; |
| | | width: 6.88rem; |
| | |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | input { |
| | | box-sizing: border-box; |
| | | outline: none; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .btns { |
| | | display: flex; |
| | | justify-content: space-between; |
| | |
| | | box-sizing: border-box; |
| | | } |
| | | } |
| | | |
| | | .my-header { |
| | | height: 3.84rem; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | border-bottom: 0.06rem solid rgba(233, 233, 233, 1); |
| | | } |
| | | |
| | | .avatar-uploader .avatar { |
| | | width: 7rem; |
| | | height: 7rem; |
| | | display: block; |
| | | } |
| | | |
| | | :deep(.avatar-uploader .el-upload) { |
| | | width: 7rem; |
| | | height: 7rem; |
| | |
| | | overflow: hidden; |
| | | transition: var(--el-transition-duration-fast); |
| | | } |
| | | |
| | | :deep(.el-upload-list__item) { |
| | | width: 7rem; |
| | | height: 7rem; |
| | | } |
| | | |
| | | .avatar-uploader .el-upload:hover { |
| | | border-color: var(--el-color-primary); |
| | | } |
| | |
| | | .confirmButtonClass { |
| | | margin-right: 10px; |
| | | } |
| | | |
| | | .el-message-box .el-message-box__btns { |
| | | flex-direction: row-reverse !important; |
| | | justify-content: normal !important; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import { fileURLToPath, URL } from 'node:url' |
| | | import { resolve } from 'path'; |
| | | |
| | | import { defineConfig } from 'vite' |
| | | import vue from '@vitejs/plugin-vue' |
| | | import vueJsx from '@vitejs/plugin-vue-jsx' |
| | | import vueDevTools from 'vite-plugin-vue-devtools' |
| | | |
| | | // https://vite.dev/config/ |
| | | export default defineConfig({ |
| | | plugins: [ |
| | | vue(), |
| | | vueJsx(), |
| | | vueDevTools(), |
| | | ], |
| | | resolve: { |
| | | alias: [ |
| | | { |
| | | find: '@', |
| | | replacement: resolve(__dirname, './src') |
| | | } |
| | | ] |
| | | }, |
| | | server: { |
| | | proxy: { |
| | | '/api': { |
| | | target: 'http://115.159.85.185:9098/', // ç®æ æ¥å£çåå |
| | | changeOrigin: true, // æ¯å¦è·¨å |
| | | rewrite: (path) => path.replace(/^\/api/, '') // è·¯å¾éå |
| | | } |
| | | }, |
| | | host: '0.0.0.0', |
| | | }, |
| | | css: { |
| | | //æ¥çCSSå±äºåªä¸ªcssæä»¶ |
| | | sourceMap: true, |
| | | }, |
| | | configureWebpack: { |
| | | module: { |
| | | rules: [ |
| | | { |
| | | test: /\.mjs$/, |
| | | include: /node_modules/, |
| | | type: "javascript/auto", |
| | | }, |
| | | |
| | | ], |
| | | }, |
| | | }, |
| | | }) |