管理人页面修改
This commit is contained in:
31
.gitignore
vendored
31
.gitignore
vendored
@ -1,24 +1,11 @@
|
|||||||
.DS_Store
|
# 忽略 node_modules 文件夹
|
||||||
node_modules
|
node_modules/
|
||||||
# dist/
|
|
||||||
# build/
|
|
||||||
gsxt/
|
|
||||||
|
|
||||||
# local env files
|
# 可选:你也可能想忽略其他常见文件
|
||||||
|
npm-debug.log
|
||||||
|
.yarn-integrity
|
||||||
|
.yarn/
|
||||||
|
dist/
|
||||||
|
build/
|
||||||
.env.local
|
.env.local
|
||||||
.env.*.local
|
*.log
|
||||||
|
|
||||||
# Log files
|
|
||||||
npm-debug.log*
|
|
||||||
yarn-debug.log*
|
|
||||||
yarn-error.log*
|
|
||||||
pnpm-debug.log*
|
|
||||||
|
|
||||||
# Editor directories and files
|
|
||||||
.idea
|
|
||||||
.vscode
|
|
||||||
*.suo
|
|
||||||
*.ntvs*
|
|
||||||
*.njsproj
|
|
||||||
*.sln
|
|
||||||
*.sw?
|
|
396
package-lock.json
generated
396
package-lock.json
generated
@ -27,7 +27,6 @@
|
|||||||
"el-table-infinite-scroll": "^3.0.6",
|
"el-table-infinite-scroll": "^3.0.6",
|
||||||
"element-plus": "2.0.2",
|
"element-plus": "2.0.2",
|
||||||
"file-saver": "^2.0.5",
|
"file-saver": "^2.0.5",
|
||||||
"fzui-fengqun-vue": "^1.0.1",
|
|
||||||
"gifler": "^0.1.0",
|
"gifler": "^0.1.0",
|
||||||
"image-compressor.js": "^1.1.4",
|
"image-compressor.js": "^1.1.4",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
@ -9422,222 +9421,6 @@
|
|||||||
"node": ">=10"
|
"node": ">=10"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/fzui-fengqun-api": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/fzui-fengqun-api/-/fzui-fengqun-api-1.0.1.tgz",
|
|
||||||
"integrity": "sha512-YjcHnNJgBsuSJwmHFetovRT20Gw/6DRrvzMFsAgQe81zX1El5ckGE6vA4zTld8LUDiSHWdrc618hNlcjC3A7qA==",
|
|
||||||
"dependencies": {
|
|
||||||
"core-js": "^3.6.5",
|
|
||||||
"vue": "^2.6.11"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/fzui-fengqun-api/node_modules/@babel/helper-validator-identifier": {
|
|
||||||
"version": "7.27.1",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
|
|
||||||
"integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.9.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/fzui-fengqun-api/node_modules/@babel/parser": {
|
|
||||||
"version": "7.28.0",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@babel/parser/-/parser-7.28.0.tgz",
|
|
||||||
"integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==",
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/types": "^7.28.0"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"parser": "bin/babel-parser.js"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/fzui-fengqun-api/node_modules/@babel/types": {
|
|
||||||
"version": "7.28.2",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@babel/types/-/types-7.28.2.tgz",
|
|
||||||
"integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==",
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/helper-string-parser": "^7.27.1",
|
|
||||||
"@babel/helper-validator-identifier": "^7.27.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.9.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/fzui-fengqun-api/node_modules/@vue/compiler-sfc": {
|
|
||||||
"version": "2.7.16",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz",
|
|
||||||
"integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==",
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/parser": "^7.23.5",
|
|
||||||
"postcss": "^8.4.14",
|
|
||||||
"source-map": "^0.6.1"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"prettier": "^1.18.2 || ^2.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/fzui-fengqun-api/node_modules/csstype": {
|
|
||||||
"version": "3.1.3",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/csstype/-/csstype-3.1.3.tgz",
|
|
||||||
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
|
|
||||||
},
|
|
||||||
"node_modules/fzui-fengqun-api/node_modules/vue": {
|
|
||||||
"version": "2.7.16",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/vue/-/vue-2.7.16.tgz",
|
|
||||||
"integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==",
|
|
||||||
"deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.",
|
|
||||||
"dependencies": {
|
|
||||||
"@vue/compiler-sfc": "2.7.16",
|
|
||||||
"csstype": "^3.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/fzui-fengqun-bpm": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/fzui-fengqun-bpm/-/fzui-fengqun-bpm-1.0.1.tgz",
|
|
||||||
"integrity": "sha512-Ym3vvUf39oNAQew+5ZFFWWCQnM68jue8NvzNtxxFHElHzdiym4fY3Ged1VYpYyaeGeNMbADKKlxNKLy/6Yj1ig==",
|
|
||||||
"dependencies": {
|
|
||||||
"core-js": "^3.6.5",
|
|
||||||
"fzui-fengqun-api": "^1.0.1",
|
|
||||||
"vue": "^2.6.11"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/fzui-fengqun-bpm/node_modules/@babel/helper-validator-identifier": {
|
|
||||||
"version": "7.27.1",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
|
|
||||||
"integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.9.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/fzui-fengqun-bpm/node_modules/@babel/parser": {
|
|
||||||
"version": "7.28.0",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@babel/parser/-/parser-7.28.0.tgz",
|
|
||||||
"integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==",
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/types": "^7.28.0"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"parser": "bin/babel-parser.js"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/fzui-fengqun-bpm/node_modules/@babel/types": {
|
|
||||||
"version": "7.28.2",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@babel/types/-/types-7.28.2.tgz",
|
|
||||||
"integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==",
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/helper-string-parser": "^7.27.1",
|
|
||||||
"@babel/helper-validator-identifier": "^7.27.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.9.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/fzui-fengqun-bpm/node_modules/@vue/compiler-sfc": {
|
|
||||||
"version": "2.7.16",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz",
|
|
||||||
"integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==",
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/parser": "^7.23.5",
|
|
||||||
"postcss": "^8.4.14",
|
|
||||||
"source-map": "^0.6.1"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"prettier": "^1.18.2 || ^2.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/fzui-fengqun-bpm/node_modules/csstype": {
|
|
||||||
"version": "3.1.3",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/csstype/-/csstype-3.1.3.tgz",
|
|
||||||
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
|
|
||||||
},
|
|
||||||
"node_modules/fzui-fengqun-bpm/node_modules/vue": {
|
|
||||||
"version": "2.7.16",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/vue/-/vue-2.7.16.tgz",
|
|
||||||
"integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==",
|
|
||||||
"deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.",
|
|
||||||
"dependencies": {
|
|
||||||
"@vue/compiler-sfc": "2.7.16",
|
|
||||||
"csstype": "^3.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/fzui-fengqun-vue": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/fzui-fengqun-vue/-/fzui-fengqun-vue-1.0.1.tgz",
|
|
||||||
"integrity": "sha512-UFrs02ShB9+fmEa9kuX7QLg837N1GOPURX9gRKukIM9V1dsilea1+pU/iPu8irGgE5arkOEnsm8LilxfnMILAA==",
|
|
||||||
"dependencies": {
|
|
||||||
"core-js": "^3.6.5",
|
|
||||||
"fzui-fengqun-api": "^1.0.1",
|
|
||||||
"fzui-fengqun-bpm": "^1.0.1",
|
|
||||||
"vue": "^2.6.11"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/fzui-fengqun-vue/node_modules/@babel/helper-validator-identifier": {
|
|
||||||
"version": "7.27.1",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
|
|
||||||
"integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.9.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/fzui-fengqun-vue/node_modules/@babel/parser": {
|
|
||||||
"version": "7.28.0",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@babel/parser/-/parser-7.28.0.tgz",
|
|
||||||
"integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==",
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/types": "^7.28.0"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"parser": "bin/babel-parser.js"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/fzui-fengqun-vue/node_modules/@babel/types": {
|
|
||||||
"version": "7.28.2",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@babel/types/-/types-7.28.2.tgz",
|
|
||||||
"integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==",
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/helper-string-parser": "^7.27.1",
|
|
||||||
"@babel/helper-validator-identifier": "^7.27.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.9.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/fzui-fengqun-vue/node_modules/@vue/compiler-sfc": {
|
|
||||||
"version": "2.7.16",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz",
|
|
||||||
"integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==",
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/parser": "^7.23.5",
|
|
||||||
"postcss": "^8.4.14",
|
|
||||||
"source-map": "^0.6.1"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"prettier": "^1.18.2 || ^2.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/fzui-fengqun-vue/node_modules/csstype": {
|
|
||||||
"version": "3.1.3",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/csstype/-/csstype-3.1.3.tgz",
|
|
||||||
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
|
|
||||||
},
|
|
||||||
"node_modules/fzui-fengqun-vue/node_modules/vue": {
|
|
||||||
"version": "2.7.16",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/vue/-/vue-2.7.16.tgz",
|
|
||||||
"integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==",
|
|
||||||
"deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.",
|
|
||||||
"dependencies": {
|
|
||||||
"@vue/compiler-sfc": "2.7.16",
|
|
||||||
"csstype": "^3.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/gensync": {
|
"node_modules/gensync": {
|
||||||
"version": "1.0.0-beta.2",
|
"version": "1.0.0-beta.2",
|
||||||
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
|
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
|
||||||
@ -15712,6 +15495,7 @@
|
|||||||
"version": "2.7.1",
|
"version": "2.7.1",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz",
|
||||||
"integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==",
|
"integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==",
|
||||||
|
"dev": true,
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"prettier": "bin-prettier.js"
|
"prettier": "bin-prettier.js"
|
||||||
@ -28169,183 +27953,6 @@
|
|||||||
"integrity": "sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==",
|
"integrity": "sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"fzui-fengqun-api": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/fzui-fengqun-api/-/fzui-fengqun-api-1.0.1.tgz",
|
|
||||||
"integrity": "sha512-YjcHnNJgBsuSJwmHFetovRT20Gw/6DRrvzMFsAgQe81zX1El5ckGE6vA4zTld8LUDiSHWdrc618hNlcjC3A7qA==",
|
|
||||||
"requires": {
|
|
||||||
"core-js": "^3.6.5",
|
|
||||||
"vue": "^2.6.11"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/helper-validator-identifier": {
|
|
||||||
"version": "7.27.1",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
|
|
||||||
"integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="
|
|
||||||
},
|
|
||||||
"@babel/parser": {
|
|
||||||
"version": "7.28.0",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@babel/parser/-/parser-7.28.0.tgz",
|
|
||||||
"integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==",
|
|
||||||
"requires": {
|
|
||||||
"@babel/types": "^7.28.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@babel/types": {
|
|
||||||
"version": "7.28.2",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@babel/types/-/types-7.28.2.tgz",
|
|
||||||
"integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==",
|
|
||||||
"requires": {
|
|
||||||
"@babel/helper-string-parser": "^7.27.1",
|
|
||||||
"@babel/helper-validator-identifier": "^7.27.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@vue/compiler-sfc": {
|
|
||||||
"version": "2.7.16",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz",
|
|
||||||
"integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==",
|
|
||||||
"requires": {
|
|
||||||
"@babel/parser": "^7.23.5",
|
|
||||||
"postcss": "^8.4.14",
|
|
||||||
"prettier": "^1.18.2 || ^2.0.0",
|
|
||||||
"source-map": "^0.6.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"csstype": {
|
|
||||||
"version": "3.1.3",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/csstype/-/csstype-3.1.3.tgz",
|
|
||||||
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
|
|
||||||
},
|
|
||||||
"vue": {
|
|
||||||
"version": "2.7.16",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/vue/-/vue-2.7.16.tgz",
|
|
||||||
"integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==",
|
|
||||||
"requires": {
|
|
||||||
"@vue/compiler-sfc": "2.7.16",
|
|
||||||
"csstype": "^3.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"fzui-fengqun-bpm": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/fzui-fengqun-bpm/-/fzui-fengqun-bpm-1.0.1.tgz",
|
|
||||||
"integrity": "sha512-Ym3vvUf39oNAQew+5ZFFWWCQnM68jue8NvzNtxxFHElHzdiym4fY3Ged1VYpYyaeGeNMbADKKlxNKLy/6Yj1ig==",
|
|
||||||
"requires": {
|
|
||||||
"core-js": "^3.6.5",
|
|
||||||
"fzui-fengqun-api": "^1.0.1",
|
|
||||||
"vue": "^2.6.11"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/helper-validator-identifier": {
|
|
||||||
"version": "7.27.1",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
|
|
||||||
"integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="
|
|
||||||
},
|
|
||||||
"@babel/parser": {
|
|
||||||
"version": "7.28.0",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@babel/parser/-/parser-7.28.0.tgz",
|
|
||||||
"integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==",
|
|
||||||
"requires": {
|
|
||||||
"@babel/types": "^7.28.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@babel/types": {
|
|
||||||
"version": "7.28.2",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@babel/types/-/types-7.28.2.tgz",
|
|
||||||
"integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==",
|
|
||||||
"requires": {
|
|
||||||
"@babel/helper-string-parser": "^7.27.1",
|
|
||||||
"@babel/helper-validator-identifier": "^7.27.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@vue/compiler-sfc": {
|
|
||||||
"version": "2.7.16",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz",
|
|
||||||
"integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==",
|
|
||||||
"requires": {
|
|
||||||
"@babel/parser": "^7.23.5",
|
|
||||||
"postcss": "^8.4.14",
|
|
||||||
"prettier": "^1.18.2 || ^2.0.0",
|
|
||||||
"source-map": "^0.6.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"csstype": {
|
|
||||||
"version": "3.1.3",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/csstype/-/csstype-3.1.3.tgz",
|
|
||||||
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
|
|
||||||
},
|
|
||||||
"vue": {
|
|
||||||
"version": "2.7.16",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/vue/-/vue-2.7.16.tgz",
|
|
||||||
"integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==",
|
|
||||||
"requires": {
|
|
||||||
"@vue/compiler-sfc": "2.7.16",
|
|
||||||
"csstype": "^3.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"fzui-fengqun-vue": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/fzui-fengqun-vue/-/fzui-fengqun-vue-1.0.1.tgz",
|
|
||||||
"integrity": "sha512-UFrs02ShB9+fmEa9kuX7QLg837N1GOPURX9gRKukIM9V1dsilea1+pU/iPu8irGgE5arkOEnsm8LilxfnMILAA==",
|
|
||||||
"requires": {
|
|
||||||
"core-js": "^3.6.5",
|
|
||||||
"fzui-fengqun-api": "^1.0.1",
|
|
||||||
"fzui-fengqun-bpm": "^1.0.1",
|
|
||||||
"vue": "^2.6.11"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/helper-validator-identifier": {
|
|
||||||
"version": "7.27.1",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
|
|
||||||
"integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="
|
|
||||||
},
|
|
||||||
"@babel/parser": {
|
|
||||||
"version": "7.28.0",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@babel/parser/-/parser-7.28.0.tgz",
|
|
||||||
"integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==",
|
|
||||||
"requires": {
|
|
||||||
"@babel/types": "^7.28.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@babel/types": {
|
|
||||||
"version": "7.28.2",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@babel/types/-/types-7.28.2.tgz",
|
|
||||||
"integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==",
|
|
||||||
"requires": {
|
|
||||||
"@babel/helper-string-parser": "^7.27.1",
|
|
||||||
"@babel/helper-validator-identifier": "^7.27.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@vue/compiler-sfc": {
|
|
||||||
"version": "2.7.16",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz",
|
|
||||||
"integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==",
|
|
||||||
"requires": {
|
|
||||||
"@babel/parser": "^7.23.5",
|
|
||||||
"postcss": "^8.4.14",
|
|
||||||
"prettier": "^1.18.2 || ^2.0.0",
|
|
||||||
"source-map": "^0.6.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"csstype": {
|
|
||||||
"version": "3.1.3",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/csstype/-/csstype-3.1.3.tgz",
|
|
||||||
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
|
|
||||||
},
|
|
||||||
"vue": {
|
|
||||||
"version": "2.7.16",
|
|
||||||
"resolved": "http://nexus.jwzh.online:9095/repository/npm-all/vue/-/vue-2.7.16.tgz",
|
|
||||||
"integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==",
|
|
||||||
"requires": {
|
|
||||||
"@vue/compiler-sfc": "2.7.16",
|
|
||||||
"csstype": "^3.1.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"gensync": {
|
"gensync": {
|
||||||
"version": "1.0.0-beta.2",
|
"version": "1.0.0-beta.2",
|
||||||
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
|
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
|
||||||
@ -33104,6 +32711,7 @@
|
|||||||
"version": "2.7.1",
|
"version": "2.7.1",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz",
|
||||||
"integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==",
|
"integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==",
|
||||||
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
"pretty-error": {
|
"pretty-error": {
|
||||||
|
@ -48,6 +48,7 @@
|
|||||||
{{ row[item.prop] }}
|
{{ row[item.prop] }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<!-- 操作 -->
|
<!-- 操作 -->
|
||||||
<el-table-column
|
<el-table-column
|
||||||
v-if="getConfiger.haveControls"
|
v-if="getConfiger.haveControls"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div class="headClass" style="">
|
<div class="headClass" style="">
|
||||||
<h3>群体管控信息</h3>
|
<h3>管控信息</h3>
|
||||||
<el-button type="primary" :disabled="disabled" @click="chooseMarksVisible = true">选择</el-button>
|
<el-button type="primary" :disabled="disabled" @click="chooseMarksVisible = true">选择</el-button>
|
||||||
</div>
|
</div>
|
||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
@ -74,6 +74,9 @@ const pageData = reactive({
|
|||||||
controlsWidth: 120,
|
controlsWidth: 120,
|
||||||
|
|
||||||
})
|
})
|
||||||
|
onMounted(() => {
|
||||||
|
console.log('ControlInfo 组件已挂载!')
|
||||||
|
})
|
||||||
const listData = ref({})
|
const listData = ref({})
|
||||||
watch(() => props.dataList, (val) => {
|
watch(() => props.dataList, (val) => {
|
||||||
if (val) {
|
if (val) {
|
||||||
|
@ -10,34 +10,109 @@
|
|||||||
<div class="form_cnt flex just-between">
|
<div class="form_cnt flex just-between">
|
||||||
<div class="left_box">
|
<div class="left_box">
|
||||||
<ul class="anchor-list">
|
<ul class="anchor-list">
|
||||||
<li @click="scrollToSection('info-section')" :class="activeSection === 'info-section' ? 'active' : ''">基本信息</li>
|
<li @click="scrollToSection('info-section')" :class="activeSection === 'info-section' ? 'active' : ''">基本信息
|
||||||
<li @click="scrollToSection('backinfo-section')" :class="activeSection === 'backinfo-section' ? 'active' : ''">人员标签</li>
|
</li>
|
||||||
<li @click="scrollToSection('groupLabels-section')" :class="activeSection === 'groupLabels-section' ? 'active' : ''">群体标签</li>
|
<li @click="scrollToSection('backinfo-section')"
|
||||||
<li @click="scrollToSection('character-section')" :class="activeSection === 'character-section' ? 'active' : ''">群体性质</li>
|
:class="activeSection === 'backinfo-section' ? 'active' : ''">人员标签</li>
|
||||||
<li @click="scrollToSection('controlInfo-section')" :class="activeSection === 'controlInfo-section' ? 'active' : ''">管控信息</li>
|
<li @click="scrollToSection('groupLabels-section')"
|
||||||
<li @click="scrollToSection('featinfo-section')" :class="activeSection === 'featinfo-section' ? 'active' : ''">群体特征</li>
|
:class="activeSection === 'groupLabels-section' ? 'active' : ''">群体标签</li>
|
||||||
<li @click="scrollToSection('demandsInfo-section')" :class="activeSection === 'demandsInfo-section' ? 'active' : ''">主要诉求</li>
|
<li @click="scrollToSection('character-section')"
|
||||||
<li @click="scrollToSection('requestInfo-section')" :class="activeSection === 'requestInfo-section' ? 'active' : ''">诉求信息</li>
|
:class="activeSection === 'character-section' ? 'active' : ''">群体性质</li>
|
||||||
<li @click="scrollToSection('personnel-section')" :class="activeSection === 'personnel-section' ? 'active' : ''">重点人员</li>
|
<li @click="scrollToSection('controlInfo-section')"
|
||||||
<li @click="scrollToSection('judgmentRecord-section')" :class="activeSection === 'judgmentRecord-section' ? 'active' : ''">研判记录</li>
|
:class="activeSection === 'controlInfo-section' ? 'active' : ''">管控信息</li>
|
||||||
<li @click="scrollToSection('historyAssembly-section')" :class="activeSection === 'historyAssembly-section' ? 'active' : ''">历史汇集</li>
|
<li @click="scrollToSection('featinfo-section')"
|
||||||
<li @click="scrollToSection('joblogging-section')" :class="activeSection === 'joblogging-section' ? 'active' : ''">工作记录</li>
|
:class="activeSection === 'featinfo-section' ? 'active' : ''">群体特征</li>
|
||||||
|
<li @click="scrollToSection('demandsInfo-section')"
|
||||||
|
:class="activeSection === 'demandsInfo-section' ? 'active' : ''">主要诉求</li>
|
||||||
|
<li @click="scrollToSection('requestInfo-section')"
|
||||||
|
:class="activeSection === 'requestInfo-section' ? 'active' : ''">诉求信息</li>
|
||||||
|
<li @click="scrollToSection('personnel-section')"
|
||||||
|
:class="activeSection === 'personnel-section' ? 'active' : ''">重点人员</li>
|
||||||
|
<li @click="scrollToSection('judgmentRecord-section')"
|
||||||
|
:class="activeSection === 'judgmentRecord-section' ? 'active' : ''">研判记录</li>
|
||||||
|
<li @click="scrollToSection('historyAssembly-section')"
|
||||||
|
:class="activeSection === 'historyAssembly-section' ? 'active' : ''">历史汇集</li>
|
||||||
|
<li @click="scrollToSection('joblogging-section')"
|
||||||
|
:class="activeSection === 'joblogging-section' ? 'active' : ''">工作记录</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="right_box" ref="rightBox">
|
<div class="right_box" ref="rightBox">
|
||||||
<div id="info-section"><Info ref="info" :disabled="disabled" :showBut="showBut" :dataList="listQuery" /></div>
|
<div id="info-section">
|
||||||
<div id="backinfo-section"><PersonnelTags ref="personnelTags" :disabled="disabled" :showBut="showBut" :dataList="listQuery" /></div>
|
<Info ref="info" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
|
||||||
<div id="groupLabels-section"><Vehicle ref="vehicle" :disabled="disabled" :showBut="showBut" :dataList="listQuery" /></div>
|
</div>
|
||||||
<div id="character-section"><BackInfo ref="backInfo" :disabled="disabled" :showBut="showBut" :dataList="listQuery" /></div>
|
<div id="backinfo-section">
|
||||||
<!-- <div id="controlInfo-section"><ControlInfo ref="controlInfo" :disabled="disabled" :showBut="showBut" :dataList="listQuery" /></div>
|
<PersonnelTags ref="personnelTags" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
|
||||||
<div id="featinfo-section"><Featinfo ref="featinfo" :disabled="disabled" :showBut="showBut" :dataList="listQuery" /></div>
|
</div>
|
||||||
<div id="demandsInfo-section"><DemandsInfo ref="demandsInfo" :disabled="disabled" :showBut="showBut" :dataList="listQuery" /></div>
|
<div id="groupLabels-section">
|
||||||
<div id="requestInfo-section"><RequestInfo ref="requestInfo" :disabled="disabled" :showBut="showBut" :dataList="listQuery" /></div>
|
<Vehicle ref="vehicle" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
|
||||||
<div id="portrayal-section" v-if="portrayal"><Portrayal :disabled="disabled" :dataList="listQuery" /></div>
|
</div>
|
||||||
<div id="personnel-section"><Personnel ref="personnel" :disabled="disabled" :showBut="showBut" :dataList="listQuery" /></div>
|
<div id="character-section">
|
||||||
<div id="judgmentRecord-section"><JudgmentRecord ref="judgmentRecord" :disabled="disabled" :showBut="showBut" :dataList="listQuery" /></div>
|
<BackInfo ref="backInfo" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
|
||||||
<div id="historyAssembly-section"><HistoryAssembly ref="historyAssembly" :disabled="disabled" :showBut="showBut" :dataList="listQuery" /></div>
|
</div>
|
||||||
<div id="joblogging-section"><Joblogging ref="joblogging" :disabled="disabled" :showBut="showBut" :dataList="listQuery" /></div> -->
|
<div id="controlInfo-section">
|
||||||
|
<controlInfo ref="controlInfo" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
|
||||||
|
</div>
|
||||||
|
<div id="deployment-section">
|
||||||
|
<deployment ref="deployment" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
|
||||||
|
</div>
|
||||||
|
<div id="contact-section">
|
||||||
|
<contact ref="contact" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="dynamicTrajectory-section">
|
||||||
|
<dynamicTrajectory ref="dynamicTrajectory" :disabled="disabled" :showBut="showBut" />
|
||||||
|
</div>
|
||||||
|
<div class="behaviorInfo" style="">
|
||||||
|
<h3>行为信息</h3>
|
||||||
|
<!-- <el-button type="primary" :disabled="disabled" @click="AddPore">选择</el-button> -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div class="textContent">
|
||||||
|
基站认证信息:2022-3-33 12:30:30出现在乃宁市
|
||||||
|
</div>
|
||||||
|
<div class="textContent">
|
||||||
|
基站认证信息:2022-3-33 12:30:30出现在乃宁市
|
||||||
|
</div>
|
||||||
|
<div class="textContent">
|
||||||
|
基站认证信息:2022-3-33 12:30:30出现在乃宁市
|
||||||
|
</div>
|
||||||
|
<div class="textContent">
|
||||||
|
基站认证信息:2022-3-33 12:30:30出现在乃宁市
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="visitRecord-section">
|
||||||
|
<visitRecord ref="visitRecord" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
|
||||||
|
</div>
|
||||||
|
<div id="caseInfo-section">
|
||||||
|
<caseInfo ref="caseInfo" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
|
||||||
|
</div>
|
||||||
|
<div id="actualPerformance-section">
|
||||||
|
<actualPerformance ref="actualPerformance" :disabled="disabled" :showBut="showBut" :dataList="listQuery" />
|
||||||
|
</div>
|
||||||
|
<div class="behaviorInfo" style="">
|
||||||
|
<h3>操作日志</h3>
|
||||||
|
<!-- <el-button type="primary" :disabled="disabled" @click="AddPore">选择</el-button> -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 滚动列表容器 -->
|
||||||
|
<div class="list-container">
|
||||||
|
<!-- 固定标题行 -->
|
||||||
|
<div class="list-header">
|
||||||
|
<span>账号名称</span>
|
||||||
|
<span>操作时间</span>
|
||||||
|
<span>操作记录</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 可滚动内容 -->
|
||||||
|
<div class="list-body">
|
||||||
|
<div class="list-item" v-for="i in 30" :key="i">
|
||||||
|
<span>张三</span>
|
||||||
|
<span>2020-3030-2202</span>
|
||||||
|
<span>新增操作记录</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -48,12 +123,18 @@
|
|||||||
import { getItem } from "@/utils/storage";
|
import { getItem } from "@/utils/storage";
|
||||||
import { qcckGet, qcckPost, qcckPut } from "@/api/qcckApi.js";
|
import { qcckGet, qcckPost, qcckPut } from "@/api/qcckApi.js";
|
||||||
import { tbGsxtZdrySelectVoById } from "@/api/zdr.js";
|
import { tbGsxtZdrySelectVoById } from "@/api/zdr.js";
|
||||||
|
import controlInfo from '../../mpvGroup/model/controlInfo.vue'
|
||||||
import Info from "../model/info.vue";
|
import Info from "../model/info.vue";
|
||||||
import PersonnelTags from '../model/personnelTags.vue'
|
import PersonnelTags from '../model/personnelTags.vue'
|
||||||
import Vehicle from '../model/vehicle.vue'
|
import Vehicle from '../model/vehicle.vue'
|
||||||
import BackInfo from '../model/bakInfo.vue'
|
import BackInfo from '../model/bakInfo.vue'
|
||||||
import { ref,onUnmounted} from "vue";
|
import deployment from '../model/deployment.vue'
|
||||||
|
import contact from '../model/contact.vue'
|
||||||
|
import dynamicTrajectory from '../model/dynamicTrajectory.vue'
|
||||||
|
import visitRecord from '../model/visitRecord.vue'
|
||||||
|
import caseInfo from '../model/caseInfo.vue'
|
||||||
|
import actualPerformance from '../model/actualPerformance.vue'
|
||||||
|
import { ref, onUnmounted } from "vue";
|
||||||
const emit = defineEmits(["updateDate"]);
|
const emit = defineEmits(["updateDate"]);
|
||||||
const chooseMarksVisible = ref(false);
|
const chooseMarksVisible = ref(false);
|
||||||
const dialogForm = ref(false); //弹窗
|
const dialogForm = ref(false); //弹窗
|
||||||
@ -61,26 +142,33 @@ const loading = ref(false);
|
|||||||
const disabled = ref(false)
|
const disabled = ref(false)
|
||||||
const showBut = ref(false)
|
const showBut = ref(false)
|
||||||
const listQuery = ref({});
|
const listQuery = ref({});
|
||||||
const butShow=ref(false)
|
const butShow = ref(false)
|
||||||
const title = ref('新增')
|
const title = ref('新增')
|
||||||
// 初始化数据
|
// 初始化数据
|
||||||
const init = (type, row) => {
|
const init = (type, row) => {
|
||||||
dialogForm.value = true;
|
dialogForm.value = true;
|
||||||
if (type == 'add') {
|
if (type == 'add') {
|
||||||
butShow.value=true
|
butShow.value = true
|
||||||
title.value = '新增'
|
title.value = '新增'
|
||||||
disabled.value = false
|
disabled.value = false
|
||||||
showBut.value=false
|
showBut.value = false
|
||||||
} else {
|
} else {
|
||||||
butShow.value=false
|
butShow.value = false
|
||||||
tbGsxtZdrySelectVoById({id:row.id}).then(res => {
|
tbGsxtZdrySelectVoById({ id: row.id }).then(res => {
|
||||||
listQuery.value = res
|
console.log(res, "dddddddddddddddd");
|
||||||
|
|
||||||
|
Object.assign(listQuery.value, res)
|
||||||
})
|
})
|
||||||
if (type == 'edit') {
|
if (type == 'edit') {
|
||||||
showBut.value = true
|
showBut.value = true
|
||||||
disabled.value = false
|
disabled.value = false
|
||||||
title.value = '编辑'
|
title.value = '编辑'
|
||||||
} else {
|
} else if (type == "del") {
|
||||||
|
disabled.value = true
|
||||||
|
showBut.value = false
|
||||||
|
title.value = '删除'
|
||||||
|
}
|
||||||
|
else {
|
||||||
disabled.value = true
|
disabled.value = true
|
||||||
showBut.value = false
|
showBut.value = false
|
||||||
title.value = '详情'
|
title.value = '详情'
|
||||||
@ -141,10 +229,10 @@ if (typeof window !== 'undefined') {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const info=ref()
|
const info = ref()
|
||||||
const personnelTags=ref()
|
const personnelTags = ref()
|
||||||
// 提交
|
// 提交
|
||||||
const submit =async () => {
|
const submit = async () => {
|
||||||
console.log(info.value.throwData());
|
console.log(info.value.throwData());
|
||||||
console.log(personnelTags.value.throwData());
|
console.log(personnelTags.value.throwData());
|
||||||
// 使用Promise.all处理所有子组件的验证和数据获取
|
// 使用Promise.all处理所有子组件的验证和数据获取
|
||||||
@ -171,11 +259,116 @@ defineExpose({ init });
|
|||||||
@import "~@/assets/css/layout.scss";
|
@import "~@/assets/css/layout.scss";
|
||||||
@import "~@/assets/css/element-plus.scss";
|
@import "~@/assets/css/element-plus.scss";
|
||||||
|
|
||||||
|
.behaviorInfo {
|
||||||
|
|
||||||
|
margin: 0 0 10px 0;
|
||||||
|
// padding-bottom: 10px;
|
||||||
|
border-bottom: 2px solid #409eff;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #303133;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.textContent {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 外层容器:控制尺寸和隐藏默认滚动条 */
|
||||||
|
.list-container {
|
||||||
|
width: 100%;
|
||||||
|
height: 400px;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
border-radius: 8px;
|
||||||
|
overflow: hidden;
|
||||||
|
/* 隐藏外层滚动条,由内部控制 */
|
||||||
|
margin: 20px auto;
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 固定标题行 */
|
||||||
|
.list-header {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
color: #333;
|
||||||
|
font-weight: 600;
|
||||||
|
padding: 0 16px;
|
||||||
|
height: 50px;
|
||||||
|
border-bottom: 2px solid #ddd;
|
||||||
|
position: sticky;
|
||||||
|
/* 关键:固定标题 */
|
||||||
|
top: 0;
|
||||||
|
z-index: 10;
|
||||||
|
/* 确保在最上层 */
|
||||||
|
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 可滚动内容区域 */
|
||||||
|
.list-body {
|
||||||
|
height: calc(100% - 50px);
|
||||||
|
/* 容器高度减去标题高度 */
|
||||||
|
overflow-y: auto;
|
||||||
|
/* 垂直滚动 */
|
||||||
|
overflow-x: hidden;
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 每一行内容 */
|
||||||
|
.list-item {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding: 0 16px;
|
||||||
|
height: 50px;
|
||||||
|
border-bottom: 1px dashed #eee;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-item:hover {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 自定义滚动条(可选) */
|
||||||
|
.list-container::-webkit-scrollbar {
|
||||||
|
width: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-container::-webkit-scrollbar-track {
|
||||||
|
background: #f1f1f1;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-container::-webkit-scrollbar-thumb {
|
||||||
|
background: #999;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-container::-webkit-scrollbar-thumb:hover {
|
||||||
|
background: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Firefox 支持 */
|
||||||
|
.list-container {
|
||||||
|
scrollbar-width: thin;
|
||||||
|
scrollbar-color: #999 #f1f1f1;
|
||||||
|
}
|
||||||
|
|
||||||
::v-deep .el-tabs--card>.el-tabs__header .el-tabs__item.is-active {
|
::v-deep .el-tabs--card>.el-tabs__header .el-tabs__item.is-active {
|
||||||
color: #0072ff;
|
color: #0072ff;
|
||||||
background: rgba(0, 114, 255, 0.3);
|
background: rgba(0, 114, 255, 0.3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#contact-section {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
.boxlist {
|
.boxlist {
|
||||||
width: calc(99% - 50px);
|
width: calc(99% - 50px);
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
@ -267,19 +460,19 @@ defineExpose({ init });
|
|||||||
// border: 1px solid #ebeef5;
|
// border: 1px solid #ebeef5;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
|
|
||||||
.right_box>div {
|
.right_box>div {
|
||||||
background-color: #f8f9fa;
|
background-color: #f8f9fa;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
transition: all 0.3s ease;
|
transition: all 0.3s ease;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.right_box>div:hover {
|
.right_box>div:hover {
|
||||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
|
||||||
}
|
}
|
||||||
|
|
||||||
.right_box h3 {
|
.right_box h3 {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
color: #303133;
|
color: #303133;
|
||||||
@ -287,9 +480,9 @@ defineExpose({ init });
|
|||||||
padding-bottom: 10px;
|
padding-bottom: 10px;
|
||||||
border-bottom: 2px solid #409eff;
|
border-bottom: 2px solid #409eff;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
.right_box h3::after {
|
.right_box h3::after {
|
||||||
content: '';
|
content: '';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: 0;
|
||||||
@ -297,25 +490,26 @@ defineExpose({ init });
|
|||||||
width: 60px;
|
width: 60px;
|
||||||
height: 2px;
|
height: 2px;
|
||||||
background-color: #409eff;
|
background-color: #409eff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.headline {
|
.headline {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
color: #303133;
|
color: #303133;
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 按钮样式优化
|
// 按钮样式优化
|
||||||
.el-button {
|
.el-button {
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
transition: all 0.3s ease;
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-button:first-child {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-button:first-child {
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 响应式设计
|
// 响应式设计
|
||||||
@media screen and (max-width: 768px) {
|
@media screen and (max-width: 768px) {
|
||||||
.form_cnt {
|
.form_cnt {
|
||||||
|
@ -0,0 +1,308 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="headClass" style="">
|
||||||
|
<h3>现实表现</h3>
|
||||||
|
<!-- <el-button type="primary" :disabled="disabled" @click="AddPore">选择</el-button> -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="headSelect">
|
||||||
|
|
||||||
|
<el-button @click="add" type="primary">新增</el-button>
|
||||||
|
</div>
|
||||||
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
|
<template #clys="{ row }">
|
||||||
|
<DictTag :tag="false" :value="row.clys" :options="D_BZ_CLYS" />
|
||||||
|
</template>
|
||||||
|
<template #cllx="{ row }">
|
||||||
|
<DictTag :tag="false" :value="row.cllx" :options="D_BZ_CLLX" />
|
||||||
|
</template>
|
||||||
|
<template #clpp="{ row }">
|
||||||
|
<DictTag :tag="false" :value="row.clpp" :options="D_BZ_CLPP" />
|
||||||
|
</template>
|
||||||
|
<!-- 操作 -->
|
||||||
|
<template #controls="{ row }">
|
||||||
|
<el-link type="danger" @click="delDictItem(row.id)">删除</el-link>
|
||||||
|
<el-link type="danger" @click="updDictItem(row)">修改</el-link>
|
||||||
|
</template>
|
||||||
|
</MyTable>
|
||||||
|
</div>
|
||||||
|
<VehiclDoing v-model="chooseMarksVisible" @comfirm="addMarks" :data="dataModel"
|
||||||
|
:dict="{ D_BZ_CLLX, D_BZ_CLYS, D_BZ_CLPP }" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { identityCardRule } from "@/utils/rules"
|
||||||
|
import { ref, reactive, watch, toRaw, getCurrentInstance, onMounted, onUnmounted } from "vue";
|
||||||
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
|
import VehiclDoing from "../component/vehiclDoing.vue";
|
||||||
|
import { tbZdryClxxAdd, tbZdryClxxBatchAdd, tbZdryClxxDelete, tbZdryClxxSelectPage, tbZdryClxxUpdate } from '@/api/zdr.js'
|
||||||
|
import { ElMessage, ElMessageBox } from "element-plus";
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const { D_BZ_CLLX, D_BZ_CLYS, D_BZ_CLPP } = proxy.$dict("D_BZ_CLLX", "D_BZ_CLYS", "D_BZ_CLPP"); //获取字典数据
|
||||||
|
const chooseMarksVisible = ref(false)
|
||||||
|
const props = defineProps({
|
||||||
|
dataList: {
|
||||||
|
type: Object,
|
||||||
|
default: () => { },
|
||||||
|
}, disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
showBut: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
})
|
||||||
|
const listData = ref({})
|
||||||
|
const addUpd = ref(true)
|
||||||
|
watch(() => props.dataList, (val) => {
|
||||||
|
if (val) {
|
||||||
|
listData.value = val
|
||||||
|
gettbZdryClxxSelectPage()
|
||||||
|
}
|
||||||
|
}, { deep: true })
|
||||||
|
// 表格数据
|
||||||
|
const pageData = reactive({
|
||||||
|
tableData: [],
|
||||||
|
tableColumn: [{
|
||||||
|
prop: 'cph',
|
||||||
|
label: '人员姓名',
|
||||||
|
}, {
|
||||||
|
prop: 'cllx',
|
||||||
|
label: '身份证号码',
|
||||||
|
showSolt: true,
|
||||||
|
prop: 'clpp',
|
||||||
|
}, {
|
||||||
|
showSolt: true,
|
||||||
|
prop: 'clys',
|
||||||
|
label: '关系',
|
||||||
|
}, {
|
||||||
|
showSolt: true,
|
||||||
|
prop: 'clpp',
|
||||||
|
label: '车辆品牌',
|
||||||
|
|
||||||
|
prop: 'clsbm',
|
||||||
|
label: '联系电话',
|
||||||
|
}],
|
||||||
|
tableHeight: '200px',
|
||||||
|
keyCount: 0,
|
||||||
|
tableConfiger: {
|
||||||
|
border: true,
|
||||||
|
stripe: true,
|
||||||
|
showHeader: true,
|
||||||
|
showIndex: true,
|
||||||
|
indexLabel: '序号',
|
||||||
|
indexWidth: 60,
|
||||||
|
align: 'center',
|
||||||
|
showOverflowTooltip: true,
|
||||||
|
haveControls: !props.disabled
|
||||||
|
},
|
||||||
|
controlsWidth: 200,
|
||||||
|
})
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
username: "",
|
||||||
|
ID: ""
|
||||||
|
})
|
||||||
|
const rulesForm = ref( identityCardRule({ validator: true },'rySfzh'))
|
||||||
|
// 修改数据接口
|
||||||
|
const dataModel = ref()
|
||||||
|
const addMarks = (val) => {
|
||||||
|
const params = {
|
||||||
|
...val,
|
||||||
|
zdrid: listData.value.id,
|
||||||
|
}
|
||||||
|
if (props.showBut && !props.disabled) {
|
||||||
|
if (addUpd.value) {
|
||||||
|
tbZdryClxxAdd(params).then(res => {
|
||||||
|
gettbZdryClxxSelectPage()
|
||||||
|
proxy.$message({
|
||||||
|
message: '关联车辆添加成功',
|
||||||
|
type: 'success'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tbZdryClxxUpdate(params).then(res => {
|
||||||
|
gettbZdryClxxSelectPage()
|
||||||
|
proxy.$message({
|
||||||
|
message: '关联车辆修改成功',
|
||||||
|
type: 'success'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
pageData.tableData.push(val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onMounted(()=>{
|
||||||
|
console.log(identityCardRule,"dadad1");
|
||||||
|
|
||||||
|
})
|
||||||
|
// 删除车辆
|
||||||
|
const delDictItem = (val) => {
|
||||||
|
if (!props.disabled && props.showBut) {
|
||||||
|
ElMessageBox.confirm(
|
||||||
|
'是否删除关联车辆',
|
||||||
|
'提示',
|
||||||
|
{
|
||||||
|
confirmButtonText: '确认',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning',
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.then(() => {
|
||||||
|
tbZdryClxxDelete({ ids: [val] }).then(res => {
|
||||||
|
gettbZdryClxxSelectPage()
|
||||||
|
proxy.$message({
|
||||||
|
message: '关联车辆删除成功',
|
||||||
|
type: 'success'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
ElMessage({
|
||||||
|
type: 'info',
|
||||||
|
message: '取消删除',
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
pageData.tableData = pageData.tableData.filter(v => v.id != val)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const updDictItem = (val) => {
|
||||||
|
chooseMarksVisible.value = true
|
||||||
|
addUpd.value = false
|
||||||
|
dataModel.value = val
|
||||||
|
}
|
||||||
|
const AddPore = () => {
|
||||||
|
chooseMarksVisible.value = true
|
||||||
|
dataModel.value = {}
|
||||||
|
addUpd.value = true
|
||||||
|
}
|
||||||
|
// 查询车辆
|
||||||
|
const gettbZdryClxxSelectPage = () => {
|
||||||
|
const promes = {
|
||||||
|
pageCurrent: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
zdrid: listData.value.id
|
||||||
|
}
|
||||||
|
tbZdryClxxSelectPage(promes).then(res => {
|
||||||
|
pageData.tableData = res.records
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 抛出数据并验证标签列表不为空
|
||||||
|
const throwData = () => {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
// // 验证:确保标签列表不为空
|
||||||
|
// if (!pageData.tableData || pageData.tableData.length === 0) {
|
||||||
|
// throw new Error('请录入车辆信息');
|
||||||
|
// }
|
||||||
|
resolve(pageData.tableData);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
defineExpose({
|
||||||
|
throwData
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import "~@/assets/css/layout.scss";
|
||||||
|
@import "~@/assets/css/element-plus.scss";
|
||||||
|
|
||||||
|
.backinfo-container {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep(.el-form) {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left_box {
|
||||||
|
width: 200px;
|
||||||
|
border: 1px solid #c8c8c89a;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right_box {
|
||||||
|
width: calc(100% - 230px);
|
||||||
|
overflow-y: auto;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-form-item__content {
|
||||||
|
display: block !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.headClass {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #303133;
|
||||||
|
margin: 20px 0 10px 0;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
border-bottom: 2px solid #409eff;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.headSelect {
|
||||||
|
width: 100%;
|
||||||
|
padding: 0 16px;
|
||||||
|
background-color: #fff;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
display: flex;
|
||||||
|
justify-content: end;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 移除冲突样式:不要用 justify-content */
|
||||||
|
|
||||||
|
/* 控制所有 el-form-item 高度和垂直居中 */
|
||||||
|
.form-inline :deep(.el-form-item) {
|
||||||
|
margin-bottom: 0;
|
||||||
|
height: 60px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ✅ 按钮区域靠右,且不换行 */
|
||||||
|
.form-inline .form-actions {
|
||||||
|
margin-left: auto;
|
||||||
|
/* 推到最右边 */
|
||||||
|
white-space: nowrap;
|
||||||
|
/* 防止按钮换行 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 统一按钮样式,增加间距和视觉舒适度 */
|
||||||
|
.form-inline :deep(.el-button) {
|
||||||
|
height: 36px;
|
||||||
|
padding: 8px 16px;
|
||||||
|
font-size: 14px;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 按钮之间留出间距(除了第一个) */
|
||||||
|
.form-inline :deep(.el-button:not(:first-child)) {
|
||||||
|
margin-left: 12px;
|
||||||
|
/* 比原来的 8px 更宽松 */
|
||||||
|
}
|
||||||
|
|
||||||
|
// .headClass::after {
|
||||||
|
// content: '';
|
||||||
|
// position: absolute;
|
||||||
|
// left: 0;
|
||||||
|
// bottom: -2px;
|
||||||
|
// width: 60px;
|
||||||
|
// height: 2px;
|
||||||
|
// background-color: #409eff;
|
||||||
|
// }
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
</style>
|
@ -2,22 +2,65 @@
|
|||||||
|
|
||||||
<div class="backinfo-container">
|
<div class="backinfo-container">
|
||||||
<div class="headClass" style="">
|
<div class="headClass" style="">
|
||||||
<h3>群体信息</h3>
|
<h3>背景信息</h3>
|
||||||
<el-button type="primary" v-if="showBut" :disabled="disabled" @click="ClickSave">保存</el-button>
|
<el-button type="primary" v-if="showBut" :disabled="disabled" @click="ClickSave">保存</el-button>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<!-- <div>
|
||||||
<div>拘留记录:</div>
|
<div>拘留记录:</div>
|
||||||
<div v-for="(item,index) in jljl" :key="index">
|
<div v-for="(item,index) in jljl" :key="index">
|
||||||
<el-input v-model="jljl[index]" :autosize="{ minRows: 4, maxRows: 10 }" type="textarea" placeholder="请输入背景信息"
|
<el-input v-model="jljl[index]" :autosize="{ minRows: 4, maxRows: 10 }" type="textarea" placeholder="请输入背景信息"
|
||||||
class="background-info-input" :disabled="disabled" /></div>
|
class="background-info-input" :disabled="disabled" /></div>
|
||||||
|
</div> -->
|
||||||
|
<div>
|
||||||
|
<!-- 全部输入框 -->
|
||||||
|
<el-form class="record" ref="ruleFormRef" :model="ruleForm" :rules="rules">
|
||||||
|
<!-- 拘留所记录 -->
|
||||||
|
<div class="detentionFacility">
|
||||||
|
<div>拘留所记录:</div>
|
||||||
|
<div>
|
||||||
|
<div v-for="(item, i) in ruleForm.detentionCenterRecords" :key="item.id" class="detentionFacilityArr">
|
||||||
|
<el-form-item :prop="'detentionCenterRecords.' + i + '.str'" :rules="rules.str">
|
||||||
|
|
||||||
|
<el-input v-model="ruleForm.detentionCenterRecords[i].str" class="detentionFacilityInput"
|
||||||
|
placeholder="请输入拘留所记录" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-button type="primary"
|
||||||
|
v-if="ruleForm.detentionCenterRecords.length > 1 && i != ruleForm.detentionCenterRecords.length - 1"
|
||||||
|
@click="decreaseRecord(i, '拘留所')">−</el-button>
|
||||||
|
<el-button type="primary" @click="addRecord(i, '拘留所')"
|
||||||
|
v-if="ruleForm.detentionCenterRecords.length - 1 == i">+</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 看守所记录 -->
|
||||||
|
<div class="detentionFacility">
|
||||||
|
<div>看守所记录:</div>
|
||||||
|
<div>
|
||||||
|
<div v-for="(item, i) in ruleForm.prison" :key="item.id" class="detentionFacilityArr">
|
||||||
|
<el-form-item :prop="'prison.' + i + '.str'" :rules="rules.str">
|
||||||
|
<el-input v-model="ruleForm.prison[i].str"
|
||||||
|
class="detentionFacilityInput" placeholder="请输入拘留所记录"
|
||||||
|
@input="changeprison(ruleForm.prison[i].str)"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-button type="primary" v-if="ruleForm.prison.length > 1 && i != ruleForm.prison.length - 1"
|
||||||
|
@click="decreaseRecord(i, '看守所')">−</el-button>
|
||||||
|
<el-button type="primary" @click="addRecord(i, '看守所')" v-if="ruleForm.prison.length - 1 == i">+</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="sumbitBtnBOX">
|
||||||
|
<el-button type="primary" @click="submitForm(ruleFormRef)" class="sumbitBtn">确认提交</el-button>
|
||||||
|
</div>
|
||||||
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
<div></div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, watch } from "vue";
|
import { reactive, ref, watch, onMounted } from "vue";
|
||||||
import { Delete, Download } from '@element-plus/icons';
|
import { Delete, Download } from '@element-plus/icons';
|
||||||
// import { tbGsxtZdryUpdate } from '@/api/zdr.js'
|
// import { tbGsxtZdryUpdate } from '@/api/zdr.js'
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
@ -33,13 +76,28 @@ const props = defineProps({
|
|||||||
default: false
|
default: false
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
const jljl=ref([])
|
const jljl = ref([])
|
||||||
|
const ruleFormRef = ref()
|
||||||
|
const ruleForm = reactive({
|
||||||
|
detentionCenterRecords: [{ id: 0, str: "" }],
|
||||||
|
prison: [{ id: 0, str: "" }],
|
||||||
|
})
|
||||||
|
// 表单校验
|
||||||
|
const rules = reactive({
|
||||||
|
str: [
|
||||||
|
{ required: true, message: '请输入具体信息', trigger: 'blur' },
|
||||||
|
{ min: 3, max: 20, message: '请最少输入3个字,最多输入20个字', trigger: 'blur' },
|
||||||
|
],
|
||||||
|
})
|
||||||
watch(() => props.dataList, (val) => {
|
watch(() => props.dataList, (val) => {
|
||||||
if (val) {
|
if (val) {
|
||||||
// qtbjxx.value = val.qtBjzl
|
// qtbjxx.value = val.qtBjzl
|
||||||
}
|
}
|
||||||
}, { deep: true })
|
}, { deep: true })
|
||||||
|
onMounted(() => {
|
||||||
|
console.log('组件已挂载')
|
||||||
|
|
||||||
|
})
|
||||||
const throwData = () => {
|
const throwData = () => {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
// 基本验证:确保背景信息不为空
|
// 基本验证:确保背景信息不为空
|
||||||
@ -53,6 +111,43 @@ const throwData = () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
// 增加输入记录输入框
|
||||||
|
const addRecord = (val, type) => {
|
||||||
|
if (type == '拘留所') {
|
||||||
|
ruleForm.detentionCenterRecords.push({ id: val })
|
||||||
|
} else {
|
||||||
|
ruleForm.prison.push({ id: val })
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
// 减少输入记录输入框
|
||||||
|
const decreaseRecord = (val, type) => {
|
||||||
|
if (type == '拘留所') {
|
||||||
|
ruleForm.detentionCenterRecords.splice(val, 1)
|
||||||
|
} else {
|
||||||
|
ruleForm.prison.splice(val, 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
const changeprison=(value)=>{
|
||||||
|
console.log(value,"jafahfahf");
|
||||||
|
|
||||||
|
}
|
||||||
|
//提交数据校验表单
|
||||||
|
const submitForm = async (formEl) => {
|
||||||
|
console.log(formEl,"formElformEl");
|
||||||
|
|
||||||
|
if (!formEl) return
|
||||||
|
await formEl.validate((valid, fields) => {
|
||||||
|
console.log(valid,fields,"22222222");
|
||||||
|
|
||||||
|
if (valid) {
|
||||||
|
console.log('submit!')
|
||||||
|
} else {
|
||||||
|
console.log('error submit!', fields)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
defineExpose({
|
defineExpose({
|
||||||
throwData
|
throwData
|
||||||
})
|
})
|
||||||
@ -64,6 +159,61 @@ defineExpose({
|
|||||||
|
|
||||||
.backinfo-container {
|
.backinfo-container {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.sumbitBtnBOX {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
height: 50px;
|
||||||
|
|
||||||
|
// background-color: saddlebrown;
|
||||||
|
.sumbitBtn {
|
||||||
|
position: absolute;
|
||||||
|
right: 18px;
|
||||||
|
bottom: 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.backinfo-container>:nth-child(2) {
|
||||||
|
|
||||||
|
width: 100%;
|
||||||
|
// height: 50px;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.detentionFacility {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-items: baseline;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 20px;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detentionFacility>:nth-child(1) {
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detentionFacility>:nth-child(2) {
|
||||||
|
width: 98%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detentionFacilityArr {
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
margin-top: 20px;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.el-form-item {
|
||||||
|
width: 93%;
|
||||||
|
height: 100%;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.background-info-input {
|
.background-info-input {
|
||||||
|
@ -0,0 +1,308 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="headClass" style="">
|
||||||
|
<h3>案件信息</h3>
|
||||||
|
<!-- <el-button type="primary" :disabled="disabled" @click="AddPore">选择</el-button> -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="headSelect">
|
||||||
|
|
||||||
|
<el-button @click="add" type="primary">新增</el-button>
|
||||||
|
</div>
|
||||||
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
|
<template #clys="{ row }">
|
||||||
|
<DictTag :tag="false" :value="row.clys" :options="D_BZ_CLYS" />
|
||||||
|
</template>
|
||||||
|
<template #cllx="{ row }">
|
||||||
|
<DictTag :tag="false" :value="row.cllx" :options="D_BZ_CLLX" />
|
||||||
|
</template>
|
||||||
|
<template #clpp="{ row }">
|
||||||
|
<DictTag :tag="false" :value="row.clpp" :options="D_BZ_CLPP" />
|
||||||
|
</template>
|
||||||
|
<!-- 操作 -->
|
||||||
|
<template #controls="{ row }">
|
||||||
|
<el-link type="danger" @click="delDictItem(row.id)">删除</el-link>
|
||||||
|
<el-link type="danger" @click="updDictItem(row)">修改</el-link>
|
||||||
|
</template>
|
||||||
|
</MyTable>
|
||||||
|
</div>
|
||||||
|
<VehiclDoing v-model="chooseMarksVisible" @comfirm="addMarks" :data="dataModel"
|
||||||
|
:dict="{ D_BZ_CLLX, D_BZ_CLYS, D_BZ_CLPP }" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { identityCardRule } from "@/utils/rules"
|
||||||
|
import { ref, reactive, watch, toRaw, getCurrentInstance, onMounted, onUnmounted } from "vue";
|
||||||
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
|
import VehiclDoing from "../component/vehiclDoing.vue";
|
||||||
|
import { tbZdryClxxAdd, tbZdryClxxBatchAdd, tbZdryClxxDelete, tbZdryClxxSelectPage, tbZdryClxxUpdate } from '@/api/zdr.js'
|
||||||
|
import { ElMessage, ElMessageBox } from "element-plus";
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const { D_BZ_CLLX, D_BZ_CLYS, D_BZ_CLPP } = proxy.$dict("D_BZ_CLLX", "D_BZ_CLYS", "D_BZ_CLPP"); //获取字典数据
|
||||||
|
const chooseMarksVisible = ref(false)
|
||||||
|
const props = defineProps({
|
||||||
|
dataList: {
|
||||||
|
type: Object,
|
||||||
|
default: () => { },
|
||||||
|
}, disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
showBut: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
})
|
||||||
|
const listData = ref({})
|
||||||
|
const addUpd = ref(true)
|
||||||
|
watch(() => props.dataList, (val) => {
|
||||||
|
if (val) {
|
||||||
|
listData.value = val
|
||||||
|
gettbZdryClxxSelectPage()
|
||||||
|
}
|
||||||
|
}, { deep: true })
|
||||||
|
// 表格数据
|
||||||
|
const pageData = reactive({
|
||||||
|
tableData: [],
|
||||||
|
tableColumn: [{
|
||||||
|
prop: 'cph',
|
||||||
|
label: '人员姓名',
|
||||||
|
}, {
|
||||||
|
prop: 'cllx',
|
||||||
|
label: '身份证号码',
|
||||||
|
showSolt: true,
|
||||||
|
prop: 'clpp',
|
||||||
|
}, {
|
||||||
|
showSolt: true,
|
||||||
|
prop: 'clys',
|
||||||
|
label: '关系',
|
||||||
|
}, {
|
||||||
|
showSolt: true,
|
||||||
|
prop: 'clpp',
|
||||||
|
label: '车辆品牌',
|
||||||
|
|
||||||
|
prop: 'clsbm',
|
||||||
|
label: '联系电话',
|
||||||
|
}],
|
||||||
|
tableHeight: '200px',
|
||||||
|
keyCount: 0,
|
||||||
|
tableConfiger: {
|
||||||
|
border: true,
|
||||||
|
stripe: true,
|
||||||
|
showHeader: true,
|
||||||
|
showIndex: true,
|
||||||
|
indexLabel: '序号',
|
||||||
|
indexWidth: 60,
|
||||||
|
align: 'center',
|
||||||
|
showOverflowTooltip: true,
|
||||||
|
haveControls: !props.disabled
|
||||||
|
},
|
||||||
|
controlsWidth: 200,
|
||||||
|
})
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
username: "",
|
||||||
|
ID: ""
|
||||||
|
})
|
||||||
|
const rulesForm = ref( identityCardRule({ validator: true },'rySfzh'))
|
||||||
|
// 修改数据接口
|
||||||
|
const dataModel = ref()
|
||||||
|
const addMarks = (val) => {
|
||||||
|
const params = {
|
||||||
|
...val,
|
||||||
|
zdrid: listData.value.id,
|
||||||
|
}
|
||||||
|
if (props.showBut && !props.disabled) {
|
||||||
|
if (addUpd.value) {
|
||||||
|
tbZdryClxxAdd(params).then(res => {
|
||||||
|
gettbZdryClxxSelectPage()
|
||||||
|
proxy.$message({
|
||||||
|
message: '关联车辆添加成功',
|
||||||
|
type: 'success'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tbZdryClxxUpdate(params).then(res => {
|
||||||
|
gettbZdryClxxSelectPage()
|
||||||
|
proxy.$message({
|
||||||
|
message: '关联车辆修改成功',
|
||||||
|
type: 'success'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
pageData.tableData.push(val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onMounted(()=>{
|
||||||
|
console.log(identityCardRule,"dadad1");
|
||||||
|
|
||||||
|
})
|
||||||
|
// 删除车辆
|
||||||
|
const delDictItem = (val) => {
|
||||||
|
if (!props.disabled && props.showBut) {
|
||||||
|
ElMessageBox.confirm(
|
||||||
|
'是否删除关联车辆',
|
||||||
|
'提示',
|
||||||
|
{
|
||||||
|
confirmButtonText: '确认',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning',
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.then(() => {
|
||||||
|
tbZdryClxxDelete({ ids: [val] }).then(res => {
|
||||||
|
gettbZdryClxxSelectPage()
|
||||||
|
proxy.$message({
|
||||||
|
message: '关联车辆删除成功',
|
||||||
|
type: 'success'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
ElMessage({
|
||||||
|
type: 'info',
|
||||||
|
message: '取消删除',
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
pageData.tableData = pageData.tableData.filter(v => v.id != val)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const updDictItem = (val) => {
|
||||||
|
chooseMarksVisible.value = true
|
||||||
|
addUpd.value = false
|
||||||
|
dataModel.value = val
|
||||||
|
}
|
||||||
|
const AddPore = () => {
|
||||||
|
chooseMarksVisible.value = true
|
||||||
|
dataModel.value = {}
|
||||||
|
addUpd.value = true
|
||||||
|
}
|
||||||
|
// 查询车辆
|
||||||
|
const gettbZdryClxxSelectPage = () => {
|
||||||
|
const promes = {
|
||||||
|
pageCurrent: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
zdrid: listData.value.id
|
||||||
|
}
|
||||||
|
tbZdryClxxSelectPage(promes).then(res => {
|
||||||
|
pageData.tableData = res.records
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 抛出数据并验证标签列表不为空
|
||||||
|
const throwData = () => {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
// // 验证:确保标签列表不为空
|
||||||
|
// if (!pageData.tableData || pageData.tableData.length === 0) {
|
||||||
|
// throw new Error('请录入车辆信息');
|
||||||
|
// }
|
||||||
|
resolve(pageData.tableData);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
defineExpose({
|
||||||
|
throwData
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import "~@/assets/css/layout.scss";
|
||||||
|
@import "~@/assets/css/element-plus.scss";
|
||||||
|
|
||||||
|
.backinfo-container {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep(.el-form) {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left_box {
|
||||||
|
width: 200px;
|
||||||
|
border: 1px solid #c8c8c89a;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right_box {
|
||||||
|
width: calc(100% - 230px);
|
||||||
|
overflow-y: auto;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-form-item__content {
|
||||||
|
display: block !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.headClass {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #303133;
|
||||||
|
margin: 20px 0 10px 0;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
border-bottom: 2px solid #409eff;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.headSelect {
|
||||||
|
width: 100%;
|
||||||
|
padding: 0 16px;
|
||||||
|
background-color: #fff;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
display: flex;
|
||||||
|
justify-content: end;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 移除冲突样式:不要用 justify-content */
|
||||||
|
|
||||||
|
/* 控制所有 el-form-item 高度和垂直居中 */
|
||||||
|
.form-inline :deep(.el-form-item) {
|
||||||
|
margin-bottom: 0;
|
||||||
|
height: 60px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ✅ 按钮区域靠右,且不换行 */
|
||||||
|
.form-inline .form-actions {
|
||||||
|
margin-left: auto;
|
||||||
|
/* 推到最右边 */
|
||||||
|
white-space: nowrap;
|
||||||
|
/* 防止按钮换行 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 统一按钮样式,增加间距和视觉舒适度 */
|
||||||
|
.form-inline :deep(.el-button) {
|
||||||
|
height: 36px;
|
||||||
|
padding: 8px 16px;
|
||||||
|
font-size: 14px;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 按钮之间留出间距(除了第一个) */
|
||||||
|
.form-inline :deep(.el-button:not(:first-child)) {
|
||||||
|
margin-left: 12px;
|
||||||
|
/* 比原来的 8px 更宽松 */
|
||||||
|
}
|
||||||
|
|
||||||
|
// .headClass::after {
|
||||||
|
// content: '';
|
||||||
|
// position: absolute;
|
||||||
|
// left: 0;
|
||||||
|
// bottom: -2px;
|
||||||
|
// width: 60px;
|
||||||
|
// height: 2px;
|
||||||
|
// background-color: #409eff;
|
||||||
|
// }
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,326 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="headClass" style="">
|
||||||
|
<h3>密切联系人</h3>
|
||||||
|
<!-- <el-button type="primary" :disabled="disabled" @click="AddPore">选择</el-button> -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="headSelect">
|
||||||
|
<el-form :model="formData" :inline="true" ref="formRef" :rules="rulesForm" class="form-inline">
|
||||||
|
<!-- 姓名 -->
|
||||||
|
<el-form-item label="姓名" prop="username" :rules="[
|
||||||
|
{ required: true, message: '请输入用户名', trigger: 'blur' },
|
||||||
|
{ min: 2, max: 4, message: '长度在 2 到 4 个字符', trigger: 'blur' }
|
||||||
|
]">
|
||||||
|
<el-input v-model="formData.username" placeholder="请输入姓名" style="width: 120px;" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 身份证号码 -->
|
||||||
|
<el-form-item label="身份证号码" prop="cardID" :rules="[
|
||||||
|
{ required: true, message: '请输入身份证号码', trigger: 'blur' }
|
||||||
|
]">
|
||||||
|
<el-input v-model="formData.ID" placeholder="请输入身份证号码" style="width: 200px;" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- 按钮组:统一放在一个 item 中 -->
|
||||||
|
<el-form-item class="form-actions">
|
||||||
|
<el-button type="primary" @click="check">查询</el-button>
|
||||||
|
<el-button @click="resetForm">重置</el-button>
|
||||||
|
<el-button @click="add">新增</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
|
<template #clys="{ row }">
|
||||||
|
<DictTag :tag="false" :value="row.clys" :options="D_BZ_CLYS" />
|
||||||
|
</template>
|
||||||
|
<template #cllx="{ row }">
|
||||||
|
<DictTag :tag="false" :value="row.cllx" :options="D_BZ_CLLX" />
|
||||||
|
</template>
|
||||||
|
<template #clpp="{ row }">
|
||||||
|
<DictTag :tag="false" :value="row.clpp" :options="D_BZ_CLPP" />
|
||||||
|
</template>
|
||||||
|
<!-- 操作 -->
|
||||||
|
<template #controls="{ row }">
|
||||||
|
<el-link type="danger" @click="delDictItem(row.id)">删除</el-link>
|
||||||
|
<el-link type="danger" @click="updDictItem(row)">修改</el-link>
|
||||||
|
</template>
|
||||||
|
</MyTable>
|
||||||
|
</div>
|
||||||
|
<VehiclDoing v-model="chooseMarksVisible" @comfirm="addMarks" :data="dataModel"
|
||||||
|
:dict="{ D_BZ_CLLX, D_BZ_CLYS, D_BZ_CLPP }" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { identityCardRule } from "@/utils/rules"
|
||||||
|
import { ref, reactive, watch, toRaw, getCurrentInstance, onMounted, onUnmounted } from "vue";
|
||||||
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
|
import VehiclDoing from "../component/vehiclDoing.vue";
|
||||||
|
import { tbZdryClxxAdd, tbZdryClxxBatchAdd, tbZdryClxxDelete, tbZdryClxxSelectPage, tbZdryClxxUpdate } from '@/api/zdr.js'
|
||||||
|
import { ElMessage, ElMessageBox } from "element-plus";
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const { D_BZ_CLLX, D_BZ_CLYS, D_BZ_CLPP } = proxy.$dict("D_BZ_CLLX", "D_BZ_CLYS", "D_BZ_CLPP"); //获取字典数据
|
||||||
|
const chooseMarksVisible = ref(false)
|
||||||
|
const props = defineProps({
|
||||||
|
dataList: {
|
||||||
|
type: Object,
|
||||||
|
default: () => { },
|
||||||
|
}, disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
showBut: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
})
|
||||||
|
const listData = ref({})
|
||||||
|
const addUpd = ref(true)
|
||||||
|
watch(() => props.dataList, (val) => {
|
||||||
|
if (val) {
|
||||||
|
listData.value = val
|
||||||
|
gettbZdryClxxSelectPage()
|
||||||
|
}
|
||||||
|
}, { deep: true })
|
||||||
|
// 表格数据
|
||||||
|
const pageData = reactive({
|
||||||
|
tableData: [],
|
||||||
|
tableColumn: [{
|
||||||
|
prop: 'cph',
|
||||||
|
label: '人员姓名',
|
||||||
|
}, {
|
||||||
|
prop: 'cllx',
|
||||||
|
label: '身份证号码',
|
||||||
|
showSolt: true,
|
||||||
|
prop: 'clpp',
|
||||||
|
}, {
|
||||||
|
showSolt: true,
|
||||||
|
prop: 'clys',
|
||||||
|
label: '关系',
|
||||||
|
}, {
|
||||||
|
showSolt: true,
|
||||||
|
prop: 'clpp',
|
||||||
|
label: '车辆品牌',
|
||||||
|
|
||||||
|
prop: 'clsbm',
|
||||||
|
label: '联系电话',
|
||||||
|
}],
|
||||||
|
tableHeight: '200px',
|
||||||
|
keyCount: 0,
|
||||||
|
tableConfiger: {
|
||||||
|
border: true,
|
||||||
|
stripe: true,
|
||||||
|
showHeader: true,
|
||||||
|
showIndex: true,
|
||||||
|
indexLabel: '序号',
|
||||||
|
indexWidth: 60,
|
||||||
|
align: 'center',
|
||||||
|
showOverflowTooltip: true,
|
||||||
|
haveControls: !props.disabled
|
||||||
|
},
|
||||||
|
controlsWidth: 200,
|
||||||
|
})
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
username: "",
|
||||||
|
ID: ""
|
||||||
|
})
|
||||||
|
const rulesForm = ref( identityCardRule({ validator: true },'rySfzh'))
|
||||||
|
// 修改数据接口
|
||||||
|
const dataModel = ref()
|
||||||
|
const addMarks = (val) => {
|
||||||
|
const params = {
|
||||||
|
...val,
|
||||||
|
zdrid: listData.value.id,
|
||||||
|
}
|
||||||
|
if (props.showBut && !props.disabled) {
|
||||||
|
if (addUpd.value) {
|
||||||
|
tbZdryClxxAdd(params).then(res => {
|
||||||
|
gettbZdryClxxSelectPage()
|
||||||
|
proxy.$message({
|
||||||
|
message: '关联车辆添加成功',
|
||||||
|
type: 'success'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tbZdryClxxUpdate(params).then(res => {
|
||||||
|
gettbZdryClxxSelectPage()
|
||||||
|
proxy.$message({
|
||||||
|
message: '关联车辆修改成功',
|
||||||
|
type: 'success'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
pageData.tableData.push(val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onMounted(()=>{
|
||||||
|
console.log(identityCardRule,"dadad1");
|
||||||
|
|
||||||
|
})
|
||||||
|
// 删除车辆
|
||||||
|
const delDictItem = (val) => {
|
||||||
|
if (!props.disabled && props.showBut) {
|
||||||
|
ElMessageBox.confirm(
|
||||||
|
'是否删除关联车辆',
|
||||||
|
'提示',
|
||||||
|
{
|
||||||
|
confirmButtonText: '确认',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning',
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.then(() => {
|
||||||
|
tbZdryClxxDelete({ ids: [val] }).then(res => {
|
||||||
|
gettbZdryClxxSelectPage()
|
||||||
|
proxy.$message({
|
||||||
|
message: '关联车辆删除成功',
|
||||||
|
type: 'success'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
ElMessage({
|
||||||
|
type: 'info',
|
||||||
|
message: '取消删除',
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
pageData.tableData = pageData.tableData.filter(v => v.id != val)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const updDictItem = (val) => {
|
||||||
|
chooseMarksVisible.value = true
|
||||||
|
addUpd.value = false
|
||||||
|
dataModel.value = val
|
||||||
|
}
|
||||||
|
const AddPore = () => {
|
||||||
|
chooseMarksVisible.value = true
|
||||||
|
dataModel.value = {}
|
||||||
|
addUpd.value = true
|
||||||
|
}
|
||||||
|
// 查询车辆
|
||||||
|
const gettbZdryClxxSelectPage = () => {
|
||||||
|
const promes = {
|
||||||
|
pageCurrent: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
zdrid: listData.value.id
|
||||||
|
}
|
||||||
|
tbZdryClxxSelectPage(promes).then(res => {
|
||||||
|
pageData.tableData = res.records
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 抛出数据并验证标签列表不为空
|
||||||
|
const throwData = () => {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
// // 验证:确保标签列表不为空
|
||||||
|
// if (!pageData.tableData || pageData.tableData.length === 0) {
|
||||||
|
// throw new Error('请录入车辆信息');
|
||||||
|
// }
|
||||||
|
resolve(pageData.tableData);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
defineExpose({
|
||||||
|
throwData
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import "~@/assets/css/layout.scss";
|
||||||
|
@import "~@/assets/css/element-plus.scss";
|
||||||
|
|
||||||
|
.backinfo-container {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep(.el-form) {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left_box {
|
||||||
|
width: 200px;
|
||||||
|
border: 1px solid #c8c8c89a;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right_box {
|
||||||
|
width: calc(100% - 230px);
|
||||||
|
overflow-y: auto;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-form-item__content {
|
||||||
|
display: block !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.headClass {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #303133;
|
||||||
|
margin: 0 0 10px 0;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
border-bottom: 2px solid #409eff;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.headSelect {
|
||||||
|
width: 100%;
|
||||||
|
padding: 0 16px;
|
||||||
|
background-color: #fff;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 移除冲突样式:不要用 justify-content */
|
||||||
|
|
||||||
|
/* 控制所有 el-form-item 高度和垂直居中 */
|
||||||
|
.form-inline :deep(.el-form-item) {
|
||||||
|
margin-bottom: 0;
|
||||||
|
height: 60px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ✅ 按钮区域靠右,且不换行 */
|
||||||
|
.form-inline .form-actions {
|
||||||
|
margin-left: auto;
|
||||||
|
/* 推到最右边 */
|
||||||
|
white-space: nowrap;
|
||||||
|
/* 防止按钮换行 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 统一按钮样式,增加间距和视觉舒适度 */
|
||||||
|
.form-inline :deep(.el-button) {
|
||||||
|
height: 36px;
|
||||||
|
padding: 8px 16px;
|
||||||
|
font-size: 14px;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 按钮之间留出间距(除了第一个) */
|
||||||
|
.form-inline :deep(.el-button:not(:first-child)) {
|
||||||
|
margin-left: 12px;
|
||||||
|
/* 比原来的 8px 更宽松 */
|
||||||
|
}
|
||||||
|
|
||||||
|
// .headClass::after {
|
||||||
|
// content: '';
|
||||||
|
// position: absolute;
|
||||||
|
// left: 0;
|
||||||
|
// bottom: -2px;
|
||||||
|
// width: 60px;
|
||||||
|
// height: 2px;
|
||||||
|
// background-color: #409eff;
|
||||||
|
// }
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,72 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="headClass" style="">
|
||||||
|
<h3>全要素布控</h3>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="marginBox">
|
||||||
|
<div>身份证号码:683716907261785789 <span>({{ status?'已布控':'未布控' }})</span></div>
|
||||||
|
|
||||||
|
<div>手机号码:18928937987 <span>({{ status?'已布控':'未布控' }})</span> <div> 18928937987 <span>({{ status?'已布控':'未布控' }})</span></div></div>
|
||||||
|
<div>车牌号码:冀A09219 <span>({{ status?'已布控':'未布控' }})</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref ,onMounted} from 'vue';
|
||||||
|
|
||||||
|
const status=ref(false)
|
||||||
|
onMounted(() => {
|
||||||
|
console.log('Deployment 组件已挂载!')
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import "~@/assets/css/layout.scss";
|
||||||
|
@import "~@/assets/css/element-plus.scss";
|
||||||
|
|
||||||
|
.headClass {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #303133;
|
||||||
|
margin: 0 0 10px 0;
|
||||||
|
border-bottom: 2px solid #409eff;
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.marginBox{
|
||||||
|
span{
|
||||||
|
margin-left: 10px;
|
||||||
|
color: #ff4040;
|
||||||
|
}
|
||||||
|
&>:nth-child(1){
|
||||||
|
width: 300px;
|
||||||
|
height: 30px;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
&>:nth-child(2){
|
||||||
|
width: 400px;
|
||||||
|
height: 30px;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
&>:nth-child(3){
|
||||||
|
width: 210px;
|
||||||
|
height: 30px;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
@ -0,0 +1,112 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="headClass" style="">
|
||||||
|
<h3>动态轨迹</h3>
|
||||||
|
<!-- <el-button type="primary" :disabled="disabled" @click="AddPore">选择</el-button> -->
|
||||||
|
</div>
|
||||||
|
<div class="headSelect">
|
||||||
|
<el-select v-model="value" placeholder="身份证号码" style="width: 100px">
|
||||||
|
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
<el-select v-model="value" placeholder="请输入内容" style="width: 240px">
|
||||||
|
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
<div class="demo-datetime-picker">
|
||||||
|
<div class="block">
|
||||||
|
<el-date-picker v-model="value2" type="datetimerange" start-placeholder="Start date"
|
||||||
|
end-placeholder="End date" format="YYYY-MM-DD HH:mm:ss" date-format="YYYY/MM/DD ddd"
|
||||||
|
time-format="A hh:mm:ss" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<el-button type="primary" @click="check">查询</el-button>
|
||||||
|
<el-button @click="resetForm">重置</el-button>
|
||||||
|
</div>
|
||||||
|
<div class="mapBox">地图</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref } from 'vue'
|
||||||
|
|
||||||
|
const value = ref('')
|
||||||
|
|
||||||
|
const options = [
|
||||||
|
{
|
||||||
|
value: '1',
|
||||||
|
label: '身份证号码',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: '2',
|
||||||
|
label: '港澳台通行证',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 'Option3',
|
||||||
|
label: 'Option3',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import "~@/assets/css/layout.scss";
|
||||||
|
@import "~@/assets/css/element-plus.scss";
|
||||||
|
|
||||||
|
.backinfo-container {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep(.el-form) {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left_box {
|
||||||
|
width: 200px;
|
||||||
|
border: 1px solid #c8c8c89a;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right_box {
|
||||||
|
width: calc(100% - 230px);
|
||||||
|
overflow-y: auto;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-form-item__content {
|
||||||
|
display: block !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.headClass {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #303133;
|
||||||
|
margin: 0 0 10px 0;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
border-bottom: 2px solid #409eff;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.headSelect {
|
||||||
|
width: 100%;
|
||||||
|
margin: 20px 0;
|
||||||
|
padding:0 16px;
|
||||||
|
background-color: #fff;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
display: flex;
|
||||||
|
align-items: baseline;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
}
|
||||||
|
.mapBox{
|
||||||
|
|
||||||
|
width: 100%;
|
||||||
|
height: 300px;
|
||||||
|
background-color: rgba(0, 123, 255, 0.5);
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,308 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="headClass" style="">
|
||||||
|
<h3>走访记录</h3>
|
||||||
|
<!-- <el-button type="primary" :disabled="disabled" @click="AddPore">选择</el-button> -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="headSelect">
|
||||||
|
|
||||||
|
<el-button @click="add" type="primary">新增</el-button>
|
||||||
|
</div>
|
||||||
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
|
<template #clys="{ row }">
|
||||||
|
<DictTag :tag="false" :value="row.clys" :options="D_BZ_CLYS" />
|
||||||
|
</template>
|
||||||
|
<template #cllx="{ row }">
|
||||||
|
<DictTag :tag="false" :value="row.cllx" :options="D_BZ_CLLX" />
|
||||||
|
</template>
|
||||||
|
<template #clpp="{ row }">
|
||||||
|
<DictTag :tag="false" :value="row.clpp" :options="D_BZ_CLPP" />
|
||||||
|
</template>
|
||||||
|
<!-- 操作 -->
|
||||||
|
<template #controls="{ row }">
|
||||||
|
<el-link type="danger" @click="delDictItem(row.id)">删除</el-link>
|
||||||
|
<el-link type="danger" @click="updDictItem(row)">修改</el-link>
|
||||||
|
</template>
|
||||||
|
</MyTable>
|
||||||
|
</div>
|
||||||
|
<VehiclDoing v-model="chooseMarksVisible" @comfirm="addMarks" :data="dataModel"
|
||||||
|
:dict="{ D_BZ_CLLX, D_BZ_CLYS, D_BZ_CLPP }" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { identityCardRule } from "@/utils/rules"
|
||||||
|
import { ref, reactive, watch, toRaw, getCurrentInstance, onMounted, onUnmounted } from "vue";
|
||||||
|
import MyTable from "@/components/aboutTable/MyTable.vue";
|
||||||
|
import VehiclDoing from "../component/vehiclDoing.vue";
|
||||||
|
import { tbZdryClxxAdd, tbZdryClxxBatchAdd, tbZdryClxxDelete, tbZdryClxxSelectPage, tbZdryClxxUpdate } from '@/api/zdr.js'
|
||||||
|
import { ElMessage, ElMessageBox } from "element-plus";
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
const { D_BZ_CLLX, D_BZ_CLYS, D_BZ_CLPP } = proxy.$dict("D_BZ_CLLX", "D_BZ_CLYS", "D_BZ_CLPP"); //获取字典数据
|
||||||
|
const chooseMarksVisible = ref(false)
|
||||||
|
const props = defineProps({
|
||||||
|
dataList: {
|
||||||
|
type: Object,
|
||||||
|
default: () => { },
|
||||||
|
}, disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
showBut: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
})
|
||||||
|
const listData = ref({})
|
||||||
|
const addUpd = ref(true)
|
||||||
|
watch(() => props.dataList, (val) => {
|
||||||
|
if (val) {
|
||||||
|
listData.value = val
|
||||||
|
gettbZdryClxxSelectPage()
|
||||||
|
}
|
||||||
|
}, { deep: true })
|
||||||
|
// 表格数据
|
||||||
|
const pageData = reactive({
|
||||||
|
tableData: [],
|
||||||
|
tableColumn: [{
|
||||||
|
prop: 'cph',
|
||||||
|
label: '人员姓名',
|
||||||
|
}, {
|
||||||
|
prop: 'cllx',
|
||||||
|
label: '身份证号码',
|
||||||
|
showSolt: true,
|
||||||
|
prop: 'clpp',
|
||||||
|
}, {
|
||||||
|
showSolt: true,
|
||||||
|
prop: 'clys',
|
||||||
|
label: '关系',
|
||||||
|
}, {
|
||||||
|
showSolt: true,
|
||||||
|
prop: 'clpp',
|
||||||
|
label: '车辆品牌',
|
||||||
|
|
||||||
|
prop: 'clsbm',
|
||||||
|
label: '联系电话',
|
||||||
|
}],
|
||||||
|
tableHeight: '200px',
|
||||||
|
keyCount: 0,
|
||||||
|
tableConfiger: {
|
||||||
|
border: true,
|
||||||
|
stripe: true,
|
||||||
|
showHeader: true,
|
||||||
|
showIndex: true,
|
||||||
|
indexLabel: '序号',
|
||||||
|
indexWidth: 60,
|
||||||
|
align: 'center',
|
||||||
|
showOverflowTooltip: true,
|
||||||
|
haveControls: !props.disabled
|
||||||
|
},
|
||||||
|
controlsWidth: 200,
|
||||||
|
})
|
||||||
|
// 表单数据
|
||||||
|
const formData = reactive({
|
||||||
|
username: "",
|
||||||
|
ID: ""
|
||||||
|
})
|
||||||
|
const rulesForm = ref( identityCardRule({ validator: true },'rySfzh'))
|
||||||
|
// 修改数据接口
|
||||||
|
const dataModel = ref()
|
||||||
|
const addMarks = (val) => {
|
||||||
|
const params = {
|
||||||
|
...val,
|
||||||
|
zdrid: listData.value.id,
|
||||||
|
}
|
||||||
|
if (props.showBut && !props.disabled) {
|
||||||
|
if (addUpd.value) {
|
||||||
|
tbZdryClxxAdd(params).then(res => {
|
||||||
|
gettbZdryClxxSelectPage()
|
||||||
|
proxy.$message({
|
||||||
|
message: '关联车辆添加成功',
|
||||||
|
type: 'success'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
tbZdryClxxUpdate(params).then(res => {
|
||||||
|
gettbZdryClxxSelectPage()
|
||||||
|
proxy.$message({
|
||||||
|
message: '关联车辆修改成功',
|
||||||
|
type: 'success'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
pageData.tableData.push(val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onMounted(()=>{
|
||||||
|
console.log(identityCardRule,"dadad1");
|
||||||
|
|
||||||
|
})
|
||||||
|
// 删除车辆
|
||||||
|
const delDictItem = (val) => {
|
||||||
|
if (!props.disabled && props.showBut) {
|
||||||
|
ElMessageBox.confirm(
|
||||||
|
'是否删除关联车辆',
|
||||||
|
'提示',
|
||||||
|
{
|
||||||
|
confirmButtonText: '确认',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning',
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.then(() => {
|
||||||
|
tbZdryClxxDelete({ ids: [val] }).then(res => {
|
||||||
|
gettbZdryClxxSelectPage()
|
||||||
|
proxy.$message({
|
||||||
|
message: '关联车辆删除成功',
|
||||||
|
type: 'success'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
ElMessage({
|
||||||
|
type: 'info',
|
||||||
|
message: '取消删除',
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
pageData.tableData = pageData.tableData.filter(v => v.id != val)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const updDictItem = (val) => {
|
||||||
|
chooseMarksVisible.value = true
|
||||||
|
addUpd.value = false
|
||||||
|
dataModel.value = val
|
||||||
|
}
|
||||||
|
const AddPore = () => {
|
||||||
|
chooseMarksVisible.value = true
|
||||||
|
dataModel.value = {}
|
||||||
|
addUpd.value = true
|
||||||
|
}
|
||||||
|
// 查询车辆
|
||||||
|
const gettbZdryClxxSelectPage = () => {
|
||||||
|
const promes = {
|
||||||
|
pageCurrent: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
zdrid: listData.value.id
|
||||||
|
}
|
||||||
|
tbZdryClxxSelectPage(promes).then(res => {
|
||||||
|
pageData.tableData = res.records
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 抛出数据并验证标签列表不为空
|
||||||
|
const throwData = () => {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
// // 验证:确保标签列表不为空
|
||||||
|
// if (!pageData.tableData || pageData.tableData.length === 0) {
|
||||||
|
// throw new Error('请录入车辆信息');
|
||||||
|
// }
|
||||||
|
resolve(pageData.tableData);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
defineExpose({
|
||||||
|
throwData
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import "~@/assets/css/layout.scss";
|
||||||
|
@import "~@/assets/css/element-plus.scss";
|
||||||
|
|
||||||
|
.backinfo-container {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep(.el-form) {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left_box {
|
||||||
|
width: 200px;
|
||||||
|
border: 1px solid #c8c8c89a;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right_box {
|
||||||
|
width: calc(100% - 230px);
|
||||||
|
overflow-y: auto;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-form-item__content {
|
||||||
|
display: block !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.headClass {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #303133;
|
||||||
|
margin: 20px 0 10px 0;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
border-bottom: 2px solid #409eff;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.headSelect {
|
||||||
|
width: 100%;
|
||||||
|
padding: 0 16px;
|
||||||
|
background-color: #fff;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
display: flex;
|
||||||
|
justify-content: end;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 移除冲突样式:不要用 justify-content */
|
||||||
|
|
||||||
|
/* 控制所有 el-form-item 高度和垂直居中 */
|
||||||
|
.form-inline :deep(.el-form-item) {
|
||||||
|
margin-bottom: 0;
|
||||||
|
height: 60px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ✅ 按钮区域靠右,且不换行 */
|
||||||
|
.form-inline .form-actions {
|
||||||
|
margin-left: auto;
|
||||||
|
/* 推到最右边 */
|
||||||
|
white-space: nowrap;
|
||||||
|
/* 防止按钮换行 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 统一按钮样式,增加间距和视觉舒适度 */
|
||||||
|
.form-inline :deep(.el-button) {
|
||||||
|
height: 36px;
|
||||||
|
padding: 8px 16px;
|
||||||
|
font-size: 14px;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 按钮之间留出间距(除了第一个) */
|
||||||
|
.form-inline :deep(.el-button:not(:first-child)) {
|
||||||
|
margin-left: 12px;
|
||||||
|
/* 比原来的 8px 更宽松 */
|
||||||
|
}
|
||||||
|
|
||||||
|
// .headClass::after {
|
||||||
|
// content: '';
|
||||||
|
// position: absolute;
|
||||||
|
// left: 0;
|
||||||
|
// bottom: -2px;
|
||||||
|
// width: 60px;
|
||||||
|
// height: 2px;
|
||||||
|
// background-color: #409eff;
|
||||||
|
// }
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
</style>
|
@ -4,7 +4,7 @@ function resolve(dir) {
|
|||||||
return path.join(__dirname, dir);
|
return path.join(__dirname, dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
const serverHost = "http://192.168.1.32:8006"//波哥
|
const serverHost = "http://47.108.232.77:9537"//波哥
|
||||||
// const serverHost = "http://192.168.0.231:8006"//线上
|
// const serverHost = "http://192.168.0.231:8006"//线上
|
||||||
// const serverHost = "http://192.168.1.117:8006"//周
|
// const serverHost = "http://192.168.1.117:8006"//周
|
||||||
// const serverHost = "http://192.168.1.98:8006"//毛毛
|
// const serverHost = "http://192.168.1.98:8006"//毛毛
|
||||||
|
Reference in New Issue
Block a user