Merge branch 'develop' of http://192.168.18.88:8077/sznyb/daimp-front into develop
This commit is contained in:
		
						commit
						da81025bc6
					
				| @ -18,6 +18,7 @@ | |||||||
|   }, |   }, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@element-plus/icons-vue": "^2.3.1", |     "@element-plus/icons-vue": "^2.3.1", | ||||||
|  |     "@smallwei/avue": "^3.6.2", | ||||||
|     "@vueuse/core": "^12.4.0", |     "@vueuse/core": "^12.4.0", | ||||||
|     "axios": "^1.6.5", |     "axios": "^1.6.5", | ||||||
|     "dayjs": "^1.11.11", |     "dayjs": "^1.11.11", | ||||||
|  | |||||||
| @ -4,7 +4,6 @@ | |||||||
|     draggable |     draggable | ||||||
|     title="文件导入" |     title="文件导入" | ||||||
|     width="50%" |     width="50%" | ||||||
|     top="10px" |  | ||||||
|     :close-on-click-modal="false" |     :close-on-click-modal="false" | ||||||
|     :close-on-press-escape="false" |     :close-on-press-escape="false" | ||||||
|     @close="onClose" |     @close="onClose" | ||||||
|  | |||||||
| @ -5,11 +5,13 @@ import router from './router'; | |||||||
| import pinia from './store'; | import pinia from './store'; | ||||||
| import ElementPlus from 'element-plus'; | import ElementPlus from 'element-plus'; | ||||||
| import 'element-plus/dist/index.css'; | import 'element-plus/dist/index.css'; | ||||||
|  | import Avue from '@smallwei/avue'; | ||||||
|  | import '@smallwei/avue/lib/index.css'; | ||||||
| import { registerGlobalMicroApps } from './micro'; | import { registerGlobalMicroApps } from './micro'; | ||||||
| import { registerElIcons } from './plugins/icon'; | import { registerElIcons } from './plugins/icon'; | ||||||
| import './utils/permission'; | import './utils/permission'; | ||||||
| 
 | 
 | ||||||
| const app = createApp(App); | const app = createApp(App); | ||||||
| app.use(pinia).use(router).use(ElementPlus).mount('#root'); | app.use(pinia).use(router).use(ElementPlus).use(Avue).mount('#root'); | ||||||
| registerElIcons(app); | registerElIcons(app); | ||||||
| registerGlobalMicroApps(); | registerGlobalMicroApps(); | ||||||
|  | |||||||
| @ -27,12 +27,6 @@ export const constantRoutes = [ | |||||||
|       }, |       }, | ||||||
|     ], |     ], | ||||||
|   }, |   }, | ||||||
|   // {
 |  | ||||||
|   //   path: '/sub-government-affairs-service/:pathMatch(.*)',
 |  | ||||||
|   //   name: 'sub-government-affairs-service',
 |  | ||||||
|   //   component: Layout,
 |  | ||||||
|   //   redirect: '/sub-government-affairs-service/home',
 |  | ||||||
|   // },
 |  | ||||||
| ]; | ]; | ||||||
| 
 | 
 | ||||||
| const router = createRouter({ | const router = createRouter({ | ||||||
|  | |||||||
| @ -1,12 +1,64 @@ | |||||||
| import { defineStore } from 'pinia'; | import { defineStore } from 'pinia'; | ||||||
|  | import { CONSTANTS } from '@/config'; | ||||||
| 
 | 
 | ||||||
| export const useSettingStore = defineStore({ | export const useSettingStore = defineStore({ | ||||||
|   id: 'settingStore', |   id: 'settingStore', | ||||||
|   state: () => ({ |   state: () => ({ | ||||||
|  |     // menu 是否收缩
 | ||||||
|  |     isCollapse: true, | ||||||
|  |     //
 | ||||||
|  |     withoutAnimation: false, | ||||||
|  |     device: 'desktop', | ||||||
|  |     // 刷新当前页
 | ||||||
|     isReload: true, |     isReload: true, | ||||||
|  |     // 主题设置
 | ||||||
|  |     themeConfig: { | ||||||
|  |       // 显示设置
 | ||||||
|  |       showSetting: false, | ||||||
|  |       // 菜单展示模式 默认 vertical   horizontal / vertical /columns
 | ||||||
|  |       mode: 'vertical', | ||||||
|  |       // tagsView 是否展示 默认展示
 | ||||||
|  |       showTag: true, | ||||||
|  |       // 页脚
 | ||||||
|  |       footer: true, | ||||||
|  |       // 深色模式 切换暗黑模式
 | ||||||
|  |       isDark: false, | ||||||
|  |       // 显示侧边栏Logo
 | ||||||
|  |       showLogo: true, | ||||||
|  |       // 主题颜色
 | ||||||
|  |       primary: CONSTANTS.PRIMARY, | ||||||
|  |       // element组件大小
 | ||||||
|  |       globalComSize: 'default', | ||||||
|  |       // 是否只保持一个子菜单的展开
 | ||||||
|  |       uniqueOpened: true, | ||||||
|  |       // 固定header
 | ||||||
|  |       fixedHeader: true, | ||||||
|  |       // 灰色模式
 | ||||||
|  |       gray: false, | ||||||
|  |       // 色弱模式
 | ||||||
|  |       weak: false, | ||||||
|  |     }, | ||||||
|   }), |   }), | ||||||
|   getters: {}, |   getters: {}, | ||||||
|   actions: { |   actions: { | ||||||
|  |     // 设置主题
 | ||||||
|  |     setThemeConfig({ key, val }) { | ||||||
|  |       this.themeConfig[key] = val; | ||||||
|  |     }, | ||||||
|  |     // 切换 Collapse
 | ||||||
|  |     setCollapse(value) { | ||||||
|  |       this.isCollapse = value; | ||||||
|  |       this.withoutAnimation = false; | ||||||
|  |     }, | ||||||
|  |     // 关闭侧边栏
 | ||||||
|  |     closeSideBar({ withoutAnimation }) { | ||||||
|  |       this.isCollapse = false; | ||||||
|  |       this.withoutAnimation = withoutAnimation; | ||||||
|  |     }, | ||||||
|  |     toggleDevice(device) { | ||||||
|  |       this.device = device; | ||||||
|  |     }, | ||||||
|  |     // 刷新
 | ||||||
|     setReload() { |     setReload() { | ||||||
|       this.isReload = false; |       this.isReload = false; | ||||||
|       setTimeout(() => { |       setTimeout(() => { | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ import { GenKey } from '@/config'; | |||||||
| import { isEmpty, encode, decode } from '@/utils'; | import { isEmpty, encode, decode } from '@/utils'; | ||||||
| 
 | 
 | ||||||
| export const useUserStore = defineStore({ | export const useUserStore = defineStore({ | ||||||
|   id: GenKey('user_store'), |   id: GenKey('userStore'), | ||||||
|   state: () => ({ |   state: () => ({ | ||||||
|     token: null, |     token: null, | ||||||
|     userInfo: {}, |     userInfo: {}, | ||||||
| @ -52,14 +52,14 @@ export const useUserStore = defineStore({ | |||||||
|       this.currentOrg = null; |       this.currentOrg = null; | ||||||
|       this.orgList = []; |       this.orgList = []; | ||||||
|       this.menus = []; |       this.menus = []; | ||||||
|       localStorage.removeItem(GenKey('user_store')); |       localStorage.removeItem(GenKey('userStore')); | ||||||
|     }, |     }, | ||||||
|     clear() { |     clear() { | ||||||
|       localStorage.removeItem(GenKey('user_store')); |       localStorage.removeItem(GenKey('userStore')); | ||||||
|     }, |     }, | ||||||
|   }, |   }, | ||||||
|   persist: { |   persist: { | ||||||
|     key: GenKey('user_store'), |     key: GenKey('userStore'), | ||||||
|     storage: window.localStorage, |     storage: window.localStorage, | ||||||
|   }, |   }, | ||||||
| }); | }); | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| @import 'common/base.scss'; | @import 'common/base.scss'; | ||||||
| @import 'common/define.scss'; | @import 'common/define.scss'; | ||||||
| // @import "@/assets/fonts/iconfont.css"; | @import "@/assets/fonts/iconfont.css"; | ||||||
| 
 | 
 | ||||||
| #root, | #root, | ||||||
| #app { | #app { | ||||||
|  | |||||||
| @ -41,7 +41,7 @@ const gotoPage = (row) => { | |||||||
|   //   curentApp, |   //   curentApp, | ||||||
|   // }); |   // }); | ||||||
|   // console.log('===', actions.getGlobalState('user')); |   // console.log('===', actions.getGlobalState('user')); | ||||||
|   if (row.name !== 'sub-government-affairs-service') return; |   // if (row.name !== 'sub-government-affairs-service') return; | ||||||
|   window.history.pushState({}, row.name, row.activeRule); |   window.history.pushState({}, row.name, row.activeRule); | ||||||
| }; | }; | ||||||
| </script> | </script> | ||||||
|  | |||||||
| @ -14,46 +14,37 @@ import { resolve } from 'path'; | |||||||
| 
 | 
 | ||||||
| export default defineConfig(({ command, mode }) => { | export default defineConfig(({ command, mode }) => { | ||||||
|   console.log('vite.config.js', command, mode, loadEnv(mode, process.cwd())); |   console.log('vite.config.js', command, mode, loadEnv(mode, process.cwd())); | ||||||
|   const { |   const { VITE_PORT, VITE_APP_NAME, VITE_APP_BASE_API, VITE_APP_BASE_URL, VITE_APP_UPLOAD_API, VITE_APP_UPLOAD_URL } = loadEnv(mode, process.cwd()); | ||||||
|     VITE_PORT, |  | ||||||
|     VITE_APP_NAME, |  | ||||||
|     VITE_APP_BASE_API, |  | ||||||
|     VITE_APP_BASE_URL, |  | ||||||
|     VITE_APP_UPLOAD_API, |  | ||||||
|     VITE_APP_UPLOAD_URL, |  | ||||||
|     VITE_APP_SYSTEM_API, |  | ||||||
|     VITE_APP_SYSTEM_URL, |  | ||||||
|   } = loadEnv(mode, process.cwd()); |  | ||||||
|   const config = { |   const config = { | ||||||
|     base: './', |     base: './', | ||||||
|     build: { |     build: { | ||||||
|       target: 'ESNext', |       target: 'ESNext', | ||||||
|       outDir: 'dist', |       outDir: 'dist', | ||||||
|       minify: 'terser', |       minify: 'terser', | ||||||
|       // terserOptions: {
 |       terserOptions: { | ||||||
|       //   compress: {
 |         compress: { | ||||||
|       //     drop_console: true,
 |           drop_console: true, | ||||||
|       //     drop_debugger: true,
 |           drop_debugger: true, | ||||||
|       //     pure_funcs: ['console.log'],
 |           pure_funcs: ['console.log'], | ||||||
|       //   },
 |         }, | ||||||
|       //   output: {
 |         output: { | ||||||
|       //     comments: true,
 |           comments: true, | ||||||
|       //   },
 |         }, | ||||||
|       // },
 |       }, | ||||||
|       // reportCompressedSize: false,
 |       reportCompressedSize: false, | ||||||
|       // chunkSizeWarningLimit: 2000,
 |       chunkSizeWarningLimit: 2000, | ||||||
|       // rollupOptions: {
 |       rollupOptions: { | ||||||
|       //   output: {
 |         output: { | ||||||
|       //     manualChunks(id) {
 |           manualChunks(id) { | ||||||
|       //       if (id.includes('node_modules')) {
 |             if (id.includes('node_modules')) { | ||||||
|       //         return id.toString().split('node_modules/')[1].split('/')[1].toString();
 |               return id.toString().split('node_modules/')[1].split('/')[1].toString(); | ||||||
|       //       }
 |             } | ||||||
|       //     },
 |           }, | ||||||
|       //     chunkFileNames: 'assets/js/[name]-[hash].js',
 |           chunkFileNames: 'assets/js/[name]-[hash].js', | ||||||
|       //     entryFileNames: 'assets/js/[name]-[hash].js',
 |           entryFileNames: 'assets/js/[name]-[hash].js', | ||||||
|       //     assetFileNames: 'assets/[ext]/[name]-[hash].[ext]',
 |           assetFileNames: 'assets/[ext]/[name]-[hash].[ext]', | ||||||
|       //   },
 |         }, | ||||||
|       // },
 |       }, | ||||||
|     }, |     }, | ||||||
|     server: { |     server: { | ||||||
|       host: '0.0.0.0', |       host: '0.0.0.0', | ||||||
| @ -74,11 +65,6 @@ export default defineConfig(({ command, mode }) => { | |||||||
|           changeOrigin: true, |           changeOrigin: true, | ||||||
|           rewrite: (path) => path.replace(/^\/uploadApis/, ''), |           rewrite: (path) => path.replace(/^\/uploadApis/, ''), | ||||||
|         }, |         }, | ||||||
|         [VITE_APP_SYSTEM_API]: { |  | ||||||
|           target: VITE_APP_SYSTEM_URL, |  | ||||||
|           changeOrigin: true, |  | ||||||
|           rewrite: (path) => path.replace(/^\/systemApis/, ''), |  | ||||||
|         }, |  | ||||||
|       }, |       }, | ||||||
|     }, |     }, | ||||||
|     resolve: { |     resolve: { | ||||||
| @ -133,13 +119,5 @@ export default defineConfig(({ command, mode }) => { | |||||||
|       }), |       }), | ||||||
|     ], |     ], | ||||||
|   }; |   }; | ||||||
|   if (mode === 'production') { |  | ||||||
|     config.build.terserOptions = { |  | ||||||
|       compress: { |  | ||||||
|         drop_console: true, |  | ||||||
|         drop_debugger: true, |  | ||||||
|       }, |  | ||||||
|     }; |  | ||||||
|   } |  | ||||||
|   return config; |   return config; | ||||||
| }); | }); | ||||||
|  | |||||||
| @ -195,7 +195,7 @@ | |||||||
|   resolved "https://registry.npmmirror.com/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz#519c1549b0e147759e7825701ecffd25e5819f7b" |   resolved "https://registry.npmmirror.com/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz#519c1549b0e147759e7825701ecffd25e5819f7b" | ||||||
|   integrity sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg== |   integrity sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg== | ||||||
| 
 | 
 | ||||||
| "@element-plus/icons-vue@^2.3.1": | "@element-plus/icons-vue@^2.0.6", "@element-plus/icons-vue@^2.3.1": | ||||||
|   version "2.3.1" |   version "2.3.1" | ||||||
|   resolved "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz#1f635ad5fdd5c85ed936481525570e82b5a8307a" |   resolved "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz#1f635ad5fdd5c85ed936481525570e82b5a8307a" | ||||||
|   integrity sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg== |   integrity sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg== | ||||||
| @ -678,6 +678,16 @@ | |||||||
|   resolved "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.2.tgz#dc89d92418ae2efa1d70e071c686cffbcf788147" |   resolved "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.2.tgz#dc89d92418ae2efa1d70e071c686cffbcf788147" | ||||||
|   integrity sha512-p6fTArexECPf6KnOHvJXRpAEq0ON1CBtzG/EY4zw08kCHk/kivBc5vUEtnCFNCHOpJZ2ne77fxwRLIKD4wuW2Q== |   integrity sha512-p6fTArexECPf6KnOHvJXRpAEq0ON1CBtzG/EY4zw08kCHk/kivBc5vUEtnCFNCHOpJZ2ne77fxwRLIKD4wuW2Q== | ||||||
| 
 | 
 | ||||||
|  | "@smallwei/avue@^3.6.2": | ||||||
|  |   version "3.6.2" | ||||||
|  |   resolved "https://registry.npmmirror.com/@smallwei/avue/-/avue-3.6.2.tgz#a9397aa1ae0863fe7e142f0893d570e5a5225d9d" | ||||||
|  |   integrity sha512-Ifkt0o7KLsAMptfoNMG7qYS86OL2pEet761wWZyZGu8e48wuNNPOfqx5jnibGjx2oIoKtYUFh7tFdllOCth2EQ== | ||||||
|  |   dependencies: | ||||||
|  |     "@element-plus/icons-vue" "^2.0.6" | ||||||
|  |     countup.js "^1.9.3" | ||||||
|  |     dayjs "^1.10.4" | ||||||
|  |     lodash "^4.17.21" | ||||||
|  | 
 | ||||||
| "@transloadit/prettier-bytes@0.0.7": | "@transloadit/prettier-bytes@0.0.7": | ||||||
|   version "0.0.7" |   version "0.0.7" | ||||||
|   resolved "https://registry.npmmirror.com/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz#cdb5399f445fdd606ed833872fa0cabdbc51686b" |   resolved "https://registry.npmmirror.com/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz#cdb5399f445fdd606ed833872fa0cabdbc51686b" | ||||||
| @ -1800,6 +1810,11 @@ cosmiconfig@^9.0.0: | |||||||
|     js-yaml "^4.1.0" |     js-yaml "^4.1.0" | ||||||
|     parse-json "^5.2.0" |     parse-json "^5.2.0" | ||||||
| 
 | 
 | ||||||
|  | countup.js@^1.9.3: | ||||||
|  |   version "1.9.3" | ||||||
|  |   resolved "https://registry.npmmirror.com/countup.js/-/countup.js-1.9.3.tgz#ce3e50cd7160441e478f07da31895edcc0f1c9dd" | ||||||
|  |   integrity sha512-UHf2P/mFKaESqdPq+UdBJm/1y8lYdlcDd0nTZHNC8cxWoJwZr1Eldm1PpWui446vDl5Pd8PtRYkr3q6K4+Qa5A== | ||||||
|  | 
 | ||||||
| cross-spawn@^7.0.2, cross-spawn@^7.0.3: | cross-spawn@^7.0.2, cross-spawn@^7.0.3: | ||||||
|   version "7.0.6" |   version "7.0.6" | ||||||
|   resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" |   resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" | ||||||
| @ -1916,7 +1931,7 @@ data-view-byte-offset@^1.0.1: | |||||||
|     es-errors "^1.3.0" |     es-errors "^1.3.0" | ||||||
|     is-data-view "^1.0.1" |     is-data-view "^1.0.1" | ||||||
| 
 | 
 | ||||||
| dayjs@^1.11.11, dayjs@^1.11.13: | dayjs@^1.10.4, dayjs@^1.11.11, dayjs@^1.11.13: | ||||||
|   version "1.11.13" |   version "1.11.13" | ||||||
|   resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c" |   resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c" | ||||||
|   integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== |   integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== | ||||||
|  | |||||||
							
								
								
									
										1753
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										1753
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -2,6 +2,7 @@ | |||||||
| VITE_PORT = 9528 | VITE_PORT = 9528 | ||||||
| VITE_MODE = 'DEV' | VITE_MODE = 'DEV' | ||||||
| VITE_APP_MIAN = 'daimp-front-main' | VITE_APP_MIAN = 'daimp-front-main' | ||||||
|  | VITE_APP_MIAN_URL = 'http://localhost:9000' | ||||||
| VITE_APP_NAME = 'sub-government-affairs-service' | VITE_APP_NAME = 'sub-government-affairs-service' | ||||||
| VITE_APP_BASE_API = '/apis'  | VITE_APP_BASE_API = '/apis'  | ||||||
| VITE_APP_BASE_URL = 'http://192.168.18.99:8080' | VITE_APP_BASE_URL = 'http://192.168.18.99:8080' | ||||||
|  | |||||||
| @ -1,6 +1,7 @@ | |||||||
| # 生产环境 | # 生产环境 | ||||||
| VITE_MODE = 'PRO' | VITE_MODE = 'PRO' | ||||||
| VITE_APP_MIAN = 'daimp-front-main' | VITE_APP_MIAN = 'daimp-front-main' | ||||||
|  | VITE_APP_MIAN_URL = 'http://192.168.18.99:88' | ||||||
| VITE_APP_NAME = 'sub-government-affairs-service' | VITE_APP_NAME = 'sub-government-affairs-service' | ||||||
| # 接口 | # 接口 | ||||||
| VITE_APP_BASE_API = '/apis'  | VITE_APP_BASE_API = '/apis'  | ||||||
|  | |||||||
| @ -7,7 +7,7 @@ | |||||||
|     <title>政务服务</title> |     <title>政务服务</title> | ||||||
|   </head> |   </head> | ||||||
|   <body> |   <body> | ||||||
|     <div id="app"></div> |     <div id="sub-app"></div> | ||||||
|     <script type="module" src="/src/main.js"></script> |     <script type="module" src="/src/main.js"></script> | ||||||
|   </body> |   </body> | ||||||
| </html> | </html> | ||||||
|  | |||||||
| @ -6,8 +6,7 @@ | |||||||
|   "scripts": { |   "scripts": { | ||||||
|     "dev": "vite --mode development", |     "dev": "vite --mode development", | ||||||
|     "build": "vite build --mode production", |     "build": "vite build --mode production", | ||||||
|     "build:dev": "vite build --mode dev", |     "test": "vite build --mode test", | ||||||
|     "build:qa": "vite build --mode qa", |  | ||||||
|     "preview": "vite preview", |     "preview": "vite preview", | ||||||
|     "format": "prettier --write 'src/**/*.{vue,ts,tsx,js,jsx,css,less,scss,json,md}'", |     "format": "prettier --write 'src/**/*.{vue,ts,tsx,js,jsx,css,less,scss,json,md}'", | ||||||
|     "eslint": "npx eslint --init", |     "eslint": "npx eslint --init", | ||||||
|  | |||||||
| @ -7,7 +7,7 @@ export function getLandsList(params = {}) { | |||||||
|   }); |   }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export function saveLands(params = {}) { | export function saveLand(params = {}) { | ||||||
|   return request('land-resource/landManage/save', { |   return request('land-resource/landManage/save', { | ||||||
|     method: 'POST', |     method: 'POST', | ||||||
|     params, |     params, | ||||||
|  | |||||||
| @ -1,43 +0,0 @@ | |||||||
| import request from '@/utils/axios'; |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * @Title: 登录 |  | ||||||
|  */ |  | ||||||
| export function Login(params, token) { |  | ||||||
|   return request('/store/login', { |  | ||||||
|     method: 'POST', |  | ||||||
|     data: null, |  | ||||||
|     params: params, |  | ||||||
|     headers: { |  | ||||||
|       'fairies-auth-token': token, |  | ||||||
|     }, |  | ||||||
|   }); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * @Title: 登出 |  | ||||||
|  */ |  | ||||||
| export function LogOut() { |  | ||||||
|   return request('/store/logout', { |  | ||||||
|     method: 'POST', |  | ||||||
|   }); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * @Title: 验证码 |  | ||||||
|  */ |  | ||||||
| export function GetCaptcha() { |  | ||||||
|   return request('/store/login-captcha', { |  | ||||||
|     method: 'GET', |  | ||||||
|     responseType: 'arraybuffer', |  | ||||||
|   }); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * @Title: 获取菜单 |  | ||||||
|  */ |  | ||||||
| export function GetMenus() { |  | ||||||
|   return request('/store/self/menu', { |  | ||||||
|     method: 'GET', |  | ||||||
|   }); |  | ||||||
| } |  | ||||||
							
								
								
									
										61
									
								
								sub-government-affairs-service/src/apis/plan.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								sub-government-affairs-service/src/apis/plan.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,61 @@ | |||||||
|  | import request from '@/utils/axios'; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * @Title: 列表 | ||||||
|  |  */ | ||||||
|  | export function GetEntityList(params = {}) { | ||||||
|  |   return request('/land-resource/annualManage/page', { | ||||||
|  |     method: 'GET', | ||||||
|  |     params, | ||||||
|  |   }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * @Title: 新增 | ||||||
|  |  */ | ||||||
|  | export function AddEntity(data = {}) { | ||||||
|  |   return request('/land-resource/annualManage/save', { | ||||||
|  |     method: 'POST', | ||||||
|  |     data, | ||||||
|  |   }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * @Title: 修改 | ||||||
|  |  */ | ||||||
|  | export function UpdateEntity(data = {}) { | ||||||
|  |   return request('/land-resource/annualManage/edit', { | ||||||
|  |     method: 'PUT', | ||||||
|  |     data, | ||||||
|  |   }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * @Title: 审核 | ||||||
|  |  */ | ||||||
|  | export function AuditEntity(data = {}) { | ||||||
|  |   return request('/land-resource/annualManage/exam', { | ||||||
|  |     method: 'PUT', | ||||||
|  |     data, | ||||||
|  |   }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * @Title: 删除 | ||||||
|  |  */ | ||||||
|  | export function DeleteEntity(params = {}) { | ||||||
|  |   return request(`/land-resource/annualManage/delete/${params.id}`, { | ||||||
|  |     method: 'DELETE', | ||||||
|  |   }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * @Title: 导出 | ||||||
|  |  */ | ||||||
|  | export function ExportEntity(params = {}) { | ||||||
|  |   return request('/land-resource/annualManage/export', { | ||||||
|  |     method: 'GET', | ||||||
|  |     params, | ||||||
|  |     responseType: 'blob', | ||||||
|  |   }); | ||||||
|  | } | ||||||
| @ -0,0 +1,84 @@ | |||||||
|  | <template> | ||||||
|  |   <el-select-v2 | ||||||
|  |     v-model="val" | ||||||
|  |     :options="options" | ||||||
|  |     :placeholder="props.set.placeholder" | ||||||
|  |     :props="props.set.props" | ||||||
|  |     :multiple="props.set.multiple" | ||||||
|  |     @change="handleSelect" | ||||||
|  |   /> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
|  | <script setup> | ||||||
|  | import { ref, onMounted } from 'vue'; | ||||||
|  | import request from '@/utils/axios'; | ||||||
|  | const emit = defineEmits(['update:value']); | ||||||
|  | 
 | ||||||
|  | const props = defineProps({ | ||||||
|  |   set: { | ||||||
|  |     type: Object, | ||||||
|  |     default: () => { | ||||||
|  |       return { | ||||||
|  |         url: '', | ||||||
|  |         options: [ | ||||||
|  |           { | ||||||
|  |             value: '1', | ||||||
|  |             label: 'label 1', | ||||||
|  |           }, | ||||||
|  |           { | ||||||
|  |             value: '2', | ||||||
|  |             label: 'label 2', | ||||||
|  |           }, | ||||||
|  |           { | ||||||
|  |             value: '3', | ||||||
|  |             label: 'label 3', | ||||||
|  |           }, | ||||||
|  |         ], | ||||||
|  |         props: { | ||||||
|  |           value: 'value', | ||||||
|  |           label: 'label', | ||||||
|  |         }, | ||||||
|  |         multiple: false, | ||||||
|  |         placeholder: '请选择', | ||||||
|  |       }; | ||||||
|  |     }, | ||||||
|  |   }, | ||||||
|  | 
 | ||||||
|  |   value: { | ||||||
|  |     type: String || Array || null, | ||||||
|  |     default: null, | ||||||
|  |   }, | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | onMounted(async () => { | ||||||
|  |   if (props.set.multiple) val.value = []; | ||||||
|  | 
 | ||||||
|  |   if (props.set.url) { | ||||||
|  |     let res = await request(props.set.url, { | ||||||
|  |       method: 'get', | ||||||
|  |       data: { current: 1, size: 9999 }, | ||||||
|  |     }); | ||||||
|  |     if (res.code == 200) { | ||||||
|  |       options.value = res.data.records; | ||||||
|  |     } | ||||||
|  |   } else { | ||||||
|  |     options.value = props.set.options; | ||||||
|  |   } | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | /* --------------- data --------------- */ | ||||||
|  | // #region | ||||||
|  | const val = ref(null); | ||||||
|  | const options = ref([]); | ||||||
|  | 
 | ||||||
|  | // #endregion | ||||||
|  | 
 | ||||||
|  | /* --------------- methods --------------- */ | ||||||
|  | // #region | ||||||
|  | function handleSelect(val_) { | ||||||
|  |   emit('update:value', val_); | ||||||
|  | } | ||||||
|  | // #endregion | ||||||
|  | </script> | ||||||
|  | 
 | ||||||
|  | <style lang="scss" scoped></style> | ||||||
| @ -4,7 +4,8 @@ | |||||||
| 
 | 
 | ||||||
| <script setup> | <script setup> | ||||||
| import { ref, onMounted } from 'vue'; | import { ref, onMounted } from 'vue'; | ||||||
| import { GetEntityList } from '@/apis/coding'; | import { GetEntityList } from '@/apis/grid.js'; | ||||||
|  | const emit = defineEmits(['update:value']); | ||||||
| 
 | 
 | ||||||
| const props = defineProps({ | const props = defineProps({ | ||||||
|   // 父组件传过来的值 |   // 父组件传过来的值 | ||||||
| @ -35,7 +36,7 @@ const _props = { | |||||||
| /* --------------- methods --------------- */ | /* --------------- methods --------------- */ | ||||||
| // #region | // #region | ||||||
| function handleSelect(val_) { | function handleSelect(val_) { | ||||||
|   console.log('val_', val_); |   emit('update:value', val_); | ||||||
| } | } | ||||||
| // #endregion | // #endregion | ||||||
| </script> | </script> | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| <template> | <template> | ||||||
|   <el-select v-model="val" @change="change"> |   <el-select v-model="val" @change="change"> | ||||||
|     <el-option v-for="item in options" :key="`land_type_${item.value}`" :value="item.value" :label="item.label" placeholder="请选择"> |     <el-option v-for="item in options" :key="`land_type_${item.value}`" :value="item.value" :label="item.label" :placeholder="props.placeholder"> | ||||||
|       {{ item.label }} |       {{ item.label }} | ||||||
|     </el-option> |     </el-option> | ||||||
|   </el-select> |   </el-select> | ||||||
| @ -15,6 +15,10 @@ const props = defineProps({ | |||||||
|     type: String || null, |     type: String || null, | ||||||
|     default: null, |     default: null, | ||||||
|   }, |   }, | ||||||
|  |   placeholder: { | ||||||
|  |     type: String, | ||||||
|  |     default: '请选择', | ||||||
|  |   }, | ||||||
| }); | }); | ||||||
| const emit = defineEmits(['update:value']); | const emit = defineEmits(['update:value']); | ||||||
| /* --------------- data --------------- */ | /* --------------- data --------------- */ | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| <template> | <template> | ||||||
|   <el-select v-model="val" @change="change"> |   <el-select v-model="val" @change="change"> | ||||||
|     <el-option v-for="item in options" :key="`land_type_${item.value}`" :value="item.value" :label="item.label" placeholder="请选择"> |     <el-option v-for="item in options" :key="`land_type_${item.value}`" :value="item.value" :label="item.label" :placeholder="props.placeholder"> | ||||||
|       {{ item.label }} |       {{ item.label }} | ||||||
|     </el-option> |     </el-option> | ||||||
|   </el-select> |   </el-select> | ||||||
| @ -15,6 +15,10 @@ const props = defineProps({ | |||||||
|     type: String || null, |     type: String || null, | ||||||
|     default: null, |     default: null, | ||||||
|   }, |   }, | ||||||
|  |   placeholder: { | ||||||
|  |     type: String, | ||||||
|  |     default: '请选择', | ||||||
|  |   }, | ||||||
| }); | }); | ||||||
| const emit = defineEmits(['update:value']); | const emit = defineEmits(['update:value']); | ||||||
| /* --------------- data --------------- */ | /* --------------- data --------------- */ | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| <template> | <template> | ||||||
|   <el-select v-model="val" @change="change"> |   <el-select v-model="val" @change="change"> | ||||||
|     <el-option v-for="item in options" :key="`land_type_${item.value}`" :value="item.value" :label="item.label" placeholder="请选择"> |     <el-option v-for="item in options" :key="`land_type_${item.value}`" :value="item.value" :label="item.label" :placeholder="props.placeholder"> | ||||||
|       {{ item.label }} |       {{ item.label }} | ||||||
|     </el-option> |     </el-option> | ||||||
|   </el-select> |   </el-select> | ||||||
| @ -15,6 +15,10 @@ const props = defineProps({ | |||||||
|     type: String || null, |     type: String || null, | ||||||
|     default: null, |     default: null, | ||||||
|   }, |   }, | ||||||
|  |   placeholder: { | ||||||
|  |     type: String, | ||||||
|  |     default: '请选择', | ||||||
|  |   }, | ||||||
| }); | }); | ||||||
| const emit = defineEmits(['update:value']); | const emit = defineEmits(['update:value']); | ||||||
| /* --------------- data --------------- */ | /* --------------- data --------------- */ | ||||||
|  | |||||||
| @ -0,0 +1,54 @@ | |||||||
|  | <template> | ||||||
|  |   <el-dialog | ||||||
|  |     v-model="state.visible" | ||||||
|  |     draggable | ||||||
|  |     title="溯源码" | ||||||
|  |     width="40%" | ||||||
|  |     :close-on-click-modal="false" | ||||||
|  |     :close-on-press-escape="false" | ||||||
|  |     @close="onClose" | ||||||
|  |   > | ||||||
|  |     <div class="code-panel"> | ||||||
|  |       <div class="code-panel-picture"> | ||||||
|  |         <el-image style="width: 200px; height: 200px" :src="row.orCodeUrl" fit="cover" lazy /> | ||||||
|  |       </div> | ||||||
|  |       <el-button type="primary" @click="downloadFile(row.orCodeUrl, `${row.productName}-溯源码.png`, 'image')"> 下载溯源码</el-button> | ||||||
|  |     </div> | ||||||
|  |   </el-dialog> | ||||||
|  | </template> | ||||||
|  | <script setup name="code-dialog"> | ||||||
|  | import { reactive } from 'vue'; | ||||||
|  | import { downloadFile } from '@/utils'; | ||||||
|  | const props = defineProps({ | ||||||
|  |   row: { | ||||||
|  |     type: Object, | ||||||
|  |     default: () => {}, | ||||||
|  |   }, | ||||||
|  | }); | ||||||
|  | const emit = defineEmits(['on-close']); | ||||||
|  | 
 | ||||||
|  | const state = reactive({ | ||||||
|  |   visible: false, | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | const onClose = () => { | ||||||
|  |   state.visible = false; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | defineExpose({ | ||||||
|  |   show: () => { | ||||||
|  |     state.visible = true; | ||||||
|  |   }, | ||||||
|  |   hide: () => { | ||||||
|  |     onClose(); | ||||||
|  |   }, | ||||||
|  | }); | ||||||
|  | </script> | ||||||
|  | <style lang="scss" scoped> | ||||||
|  | .code { | ||||||
|  |   &-panel { | ||||||
|  |     padding-bottom: 40px; | ||||||
|  |     text-align: center; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | </style> | ||||||
| @ -3,7 +3,7 @@ | |||||||
|  * @Author: zenghua.wang |  * @Author: zenghua.wang | ||||||
|  * @Date: 2023-06-20 14:29:45 |  * @Date: 2023-06-20 14:29:45 | ||||||
|  * @LastEditors: zenghua.wang |  * @LastEditors: zenghua.wang | ||||||
|  * @LastEditTime: 2025-02-14 11:39:56 |  * @LastEditTime: 2025-02-18 09:48:18 | ||||||
| --> | --> | ||||||
| <template> | <template> | ||||||
|   <el-dropdown class="layout-avatar"> |   <el-dropdown class="layout-avatar"> | ||||||
| @ -33,7 +33,7 @@ import { useUserStore } from '@/store/modules/user'; | |||||||
| import { useTagsViewStore } from '@/store/modules/tagsView'; | import { useTagsViewStore } from '@/store/modules/tagsView'; | ||||||
| import { usePermissionStore } from '@/store/modules/permission'; | import { usePermissionStore } from '@/store/modules/permission'; | ||||||
| import { getAssetsFile } from '@/utils'; | import { getAssetsFile } from '@/utils'; | ||||||
| import { LogOut } from '@/apis/login'; | import { Logout } from '#/apis/login'; | ||||||
| 
 | 
 | ||||||
| const router = useRouter(); | const router = useRouter(); | ||||||
| const UserStore = useUserStore(); | const UserStore = useUserStore(); | ||||||
| @ -49,7 +49,7 @@ const logOut = async () => { | |||||||
|     cancelButtonText: '取消', |     cancelButtonText: '取消', | ||||||
|     type: 'warning', |     type: 'warning', | ||||||
|   }).then(async () => { |   }).then(async () => { | ||||||
|     LogOut().then((res) => { |     Logout().then((res) => { | ||||||
|       if (res.code === 200) { |       if (res.code === 200) { | ||||||
|         UserStore.logout(); |         UserStore.logout(); | ||||||
|         TagsViewStore.clearVisitedView(); |         TagsViewStore.clearVisitedView(); | ||||||
|  | |||||||
| @ -7,6 +7,7 @@ | |||||||
|  */ |  */ | ||||||
| import 'virtual:svg-icons-register'; | import 'virtual:svg-icons-register'; | ||||||
| import { createApp } from 'vue'; | import { createApp } from 'vue'; | ||||||
|  | import { renderWithQiankun, qiankunWindow } from 'vite-plugin-qiankun/dist/helper'; | ||||||
| import App from './App.vue'; | import App from './App.vue'; | ||||||
| import router from './router'; | import router from './router'; | ||||||
| import pinia from './store'; | import pinia from './store'; | ||||||
| @ -14,11 +15,10 @@ import ElementPlus from 'element-plus'; | |||||||
| import 'element-plus/dist/index.css'; | import 'element-plus/dist/index.css'; | ||||||
| import Avue from '@smallwei/avue'; | import Avue from '@smallwei/avue'; | ||||||
| import '@smallwei/avue/lib/index.css'; | import '@smallwei/avue/lib/index.css'; | ||||||
| import './utils/permission'; |  | ||||||
| import { registerDirective } from './directives'; | import { registerDirective } from './directives'; | ||||||
| import { registerGlobalComponents } from './plugins/globalComponents'; | import { registerGlobalComponents } from './plugins/globalComponents'; | ||||||
| import { registerElIcons } from './plugins/icon'; | import { registerElIcons } from './plugins/icon'; | ||||||
| import { registerMicroApps } from './plugins/micro'; | import './utils/permission'; | ||||||
| import VueAMap, { initAMapApiLoader } from '@vuemap/vue-amap'; | import VueAMap, { initAMapApiLoader } from '@vuemap/vue-amap'; | ||||||
| initAMapApiLoader({ | initAMapApiLoader({ | ||||||
|   key: 'c843a50db7157faf295c6fa37c48719f', |   key: 'c843a50db7157faf295c6fa37c48719f', | ||||||
| @ -27,10 +27,37 @@ initAMapApiLoader({ | |||||||
|   //  version: '2.0.0'
 |   //  version: '2.0.0'
 | ||||||
|   //} // 如果需要使用loca组件库,需要加载Loca
 |   //} // 如果需要使用loca组件库,需要加载Loca
 | ||||||
| }); | }); | ||||||
| const app = createApp(App); | const registerMicroApps = () => { | ||||||
|  |   let app = null; | ||||||
|  |   const initQiankun = () => { | ||||||
|  |     renderWithQiankun({ | ||||||
|  |       bootstrap() { | ||||||
|  |         console.log('bootstrap'); | ||||||
|  |       }, | ||||||
|  |       mount(props) { | ||||||
|  |         console.log('mount', props); | ||||||
|  |         render(props); | ||||||
|  |       }, | ||||||
|  |       update(props) { | ||||||
|  |         console.log('update', props); | ||||||
|  |       }, | ||||||
|  |       unmount(props) { | ||||||
|  |         console.log('unmount', props); | ||||||
|  |         app = null; | ||||||
|  |       }, | ||||||
|  |     }); | ||||||
|  |   }; | ||||||
|  |   const render = async ({ container }) => { | ||||||
|  |     await new Promise((resolve) => setTimeout(resolve, 1000)); | ||||||
|  |     app = createApp(App); | ||||||
|  |     app.use(pinia).use(router).use(ElementPlus).use(Avue).use(VueAMap); | ||||||
|  |     registerGlobalComponents(app); | ||||||
|  |     registerElIcons(app); | ||||||
|  |     registerDirective(app); | ||||||
|  |     registerMicroApps(app); | ||||||
|  |     app.mount(container.querySelector('#sub-app') || '#sub-app'); | ||||||
|  |   }; | ||||||
|  |   qiankunWindow.__POWERED_BY_QIANKUN__ ? initQiankun() : render({}); | ||||||
|  | }; | ||||||
| 
 | 
 | ||||||
| app.use(pinia).use(router).use(ElementPlus).use(Avue).use(VueAMap); | registerMicroApps(); | ||||||
| registerGlobalComponents(app); |  | ||||||
| registerElIcons(app); |  | ||||||
| registerDirective(app); |  | ||||||
| registerMicroApps(app); |  | ||||||
|  | |||||||
| @ -24,7 +24,7 @@ export const registerMicroApps = (app) => { | |||||||
|       console.error('挂载容器不存在'); |       console.error('挂载容器不存在'); | ||||||
|       return; |       return; | ||||||
|     } |     } | ||||||
|     app.mount(container.querySelector('#app') || '#app'); |     app.mount(container.querySelector('#sub-app') || '#sub-app'); | ||||||
|   }; |   }; | ||||||
|   qiankunWindow.__POWERED_BY_QIANKUN__ ? initQiankun() : render({}); |   qiankunWindow.__POWERED_BY_QIANKUN__ ? initQiankun() : render({}); | ||||||
| }; | }; | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ | |||||||
|  * @Author: zenghua.wang |  * @Author: zenghua.wang | ||||||
|  * @Date: 2023-06-20 11:48:41 |  * @Date: 2023-06-20 11:48:41 | ||||||
|  * @LastEditors: zenghua.wang |  * @LastEditors: zenghua.wang | ||||||
|  * @LastEditTime: 2025-02-17 11:47:53 |  * @LastEditTime: 2025-02-18 11:22:07 | ||||||
|  */ |  */ | ||||||
| import { createRouter, createWebHistory } from 'vue-router'; | import { createRouter, createWebHistory } from 'vue-router'; | ||||||
| import { qiankunWindow } from 'vite-plugin-qiankun/dist/helper'; | import { qiankunWindow } from 'vite-plugin-qiankun/dist/helper'; | ||||||
| @ -29,6 +29,16 @@ export const constantRoutes = [ | |||||||
|     component: () => import('@/views/error/403.vue'), |     component: () => import('@/views/error/403.vue'), | ||||||
|     hidden: true, |     hidden: true, | ||||||
|   }, |   }, | ||||||
|  |   // {
 | ||||||
|  |   //   path: '/login',
 | ||||||
|  |   //   name: 'login',
 | ||||||
|  |   //   component: () => import('@/views/error/404.vue'),
 | ||||||
|  |   //   hidden: true,
 | ||||||
|  |   //   meta: {
 | ||||||
|  |   //     title: '登录',
 | ||||||
|  |   //     icon: 'Login',
 | ||||||
|  |   //   },
 | ||||||
|  |   // },
 | ||||||
|   { |   { | ||||||
|     path: '/', |     path: '/', | ||||||
|     name: 'layout', |     name: 'layout', | ||||||
| @ -44,7 +54,7 @@ export const constantRoutes = [ | |||||||
|       }, |       }, | ||||||
|     ], |     ], | ||||||
|   }, |   }, | ||||||
|   // ...resourceRouter,
 |   ...resourceRouter, | ||||||
|   ...plantingAndBreedingRouter, |   ...plantingAndBreedingRouter, | ||||||
|   ...annualplanRoutes, |   ...annualplanRoutes, | ||||||
|   ...landsRoutes, |   ...landsRoutes, | ||||||
| @ -54,9 +64,9 @@ export const constantRoutes = [ | |||||||
|  * @Title notFoundRouter(找不到路由) |  * @Title notFoundRouter(找不到路由) | ||||||
|  */ |  */ | ||||||
| export const notFoundRouter = { | export const notFoundRouter = { | ||||||
|   // path: '/:pathMatch(.*)',
 |   path: '/:pathMatch(.*)', | ||||||
|   // name: 'notFound',
 |   name: 'notFound', | ||||||
|   // redirect: '/404',
 |   redirect: '/404', | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| const router = createRouter({ | const router = createRouter({ | ||||||
|  | |||||||
| @ -1,69 +0,0 @@ | |||||||
| import Layout from '@/layouts/index.vue'; |  | ||||||
| import Views from '@/layouts/Views.vue'; |  | ||||||
| 
 |  | ||||||
| export default [ |  | ||||||
|   { |  | ||||||
|     path: '/resource', |  | ||||||
|     name: 'resource', |  | ||||||
|     component: Layout, |  | ||||||
|     redirect: '/grid', |  | ||||||
|     meta: { title: '土地资源管理', icon: 'icon-test' }, |  | ||||||
|     children: [ |  | ||||||
|       { |  | ||||||
|         path: '/grid', |  | ||||||
|         component: () => import('@/views/resource/grid/index.vue'), |  | ||||||
|         name: 'grid', |  | ||||||
|         meta: { title: '网格化管理', icon: 'Document' }, |  | ||||||
|       }, |  | ||||||
|     ], |  | ||||||
|   }, |  | ||||||
| ]; |  | ||||||
| 
 |  | ||||||
| // {
 |  | ||||||
| //   path: '/resource-info',
 |  | ||||||
| //   name: 'resource-info-manager',
 |  | ||||||
| //   component: Views,
 |  | ||||||
| //   meta: { title: '土地信息管理', icon: 'Document' },
 |  | ||||||
| //   redirect: '/land',
 |  | ||||||
| //   children: [
 |  | ||||||
| //     {
 |  | ||||||
| //       path: '/land',
 |  | ||||||
| //       component: () => import('@/views/resource/land/index.vue'),
 |  | ||||||
| //       name: 'land',
 |  | ||||||
| //       meta: { title: '土地资源', icon: 'Document' },
 |  | ||||||
| //     },
 |  | ||||||
| //     {
 |  | ||||||
| //       path: '/land-fill',
 |  | ||||||
| //       name: 'land-fill',
 |  | ||||||
| //       component: () => import('@/views/resource/land/index.vue'),
 |  | ||||||
| //       meta: { title: '土地信息填报审核', icon: 'Document' },
 |  | ||||||
| //     },
 |  | ||||||
| //     {
 |  | ||||||
| //       path: '/land-fill-review',
 |  | ||||||
| //       name: 'land-fill-review',
 |  | ||||||
| //       component: () => import('@/views/resource/land/index.vue'),
 |  | ||||||
| //       meta: { title: '土地流转信息填报审核', icon: 'Document' },
 |  | ||||||
| //     },
 |  | ||||||
| //   ],
 |  | ||||||
| // },
 |  | ||||||
| // {
 |  | ||||||
| //   path: '/land-monitor',
 |  | ||||||
| //   name: 'land-monitor',
 |  | ||||||
| //   component: Views,
 |  | ||||||
| //   meta: { title: '土地监管', icon: 'Document' },
 |  | ||||||
| //   redirect: '/land-patrol',
 |  | ||||||
| //   children: [
 |  | ||||||
| //     {
 |  | ||||||
| //       path: '/land-patrol',
 |  | ||||||
| //       component: () => import('@/views/resource/land/index.vue'),
 |  | ||||||
| //       name: 'land-patrol',
 |  | ||||||
| //       meta: { title: '土地使用巡查', icon: 'Document' },
 |  | ||||||
| //     },
 |  | ||||||
| //     {
 |  | ||||||
| //       path: '/land-handle',
 |  | ||||||
| //       name: 'land-handle',
 |  | ||||||
| //       component: () => import('@/views/resource/land/index.vue'),
 |  | ||||||
| //       meta: { title: '土地违法处理', icon: 'Document' },
 |  | ||||||
| //     },
 |  | ||||||
| //   ],
 |  | ||||||
| // },
 |  | ||||||
| @ -15,12 +15,12 @@ export default [ | |||||||
|         name: 'grid', |         name: 'grid', | ||||||
|         meta: { title: '网格化管理', icon: 'Document' }, |         meta: { title: '网格化管理', icon: 'Document' }, | ||||||
|       }, |       }, | ||||||
|       { |       // {
 | ||||||
|         path: '/grid2', |       //   path: '/annual-plan',
 | ||||||
|         component: () => import('@/views/resource/grid/index.vue'), |       //   component: () => import('@/views/resource/plan/index.vue'),
 | ||||||
|         name: 'grid2', |       //   name: 'annual-plan',
 | ||||||
|         meta: { title: '网格化管理2', icon: 'Document' }, |       //   meta: { title: '年度计划', icon: 'Document' },
 | ||||||
|       }, |       // },
 | ||||||
|     ], |     ], | ||||||
|   }, |   }, | ||||||
| ]; | ]; | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ import { GenKey } from '@/config'; | |||||||
| import { isEmpty, encode, decode } from '@/utils'; | import { isEmpty, encode, decode } from '@/utils'; | ||||||
| 
 | 
 | ||||||
| export const useUserStore = defineStore({ | export const useUserStore = defineStore({ | ||||||
|   id: GenKey('user_store'), |   id: GenKey('userStore'), | ||||||
|   state: () => ({ |   state: () => ({ | ||||||
|     token: null, |     token: null, | ||||||
|     userInfo: {}, |     userInfo: {}, | ||||||
| @ -52,14 +52,14 @@ export const useUserStore = defineStore({ | |||||||
|       this.currentOrg = null; |       this.currentOrg = null; | ||||||
|       this.orgList = []; |       this.orgList = []; | ||||||
|       this.menus = []; |       this.menus = []; | ||||||
|       localStorage.removeItem(GenKey('user_store')); |       localStorage.removeItem(GenKey('userStore')); | ||||||
|     }, |     }, | ||||||
|     clear() { |     clear() { | ||||||
|       localStorage.removeItem(GenKey('user_store')); |       localStorage.removeItem(GenKey('userStore')); | ||||||
|     }, |     }, | ||||||
|   }, |   }, | ||||||
|   persist: { |   persist: { | ||||||
|     key: GenKey('user_store'), |     key: GenKey('userStore'), | ||||||
|     storage: window.localStorage, |     storage: window.localStorage, | ||||||
|   }, |   }, | ||||||
| }); | }); | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ | |||||||
|  * @Author: zenghua.wang |  * @Author: zenghua.wang | ||||||
|  * @Date: 2022-02-23 21:12:37 |  * @Date: 2022-02-23 21:12:37 | ||||||
|  * @LastEditors: zenghua.wang |  * @LastEditors: zenghua.wang | ||||||
|  * @LastEditTime: 2025-02-13 14:47:02 |  * @LastEditTime: 2025-02-18 09:47:41 | ||||||
|  */ |  */ | ||||||
| import axios from 'axios'; | import axios from 'axios'; | ||||||
| import { ElNotification } from 'element-plus'; | import { ElNotification } from 'element-plus'; | ||||||
|  | |||||||
| @ -5,6 +5,7 @@ | |||||||
|  * @LastEditors: zenghua.wang |  * @LastEditors: zenghua.wang | ||||||
|  * @LastEditTime: 2024-02-26 13:54:43 |  * @LastEditTime: 2024-02-26 13:54:43 | ||||||
|  */ |  */ | ||||||
|  | import { qiankunWindow } from 'vite-plugin-qiankun/dist/helper'; | ||||||
| import NProgress from 'nprogress'; | import NProgress from 'nprogress'; | ||||||
| import 'nprogress/nprogress.css'; | import 'nprogress/nprogress.css'; | ||||||
| import router from '@/router'; | import router from '@/router'; | ||||||
| @ -13,8 +14,8 @@ import { usePermissionStore } from '@/store/modules/permission'; | |||||||
| 
 | 
 | ||||||
| NProgress.configure({ showSpinner: false }); | NProgress.configure({ showSpinner: false }); | ||||||
| 
 | 
 | ||||||
| const whiteList = ['/login', '/auth-redirect']; // 设置白名单
 | const { VITE_APP_MIAN_URL } = import.meta.env; | ||||||
| 
 | const whiteList = []; | ||||||
| router.beforeEach(async (to, from, next) => { | router.beforeEach(async (to, from, next) => { | ||||||
|   NProgress.start(); |   NProgress.start(); | ||||||
|   if (typeof to.meta.title === 'string') { |   if (typeof to.meta.title === 'string') { | ||||||
| @ -26,28 +27,30 @@ router.beforeEach(async (to, from, next) => { | |||||||
|   console.log('sub', hasToken); |   console.log('sub', hasToken); | ||||||
|   if (hasToken) { |   if (hasToken) { | ||||||
|     if (to.path === '/login') { |     if (to.path === '/login') { | ||||||
|       // 如果已登录,请重定向到主页
 |  | ||||||
|       next({ path: '/' }); |       next({ path: '/' }); | ||||||
|     } else { |     } else { | ||||||
|       try { |       try { | ||||||
|         const PermissionStore = usePermissionStore(); |         const PermissionStore = usePermissionStore(); | ||||||
|         // 路由添加进去了没有及时更新 需要重新进去一次拦截
 |  | ||||||
|         if (!PermissionStore.routes.length) { |         if (!PermissionStore.routes.length) { | ||||||
|           // 获取权限列表进行接口访问 因为这里页面要切换权限
 |  | ||||||
|           const accessRoutes = await PermissionStore.generateRoutes(userStore.roles); |           const accessRoutes = await PermissionStore.generateRoutes(userStore.roles); | ||||||
|           accessRoutes.forEach((item) => router.addRoute(item)); // 动态添加访问路由表
 |           accessRoutes.forEach((item) => router.addRoute(item)); | ||||||
|           next({ ...to, replace: true }); // 这里相当于push到一个页面 不在进入路由拦截
 |           next({ ...to, replace: true }); | ||||||
|         } else { |         } else { | ||||||
|           next(); // 如果不传参数就会重新执行路由拦截,重新进到这里
 |           next(); | ||||||
|         } |         } | ||||||
|       } catch (error) { |       } catch (error) { | ||||||
|         next(`/login?redirect=${to.path}`); |         next(`/login?redirect=${to.path}`); | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   } else { |   } else { | ||||||
|  |     NProgress.done(); | ||||||
|     if (whiteList.indexOf(to.path) !== -1) { |     if (whiteList.indexOf(to.path) !== -1) { | ||||||
|       next(); |       next(); | ||||||
|     } else { |     } else { | ||||||
|  |       if (qiankunWindow.__POWERED_BY_QIANKUN__) { | ||||||
|  |         window.location.href = VITE_APP_MIAN_URL; | ||||||
|  |         return; | ||||||
|  |       } | ||||||
|       next(`/login?redirect=${to.path}`); |       next(`/login?redirect=${to.path}`); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -1,47 +1,80 @@ | |||||||
| <template> | <template> | ||||||
|   <el-drawer v-model="_visible" title="土地信息" :size="800" @close="handleClose"> |   <el-drawer v-model="_visible" title="土地信息" :size="800" @close="handleClose"> | ||||||
|     <el-card> |     <el-card> | ||||||
|       <div>基础信息</div> |       <div class="title_">基础信息</div> | ||||||
|       <el-form :model="baseInfo" class="base_form" label-width="120px"> |       <el-form ref="baseForm" :model="baseInfo" class="base_form" label-width="120px"> | ||||||
|         <el-form-item label="土地名称" prop="landName"> |         <el-form-item label="土地名称" prop="landName"> | ||||||
|           <el-input v-model="baseInfo.landName" placeholder="请输入名称"></el-input> |           <el-input v-model="baseInfo.landName" placeholder="请输入名称"></el-input> | ||||||
|         </el-form-item> |         </el-form-item> | ||||||
|         <el-form-item label="所属网格" prop="gridName"> |         <el-form-item label="所属网格" prop="gridId"> | ||||||
|           <GridSelect /> |           <CustomSelect | ||||||
|  |             v-model:value="baseInfo.gridId" | ||||||
|  |             :set="{ | ||||||
|  |               url: '/land-resource/gridManage/page', | ||||||
|  |               props: { | ||||||
|  |                 value: 'id', | ||||||
|  |                 label: 'gridName', | ||||||
|  |               }, | ||||||
|  |             }" | ||||||
|  |             placeholder="请选择所属网格" | ||||||
|  |           /> | ||||||
|         </el-form-item> |         </el-form-item> | ||||||
|         <el-form-item label="用地分类" prop="LandType"> |         <el-form-item label="用地分类" prop="LandType"> | ||||||
|           <LandClassificationType v-model:value="baseInfo.landClassificationType" /> |           <LandClassificationType v-model:value="baseInfo.landClassificationType" placeholder="请选择用地分类" /> | ||||||
|         </el-form-item> |         </el-form-item> | ||||||
|         <el-form-item label="位置" prop="villageCode"> |         <el-form-item label="位置" prop="villageCode"> | ||||||
|           <el-input v-model="baseInfo.villageCode" placehodler="请输入"></el-input> |           <el-input v-model="baseInfo.villageCode" placeholder="请输入"></el-input> | ||||||
|         </el-form-item> |         </el-form-item> | ||||||
|         <el-form-item label="是否土地流转" prop="isTransfer"> |         <el-form-item label="是否土地流转" prop="isTransfer"> | ||||||
|           <LandIsTranfer v-model:value="baseInfo.isTransfer" /> |           <LandIsTranfer v-model:value="baseInfo.isTransfer" /> | ||||||
|         </el-form-item> |         </el-form-item> | ||||||
|         <el-form-item label="面积" prop="area"> |         <el-form-item label="面积" prop="area"> | ||||||
|           <el-input v-model="baseInfo.area" placeholder="请输入"></el-input> |           <el-input v-model="baseInfo.area" placeholder="请输入面积"></el-input> | ||||||
|         </el-form-item> |         </el-form-item> | ||||||
|         <el-form-item label="产权人" prop="owner"> |         <el-form-item label="产权人" prop="owner"> | ||||||
|           <el-input v-model="baseInfo.owner" placeholder="请输入"></el-input> |           <el-input v-model="baseInfo.owner" placeholder="请输入产权人姓名"></el-input> | ||||||
|         </el-form-item> |         </el-form-item> | ||||||
|         <el-form-item label="土壤类型"> |         <el-form-item label="土壤类型"> | ||||||
|           <LandType v-model:value="baseInfo.landType" /> |           <el-input v-model="baseInfo.soilType" placeholder="请输入土壤类型"></el-input> | ||||||
|         </el-form-item> |         </el-form-item> | ||||||
|       </el-form> |       </el-form> | ||||||
|     </el-card> |     </el-card> | ||||||
|  |     <br /> | ||||||
|     <el-card> |     <el-card> | ||||||
|       <div>土地产权信息</div> |       <div class="title_">土地产权信息</div> | ||||||
|  |       <el-form ref="propertyForm" :model="propertyInfo" class="property_form" label-width="120px"> | ||||||
|  |         <el-form-item label="产权人姓名" prop="propertyName"> | ||||||
|  |           <el-input v-model="propertyInfo.propertyName" placeholder="请输入联系人"></el-input> | ||||||
|  |         </el-form-item> | ||||||
|  |         <el-form-item label="产权人联系电话" prop="propertyPhone"> | ||||||
|  |           <el-input v-model="propertyInfo.propertyPhone" placeholder="请输入联系人"></el-input> | ||||||
|  |         </el-form-item> | ||||||
|  |         <el-form-item label="产权编号" prop="landCode"> | ||||||
|  |           <el-input v-model="propertyInfo.landCode" placeholder="请输入联系人"></el-input> | ||||||
|  |         </el-form-item> | ||||||
|  |         <!-- <el-form-item label="产权证书" prop="propertyCertificateUrl"> | ||||||
|  |           <el-upload class="custom-form__uploader" action="#" :show-file-list="false" accept="image/*" :limit="20" :http-request="rowUploadPicture"> | ||||||
|  |             <el-icon class="custom-form__uploader__icon"><Plus /></el-icon> | ||||||
|  |           </el-upload> | ||||||
|  |         </el-form-item> --> | ||||||
|  |       </el-form> | ||||||
|     </el-card> |     </el-card> | ||||||
|     <el-button @click="handleSubmit"></el-button> |     <section class="btns"> | ||||||
|  |       <el-button type="primary" @click="handleSubmit">保存并提交审核</el-button> | ||||||
|  |       <el-button type="warning" @click="handleSubmit">保存草稿</el-button> | ||||||
|  |       <el-button @click="handleClose">取消</el-button> | ||||||
|  |     </section> | ||||||
|   </el-drawer> |   </el-drawer> | ||||||
| </template> | </template> | ||||||
| 
 | 
 | ||||||
| <script setup> | <script setup> | ||||||
| import { reactive, ref, watch } from 'vue'; | import { reactive, ref, watch } from 'vue'; | ||||||
| import LandClassificationType from '@/components/LandClassificationType.vue'; | import LandClassificationType from '@/components/LandClassificationType.vue'; | ||||||
| import GridSelect from '@/components/GridSelect.vue'; | import CustomSelect from '@/components/CustomSelect.vue'; | ||||||
| import LandIsTranfer from '@/components/LandIsTranfer.vue'; | import LandIsTranfer from '@/components/LandIsTranfer.vue'; | ||||||
| import LandType from '@/components/LandType.vue'; | import { lnadSave } from '@/apis/land'; | ||||||
|  | import { ElMessage } from 'element-plus'; | ||||||
|  | import { CommonUpload } from '@/apis'; | ||||||
| 
 | 
 | ||||||
| const props = defineProps({ | const props = defineProps({ | ||||||
|   visible: { |   visible: { | ||||||
| @ -56,13 +89,19 @@ const emit = defineEmits(['close']); | |||||||
| const _visible = ref(false); | const _visible = ref(false); | ||||||
| const baseInfo = reactive({ | const baseInfo = reactive({ | ||||||
|   landName: '', |   landName: '', | ||||||
|   gridName: '', |   gridId: '', | ||||||
|   landClassificationType: '1', |   landClassificationType: '', | ||||||
|   villageCode: '', |   villageCode: '', | ||||||
|   isTransfer: '1', |   isTransfer: '', | ||||||
|   area: '', |   area: '', | ||||||
|   owner: '', |   owner: '', | ||||||
|   landType: '0', |   soilType: '', | ||||||
|  | }); | ||||||
|  | const propertyInfo = reactive({ | ||||||
|  |   propertyName: '', | ||||||
|  |   propertyPhone: '', | ||||||
|  |   landCode: '', | ||||||
|  |   propertyCertificateUrl: '', | ||||||
| }); | }); | ||||||
| watch( | watch( | ||||||
|   () => props.visible, |   () => props.visible, | ||||||
| @ -76,23 +115,64 @@ watch( | |||||||
|     console.log('---', baseInfo); |     console.log('---', baseInfo); | ||||||
|   } |   } | ||||||
| ); | ); | ||||||
|  | const baseForm = ref(); | ||||||
|  | const propertyForm = ref(); | ||||||
| // #endregion | // #endregion | ||||||
| 
 | 
 | ||||||
| /* --------------- methods --------------- */ | /* --------------- methods --------------- */ | ||||||
| // #region | // #region | ||||||
| function handleSubmit() { | const rowUploadPicture = async ({ file }) => { | ||||||
|   console.log('submit', baseInfo); |   const formData = new FormData(); | ||||||
|  |   formData.append('file', file); | ||||||
|  |   const res = await CommonUpload(formData); | ||||||
|  |   if (res.code === 200) { | ||||||
|  |     console.log('---', res); | ||||||
|  |     // state.form.productUrl = res.data.url; | ||||||
|  |     // const base64 = await imageToBase64(file); | ||||||
|  |     // state.form.base64 = base64; | ||||||
|  |   } | ||||||
|  | }; | ||||||
|  | async function handleSubmit() { | ||||||
|  |   const data = { | ||||||
|  |     ...baseInfo, | ||||||
|  |     ...propertyInfo, | ||||||
|  |     isDraftsSave: 0, | ||||||
|  |   }; | ||||||
|  |   const res = await lnadSave(data); | ||||||
|  |   if (res.code == 200) { | ||||||
|  |     ElMessage.success('保存成功'); | ||||||
|  |     resFrom(); | ||||||
|  |   } | ||||||
| } | } | ||||||
| function handleClose() { | function handleClose() { | ||||||
|  |   resFrom(); | ||||||
|   emit('close'); |   emit('close'); | ||||||
| } | } | ||||||
|  | function resFrom() { | ||||||
|  |   baseForm.value.resetFields(); | ||||||
|  |   propertyForm.value.resetFields(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // #endregion | // #endregion | ||||||
| </script> | </script> | ||||||
| 
 | 
 | ||||||
| <style lang="scss" scoped> | <style lang="scss" scoped> | ||||||
| .base_form { | .title_ { | ||||||
|  |   margin-bottom: 12px; | ||||||
|  |   font-size: 16px; | ||||||
|  |   font-weight: bold; | ||||||
|  | } | ||||||
|  | .base_form, | ||||||
|  | .property_form { | ||||||
|   display: grid; |   display: grid; | ||||||
|   grid-template-columns: repeat(2, 1fr); |   grid-template-columns: repeat(2, 1fr); | ||||||
|   gap: 20px; |   gap: 20px; | ||||||
| } | } | ||||||
|  | .btns { | ||||||
|  |   margin-top: 12px; | ||||||
|  |   display: grid; | ||||||
|  |   justify-content: center; | ||||||
|  |   grid-template-columns: auto auto auto; | ||||||
|  |   gap: 12px; | ||||||
|  | } | ||||||
| </style> | </style> | ||||||
|  | |||||||
| @ -146,6 +146,10 @@ async function getList() { | |||||||
|   }; |   }; | ||||||
|   let res = await getLandsList(params); |   let res = await getLandsList(params); | ||||||
|   console.log('res ---------', res); |   console.log('res ---------', res); | ||||||
|  |   if (res.code == 200) { | ||||||
|  |     list.value = res.data.records; | ||||||
|  |     pageData.total = res.data.total; | ||||||
|  |   } | ||||||
| } | } | ||||||
| function handleResetSearch() { | function handleResetSearch() { | ||||||
|   console.log('searchRef', searchRef.value); |   console.log('searchRef', searchRef.value); | ||||||
|  | |||||||
| @ -146,7 +146,7 @@ | |||||||
| import { ref, reactive, onMounted } from 'vue'; | import { ref, reactive, onMounted } from 'vue'; | ||||||
| import Pagina from '@/components/pagina.vue'; | import Pagina from '@/components/pagina.vue'; | ||||||
| import CustCard from '@/components/CustCard.vue'; | import CustCard from '@/components/CustCard.vue'; | ||||||
| import { getLandsList, saveLands } from '@/apis/land.js'; | import { getLandsList, saveLand } from '@/apis/land.js'; | ||||||
| import { useApp } from '@/hooks'; | import { useApp } from '@/hooks'; | ||||||
| onMounted(() => { | onMounted(() => { | ||||||
|   getList(); |   getList(); | ||||||
| @ -185,7 +185,7 @@ const btns = reactive([ | |||||||
|         seedSupplier: '园艺', |         seedSupplier: '园艺', | ||||||
|         planDate: '2025-02-25', |         planDate: '2025-02-25', | ||||||
|       }; |       }; | ||||||
|       saveLands({}) |       saveLand({}) | ||||||
|         .then((res) => { |         .then((res) => { | ||||||
|           if (res.code === 200) { |           if (res.code === 200) { | ||||||
|             app.$message.success('添加成功!'); |             app.$message.success('添加成功!'); | ||||||
|  | |||||||
| @ -129,13 +129,13 @@ const state = reactive({ | |||||||
|       }, |       }, | ||||||
|       { |       { | ||||||
|         label: '省', |         label: '省', | ||||||
|         prop: 'province', |         prop: 'provinceCode', | ||||||
|         hide: true, |         hide: true, | ||||||
|         display: false, |         display: false, | ||||||
|       }, |       }, | ||||||
|       { |       { | ||||||
|         label: '市', |         label: '市', | ||||||
|         prop: 'city', |         prop: 'cityCode', | ||||||
|         hide: true, |         hide: true, | ||||||
|         display: false, |         display: false, | ||||||
|       }, |       }, | ||||||
| @ -165,11 +165,6 @@ const state = reactive({ | |||||||
|         rows: 4, |         rows: 4, | ||||||
|         overHidden: true, |         overHidden: true, | ||||||
|         width: 200, |         width: 200, | ||||||
|         rules: { |  | ||||||
|           required: true, |  | ||||||
|           message: '请输入', |  | ||||||
|           trigger: 'blur', |  | ||||||
|         }, |  | ||||||
|       }, |       }, | ||||||
|       { |       { | ||||||
|         label: '创建时间', |         label: '创建时间', | ||||||
| @ -272,9 +267,10 @@ const rowView = (row) => { | |||||||
| 
 | 
 | ||||||
| const setCity = (row) => { | const setCity = (row) => { | ||||||
|   if (!isEmpty(row.cities)) { |   if (!isEmpty(row.cities)) { | ||||||
|     row.province = row?.cities[0] ?? null; |     row.provinceCode = row?.cities[0] ?? null; | ||||||
|     row.city = row?.cities[1] ?? null; |     row.cityCode = row?.cities[1] ?? null; | ||||||
|     row.county = row?.cities[2] ?? null; |     row.gridAreaCode = row?.cities[2] ?? null; | ||||||
|  |     row.townCode = row?.cities[3] ?? null; | ||||||
|     row.village = row?.cities[3] ?? null; |     row.village = row?.cities[3] ?? null; | ||||||
|   } |   } | ||||||
| }; | }; | ||||||
| @ -300,7 +296,7 @@ const rowSave = (row, done, loading) => { | |||||||
| 
 | 
 | ||||||
| // 编辑 | // 编辑 | ||||||
| const rowEdit = (row) => { | const rowEdit = (row) => { | ||||||
|   row.cities = compact([row.province, row.city, row.county ?? '', row.village ?? '']); |   row.cities = compact([row.provinceCode, row.cityCode, row.gridAreaCode ?? '', row.townCode ?? '', row.village ?? '']); | ||||||
|   crudRef.value.rowEdit(row); |   crudRef.value.rowEdit(row); | ||||||
| }; | }; | ||||||
| const rowUpdate = (row, index, done, loading) => { | const rowUpdate = (row, index, done, loading) => { | ||||||
|  | |||||||
							
								
								
									
										383
									
								
								sub-government-affairs-service/src/views/resource/plan/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										383
									
								
								sub-government-affairs-service/src/views/resource/plan/index.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,383 @@ | |||||||
|  | <template> | ||||||
|  |   <div class="custom-page"> | ||||||
|  |     <avue-crud | ||||||
|  |       ref="crudRef" | ||||||
|  |       v-model="state.form" | ||||||
|  |       v-model:search="state.query" | ||||||
|  |       v-model:page="state.pageData" | ||||||
|  |       :table-loading="state.loading" | ||||||
|  |       :data="state.data" | ||||||
|  |       :option="state.options" | ||||||
|  |       @refresh-change="refreshChange" | ||||||
|  |       @search-reset="searchChange" | ||||||
|  |       @search-change="searchChange" | ||||||
|  |       @selection-change="selectionChange" | ||||||
|  |       @current-change="currentChange" | ||||||
|  |       @size-change="sizeChange" | ||||||
|  |       @row-save="rowSave" | ||||||
|  |       @row-update="rowUpdate" | ||||||
|  |       @row-del="rowDel" | ||||||
|  |     > | ||||||
|  |       <template #menu-left> | ||||||
|  |         <el-button type="success" icon="download" @click="onExport">导出</el-button> | ||||||
|  |       </template> | ||||||
|  | 
 | ||||||
|  |       <template #menu="scope"> | ||||||
|  |         <custom-table-operate :actions="state.options.actions" :data="scope" /> | ||||||
|  |       </template> | ||||||
|  |     </avue-crud> | ||||||
|  |   </div> | ||||||
|  | </template> | ||||||
|  | <script setup> | ||||||
|  | import { reactive, ref } from 'vue'; | ||||||
|  | import { useApp } from '@/hooks'; | ||||||
|  | import { CRUD_OPTIONS } from '@/config'; | ||||||
|  | import { isEmpty, downloadFile } from '@/utils'; | ||||||
|  | import { useUserStore } from '@/store/modules/user'; | ||||||
|  | import { compact } from 'lodash'; | ||||||
|  | import { GetEntityList, AddEntity, AuditEntity, UpdateEntity, DeleteEntity, ExportEntity } from '@/apis/plan'; | ||||||
|  | 
 | ||||||
|  | const { VITE_APP_BASE_API } = import.meta.env; | ||||||
|  | const app = useApp(); | ||||||
|  | const UserStore = useUserStore(); | ||||||
|  | const crudRef = ref(null); | ||||||
|  | const state = reactive({ | ||||||
|  |   loading: false, | ||||||
|  |   query: { | ||||||
|  |     current: 1, | ||||||
|  |     size: 10, | ||||||
|  |   }, | ||||||
|  |   form: {}, | ||||||
|  |   selection: [], | ||||||
|  |   options: { | ||||||
|  |     ...CRUD_OPTIONS, | ||||||
|  |     addBtnText: '添加计划', | ||||||
|  |     column: [ | ||||||
|  |       { | ||||||
|  |         label: '计划编号', | ||||||
|  |         prop: 'id', | ||||||
|  |         search: true, | ||||||
|  |         addDisplay: false, | ||||||
|  |         editDisplay: false, | ||||||
|  |         viewDisplay: true, | ||||||
|  |         width: 200, | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         label: '计划名称', | ||||||
|  |         prop: 'planName', | ||||||
|  |         search: true, | ||||||
|  |         width: 200, | ||||||
|  |         rules: { | ||||||
|  |           required: true, | ||||||
|  |           message: '请输入', | ||||||
|  |           trigger: 'blur', | ||||||
|  |         }, | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         label: '种植面积(亩)', | ||||||
|  |         prop: 'plantingArea', | ||||||
|  |         rules: { | ||||||
|  |           required: true, | ||||||
|  |           message: '请输入', | ||||||
|  |           trigger: 'blur', | ||||||
|  |         }, | ||||||
|  |         formatter: (row) => { | ||||||
|  |           return row?.plantingArea ? row.plantingArea + '亩' : ''; | ||||||
|  |         }, | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         label: '种植月份', | ||||||
|  |         prop: 'plantingMonths', | ||||||
|  |         type: 'select', | ||||||
|  |         dicData: [ | ||||||
|  |           { label: '1月', value: '1月' }, | ||||||
|  |           { label: '2月', value: '2月' }, | ||||||
|  |           { label: '3月', value: '3月' }, | ||||||
|  |           { label: '4月', value: '4月' }, | ||||||
|  |           { label: '5月', value: '5月' }, | ||||||
|  |           { label: '6月', value: '6月' }, | ||||||
|  |           { label: '7月', value: '7月' }, | ||||||
|  |           { label: '8月', value: '8月' }, | ||||||
|  |           { label: '9月', value: '9月' }, | ||||||
|  |           { label: '10月', value: '10月' }, | ||||||
|  |           { label: '11月', value: '11月' }, | ||||||
|  |           { label: '12月', value: '12月' }, | ||||||
|  |         ], | ||||||
|  |         rules: { | ||||||
|  |           required: true, | ||||||
|  |           message: '请输入', | ||||||
|  |           trigger: 'blur', | ||||||
|  |         }, | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         label: '生长周期', | ||||||
|  |         prop: 'growthCycle', | ||||||
|  |         labelTip: '如:10周-12周', | ||||||
|  |         rules: { | ||||||
|  |           required: true, | ||||||
|  |           message: '请输入', | ||||||
|  |           trigger: 'blur', | ||||||
|  |         }, | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         label: '计划进度', | ||||||
|  |         prop: 'planProgress', | ||||||
|  |         addDisplay: false, | ||||||
|  |         editDisplay: false, | ||||||
|  |         viewDisplay: true, | ||||||
|  |         rules: { | ||||||
|  |           required: true, | ||||||
|  |           message: '请输入', | ||||||
|  |           trigger: 'blur', | ||||||
|  |         }, | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         label: '状态', | ||||||
|  |         prop: 'planStatus', | ||||||
|  |         type: 'select', | ||||||
|  |         addDisplay: false, | ||||||
|  |         editDisplay: false, | ||||||
|  |         viewDisplay: true, | ||||||
|  |         dicData: [ | ||||||
|  |           { | ||||||
|  |             label: '待提交', | ||||||
|  |             value: 1, | ||||||
|  |           }, | ||||||
|  |           { | ||||||
|  |             label: '已提交', | ||||||
|  |             value: 2, | ||||||
|  |           }, | ||||||
|  |           { | ||||||
|  |             label: '审核通过', | ||||||
|  |             value: 3, | ||||||
|  |           }, | ||||||
|  |           { | ||||||
|  |             label: '审核拒绝', | ||||||
|  |             value: 4, | ||||||
|  |           }, | ||||||
|  |         ], | ||||||
|  |         rules: { | ||||||
|  |           required: true, | ||||||
|  |           message: '请输入', | ||||||
|  |           trigger: 'blur', | ||||||
|  |         }, | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         label: '备注', | ||||||
|  |         prop: 'note', | ||||||
|  |         type: 'textarea', | ||||||
|  |         span: 24, | ||||||
|  |         rows: 4, | ||||||
|  |         overHidden: true, | ||||||
|  |         width: 200, | ||||||
|  |       }, | ||||||
|  |     ], | ||||||
|  |     actions: [ | ||||||
|  |       { | ||||||
|  |         name: '查看', | ||||||
|  |         icon: 'view', | ||||||
|  |         event: ({ row }) => rowView(row), | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         name: '编辑', | ||||||
|  |         icon: 'edit', | ||||||
|  |         event: ({ row }) => rowEdit(row), | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         type: 'danger', | ||||||
|  |         name: '删除', | ||||||
|  |         icon: 'delete', | ||||||
|  |         event: ({ row }) => rowDel(row), | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         name: '审核通过', | ||||||
|  |         type: 'success', | ||||||
|  |         icon: 'check', | ||||||
|  |         event: ({ row }) => rowCheck(row, 4), | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         name: '审核拒绝', | ||||||
|  |         type: 'danger', | ||||||
|  |         icon: 'close', | ||||||
|  |         event: ({ row }) => rowCheck(row, 3), | ||||||
|  |       }, | ||||||
|  |     ], | ||||||
|  |   }, | ||||||
|  |   pageData: { | ||||||
|  |     total: 0, | ||||||
|  |     currentPage: 1, | ||||||
|  |     pageSize: 10, | ||||||
|  |   }, | ||||||
|  |   data: [], | ||||||
|  |   minWeek: null, | ||||||
|  |   maxWeek: null, | ||||||
|  |   currentRow: {}, | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | // 加载 | ||||||
|  | const loadData = () => { | ||||||
|  |   state.loading = true; | ||||||
|  |   GetEntityList(state.query) | ||||||
|  |     .then((res) => { | ||||||
|  |       if (res.code === 200) { | ||||||
|  |         const { current, size, total, records } = res.data; | ||||||
|  |         state.data = records; | ||||||
|  |         state.pageData = { | ||||||
|  |           currentPage: current || 1, | ||||||
|  |           pageSize: size || 10, | ||||||
|  |           total: total, | ||||||
|  |         }; | ||||||
|  |       } | ||||||
|  |     }) | ||||||
|  |     .catch((err) => { | ||||||
|  |       app.$message.error(err.msg); | ||||||
|  |       state.data = []; | ||||||
|  |     }) | ||||||
|  |     .finally(() => { | ||||||
|  |       state.loading = false; | ||||||
|  |     }); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | loadData(); | ||||||
|  | 
 | ||||||
|  | // 页数 | ||||||
|  | const currentChange = (current) => { | ||||||
|  |   state.query.current = current; | ||||||
|  |   loadData(); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | // 条数 | ||||||
|  | const sizeChange = (size) => { | ||||||
|  |   state.query.size = size; | ||||||
|  |   loadData(); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | // 搜索 | ||||||
|  | const searchChange = (params, done) => { | ||||||
|  |   if (done) done(); | ||||||
|  |   state.query = params; | ||||||
|  |   state.query.current = 1; | ||||||
|  |   loadData(); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | // 刷新 | ||||||
|  | const refreshChange = () => { | ||||||
|  |   loadData(); | ||||||
|  |   app.$message.success('刷新成功'); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | // 选择 | ||||||
|  | const selectionChange = (rows) => { | ||||||
|  |   state.selection = rows; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | // 查看 | ||||||
|  | const rowView = (row) => { | ||||||
|  |   // state.currentRow = row; | ||||||
|  |   crudRef.value.rowView(row); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | // 新增 | ||||||
|  | const rowSave = (row, done, loading) => { | ||||||
|  |   AddEntity(row) | ||||||
|  |     .then((res) => { | ||||||
|  |       if (res.code === 200) { | ||||||
|  |         app.$message.success('添加成功!'); | ||||||
|  |         done(); | ||||||
|  |         loadData(); | ||||||
|  |       } | ||||||
|  |     }) | ||||||
|  |     .catch((err) => { | ||||||
|  |       app.$message.error(err.msg); | ||||||
|  |     }) | ||||||
|  |     .finally(() => { | ||||||
|  |       loading(); | ||||||
|  |     }); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | // 编辑 | ||||||
|  | const rowEdit = (row) => { | ||||||
|  |   crudRef.value.rowEdit(row); | ||||||
|  | }; | ||||||
|  | const rowUpdate = (row, index, done, loading) => { | ||||||
|  |   UpdateEntity(row) | ||||||
|  |     .then((res) => { | ||||||
|  |       if (res.code === 200) { | ||||||
|  |         app.$message.success('更新成功!'); | ||||||
|  |         done(); | ||||||
|  |         loadData(); | ||||||
|  |       } | ||||||
|  |     }) | ||||||
|  |     .catch((err) => { | ||||||
|  |       app.$message.error(err.msg); | ||||||
|  |     }) | ||||||
|  |     .finally(() => { | ||||||
|  |       loading(); | ||||||
|  |     }); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | // 删除 | ||||||
|  | const rowDel = (row, index, done) => { | ||||||
|  |   if (isEmpty(row)) return; | ||||||
|  |   app | ||||||
|  |     .$confirm(`删除后信息将不可查看,确认要删除吗?`, '确定删除', { | ||||||
|  |       confirmButtonText: '确定', | ||||||
|  |       cancelButtonText: '取消', | ||||||
|  |       type: 'warning', | ||||||
|  |     }) | ||||||
|  |     .then(() => { | ||||||
|  |       DeleteEntity({ id: row.id }) | ||||||
|  |         .then((res) => { | ||||||
|  |           if (res.code === 200) { | ||||||
|  |             app.$message.success('删除成功!'); | ||||||
|  |             done(); | ||||||
|  |             loadData(); | ||||||
|  |           } | ||||||
|  |         }) | ||||||
|  |         .catch((err) => { | ||||||
|  |           app.$message.error(err.msg); | ||||||
|  |         }); | ||||||
|  |     }) | ||||||
|  |     .catch(() => {}); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | // 审核 | ||||||
|  | const rowCheck = (row, status) => { | ||||||
|  |   const data = { id: row.id, planStatus: status }; | ||||||
|  |   AuditEntity(data) | ||||||
|  |     .then((res) => { | ||||||
|  |       if (res.code === 200) { | ||||||
|  |         app.$message.success('操作成功!'); | ||||||
|  |       } | ||||||
|  |     }) | ||||||
|  |     .catch((err) => { | ||||||
|  |       app.$message.error(err.msg); | ||||||
|  |     }) | ||||||
|  |     .finally(() => { | ||||||
|  |       loadData(); | ||||||
|  |     }); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | // 导出 | ||||||
|  | const onExport = () => { | ||||||
|  |   if (isEmpty(state.data)) { | ||||||
|  |     app.$message.error('当前暂时没有可供导出的数据!'); | ||||||
|  |     return; | ||||||
|  |   } | ||||||
|  |   state.loading = true; | ||||||
|  |   const fileName = '年度计划明细表'; | ||||||
|  |   ExportEntity(state.query) | ||||||
|  |     .then((res) => { | ||||||
|  |       if (res.status === 200) { | ||||||
|  |         downloadFile(res.data, `${fileName}.xlsx`, 'blob'); | ||||||
|  |         app.$message.success('导出成功!'); | ||||||
|  |       } | ||||||
|  |     }) | ||||||
|  |     .catch((err) => { | ||||||
|  |       app.$message.error('导出失败!'); | ||||||
|  |     }) | ||||||
|  |     .finally(() => { | ||||||
|  |       state.loading = false; | ||||||
|  |     }); | ||||||
|  | }; | ||||||
|  | </script> | ||||||
| @ -23,6 +23,11 @@ | |||||||
|         <el-button type="success" icon="upload" @click="onUpload">导入</el-button> |         <el-button type="success" icon="upload" @click="onUpload">导入</el-button> | ||||||
|         <el-button type="success" icon="download" @click="onExport">导出</el-button> |         <el-button type="success" icon="download" @click="onExport">导出</el-button> | ||||||
|       </template> |       </template> | ||||||
|  | 
 | ||||||
|  |       <template #id="{ row }"> | ||||||
|  |         <el-image style="width: 50px; height: 50px; cursor: pointer" :src="row.orCodeUrl" fit="cover" lazy @click="onViewCode(row)" /> | ||||||
|  |       </template> | ||||||
|  | 
 | ||||||
|       <template #productUrl-form="{ column }"> |       <template #productUrl-form="{ column }"> | ||||||
|         <el-upload class="custom-form__uploader" action="#" :show-file-list="false" accept="image/*" :limit="1" :http-request="rowUploadPicture"> |         <el-upload class="custom-form__uploader" action="#" :show-file-list="false" accept="image/*" :limit="1" :http-request="rowUploadPicture"> | ||||||
|           <img v-if="state.form.base64" :src="state.form.base64" class="custom-form__uploader__img" /> |           <img v-if="state.form.base64" :src="state.form.base64" class="custom-form__uploader__img" /> | ||||||
| @ -56,6 +61,8 @@ | |||||||
|       @on-confirm="onUploadExcel" |       @on-confirm="onUploadExcel" | ||||||
|     /> |     /> | ||||||
| 
 | 
 | ||||||
|  |     <code-dialog ref="codeRef" :row="state.currentRow" /> | ||||||
|  | 
 | ||||||
|     <custom-quality-add ref="qualityAddRef" :row="state.currentRow" /> |     <custom-quality-add ref="qualityAddRef" :row="state.currentRow" /> | ||||||
|   </div> |   </div> | ||||||
|   <!-- <el-dialog v-model="qrInfo.show" title="扫码溯源" width="500" :before-close="() => (qrInfo.show = false)"> |   <!-- <el-dialog v-model="qrInfo.show" title="扫码溯源" width="500" :before-close="() => (qrInfo.show = false)"> | ||||||
| @ -80,6 +87,7 @@ const UserStore = useUserStore(); | |||||||
| const crudRef = ref(null); | const crudRef = ref(null); | ||||||
| const importExcelRef = ref(null); | const importExcelRef = ref(null); | ||||||
| const qualityAddRef = ref(null); | const qualityAddRef = ref(null); | ||||||
|  | const codeRef = ref(null); | ||||||
| const state = reactive({ | const state = reactive({ | ||||||
|   loading: false, |   loading: false, | ||||||
|   query: { |   query: { | ||||||
| @ -99,7 +107,6 @@ const state = reactive({ | |||||||
|         addDisplay: false, |         addDisplay: false, | ||||||
|         editDisplay: false, |         editDisplay: false, | ||||||
|         viewDisplay: true, |         viewDisplay: true, | ||||||
|         width: 200, |  | ||||||
|       }, |       }, | ||||||
|       { |       { | ||||||
|         label: '采收批次', |         label: '采收批次', | ||||||
| @ -285,7 +292,7 @@ const state = reactive({ | |||||||
|         label: '原产地详细地址', |         label: '原产地详细地址', | ||||||
|         prop: 'originAddressDetail', |         prop: 'originAddressDetail', | ||||||
|         hide: true, |         hide: true, | ||||||
|         // span: 24, |         viewDisplay: false, | ||||||
|       }, |       }, | ||||||
|       // { |       // { | ||||||
|       //   label: '经营主体', |       //   label: '经营主体', | ||||||
| @ -620,15 +627,8 @@ const onExport = () => { | |||||||
|     }); |     }); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| const qrInfo = reactive({ | const onViewCode = (row) => { | ||||||
|   url: '1111111111111111111111111111111111111111', |   state.currentRow = row; | ||||||
|   show: true, |   codeRef?.value && codeRef.value.show(); | ||||||
| }); | }; | ||||||
| 
 |  | ||||||
| function handleShowQrcode(id) { |  | ||||||
|   // a.value = a.value + 1; |  | ||||||
|   qrInfo.url = id; |  | ||||||
|   qrInfo.show = true; |  | ||||||
|   console.log('cell', qrInfo); |  | ||||||
| } |  | ||||||
| </script> | </script> | ||||||
|  | |||||||
| @ -22,6 +22,10 @@ | |||||||
|         <el-button type="danger" icon="delete" @click="onDel(state.selection)">批量删除</el-button> |         <el-button type="danger" icon="delete" @click="onDel(state.selection)">批量删除</el-button> | ||||||
|       </template> |       </template> | ||||||
| 
 | 
 | ||||||
|  |       <template #harvestId="{ row }"> | ||||||
|  |         <el-image style="width: 50px; height: 50px; cursor: pointer" :src="row.orCodeUrl" fit="cover" lazy @click="onViewCode(row)" /> | ||||||
|  |       </template> | ||||||
|  | 
 | ||||||
|       <template #qualityReportUrl="{ row }"> |       <template #qualityReportUrl="{ row }"> | ||||||
|         <el-button |         <el-button | ||||||
|           v-if="row.qualityReportUrl" |           v-if="row.qualityReportUrl" | ||||||
| @ -45,6 +49,8 @@ | |||||||
|         <custom-table-operate :actions="state.options.actions" :data="scope" /> |         <custom-table-operate :actions="state.options.actions" :data="scope" /> | ||||||
|       </template> |       </template> | ||||||
|     </avue-crud> |     </avue-crud> | ||||||
|  | 
 | ||||||
|  |     <code-dialog ref="codeRef" :row="state.currentRow" /> | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
| <script setup> | <script setup> | ||||||
| @ -57,6 +63,7 @@ import { GetEntityList, AddEntity, UpdateEntity, DeleteEntity } from '@/apis/qua | |||||||
| 
 | 
 | ||||||
| const app = useApp(); | const app = useApp(); | ||||||
| const crudRef = ref(null); | const crudRef = ref(null); | ||||||
|  | const codeRef = ref(null); | ||||||
| const state = reactive({ | const state = reactive({ | ||||||
|   loading: false, |   loading: false, | ||||||
|   query: { |   query: { | ||||||
| @ -74,7 +81,6 @@ const state = reactive({ | |||||||
|         prop: 'harvestId', |         prop: 'harvestId', | ||||||
|         search: true, |         search: true, | ||||||
|         disabled: true, |         disabled: true, | ||||||
|         width: 200, |  | ||||||
|       }, |       }, | ||||||
|       { |       { | ||||||
|         label: '采收批次', |         label: '采收批次', | ||||||
| @ -249,6 +255,7 @@ const state = reactive({ | |||||||
|     pageSize: 10, |     pageSize: 10, | ||||||
|   }, |   }, | ||||||
|   data: [], |   data: [], | ||||||
|  |   currentRow: {}, | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| // 加载 | // 加载 | ||||||
| @ -405,4 +412,9 @@ const onDel = (rows = []) => { | |||||||
| const rowDel = (row, index, done) => { | const rowDel = (row, index, done) => { | ||||||
|   onDel([row]); |   onDel([row]); | ||||||
| }; | }; | ||||||
|  | 
 | ||||||
|  | const onViewCode = (row) => { | ||||||
|  |   state.currentRow = row; | ||||||
|  |   codeRef?.value && codeRef.value.show(); | ||||||
|  | }; | ||||||
| </script> | </script> | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ | |||||||
|  * @Author: zenghua.wang |  * @Author: zenghua.wang | ||||||
|  * @Date: 2022-09-18 21:24:29 |  * @Date: 2022-09-18 21:24:29 | ||||||
|  * @LastEditors: zenghua.wang |  * @LastEditors: zenghua.wang | ||||||
|  * @LastEditTime: 2025-02-17 10:58:12 |  * @LastEditTime: 2025-02-27 09:16:00 | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import { defineConfig, loadEnv } from 'vite'; | import { defineConfig, loadEnv } from 'vite'; | ||||||
| @ -23,46 +23,37 @@ import { resolve } from 'path'; | |||||||
| const useDevMode = true; | const useDevMode = true; | ||||||
| 
 | 
 | ||||||
| export default defineConfig(({ command, mode }) => { | export default defineConfig(({ command, mode }) => { | ||||||
|   const { |   const { VITE_PORT, VITE_APP_NAME, VITE_APP_BASE_API, VITE_APP_BASE_URL, VITE_APP_UPLOAD_API, VITE_APP_UPLOAD_URL } = loadEnv(mode, process.cwd()); | ||||||
|     VITE_PORT, |  | ||||||
|     VITE_APP_NAME, |  | ||||||
|     VITE_APP_BASE_API, |  | ||||||
|     VITE_APP_BASE_URL, |  | ||||||
|     VITE_APP_UPLOAD_API, |  | ||||||
|     VITE_APP_UPLOAD_URL, |  | ||||||
|     VITE_APP_SYSTEM_API, |  | ||||||
|     VITE_APP_SYSTEM_URL, |  | ||||||
|   } = loadEnv(mode, process.cwd()); |  | ||||||
|   const config = { |   const config = { | ||||||
|     base: '/sub-government-affairs-service/', |     base: '/sub-government-affairs-service/', | ||||||
|     build: { |     build: { | ||||||
|       target: 'ESNext', |       target: 'ESNext', | ||||||
|       outDir: 'dist', |       outDir: 'dist', | ||||||
|       minify: 'terser', |       minify: 'terser', | ||||||
|       // terserOptions: {
 |       terserOptions: { | ||||||
|       //   compress: {
 |         compress: { | ||||||
|       //     drop_console: true,
 |           drop_console: true, | ||||||
|       //     drop_debugger: true,
 |           drop_debugger: true, | ||||||
|       //     pure_funcs: ['console.log'],
 |           pure_funcs: ['console.log'], | ||||||
|       //   },
 |         }, | ||||||
|       //   output: {
 |         output: { | ||||||
|       //     comments: true,
 |           comments: true, | ||||||
|       //   },
 |         }, | ||||||
|       // },
 |       }, | ||||||
|       // reportCompressedSize: false,
 |       reportCompressedSize: false, | ||||||
|       // chunkSizeWarningLimit: 2000,
 |       chunkSizeWarningLimit: 2000, | ||||||
|       // rollupOptions: {
 |       rollupOptions: { | ||||||
|       //   output: {
 |         output: { | ||||||
|       //     manualChunks(id) {
 |           manualChunks(id) { | ||||||
|       //       if (id.includes('node_modules')) {
 |             if (id.includes('node_modules')) { | ||||||
|       //         return id.toString().split('node_modules/')[1].split('/')[1].toString();
 |               return id.toString().split('node_modules/')[1].split('/')[1].toString(); | ||||||
|       //       }
 |             } | ||||||
|       //     },
 |           }, | ||||||
|       //     chunkFileNames: 'assets/js/[name]-[hash].js',
 |           chunkFileNames: 'assets/js/[name]-[hash].js', | ||||||
|       //     entryFileNames: 'assets/js/[name]-[hash].js',
 |           entryFileNames: 'assets/js/[name]-[hash].js', | ||||||
|       //     assetFileNames: 'assets/[ext]/[name]-[hash].[ext]',
 |           assetFileNames: 'assets/[ext]/[name]-[hash].[ext]', | ||||||
|       //   },
 |         }, | ||||||
|       // },
 |       }, | ||||||
|     }, |     }, | ||||||
|     server: { |     server: { | ||||||
|       host: '0.0.0.0', |       host: '0.0.0.0', | ||||||
| @ -83,11 +74,6 @@ export default defineConfig(({ command, mode }) => { | |||||||
|           changeOrigin: true, |           changeOrigin: true, | ||||||
|           rewrite: (path) => path.replace(/^\/uploadApis/, ''), |           rewrite: (path) => path.replace(/^\/uploadApis/, ''), | ||||||
|         }, |         }, | ||||||
|         [VITE_APP_SYSTEM_API]: { |  | ||||||
|           target: VITE_APP_SYSTEM_URL, |  | ||||||
|           changeOrigin: true, |  | ||||||
|           rewrite: (path) => path.replace(/^\/systemApis/, ''), |  | ||||||
|         }, |  | ||||||
|       }, |       }, | ||||||
|     }, |     }, | ||||||
|     resolve: { |     resolve: { | ||||||
| @ -142,13 +128,5 @@ export default defineConfig(({ command, mode }) => { | |||||||
|       }), |       }), | ||||||
|     ], |     ], | ||||||
|   }; |   }; | ||||||
|   if (mode === 'production') { |  | ||||||
|     config.build.terserOptions = { |  | ||||||
|       compress: { |  | ||||||
|         drop_console: true, |  | ||||||
|         drop_debugger: true, |  | ||||||
|       }, |  | ||||||
|     }; |  | ||||||
|   } |  | ||||||
|   return config; |   return config; | ||||||
| }); | }); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 lzc
						lzc