1. 增加图纸预览及下载功能

2. 升级element-plus至最新版
This commit is contained in:
梁州 2025-04-23 11:19:06 +08:00
parent 3378c6d35a
commit 7ae89eca8a
28 changed files with 240 additions and 197 deletions

View File

@ -8,9 +8,10 @@
"name": "wms", "name": "wms",
"version": "0.1.0", "version": "0.1.0",
"dependencies": { "dependencies": {
"@element-plus/icons-vue": "^2.3.1",
"axios": "^1.3.3", "axios": "^1.3.3",
"core-js": "^3.8.3", "core-js": "^3.8.3",
"element-plus": "^2.4.0", "element-plus": "^2.9.8",
"file-saver": "^2.0.5", "file-saver": "^2.0.5",
"moment": "^2.29.4", "moment": "^2.29.4",
"node-polyfill-webpack-plugin": "^2.0.1", "node-polyfill-webpack-plugin": "^2.0.1",
@ -31,8 +32,8 @@
"@vue/cli-plugin-router": "~5.0.0", "@vue/cli-plugin-router": "~5.0.0",
"@vue/cli-plugin-vuex": "~5.0.0", "@vue/cli-plugin-vuex": "~5.0.0",
"@vue/cli-service": "~5.0.0", "@vue/cli-service": "~5.0.0",
"sass": "^1.83.4", "sass": "^1.87.0",
"sass-loader": "^16.0.4" "sass-loader": "^16.0.5"
} }
}, },
"node_modules/@achrinza/node-ipc": { "node_modules/@achrinza/node-ipc": {
@ -1736,9 +1737,9 @@
} }
}, },
"node_modules/@element-plus/icons-vue": { "node_modules/@element-plus/icons-vue": {
"version": "2.0.10", "version": "2.3.1",
"resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.0.10.tgz", "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
"integrity": "sha512-ygEZ1mwPjcPo/OulhzLE7mtDrQBWI8vZzEWSNB2W/RNCRjoQGwbaK4N8lV4rid7Ts4qvySU3njMN7YCiSlSaTQ==", "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==",
"peerDependencies": { "peerDependencies": {
"vue": "^3.2.0" "vue": "^3.2.0"
} }
@ -5131,9 +5132,9 @@
"integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
}, },
"node_modules/dayjs": { "node_modules/dayjs": {
"version": "1.11.7", "version": "1.11.13",
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.7.tgz", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
"integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
}, },
"node_modules/debug": { "node_modules/debug": {
"version": "4.3.4", "version": "4.3.4",
@ -5555,19 +5556,19 @@
"integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA=="
}, },
"node_modules/element-plus": { "node_modules/element-plus": {
"version": "2.4.0", "version": "2.9.8",
"resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.4.0.tgz", "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.9.8.tgz",
"integrity": "sha512-yJEa8LXkGOOgkfkeqMMEdeX/Dc8EH9qPcRuX91dlhSXxgCKKbp9tH3QFTOG99ibZsrN/Em62nh7ddvbc7I1frw==", "integrity": "sha512-srViUaUdfblBKGMeuEPiXxxKlH5aUmKqEwmhb/At9Sj91DbU6od/jYN1955cTnzt3wTSA7GfnZF7UiRX9sdRHg==",
"dependencies": { "dependencies": {
"@ctrl/tinycolor": "^3.4.1", "@ctrl/tinycolor": "^3.4.1",
"@element-plus/icons-vue": "^2.0.6", "@element-plus/icons-vue": "^2.3.1",
"@floating-ui/dom": "^1.0.1", "@floating-ui/dom": "^1.0.1",
"@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
"@types/lodash": "^4.14.182", "@types/lodash": "^4.14.182",
"@types/lodash-es": "^4.17.6", "@types/lodash-es": "^4.17.6",
"@vueuse/core": "^9.1.0", "@vueuse/core": "^9.1.0",
"async-validator": "^4.2.5", "async-validator": "^4.2.5",
"dayjs": "^1.11.3", "dayjs": "^1.11.13",
"escape-html": "^1.0.3", "escape-html": "^1.0.3",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
@ -10142,11 +10143,10 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
}, },
"node_modules/sass": { "node_modules/sass": {
"version": "1.83.4", "version": "1.87.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.83.4.tgz", "resolved": "https://registry.npmjs.org/sass/-/sass-1.87.0.tgz",
"integrity": "sha512-B1bozCeNQiOgDcLd33e2Cs2U60wZwjUUXzh900ZyQF5qUasvMdDZYbQ566LJu7cqR+sAHlAfO6RMkaID5s6qpA==", "integrity": "sha512-d0NoFH4v6SjEK7BoX810Jsrhj7IQSYHAHLi/iSpgqKc7LaIDshFRlSg5LOymf9FqQhxEHs2W5ZQXlvy0KD45Uw==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"chokidar": "^4.0.0", "chokidar": "^4.0.0",
"immutable": "^5.0.2", "immutable": "^5.0.2",
@ -10163,11 +10163,10 @@
} }
}, },
"node_modules/sass-loader": { "node_modules/sass-loader": {
"version": "16.0.4", "version": "16.0.5",
"resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.4.tgz", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.5.tgz",
"integrity": "sha512-LavLbgbBGUt3wCiYzhuLLu65+fWXaXLmq7YxivLhEqmiupCFZ5sKUAipK3do6V80YSU0jvSxNhEdT13IXNr3rg==", "integrity": "sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"neo-async": "^2.6.2" "neo-async": "^2.6.2"
}, },
@ -13393,9 +13392,9 @@
"integrity": "sha512-tlJpwF40DEQcfR/QF+wNMVyGMaO9FQp6Z1Wahj4Gk3CJQYHwA2xVG7iKDFdW6zuxZY9XWOpGcfNCTsX4McOsOg==" "integrity": "sha512-tlJpwF40DEQcfR/QF+wNMVyGMaO9FQp6Z1Wahj4Gk3CJQYHwA2xVG7iKDFdW6zuxZY9XWOpGcfNCTsX4McOsOg=="
}, },
"@element-plus/icons-vue": { "@element-plus/icons-vue": {
"version": "2.0.10", "version": "2.3.1",
"resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.0.10.tgz", "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
"integrity": "sha512-ygEZ1mwPjcPo/OulhzLE7mtDrQBWI8vZzEWSNB2W/RNCRjoQGwbaK4N8lV4rid7Ts4qvySU3njMN7YCiSlSaTQ==", "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==",
"requires": {} "requires": {}
}, },
"@eslint/eslintrc": { "@eslint/eslintrc": {
@ -16078,9 +16077,9 @@
"integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
}, },
"dayjs": { "dayjs": {
"version": "1.11.7", "version": "1.11.13",
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.7.tgz", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
"integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
}, },
"debug": { "debug": {
"version": "4.3.4", "version": "4.3.4",
@ -16415,19 +16414,19 @@
"integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA=="
}, },
"element-plus": { "element-plus": {
"version": "2.4.0", "version": "2.9.8",
"resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.4.0.tgz", "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.9.8.tgz",
"integrity": "sha512-yJEa8LXkGOOgkfkeqMMEdeX/Dc8EH9qPcRuX91dlhSXxgCKKbp9tH3QFTOG99ibZsrN/Em62nh7ddvbc7I1frw==", "integrity": "sha512-srViUaUdfblBKGMeuEPiXxxKlH5aUmKqEwmhb/At9Sj91DbU6od/jYN1955cTnzt3wTSA7GfnZF7UiRX9sdRHg==",
"requires": { "requires": {
"@ctrl/tinycolor": "^3.4.1", "@ctrl/tinycolor": "^3.4.1",
"@element-plus/icons-vue": "^2.0.6", "@element-plus/icons-vue": "^2.3.1",
"@floating-ui/dom": "^1.0.1", "@floating-ui/dom": "^1.0.1",
"@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
"@types/lodash": "^4.14.182", "@types/lodash": "^4.14.182",
"@types/lodash-es": "^4.17.6", "@types/lodash-es": "^4.17.6",
"@vueuse/core": "^9.1.0", "@vueuse/core": "^9.1.0",
"async-validator": "^4.2.5", "async-validator": "^4.2.5",
"dayjs": "^1.11.3", "dayjs": "^1.11.13",
"escape-html": "^1.0.3", "escape-html": "^1.0.3",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
@ -20029,9 +20028,9 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
}, },
"sass": { "sass": {
"version": "1.83.4", "version": "1.87.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.83.4.tgz", "resolved": "https://registry.npmjs.org/sass/-/sass-1.87.0.tgz",
"integrity": "sha512-B1bozCeNQiOgDcLd33e2Cs2U60wZwjUUXzh900ZyQF5qUasvMdDZYbQ566LJu7cqR+sAHlAfO6RMkaID5s6qpA==", "integrity": "sha512-d0NoFH4v6SjEK7BoX810Jsrhj7IQSYHAHLi/iSpgqKc7LaIDshFRlSg5LOymf9FqQhxEHs2W5ZQXlvy0KD45Uw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@parcel/watcher": "^2.4.1", "@parcel/watcher": "^2.4.1",
@ -20058,9 +20057,9 @@
} }
}, },
"sass-loader": { "sass-loader": {
"version": "16.0.4", "version": "16.0.5",
"resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.4.tgz", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.5.tgz",
"integrity": "sha512-LavLbgbBGUt3wCiYzhuLLu65+fWXaXLmq7YxivLhEqmiupCFZ5sKUAipK3do6V80YSU0jvSxNhEdT13IXNr3rg==", "integrity": "sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==",
"dev": true, "dev": true,
"requires": { "requires": {
"neo-async": "^2.6.2" "neo-async": "^2.6.2"

View File

@ -8,9 +8,10 @@
"lint": "vue-cli-service lint" "lint": "vue-cli-service lint"
}, },
"dependencies": { "dependencies": {
"@element-plus/icons-vue": "^2.3.1",
"axios": "^1.3.3", "axios": "^1.3.3",
"core-js": "^3.8.3", "core-js": "^3.8.3",
"element-plus": "^2.4.0", "element-plus": "^2.9.8",
"file-saver": "^2.0.5", "file-saver": "^2.0.5",
"moment": "^2.29.4", "moment": "^2.29.4",
"node-polyfill-webpack-plugin": "^2.0.1", "node-polyfill-webpack-plugin": "^2.0.1",
@ -31,8 +32,8 @@
"@vue/cli-plugin-router": "~5.0.0", "@vue/cli-plugin-router": "~5.0.0",
"@vue/cli-plugin-vuex": "~5.0.0", "@vue/cli-plugin-vuex": "~5.0.0",
"@vue/cli-service": "~5.0.0", "@vue/cli-service": "~5.0.0",
"sass": "^1.83.4", "sass": "^1.87.0",
"sass-loader": "^16.0.4" "sass-loader": "^16.0.5"
}, },
"eslintConfig": { "eslintConfig": {
"root": true, "root": true,

View File

@ -99,6 +99,15 @@ export const queryKittingBomByPage = (params) => {
timeout: 5000 timeout: 5000
}) })
} }
// 分页查询图纸列表
export const queryImagesByPage = (params) => {
return request({
url: '/kate/queryImagesByPage',
method: 'post',
data: params,
timeout: 5000
})
}
// 分页查询对应关系 // 分页查询对应关系
export const queryRelationByPage = (params) => { export const queryRelationByPage = (params) => {
return request({ return request({

View File

@ -8,7 +8,7 @@
<div style="display: flex;justify-content: space-between;"> <div style="display: flex;justify-content: space-between;">
<el-row> <el-row>
<el-form-item label="任务类型"> <el-form-item label="任务类型">
<el-select-v2 v-model="searchQueryFormEntity.outType" placeholder="任务类型" <el-select-v2 style="width: 196px" v-model="searchQueryFormEntity.outType" placeholder="任务类型"
:options="addAllOptionOfOptions(outTypeOptions)" :options="addAllOptionOfOptions(outTypeOptions)"
@change="search()"></el-select-v2> @change="search()"></el-select-v2>
</el-form-item> </el-form-item>
@ -241,10 +241,6 @@ const outsTypeFormat = (row, column, cellValue, index) => {
width: 196px; width: 196px;
} }
.el-form-item .el-select-v2 {
width: 196px;
}
.table-class { .table-class {
margin: 5px 5px 5px 5px; margin: 5px 5px 5px 5px;
width: inherit; width: inherit;

View File

@ -16,7 +16,7 @@
@keyup.enter="search()" clearable/> @keyup.enter="search()" clearable/>
</el-form-item> </el-form-item>
<el-form-item label="看板状态"> <el-form-item label="看板状态">
<el-select-v2 v-model="kanbanQuery.kanbanStatus" placeholder="看板状态" <el-select-v2 style="width: 196px" v-model="kanbanQuery.kanbanStatus" placeholder="看板状态"
:options="addAllOptionOfOptions(kanbanStatusOptions)" :options="addAllOptionOfOptions(kanbanStatusOptions)"
@change="search()"></el-select-v2> @change="search()"></el-select-v2>
</el-form-item> </el-form-item>
@ -309,10 +309,6 @@ const exportExcel = () => {
width: 196px; width: 196px;
} }
.el-form-item .el-select-v2 {
width: 196px;
}
.table-class { .table-class {
margin: 5px 5px 5px 5px; margin: 5px 5px 5px 5px;
width: inherit; width: inherit;

View File

@ -14,7 +14,7 @@
<el-input v-model="dbsQueryFormEntity.productId" @keyup.enter="search()" clearable/> <el-input v-model="dbsQueryFormEntity.productId" @keyup.enter="search()" clearable/>
</el-form-item> </el-form-item>
<el-form-item label="状态"> <el-form-item label="状态">
<el-select-v2 v-model="dbsQueryFormEntity.dbsStatus" placeholder="工单状态" <el-select-v2 style="width: 196px" v-model="dbsQueryFormEntity.dbsStatus" placeholder="工单状态"
:options="addAllOptionOfOptions(dbsStatusOptions)" :options="addAllOptionOfOptions(dbsStatusOptions)"
@change="search()"></el-select-v2> @change="search()"></el-select-v2>
</el-form-item> </el-form-item>
@ -471,10 +471,6 @@ const openUploadDialog = () => {
width: 196px; width: 196px;
} }
.el-form-item .el-select-v2 {
width: 196px;
}
.table-class { .table-class {
margin: 5px 5px 5px 5px; margin: 5px 5px 5px 5px;
width: inherit; width: inherit;

View File

@ -444,10 +444,6 @@ const exportExcel = () => {
width: 196px; width: 196px;
} }
.el-form-item .el-select-v2 {
width: 196px;
}
.table-class { .table-class {
margin: 5px 5px 5px 5px; margin: 5px 5px 5px 5px;
width: inherit; width: inherit;

View File

@ -8,7 +8,7 @@
<div style="display: flex;justify-content: space-between;"> <div style="display: flex;justify-content: space-between;">
<el-row> <el-row>
<el-form-item label="入库类型" prop="emptyTask"> <el-form-item label="入库类型" prop="emptyTask">
<el-select-v2 v-model="inTaskEntity.emptyTask" placeholder="请选择入库类型" <el-select-v2 style="width: 196px" v-model="inTaskEntity.emptyTask" placeholder="请选择入库类型"
:options="inTypeOptions" :options="inTypeOptions"
:disabled="taskRequestEntity.vehicleId != ''"></el-select-v2> :disabled="taskRequestEntity.vehicleId != ''"></el-select-v2>
</el-form-item> </el-form-item>

View File

@ -8,7 +8,7 @@
<div style="display: flex; justify-content: space-between;"> <div style="display: flex; justify-content: space-between;">
<el-row> <el-row>
<el-form-item label="出库类型" prop="outType"> <el-form-item label="出库类型" prop="outType">
<el-select-v2 v-model="outTaskEntity.outType" placeholder="请选择入库类型" <el-select-v2 style="width: 196px" v-model="outTaskEntity.outType" placeholder="请选择入库类型"
:options="outTypeOptions"></el-select-v2> :options="outTypeOptions"></el-select-v2>
</el-form-item> </el-form-item>
<el-form-item label="料号" prop="goodsId"> <el-form-item label="料号" prop="goodsId">
@ -22,7 +22,7 @@
controls-position="right" :min="1" clearable /> controls-position="right" :min="1" clearable />
</el-form-item> </el-form-item>
<el-form-item label="原因" prop="reason" v-if="outTaskEntity.outType == 9"> <el-form-item label="原因" prop="reason" v-if="outTaskEntity.outType == 9">
<el-select-v2 v-model="outTaskEntity.reason" placeholder="请选择紧急出库原因" <el-select-v2 style="width: 196px" v-model="outTaskEntity.reason" placeholder="请选择紧急出库原因"
:options="resonOptions"></el-select-v2> :options="resonOptions"></el-select-v2>
</el-form-item> </el-form-item>
</el-row> </el-row>

View File

@ -45,7 +45,7 @@ const findImage = () => {
} }
getImageOfWork(request).then(res => { getImageOfWork(request).then(res => {
const response = res.data const response = res.data
if (response.code == 0) { if (response.code === 0) {
const image = response.data const image = response.data
openPreview(image) openPreview(image)
} else { } else {

View File

@ -296,10 +296,6 @@ const exportExcel = () => {
width: 196px; width: 196px;
} }
.el-form-item .el-select-v2 {
width: 196px;
}
.table-class { .table-class {
margin: 5px 5px 5px 5px; margin: 5px 5px 5px 5px;
width: inherit; width: inherit;

View File

@ -8,7 +8,7 @@
<div style="display: flex;justify-content: space-between;"> <div style="display: flex;justify-content: space-between;">
<el-row> <el-row>
<el-form-item label="配料单类型"> <el-form-item label="配料单类型">
<el-select-v2 v-model="kittingBomQueryFormEntity.bomType" placeholder="配料单类型" <el-select-v2 style="width: 196px" v-model="kittingBomQueryFormEntity.bomType" placeholder="配料单类型"
:options="kittingBomTypeOptions" @change="search()"></el-select-v2> :options="kittingBomTypeOptions" @change="search()"></el-select-v2>
</el-form-item> </el-form-item>
<el-form-item label="机型"> <el-form-item label="机型">
@ -450,10 +450,6 @@ const openUploadDialog = () => {
width: 196px; width: 196px;
} }
.el-form-item .el-select-v2 {
width: 196px;
}
.table-class { .table-class {
margin: 5px 5px 5px 5px; margin: 5px 5px 5px 5px;
width: inherit; width: inherit;

View File

@ -409,10 +409,6 @@ const openUploadDialog = () => {
width: 196px; width: 196px;
} }
.el-form-item .el-select-v2 {
width: 196px;
}
.table-class { .table-class {
margin: 5px 5px 5px 5px; margin: 5px 5px 5px 5px;
width: inherit; width: inherit;

View File

@ -8,7 +8,7 @@
<div style="display: flex;justify-content: space-between;"> <div style="display: flex;justify-content: space-between;">
<el-row> <el-row>
<el-form-item label="任务状态"> <el-form-item label="任务状态">
<el-select-v2 v-model="searchQueryFormEntity.pickStatus" placeholder="任务状态" <el-select-v2 style="width: 196px" v-model="searchQueryFormEntity.pickStatus" placeholder="任务状态"
:options="addAllOptionOfOptions(pickingTaskStatusOptions)" :options="addAllOptionOfOptions(pickingTaskStatusOptions)"
@change="search()"></el-select-v2> @change="search()"></el-select-v2>
</el-form-item> </el-form-item>
@ -232,10 +232,6 @@ const pickStatusFormat = (row, column, cellValue, index) => {
width: 196px; width: 196px;
} }
.el-form-item .el-select-v2 {
width: 196px;
}
.table-class { .table-class {
margin: 5px 5px 5px 5px; margin: 5px 5px 5px 5px;
width: inherit; width: inherit;

View File

@ -17,6 +17,8 @@ import { requestImageDetail } from '@/api/kateWork.js'
import { isSingleCharacter, isNumber } from '@/utils/stringUtils'; import { isSingleCharacter, isNumber } from '@/utils/stringUtils';
import { onBeforeUnmount, onMounted, reactive } from 'vue'; import { onBeforeUnmount, onMounted, reactive } from 'vue';
// //
const USER_NAME = store.getters.getUserName
const STAND_ID = store.getters.getStandId
const fit = 'contain' const fit = 'contain'
let imageData = reactive({ let imageData = reactive({
url: '', url: '',
@ -27,8 +29,8 @@ let imageData = reactive({
let inputStr = '' let inputStr = ''
let imageRequest = reactive({ let imageRequest = reactive({
imageId: '', imageId: '',
userName: store.getters.getUserName, userName: USER_NAME,
standId: store.getters.getStandId standId: STAND_ID
}) })
// //
onMounted(() => { onMounted(() => {
@ -39,10 +41,10 @@ onBeforeUnmount(() => {
}) })
// //
const handleKeyDown = (event) => { const handleKeyDown = (event) => {
if (event.key.toLowerCase() == 'enter') { if (event.key.toLowerCase() === 'enter') {
solveInput() solveInput()
} else { } else {
if (event.key.toLowerCase() == 'backspace') { if (event.key.toLowerCase() === 'backspace') {
inputStr = inputStr.substring(0, inputStr.length - 1) inputStr = inputStr.substring(0, inputStr.length - 1)
} else if (isSingleCharacter(event.key) || isNumber(event.key)) { } else if (isSingleCharacter(event.key) || isNumber(event.key)) {
inputStr += event.key inputStr += event.key
@ -52,7 +54,7 @@ const handleKeyDown = (event) => {
// //
const solveInput = () => { const solveInput = () => {
// //
if (inputStr == '') { if (inputStr === '') {
closePreview('空输入。') closePreview('空输入。')
} }
// //
@ -62,15 +64,15 @@ const solveInput = () => {
} }
// //
const findImage = () => { const findImage = () => {
if (imageRequest.imageId == '') { if (imageRequest.imageId === '') {
closePreview('请求缺少图纸编号。') closePreview('请求缺少图纸编号。')
} }
requestImageDetail(imageRequest).then(res => { requestImageDetail(imageRequest).then(res => {
const response = res.data const response = res.data
if (response.code == 0) { if (response.code === 0) {
const results = response.data const results = response.data
if (results == undefined || results.length != 1) { if (results === undefined || results.length !== 1) {
closePreview('无图纸。') closePreview('无图纸或图纸歧义。')
return return
} }
const image = results[0] const image = results[0]

View File

@ -28,12 +28,12 @@
<el-input v-model="stockQuery.locationId" @keyup.enter="search()" clearable /> <el-input v-model="stockQuery.locationId" @keyup.enter="search()" clearable />
</el-form-item> </el-form-item>
<el-form-item label="库存状态"> <el-form-item label="库存状态">
<el-select-v2 v-model="stockQuery.stockStatus" placeholder="库存状态" <el-select-v2 style="width: 196px" v-model="stockQuery.stockStatus" placeholder="库存状态"
:options="addAllOptionOfOptions(stockStatusOptions)" :options="addAllOptionOfOptions(stockStatusOptions)"
@change="search()"></el-select-v2> @change="search()"></el-select-v2>
</el-form-item> </el-form-item>
<el-form-item label="物料状态"> <el-form-item label="物料状态">
<el-select-v2 v-model="stockQuery.goodsStatus" placeholder="物料状态" <el-select-v2 style="width: 196px" v-model="stockQuery.goodsStatus" placeholder="物料状态"
:options="addAllOptionOfOptions(goodsStatusOptions)" :options="addAllOptionOfOptions(goodsStatusOptions)"
@change="search()"></el-select-v2> @change="search()"></el-select-v2>
</el-form-item> </el-form-item>
@ -550,10 +550,6 @@ const submitStockInfo = () => {
width: 196px; width: 196px;
} }
.el-form-item .el-select-v2 {
width: 196px;
}
.table-class { .table-class {
margin: 5px 5px 5px 5px; margin: 5px 5px 5px 5px;
width: inherit; width: inherit;

View File

@ -269,10 +269,6 @@ const exportExcel = () => {
width: 196px; width: 196px;
} }
.el-form-item .el-select-v2 {
width: 196px;
}
.table-class { .table-class {
margin: 5px 5px 5px 5px; margin: 5px 5px 5px 5px;
width: inherit; width: inherit;

View File

@ -8,12 +8,12 @@
<div style="display: flex;justify-content: space-between;"> <div style="display: flex;justify-content: space-between;">
<el-row> <el-row>
<el-form-item label="任务类型"> <el-form-item label="任务类型">
<el-select-v2 v-model="searchQueryFormEntity.taskType" placeholder="任务类型" <el-select-v2 style="width: 196px" v-model="searchQueryFormEntity.taskType" placeholder="任务类型"
:options="addAllOptionOfOptions(taskTypeOptions)" :options="addAllOptionOfOptions(taskTypeOptions)"
@change="search()"></el-select-v2> @change="search()"></el-select-v2>
</el-form-item> </el-form-item>
<el-form-item label="任务状态"> <el-form-item label="任务状态">
<el-select-v2 v-model="searchQueryFormEntity.taskStatus" placeholder="任务状态" <el-select-v2 style="width: 196px" v-model="searchQueryFormEntity.taskStatus" placeholder="任务状态"
:options="addAllOptionOfOptions(wmsTaskStatusOptions)" :options="addAllOptionOfOptions(wmsTaskStatusOptions)"
@change="search()"></el-select-v2> @change="search()"></el-select-v2>
</el-form-item> </el-form-item>
@ -500,10 +500,6 @@ const submitUpdateRow = (rowFormEntity) => {
width: 196px; width: 196px;
} }
.el-form-item .el-select-v2 {
width: 196px;
}
.table-class { .table-class {
margin: 5px 5px 5px 5px; margin: 5px 5px 5px 5px;
width: inherit; width: inherit;

View File

@ -8,17 +8,17 @@
<div style="display: flex;justify-content: space-between;"> <div style="display: flex;justify-content: space-between;">
<el-row> <el-row>
<el-form-item label="空箱"> <el-form-item label="空箱">
<el-select-v2 v-model="searchQueryFormEntity.isEmpty" placeholder="任务类型" <el-select-v2 style="width: 196px" v-model="searchQueryFormEntity.isEmpty" placeholder="任务类型"
:options="addAllOptionOfOptions(yesOrNoOptions)" :options="addAllOptionOfOptions(yesOrNoOptions)"
@change="search()"></el-select-v2> @change="search()"></el-select-v2>
</el-form-item> </el-form-item>
<el-form-item label="锁定"> <el-form-item label="锁定">
<el-select-v2 v-model="searchQueryFormEntity.isLock" placeholder="任务状态" <el-select-v2 style="width: 196px" v-model="searchQueryFormEntity.isLock" placeholder="任务状态"
:options="addAllOptionOfOptions(yesOrNoOptions)" :options="addAllOptionOfOptions(yesOrNoOptions)"
@change="search()"></el-select-v2> @change="search()"></el-select-v2>
</el-form-item> </el-form-item>
<el-form-item label="状态"> <el-form-item label="状态">
<el-select-v2 v-model="searchQueryFormEntity.vehicleStatus" placeholder="任务状态" <el-select-v2 style="width: 196px" v-model="searchQueryFormEntity.vehicleStatus" placeholder="任务状态"
:options="addAllOptionOfOptions(vehicleStatusOptions)" :options="addAllOptionOfOptions(vehicleStatusOptions)"
@change="search()"></el-select-v2> @change="search()"></el-select-v2>
</el-form-item> </el-form-item>
@ -407,10 +407,6 @@ const submitUpdateRow = (rowFormEntity) => {
width: 196px; width: 196px;
} }
.el-form-item .el-select-v2 {
width: 196px;
}
.table-class { .table-class {
margin: 5px 5px 5px 5px; margin: 5px 5px 5px 5px;
width: inherit; width: inherit;

View File

@ -8,7 +8,7 @@
<div style="display: flex;justify-content: space-between;"> <div style="display: flex;justify-content: space-between;">
<el-row> <el-row>
<el-form-item label="数据类型"> <el-form-item label="数据类型">
<el-select-v2 v-model="searchQueryFormEntity.summaryType" placeholder="数据类型" <el-select-v2 style="width: 196px" v-model="searchQueryFormEntity.summaryType" placeholder="数据类型"
:options="summaryTypeOptions" @change="search()"></el-select-v2> :options="summaryTypeOptions" @change="search()"></el-select-v2>
</el-form-item> </el-form-item>
<el-form-item label="工单号"> <el-form-item label="工单号">
@ -689,10 +689,6 @@ const getPrintTabs = (boxSummary) => {
width: 196px; width: 196px;
} }
.el-form-item .el-select-v2 {
width: 196px;
}
.table-class { .table-class {
margin: 5px 5px 5px 5px; margin: 5px 5px 5px 5px;
width: inherit; width: inherit;

View File

@ -1,83 +1,79 @@
import { createRouter, createWebHashHistory } from 'vue-router' import {createRouter, createWebHashHistory} from 'vue-router'
import HomeView from '@/views/HomeView.vue' import HomeView from '@/views/HomeView.vue'
import login from '@/views/login.vue' import login from '@/views/login.vue'
import systemCenter from'@/views/SystemCenter.vue' import systemCenter from '@/views/SystemCenter.vue'
const routes = [ const routes = [
{ {
path: '/home', path: '/home',
name: 'home', name: 'home',
component: HomeView, component: HomeView,
// redirect: '/stock', // redirect: '/stock',
children: [ children: [
{ path: '/stock', component: () => import('@/layout/stock.vue')},// 库存 {path: '/stock', component: () => import('@/layout/stock.vue')},// 库存
{ path: '/goodsIn', component: () => import('@/layout/goodsIn.vue') },// 入库 {path: '/goodsIn', component: () => import('@/layout/goodsIn.vue')},// 入库
{ path: '/goodsOut', component: () => import('@/layout/goodsOut.vue') },// 出库 {path: '/goodsOut', component: () => import('@/layout/goodsOut.vue')},// 出库
{ path: '/kitting', component: () => import('@/layout/kitting.vue') },// 配料 {path: '/kitting', component: () => import('@/layout/kitting.vue')},// 配料
{ path: '/inTaskRecord', component: () => import('@/layout/inTaskRecord.vue') },// 入库记录 {path: '/inTaskRecord', component: () => import('@/layout/inTaskRecord.vue')},// 入库记录
{ path: '/outTaskRecord', component: () => import('@/layout/outTaskRecord.vue') },// 出库记录 {path: '/outTaskRecord', component: () => import('@/layout/outTaskRecord.vue')},// 出库记录
{ path: '/location', component: () => import('@/layout/locationsTable.vue') },// 库位 {path: '/location', component: () => import('@/layout/locationsTable.vue')},// 库位
{ path: '/goods', component: () => import('@/layout/goods.vue') },// 物料 {path: '/goods', component: () => import('@/layout/goods.vue')},// 物料
{ path: '/standSettings', component: () => import('@/layout/standSettings.vue') },// 站台(库口)设置 {path: '/standSettings', component: () => import('@/layout/standSettings.vue')},// 站台(库口)设置
{ path: '/config', component: () => import('@/layout/wmsConfigNew.vue') },// 系统配置 {path: '/config', component: () => import('@/layout/wmsConfigNew.vue')},// 系统配置
{ path: '/taskMonitor', component: () => import('@/layout/taskMonitor.vue') },// 任务监控 {path: '/taskMonitor', component: () => import('@/layout/taskMonitor.vue')},// 任务监控
{ path: '/vehicles', component: () => import('@/layout/vehicle.vue') },// 料箱监控 {path: '/vehicles', component: () => import('@/layout/vehicle.vue')},// 料箱监控
{ path: '/inventory', component: () => import('@/layout/inventory.vue') },// 盘点 {path: '/inventory', component: () => import('@/layout/inventory.vue')},// 盘点
{ path: '/inventoryRecord', component: () => import('@/layout/inventoryRecord.vue') },// 盘点记录 {path: '/inventoryRecord', component: () => import('@/layout/inventoryRecord.vue')},// 盘点记录
{ path: '/wmsLog', component: () => import('@/layout/wmsLog.vue') },// 日志 {path: '/wmsLog', component: () => import('@/layout/wmsLog.vue')},// 日志
{ path: '/workSummary', component: () => import('@/layout/workSummary.vue') },// 工作总结 {path: '/workSummary', component: () => import('@/layout/workSummary.vue')},// 工作总结
{ path: '/pickTask', component: () => import('@/layout/pickTaskMonitor.vue') },// 拣选任务 {path: '/pickTask', component: () => import('@/layout/pickTaskMonitor.vue')},// 拣选任务
{ path: '/outsMonitor', component: () => import('@/layout/OutsMonitor.vue') },// 任务表单 {path: '/outsMonitor', component: () => import('@/layout/OutsMonitor.vue')},// 任务表单
{ path: '/clcKanban', component: () => import('@/layout/clcKanban.vue') },// 需求看板 {path: '/clcKanban', component: () => import('@/layout/clcKanban.vue')},// 需求看板
{ path: '/stockUpdateRecord', component: () => import('@/layout/stockUpdateRecord.vue') },// 库存更新记录 {path: '/stockUpdateRecord', component: () => import('@/layout/stockUpdateRecord.vue')},// 库存更新记录
{ path: '/roleUser', component: () => import('@/layout/role_user.vue') },// 角色——用户列表 {path: '/roleUser', component: () => import('@/layout/role_user.vue')},// 角色——用户列表
{ path: '/rolePermission', component: () => import('@/layout/role_permission.vue') },// 角色——权限列表 {path: '/rolePermission', component: () => import('@/layout/role_permission.vue')},// 角色——权限列表
{ path: '/test', component: () => import('@/layout/testView.vue') },// 测试 {path: '/test', component: () => import('@/layout/testView.vue')},// 测试
{ path: '/dbsList', component: () => import('@/layout/dbsList.vue') },// dbs计划 {path: '/dbsList', component: () => import('@/layout/dbsList.vue')},// dbs计划
{ path: '/kittingList', component: () => import('@/layout/kittingList.vue') },// 配料单 {path: '/kittingList', component: () => import('@/layout/kittingList.vue')},// 配料单
{ path: '/kittingRelation', component: () => import('@/layout/kittingRelation.vue') },// 配料单 {path: '/kittingRelation', component: () => import('@/layout/kittingRelation.vue')},// 对应关系
] {path: '/imageTable', component: () => import('@/layout/ImageTable.vue')},
}, ]
{ },
path: '/', {
name: 'login', path: '/',
component: login name: 'login',
}, component: login
{ },
path: '/systemCenter', {
name: 'systemCenter', path: '/systemCenter',
component: systemCenter name: 'systemCenter',
}, component: systemCenter
{ },
path: '/imageDisplay', {
name: 'imageDisplay', path: '/imageDisplay',
component: () => import('@/layout/imageDisplay.vue') name: 'imageDisplay',
}, component: () => import('@/layout/imageDisplay.vue')
{ },
path: '/imageTable', {
name: 'imageTable', path: '/scanForImage',
component: () => import('@/layout/imageTable.vue') name: 'scanForImage',
}, component: () => import('@/layout/scanForImage.vue')
{ }
path: '/scanForImage',
name: 'scanForImage',
component: () => import('@/layout/scanForImage.vue')
}
] ]
const router = createRouter({ const router = createRouter({
base: '/', base: '/',
history: createWebHashHistory(), history: createWebHashHistory(),
routes routes
}) })
// 挂载路由导航守卫 // 挂载路由导航守卫
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
if (to.path === '/') return next() if (to.path === '/') return next()
// 获取token // 获取token
const user = sessionStorage.getItem('user') const user = sessionStorage.getItem('user')
if (!user) return next('/') if (!user) return next('/')
next() next()
}) })
export default router export default router

View File

@ -3,6 +3,9 @@ package com.wms_main.constant.enums.jobs;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
/**
* 定时器定时类型
*/
@Getter @Getter
@AllArgsConstructor @AllArgsConstructor
public enum JobTimerTypeEnums { public enum JobTimerTypeEnums {

View File

@ -113,6 +113,16 @@ public class KateWorkController {
return kateWorkControllerService.requestImageDetail(imageQuery); return kateWorkControllerService.requestImageDetail(imageQuery);
} }
/**
* 查询图纸---分页
* @param imageQuery 查询参数
* @return 查询结果
*/
@PostMapping("/queryImagesByPage")
public WmsApiResponse<PageVo<ImageVo>> queryImagesByPage(@RequestBody ImageQuery imageQuery) {
return kateWorkControllerService.queryImagesByPage(imageQuery);
}
/** /**
* 查询DBS数据--分页 * 查询DBS数据--分页
* @param dbsQuery 查询参数 * @param dbsQuery 查询参数

View File

@ -4,15 +4,17 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import com.wms_main.model.po.TAppImage; import com.wms_main.model.po.TAppImage;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
/** /**
* 图纸Vo * 图纸Vo
*/ */
@EqualsAndHashCode(callSuper = true)
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class ImageVo { public class ImageVo extends BaseImportVo {
/** /**
* 图纸id * 图纸id
*/ */
@ -55,4 +57,25 @@ public class ImageVo {
*/ */
@JsonProperty("imageType") @JsonProperty("imageType")
private Integer imageType; private Integer imageType;
/**
* 将po对象转换为vo对象
* @param po po对象
* @return vo
*/
public static ImageVo ofPo(TAppImage po)
{
ImageVo imageVo = new ImageVo();
if (po == null) {
return imageVo;
}
imageVo.setImageId(po.getImageId());
imageVo.setProductId(po.getProductId());
imageVo.setBoxNo(po.getBoxNo());
imageVo.setImagePath(po.getImagePath());
imageVo.setImageName(po.getImageName());
// imageVo.setImageDetail(po.getImageDetail());
imageVo.setImageType(po.getImageType());
return imageVo;
}
} }

View File

@ -5,6 +5,9 @@ import lombok.RequiredArgsConstructor;
import org.springframework.boot.CommandLineRunner; import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/**
* 定时任务启动类
*/
@Component @Component
@RequiredArgsConstructor @RequiredArgsConstructor
public class JobStarter implements CommandLineRunner { public class JobStarter implements CommandLineRunner {

View File

@ -90,6 +90,13 @@ public interface IKateWorkControllerService {
*/ */
WmsApiResponse<PageVo<KittingBomVo>> queryKittingBomByPage(KittingBomQuery kittingBomQuery); WmsApiResponse<PageVo<KittingBomVo>> queryKittingBomByPage(KittingBomQuery kittingBomQuery);
/**
* 查询图纸列表---分页
* @param imageQuery 查询参数
* @return 查询结果---分页
*/
WmsApiResponse<PageVo<ImageVo>> queryImagesByPage(ImageQuery imageQuery);
/** /**
* 查询配料单对应关系列表---分页 * 查询配料单对应关系列表---分页
* @param kittingBomRelationQuery 查询参数 * @param kittingBomRelationQuery 查询参数

View File

@ -823,7 +823,7 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
imageIp, imageIp,
image.getImagePath(), image.getImagePath(),
image.getImageName(), image.getImageName(),
FileUtils.getImageDetail(imageList.getFirst().getImagePath(), imageList.getFirst().getImageName()), FileUtils.getImageDetail(image.getImagePath(), image.getImageName()),
image.getImageType()); image.getImageType());
imageVoList.add(imageVo); imageVoList.add(imageVo);
} }
@ -889,6 +889,25 @@ public class KateWorkControllerServiceImpl implements IKateWorkControllerService
} }
} }
/**
* 查询图纸列表分页---实现
* @param imageQuery 查询参数
* @return 查询结果
*/
@Override
public WmsApiResponse<PageVo<ImageVo>> queryImagesByPage(ImageQuery imageQuery) {
Page<TAppImage> page = imageQuery.toMpPage();
LambdaQueryWrapper<TAppImage> lambdaQueryWrapper = new LambdaQueryWrapper<TAppImage>()
.like(StringUtils.isNotEmpty(imageQuery.getImageId()), TAppImage::getImageId, imageQuery.getImageId())
.like(StringUtils.isNotEmpty(imageQuery.getProductId()), TAppImage::getProductId, imageQuery.getProductId())
.like(StringUtils.isNotEmpty(imageQuery.getBoxNo()), TAppImage::getBoxNo, imageQuery.getBoxNo())
.eq(imageQuery.getImageType() != null, TAppImage::getImageType, imageQuery.getImageType());
Page<TAppImage> pagePo = appImageService.page(page, lambdaQueryWrapper);
PageVo<ImageVo> pageVo = PageVo.of(pagePo, ImageVo::ofPo);
return WmsApiResponse.success("查询图纸数据成功", pageVo);
}
/** /**
* 配料单对应关系实现---分页 * 配料单对应关系实现---分页
* *

View File

@ -3,19 +3,42 @@ package com.wms_main.service.quartz_job;
import com.wms_main.quartz.config.JobBean; import com.wms_main.quartz.config.JobBean;
/** /**
* 定时任务服务实现 * 定时任务服务
*/ */
public interface IJobService { public interface IJobService {
/**
* 创建任务
* @param jobBean 任务信息
*/
void createJob(JobBean jobBean); void createJob(JobBean jobBean);
/**
* 删除定时任务
* @param jobName 任务名
*/
void deleteJob(String jobName); void deleteJob(String jobName);
/**
* 修改定时任务
* @param jobBean 任务信息
*/
void modifyJob(JobBean jobBean); void modifyJob(JobBean jobBean);
/**
* 暂停定时任务
* @param jobName 任务名
*/
void pauseJob(String jobName); void pauseJob(String jobName);
/**
* 恢复定时任务
* @param jobName 任务名
*/
void resumeJob(String jobName); void resumeJob(String jobName);
/**
* 立即执行一次任务
* @param jobName 任务名
*/
void runJobOnce(String jobName); void runJobOnce(String jobName);
/**
* 初始化所有的定时任务
* 只创建启用的
*/
void initAllJobs(); void initAllJobs();
} }