This commit is contained in:
朱文强 2024-04-18 14:13:17 +08:00
parent 2fc7649a13
commit aa70a4a075
49 changed files with 2079 additions and 689 deletions

View File

@ -1,7 +1,7 @@
###
# @Author: Do not edit
# @Date: 2023-08-29 09:40:39
# @LastEditTime: 2023-09-27 14:04:02
# @LastEditTime: 2024-04-18 14:12:38
# @LastEditors: zwq
# @Description:
###
@ -9,10 +9,11 @@
ENV = 'development'
# 页面标题
VUE_APP_TITLE = 爱协林管理系统
VUE_APP_TITLE = 热处理立库管理系统
# 芋道管理系统/开发环境
VUE_APP_BASE_API = 'http://192.168.1.12:48080'
VUE_APP_BASE_API = 'http://192.168.1.180:48080'
VUE_APP_JM_API = 'http://192.168.1.180:48080'
# 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true

View File

@ -2,7 +2,7 @@
ENV = 'development'
# 页面标题
VUE_APP_TITLE = 爱协林管理系统
VUE_APP_TITLE = 热处理立库管理系统
# 芋道管理系统/本地环境
VUE_APP_BASE_API = 'http://api-dashboard.yudao.iocoder.cn'

View File

@ -2,21 +2,24 @@
# @Author: zwq
# @Date: 2023-09-14 13:44:22
# @LastEditors: zwq
# @LastEditTime: 2023-11-17 14:57:46
# @LastEditTime: 2023-12-15 10:51:16
# @Description:
###
# 生产环境配置
ENV = 'production'
# 页面标题
VUE_APP_TITLE = 爱协林管理系统
VUE_APP_TITLE = 热处理立库管理系统
# 芋道管理系统/生产环境
VUE_APP_BASE_API = '/prod-api'
VUE_APP_JM_API = 'http://10.10.100.219:48080'
# 根据服务器或域名修改
# PUBLIC_PATH = 'http://my-pi.com:8888/yudao-admin/'
PUBLIC_PATH = 'http://10.10.100.219:8888/'
# PUBLIC_PATH = 'http://192.168.0.127:8888/'
# PUBLIC_PATH = 'http://192.168.1.55:8888/'
# 二级部署路径
VUE_APP_APP_NAME ='yudao-admin'

View File

@ -1,7 +1,7 @@
NODE_ENV = production
# 页面标题
VUE_APP_TITLE = 爱协林管理系统
VUE_APP_TITLE = 热处理立库管理系统
# 测试环境配置
ENV = 'staging'

View File

@ -4,7 +4,7 @@ NODE_ENV = development
ENV = 'staging'
# 页面标题
VUE_APP_TITLE = 爱协林管理系统
VUE_APP_TITLE = 热处理立库管理系统
# 芋道管理系统/测试环境
VUE_APP_BASE_API = 'http://127.0.0.1:48080'

View File

@ -1,7 +1,7 @@
{
"name": "yudao-ui-admin",
"version": "1.7.3-snapshot",
"description": "爱协林管理系统",
"description": "热处理立库管理系统",
"author": "爱协林",
"license": "MIT",
"scripts": {
@ -63,7 +63,7 @@
"nprogress": "0.2.0",
"qrcode.vue": "^1.7.0",
"quill": "1.3.7",
"screenfull": "5.0.2",
"screenfull": "^5.0.2",
"sortablejs": "1.10.2",
"throttle-debounce": "2.1.0",
"vue": "2.7.14",

View File

@ -1,14 +1,16 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="renderer" content="webkit" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
<meta name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, target-densitydpi=device-dpi" />
<link rel="icon" href="<%= BASE_URL %>loge_ys1.svg" />
<title><%= webpackConfig.name %></title>
<title>
<%= webpackConfig.name %>
</title>
<!--[if lt IE 11]>
<script>
window.location.href = 'html/ie.html';
@ -211,5 +213,9 @@
<div class="load_title">正在加载系统资源,请耐心等待</div>
</div>
</div>
<script id="videonode" src="./static/webVideoCtrl.js"></script>
<script src="./static/jsVideoPlugin-1.0.0.min.js"></script>
<script src="./static/jquery-1.7.1.min.js"></script>
</body>
</html>

View File

@ -8,7 +8,20 @@ export function createAlarmLog(data) {
data: data
})
}
// 大屏看板数据
export function screenData() {
return request({
url: '/axl/screen/screenData',
method: 'post'
})
}
// 大屏看板数据
export function screenStatus() {
return request({
url: '/axl/screen/status',
method: 'post'
})
}
// 更新报警记录
export function updateAlarmLog(data) {
return request({

View File

@ -9,6 +9,13 @@ export function createProduct(data) {
})
}
// 获得产品规格列表
export function getProductList() {
return request({
url: '/axl/product/list',
method: 'get',
})
}
// 更新产品规格
export function updateProduct(data) {
return request({

View File

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2023-09-13 16:08:14
* @LastEditors: zwq
* @LastEditTime: 2023-11-01 16:16:19
* @LastEditTime: 2023-12-20 14:52:46
* @Description:
*/
import request from '@/utils/request'
@ -47,10 +47,17 @@ export function getProductList(id) {
method: 'get'
})
}
// 出库
// 出库输送线
export function outWare(id) {
return request({
url: '/axl/warehousestorehouse/out?id=' + id,
url: '/axl/warehousestorehouse/outLine?id=' + id,
method: 'get'
})
}
// 出库载货台
export function outWare2(id) {
return request({
url: '/axl/warehousestorehouse/outPlatform?id=' + id,
method: 'get'
})
}
@ -63,6 +70,13 @@ export function getWarehousestorehousePage(query) {
})
}
// 获得立库库位list
export function getWarehousestorehouseListById() {
return request({
url: '/axl/warehousestorehouse/listById',
method: 'get'
})
}
// 获得立库库位分页
export function getWarehousestorehouseList() {
return request({
@ -70,6 +84,14 @@ export function getWarehousestorehouseList() {
method: 'get',
})
}
// 根据货物信息查询立库库位列表
export function getWarehousestorehouseNList(query) {
return request({
url: '/axl/warehousestorehouse/listByProduct',
method: 'get',
params: query
})
}
// 导出立库库位 Excel
export function exportWarehousestorehouseExcel(query) {
return request({

BIN
src/assets/axl/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

BIN
src/assets/axl/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
src/assets/axl/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
src/assets/axl/4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
src/assets/axl/5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

BIN
src/assets/axl/bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

BIN
src/assets/axl/div2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
src/assets/axl/title.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 902 B

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>物料信息 </title>
<g id="页面" stroke="none" stroke-width="1" fill="white" fill-rule="evenodd">
<g id="icon和插图" transform="translate(-314.000000, -223.000000)" fill-rule="nonzero">
<g id="物料信息-" transform="translate(314.000000, 223.000000)">
<rect id="矩形" opacity="0" x="0" y="0" width="24" height="24"></rect>
<path d="M19.9627043,14.7797594 L20.0659241,14.7858511 C20.4183053,15.0281132 20.5214764,15.8745366 20.1381853,16.1920708 L20.0485192,16.2516057 L12.3316692,20.299028 C12.1922882,20.3818545 11.8887612,20.3919128 11.7117091,20.3317245 L11.6350681,20.2957882 L3.92833627,16.3083349 C3.5459304,16.0427564 3.54783213,15.3128117 3.78106853,14.9309248 L3.83892922,14.8493454 L3.96184986,14.8242831 L11.992,18.973 L19.9627043,14.7797594 Z M19.9627075,11.22831 L20.0658417,11.2343469 C20.4182879,11.4761353 20.5214923,12.3226875 20.1381887,12.6402497 L20.0485192,12.6997887 L12.3316692,16.7472111 C12.1922882,16.8300375 11.8887612,16.8400958 11.7117091,16.7799075 L11.6350681,16.7439712 L3.92833627,12.7565179 C3.5459304,12.4909394 3.54783213,11.7609947 3.78106853,11.3791078 L3.83892922,11.2975284 L3.96184986,11.2724662 L11.992,15.421 L19.9627075,11.22831 Z M12.4255844,3.73356464 L12.5339905,3.80255885 L19.9315845,7.67843868 C19.9935001,7.71087069 20.0501359,7.75251034 20.0996414,7.80201955 C20.4552956,8.15854327 20.4552956,8.73566072 20.0995296,9.09229637 L20.0205225,9.16015062 L19.9322397,9.21534289 L12.5278877,13.1032368 C12.2407556,13.3168852 11.859433,13.3412225 11.5602937,13.1818739 L11.4523133,13.1135188 L4.05589548,9.29307029 C3.99265745,9.26047567 3.93483324,9.21830915 3.88438991,9.16798414 C3.71323808,8.99685763 3.61708385,8.76474508 3.61708385,8.52271775 C3.61708385,8.28069042 3.71323808,8.04857787 3.88434428,7.87749701 L3.96167476,7.81076256 L4.0480516,7.75613122 L11.4539797,3.81274032 C11.7418684,3.59726528 12.1252032,3.57272393 12.4255844,3.73356464 Z M12.003,5.084 L5.56,8.516 L11.9353058,11.8561039 L18.422,8.448 L12.003,5.084 Z" id="形状结合"></path>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>总览</title>
<defs>
<linearGradient x1="93.764924%" y1="100%" x2="24.0202641%" y2="7.84095011e-14%" id="linearGradient-1">
<stop stop-color="#4BFFC8" offset="0%"></stop>
<stop stop-color="#45F2EC" offset="100%"></stop>
</linearGradient>
</defs>
<g id="页面" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="icon和插图" transform="translate(-486.000000, -683.000000)" fill-rule="nonzero">
<g id="总览" transform="translate(486.000000, 683.000000)">
<rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="24" height="24"></rect>
<path d="M12.0378407,13.2200821 L5.21704525,7.4725743 C2.18247299,11.1003099 2.78379376,16.2604811 6.40453724,19.3067069 C10.0311075,22.3575941 15.4453251,21.8926193 18.4973776,18.2672144 C20.2209307,16.2196939 20.8187555,13.9577489 20.3631035,11.5175053 L12.0378407,13.2200821 Z M17.400783,4.80159134 C17.3599957,4.76546548 17.3203738,4.72933962 17.2784212,4.69321376 C13.6518509,1.64116124 8.23879866,2.10730138 5.18674614,5.73503695 C5.18091939,5.74086371 5.17625799,5.74669046 5.17159659,5.75251721 L11.8630382,11.38349 L17.400783,4.80159134 Z M18.4868895,5.92615441 L12.607697,11.9964643 L20.7138739,9.53640973 C20.3619381,7.90025787 19.5182245,6.75355314 18.4868895,5.92615441 Z" id="形状" fill="white"></path>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组 3</title>
<g id="页面" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="icon和插图" transform="translate(-214.000000, -175.000000)" fill="white" fill-rule="nonzero">
<g id="模型" transform="translate(214.000000, 175.000000)">
<rect id="矩形" opacity="0" x="0" y="0" width="24" height="24"></rect>
<path d="M12.3954895,2.03826064 L12.5228327,2.09579721 L21.414492,6.83014161 L21.5375689,6.90786898 C21.6946876,7.02161886 21.8227168,7.17465827 21.907809,7.35301864 C21.9673881,7.46761004 22.0061467,7.58631193 22.0244275,7.70751099 L22.035895,7.82948269 L22.035895,17.0520133 L22.0257342,17.1934983 C21.9825661,17.5195089 21.8024204,17.8130667 21.5313102,17.9984294 L21.4096851,18.0710255 L12.5225469,22.7763467 L12.419458,22.8225805 C12.3490248,22.8497426 12.2754348,22.8695019 12.2002358,22.8813639 L12.0864238,22.8931724 L11.9923866,22.8928571 L11.8632154,22.8787765 C11.7768069,22.8640067 11.6903485,22.8385651 11.607073,22.803014 L11.484951,22.7421753 L2.59260584,18.0339161 L2.48203438,17.9688707 C2.19903004,17.7806128 2.01288586,17.4772862 1.97249425,17.1395165 L1.96427504,17.0113958 L1.96427504,7.8199796 L1.97436738,7.69183676 C1.99170844,7.56384393 2.03067555,7.43714948 2.08989942,7.31938883 C2.12033244,7.26807169 2.15900542,7.21364478 2.20323416,7.16081403 L2.27340857,7.08335327 L2.35016444,6.99314525 L2.42794255,6.91552868 L2.50810054,6.8488331 L2.587,6.794 L11.4622262,2.09564615 L11.5894757,2.03815973 C11.8490161,1.93961285 12.1357883,1.93962524 12.3954895,2.03826064 Z M3.26827504,8.30226683 L3.26866341,16.9114641 L11.709275,21.3752668 L11.709275,13.1532668 L3.26827504,8.30226683 Z M20.715275,8.81126683 L12.834275,13.0142668 L12.834275,21.0802668 L20.7161098,16.9114641 L20.715275,8.81126683 Z M11.9924858,3.30804071 L4.09527504,7.48126683 L12.145,12.107 L20.346275,7.73226683 L11.9924858,3.30804071 Z" id="形状结合"></path>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>订单管理</title>
<g id="页面" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="icon和插图" transform="translate(-365.000000, -322.000000)">
<g id="订单管理" transform="translate(365.000000, 322.000000)">
<g id="编组-29备份-2" fill="white" opacity="0" stroke="#979797">
<g id="编组-22">
<rect id="矩形" x="0.5" y="0.5" width="23" height="23"></rect>
</g>
</g>
<path d="M16.161589,3.47101718 C16.6904791,3.47101718 17.1237768,3.88772587 17.1548106,4.41000128 L17.6972311,4.41091071 C18.8018006,4.41091071 19.6972311,5.30634122 19.6972311,6.41091071 L19.6972311,18.5289828 C19.6972311,19.6335523 18.8018006,20.5289828 17.6972311,20.5289828 L6.61594685,20.5289828 C5.51137735,20.5289828 4.61594685,19.6335523 4.61594685,18.5289828 L4.61594685,6.41091071 C4.61594685,5.30634122 5.51137735,4.41091071 6.61594685,4.41091071 L7.15994685,4.41001718 L7.16333316,4.35306292 C7.22122674,3.85644065 7.64458898,3.47101718 8.15158898,3.47101718 L16.161589,3.47101718 Z M7.18533656,5.71071256 L6.61594685,5.71091071 C6.26156413,5.71091071 5.96868862,5.97425434 5.92233702,6.31592486 L5.91594685,6.41091071 L5.91594685,18.5289828 C5.91594685,18.8833655 6.17929047,19.1762411 6.52096099,19.2225926 L6.61594685,19.2289828 L17.6972311,19.2289828 C18.0516138,19.2289828 18.3444894,18.9656392 18.390841,18.6239687 L18.3972311,18.5289828 L18.3972311,6.41091071 C18.3972311,6.056528 18.1338875,5.76365248 17.792217,5.71730089 L17.6972311,5.71091071 L17.1277908,5.71068599 C17.0209762,6.14567209 16.6293931,6.46891104 16.161589,6.47101718 L8.15158898,6.47101718 C7.6846485,6.47101718 7.29221821,6.14621069 7.18533656,5.71071256 Z M15.7618907,9.48984947 L15.8611072,9.50404676 C16.0918471,9.55523351 16.2773476,9.72634821 16.3469537,9.95221538 C16.4066161,10.1458158 16.373259,10.354096 16.2617397,10.5168155 L16.1995353,10.5940997 L11.9111634,15.2398359 C11.7839082,15.3777716 11.6037656,15.4547409 11.4161259,15.4513498 C11.2660141,15.448637 11.1225557,15.3947004 11.0085786,15.300259 L10.9289803,15.2220008 L8.78696476,12.7229538 C8.63101609,12.54508 8.58266365,12.2971328 8.6603525,12.0736971 C8.73804136,11.8502613 8.9297896,11.6857974 9.16245073,11.6430436 C9.36187457,11.6063975 9.56499366,11.6640156 9.71341923,11.7938264 L9.7828039,11.8646457 L11.446,13.805 L15.2313218,9.70472645 C15.3672543,9.55451629 15.5633359,9.47676453 15.7618907,9.48984947 Z M16.156589,4.47101719 L8.15658897,4.47101719 L8.15658897,5.47101719 L16.156589,5.47101719 L16.156589,4.47101719 Z" id="形状结合" fill="white" fill-rule="nonzero"></path>
<g id="编组-28" transform="translate(8.156589, 4.471017)"></g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组 54</title>
<g id="驾驶舱" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="运营总览_生产线监控驾驶舱" transform="translate(-1866.000000, -36.000000)">
<g id="编组-54" transform="translate(1866.000000, 36.000000)">
<rect id="矩形" stroke="#89b9fe" fill="#89b9fe" opacity="0" x="0.5" y="0.5" width="21" height="21"></rect>
<path d="M18.4001211,1 L18.574731,1.00571398 C18.8641421,1.02474925 19.1451559,1.09128771 19.4122178,1.20447947 C19.7221027,1.33395436 19.9991094,1.52058631 20.2392616,1.76073844 C20.4776764,1.99915325 20.6652172,2.27804627 20.7953442,2.58736464 C20.9313506,2.90825642 21,3.24882158 21,3.59987893 L21,3.59987893 L21,18.4001211 L20.994286,18.574731 C20.9752507,18.8641421 20.9087123,19.1451559 20.7955205,19.4122178 C20.6660456,19.7221027 20.4794137,19.9991094 20.2392616,20.2392616 C20.0008468,20.4776764 19.7219537,20.6652172 19.4126354,20.7953442 C19.0917436,20.9313506 18.7511784,21 18.4001211,21 L18.4001211,21 L3.59987893,21 L3.42526905,20.994286 C3.13585794,20.9752507 2.85484405,20.9087123 2.58778224,20.7955205 C2.2778973,20.6660456 2.00089057,20.4794137 1.76073844,20.2392616 C1.52232363,20.0008468 1.33478285,19.7219537 1.20465581,19.4126354 C1.06864936,19.0917436 1,18.7511784 1,18.4001211 L1,18.4001211 L1,3.59987893 L1.00571398,3.42526905 C1.02474925,3.13585794 1.09128771,2.85484405 1.20447947,2.58778224 C1.33395436,2.2778973 1.52058631,2.00089057 1.76073844,1.76073844 C1.99915325,1.52232363 2.27804627,1.33478285 2.58736464,1.20465581 C2.90825642,1.06864936 3.24882158,1 3.59987893,1 L3.59987893,1 L18.4001211,1 Z M18.4001211,2.29539952 L3.59987893,2.29539952 L3.49797651,2.2993263 C2.82542992,2.35136056 2.29539952,2.9140495 2.29539952,3.59987893 L2.29539952,3.59987893 L2.29539952,18.4001211 L2.2993263,18.5020235 C2.35136056,19.1745701 2.9140495,19.7046005 3.59987893,19.7046005 L3.59987893,19.7046005 L18.4001211,19.7046005 L18.5020235,19.7006737 C19.1745701,19.6486394 19.7046005,19.0859505 19.7046005,18.4001211 L19.7046005,18.4001211 L19.7046005,3.59987893 L19.7006737,3.49797651 C19.6486394,2.82542992 19.0859505,2.29539952 18.4001211,2.29539952 L18.4001211,2.29539952 Z M4.56580299,11.8731508 L4.63987359,11.8789244 C4.95620444,11.9219442 5.20096852,12.1943435 5.20096852,12.5208838 L5.20096852,12.5208838 L5.20096852,15.8606113 L8.39814764,12.6634321 L8.45892035,12.6098356 C8.71226443,12.4133149 9.08161636,12.4311804 9.3138681,12.6634321 C9.56547415,12.9150382 9.56547415,13.3275466 9.3138681,13.5791526 L9.3138681,13.5791526 L6.09149511,16.7990315 L9.4155569,16.7990315 L9.49368756,16.8035151 C9.82695229,16.8420028 10.0864105,17.123441 10.081435,17.4601165 C10.0742517,17.8119637 9.78624591,18.094431 9.43371671,18.094431 L9.43371671,18.094431 L4.5691586,18.094431 L4.49163938,18.0899766 C4.16113157,18.051728 3.90556901,17.7718105 3.90556901,17.4308414 L3.90556901,17.4308414 L3.90556901,12.5367736 L3.91007171,12.4587841 C3.94871707,12.1260764 4.23118526,11.8665247 4.56580299,11.8731508 L4.56580299,11.8731508 Z M17.4353814,3.90556901 L17.512257,3.91000958 C17.8400885,3.94813523 18.094431,4.22707005 18.094431,4.56461864 L18.094431,4.56461864 L18.094431,9.46095642 L18.0899283,9.53894589 C18.0512829,9.87165361 17.7688147,10.1312053 17.434197,10.1245792 C17.0828999,10.1173731 16.7990315,9.82850504 16.7990315,9.47684625 L16.7990315,9.47684625 L16.7990315,6.13938874 L13.6018524,9.33656786 L13.5410796,9.39016441 C13.2877356,9.58668512 12.9183836,9.5688196 12.6861319,9.33656786 C12.4345258,9.08496181 12.4345258,8.67245345 12.6861319,8.4208474 L12.6861319,8.4208474 L15.9060108,5.20096852 L12.5821731,5.20096852 L12.5040246,5.19648608 C12.170734,5.1580095 11.9119308,4.876675 11.9185506,4.54071802 C11.9257483,4.18803625 12.2137541,3.90556901 12.5662833,3.90556901 L12.5662833,3.90556901 L17.4353814,3.90556901 Z" id="形状结合" fill="#5889d2" fill-rule="nonzero" opacity="0.79078311"></path>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="22px" height="22px" viewBox="0 0 22 22" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组 54备份</title>
<g id="驾驶舱" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="编组-54备份">
<rect id="矩形" stroke="#979797" fill="#D8D8D8" opacity="0" x="0.5" y="0.5" width="21" height="21"></rect>
<path d="M18.4001211,1 L18.574731,1.00571398 C18.8641421,1.02474925 19.1451559,1.09128771 19.4122178,1.20447947 C19.7221027,1.33395436 19.9991094,1.52058631 20.2392616,1.76073844 C20.4776764,1.99915325 20.6652172,2.27804627 20.7953442,2.58736464 C20.9313506,2.90825642 21,3.24882158 21,3.59987893 L21,3.59987893 L21,18.4001211 L20.994286,18.574731 C20.9752507,18.8641421 20.9087123,19.1451559 20.7955205,19.4122178 C20.6660456,19.7221027 20.4794137,19.9991094 20.2392616,20.2392616 C20.0008468,20.4776764 19.7219537,20.6652172 19.4126354,20.7953442 C19.0917436,20.9313506 18.7511784,21 18.4001211,21 L18.4001211,21 L3.59987893,21 L3.42526905,20.994286 C3.13585794,20.9752507 2.85484405,20.9087123 2.58778224,20.7955205 C2.2778973,20.6660456 2.00089057,20.4794137 1.76073844,20.2392616 C1.52232363,20.0008468 1.33478285,19.7219537 1.20465581,19.4126354 C1.06864936,19.0917436 1,18.7511784 1,18.4001211 L1,18.4001211 L1,3.59987893 L1.00571398,3.42526905 C1.02474925,3.13585794 1.09128771,2.85484405 1.20447947,2.58778224 C1.33395436,2.2778973 1.52058631,2.00089057 1.76073844,1.76073844 C1.99915325,1.52232363 2.27804627,1.33478285 2.58736464,1.20465581 C2.90825642,1.06864936 3.24882158,1 3.59987893,1 L3.59987893,1 L18.4001211,1 Z M18.4001211,2.29539952 L3.59987893,2.29539952 L3.49797651,2.2993263 C2.82542992,2.35136056 2.29539952,2.9140495 2.29539952,3.59987893 L2.29539952,3.59987893 L2.29539952,18.4001211 L2.2993263,18.5020235 C2.35136056,19.1745701 2.9140495,19.7046005 3.59987893,19.7046005 L3.59987893,19.7046005 L18.4001211,19.7046005 L18.5020235,19.7006737 C19.1745701,19.6486394 19.7046005,19.0859505 19.7046005,18.4001211 L19.7046005,18.4001211 L19.7046005,3.59987893 L19.7006737,3.49797651 C19.6486394,2.82542992 19.0859505,2.29539952 18.4001211,2.29539952 L18.4001211,2.29539952 Z M9.43538136,11.905569 L9.512257,11.9100096 C9.84008849,11.9481352 10.094431,12.2270701 10.094431,12.5646186 L10.094431,12.5646186 L10.094431,17.4609564 L10.0899283,17.5389459 C10.0512829,17.8716536 9.76881474,18.1312053 9.43419701,18.1245792 C9.08289988,18.1173731 8.79903148,17.828505 8.79903148,17.4768462 L8.79903148,17.4768462 L8.79903148,14.1393887 L5.60185236,17.3365679 L5.54107965,17.3901644 C5.28773557,17.5866851 4.91838364,17.5688196 4.6861319,17.3365679 C4.43452585,17.0849618 4.43452585,16.6724534 4.6861319,16.4208474 L4.6861319,16.4208474 L7.90601077,13.2009685 L4.58217312,13.2009685 L4.50402457,13.1964861 C4.17073404,13.1580095 3.9119308,12.876675 3.91855064,12.540718 C3.92574827,12.1880363 4.21375409,11.905569 4.56628329,11.905569 L4.56628329,11.905569 L9.43538136,11.905569 Z M12.565803,3.8731508 L12.6398736,3.87892442 C12.9562044,3.92194416 13.2009685,4.19434347 13.2009685,4.52088378 L13.2009685,4.52088378 L13.2009685,7.86061126 L16.3981476,4.66343214 L16.4589204,4.60983559 C16.7122644,4.41331488 17.0816164,4.4311804 17.3138681,4.66343214 C17.5654742,4.91503819 17.5654742,5.32754655 17.3138681,5.5791526 L17.3138681,5.5791526 L14.0914951,8.79903148 L17.4155569,8.79903148 L17.4936876,8.80351509 C17.8269523,8.84200281 18.0864105,9.12344101 18.081435,9.46011654 C18.0742517,9.81196375 17.7862459,10.094431 17.4337167,10.094431 L17.4337167,10.094431 L12.5691586,10.094431 L12.4916394,10.0899766 C12.1611316,10.051728 11.905569,9.77181051 11.905569,9.4308414 L11.905569,9.4308414 L11.905569,4.53677361 L11.9100717,4.45878413 C11.9487171,4.12607641 12.2311853,3.86652471 12.565803,3.8731508 L12.565803,3.8731508 Z" id="形状结合" fill="#5889d2" fill-rule="nonzero" opacity="0.79078311"></path>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -4,7 +4,7 @@
:class="{ collapse: collapse }"
:style="{
backgroundColor:
sideTheme === 'theme-dark' ? '#1f2d3d' : variables.menuLightBackground,
sideTheme === 'theme-dark' ? 'white' : variables.menuLightBackground,
}">
<!-- sideTheme === 'theme-dark'
? variables.menuBackground
@ -21,25 +21,21 @@
class="sidebar-title"
:style="{
color:
sideTheme === 'theme-dark'
? variables.logoTitleColor
: variables.logoLightTitleColor,
'#27207f'
}">
{{ title }}
</h1>
</router-link>
<router-link v-else key="expand" class="sidebar-logo-link" to="/">
<img v-if="logo" :src="logo" class="sidebar-logo" />
<h1
<h2
class="sidebar-title"
:style="{
color:
sideTheme === 'theme-dark'
? variables.logoTitleColor
: variables.logoLightTitleColor,
'#27207f'
}">
{{ title }}
</h1>
</h2>
</router-link>
</transition>
</div>
@ -67,7 +63,7 @@ export default {
},
data() {
return {
title: '中国联合工程',
title: '中国联合工程有限公司',
logo: logoImg,
};
},
@ -110,7 +106,7 @@ export default {
color: #fff;
font-weight: 600;
line-height: 50px;
font-size: 18px;
font-size: 16px;
letter-spacing: 1px;
font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
vertical-align: middle;

View File

@ -8,7 +8,7 @@
<tags-view v-if="needTagsView" />
</div>
<app-main />
<div class="main-footer" style="color: #C7C7C7; user-select: none; font-size: 14px; letter-spacing: 1px; height: 30px; display: grid; place-content: center;">&copy; 中建材智能自动化研究院有限公司</div>
<div class="main-footer" v-if="false" style="color: #C7C7C7; user-select: none; font-size: 14px; letter-spacing: 1px; height: 30px; display: grid; place-content: center;">&copy; 中建材智能自动化研究院有限公司</div>
<right-panel>
<settings />
</right-panel>

View File

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2022-08-24 11:19:43
* @LastEditors: zwq
* @LastEditTime: 2023-11-01 16:46:42
* @LastEditTime: 2023-12-25 11:01:23
* @Description:
*/
export default {

View File

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2023-09-22 14:23:44
* @LastEditors: zwq
* @LastEditTime: 2023-10-30 16:46:29
* @LastEditTime: 2024-04-18 14:01:08
* @Description:
-->
<template>
@ -41,6 +41,7 @@
v-model="dataForm.mainTaskType"
style="width: 100%"
:disabled="isdetail"
@change="setEndInfo()"
placeholder="请选择任务类型">
<el-option
v-for="item in mainTaskType"
@ -52,10 +53,19 @@
</el-col>
<el-col :span="12">
<el-form-item label="货物类型" prop="productType">
<el-input
<el-select
v-model="dataForm.productType"
:disabled="isdetail"
placeholder="请输入货物类型" />
style="width: 100%"
filterable
allow-create
default-first-option
placeholder="请选择货物类型">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
@ -73,12 +83,11 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12" v-if='false'>
<el-col :span="12" v-if="false">
<el-form-item label="任务来源" prop="source">
<el-select
v-model="dataForm.source"
style="width: 100%"
:disabled="isdetail"
placeholder="请选择任务来源">
<el-option
v-for="item in mainTaskSource"
@ -93,6 +102,7 @@
<el-select
v-model="dataForm.startInfo"
style="width: 100%"
filterable
:disabled="isdetail"
@change="$forceUpdate()"
placeholder="请选择起点">
@ -109,11 +119,12 @@
<el-select
v-model="dataForm.endInfo"
style="width: 100%"
filterable
:disabled="isdetail"
@change="$forceUpdate()"
placeholder="请选择终点">
<el-option
v-for="item in warehouseList"
v-for="item in endWarehouseList"
:key="item.id"
:label="item.warehouseStorehouseName"
:value="item.id + ',' + item.warehouseStorehouseName" />
@ -122,10 +133,7 @@
</el-col>
<el-col :span="24">
<el-form-item label="备注" prop="remark">
<el-input
v-model="dataForm.remark"
:disabled="isdetail"
placeholder="请输入备注" />
<el-input v-model="dataForm.remark" placeholder="请输入备注" />
</el-form-item>
</el-col>
</el-row>
@ -148,7 +156,6 @@
@emitFun="inputChange"
:table-data="productAttributeList">
<method-btn
v-if="!isdetail"
slot="handleBtn"
:width="120"
label="操作"
@ -161,11 +168,10 @@
<div style="position: absolute; bottom: 24px; right: 24px">
<el-button style="margin-right: 10px" @click="goback()">返回</el-button>
<el-button v-if="isdetail" type="primary" @click="goEdit()">
编辑
<span>
<el-button type="primary" @click="dataFormSubmit()" :loading="btnLoad">
保存
</el-button>
<span v-if="!isdetail">
<el-button type="primary" @click="dataFormSubmit()">保存</el-button>
</span>
</div>
@ -177,8 +183,13 @@
</template>
<script>
import { updateTask, getTask, createTask,getProductlist } from '@/api/axl/task';
import { getWarehousestorehousePage } from '@/api/axl/warehousestorehouse';
import {
updateTask,
getTask,
createTask,
getProductlist,
} from '@/api/axl/task';
import { getWarehousestorehouseListById } from '@/api/axl/warehousestorehouse';
import productAttrAdd from './attr-add';
import inputArea from './inputArea';
import SmallTitle from './SmallTitle';
@ -238,10 +249,6 @@ const mainTaskType = [
name: '越库',
id: 4,
},
{
name: '盘点',
id: 5,
},
];
const mainTaskStatus = [
{
@ -277,10 +284,12 @@ export default {
tableProps,
productAttributeList: [],
warehouseList: [],
endWarehouseList: [],
addButtonShow: '新增',
mainTaskType,
mainTaskStatus,
mainTaskSource,
isInTaskType: false,
dataForm: {
id: null,
mainTaskType: '',
@ -320,6 +329,29 @@ export default {
],
},
isdetail: false,
btnLoad: false,
options: [
{
value: '待渗碳',
label: '待渗碳',
},
{
value: '待冷处理',
label: '待冷处理',
},
{
value: '待淬火',
label: '待淬火',
},
{
value: '待抛丸',
label: '待抛丸',
},
{
value: '待返修',
label: '待返修',
},
],
};
},
methods: {
@ -328,6 +360,7 @@ export default {
},
init(id, isdetail) {
this.initData();
this.btnLoad = false;
this.isdetail = isdetail || false;
this.dataForm.id = id || null;
this.visible = true;
@ -340,8 +373,9 @@ export default {
pageSize: 100,
pageNo: 1,
};
getWarehousestorehousePage(params).then((response) => {
this.warehouseList = response.data.list;
getWarehousestorehouseListById(params).then((response) => {
this.warehouseList = response.data;
this.endWarehouseList = response.data.slice();
});
if (this.dataForm.id) {
//
@ -357,7 +391,21 @@ export default {
}
});
},
setEndInfo() {
if (this.dataForm.mainTaskType === 1) {
this.isInTaskType = true;
const obj = {
warehouseStorehouseName: '入库自动分配库位',
id: 0,
};
this.endWarehouseList.unshift(obj);
} else {
if (this.isInTaskType) {
this.endWarehouseList.shift();
this.isInTaskType = false;
}
}
},
getList() {
//
getProductlist(this.dataForm.id).then((response) => {
@ -392,6 +440,7 @@ export default {
dataFormSubmit() {
this.$refs['dataForm'].validate((valid) => {
if (valid) {
this.btnLoad = true;
this.dataForm.productList = this.productAttributeList;
this.dataForm.startId = this.dataForm.startInfo.split(',')[0];
this.dataForm.startName = this.dataForm.startInfo.split(',')[1];
@ -401,6 +450,7 @@ export default {
if (this.dataForm.id) {
updateTask(this.dataForm).then((response) => {
this.$modal.msgSuccess('修改成功');
this.btnLoad = false;
this.visible = false;
this.$emit('refreshDataList');
});
@ -415,9 +465,6 @@ export default {
}
});
},
goEdit() {
this.isdetail = false;
},
// /
addNew(index) {
this.addOrUpdateVisible = true;

View File

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2023-08-24 14:47:58
* @LastEditors: zwq
* @LastEditTime: 2023-09-22 16:48:07
* @LastEditTime: 2023-12-25 10:26:07
* @Description:
-->
<template>
@ -36,6 +36,16 @@ const tableProps = [
label: '数量',
align: 'center',
},
{
prop: 'dateNum',
label: '批次号',
align: 'center',
},
{
prop: 'remark',
label: '备注',
align: 'center',
},
];
export default {
props: {

View File

@ -256,8 +256,17 @@ export default {
mounted() {
this.getDataList();
this.getjob();
this.startFun();
},
methods: {
startFun() {
const timer = setInterval(() => {
this.getDataList();
}, 10000);
this.$once('hook:beforeDestroy', () => {
clearInterval(timer);
});
},
getjob() {
getJob(20).then((response) => {
this.jobStatus = response.data.status;
@ -338,7 +347,7 @@ export default {
if (val.type === 'edit') {
this.drawerVisible = true;
this.$nextTick(() => {
this.$refs.drawerRef.init(val.data.id);
this.$refs.drawerRef.init(val.data.id,true);
});
} else if (val.type === 'delete') {
this.deleteHandle(val.data.id, val.data.mainTaskCode);

View File

@ -0,0 +1,119 @@
<!--
* @Author: zwq
* @Date: 2021-11-18 14:16:25
* @LastEditors: zwq
* @LastEditTime: 2023-12-25 16:17:35
* @Description:
-->
<template>
<el-form
:model="dataForm"
:rules="dataRule"
ref="dataForm"
@keyup.enter.native="dataFormSubmit()"
label-width="120px">
<el-form-item label="货物" prop="productId">
<el-select
v-model="dataForm.productId"
clearable
filterable
placeholder="请选择货物"
@change="setInfo"
style="width: 100%">
<el-option
v-for="item in productList"
:key="item.id"
:label="item.productName"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="数量" prop="number">
<el-input v-model="dataForm.number" placeholder="请输入数量" />
</el-form-item>
<el-form-item label="批次号" prop="dateNum">
<el-input v-model="dataForm.dateNum" placeholder="请输入批次号" />
</el-form-item>
<el-form-item label="库位" prop="storehouseId">
<el-select
v-model="dataForm.storehouseId"
clearable
filterable
placeholder="请选择库位"
style="width: 100%">
<el-option
v-for="item in storehouseList"
:key="item.id"
:label="item.warehouseStorehouseName"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="dataForm.remark" clearable placeholder="请输入备注" />
</el-form-item>
</el-form>
</template>
<script>
import basicAdd from '../mixins/basic-add';
import {
createTaskProductsAssociate,
updateTaskProductsAssociate,
getTaskProductsAssociate,
} from '@/api/axl/taskProductsAssociate';
import { getWarehousestorehouseList } from '@/api/axl/warehousestorehouse';
import { getProductList } from '@/api/axl/product';
export default {
mixins: [basicAdd],
data() {
return {
urlOptions: {
createURL: createTaskProductsAssociate,
updateURL: updateTaskProductsAssociate,
infoURL: getTaskProductsAssociate,
getOption: true,
},
productList: [],
storehouseList: [],
dataForm: {
id: undefined,
productId: null,
productCode: null,
productName: null,
storehouseId: null,
dateNum: undefined,
number: undefined,
remark: undefined,
},
dataRule: {
productId: [
{ required: true, message: '货物不能为空', trigger: 'change' },
],
storehouseId: [
{ required: true, message: '库位不能为空', trigger: 'change' },
],
},
};
},
methods: {
getArr() {
getProductList().then((res) => {
this.productList = res.data;
});
getWarehousestorehouseList().then((res) => {
this.storehouseList = [];
for (let i in res.data) {
for (let j in res.data[i]) {
this.storehouseList= this.storehouseList.concat(res.data[i][j]);
}
}
});
},
setInfo() {
let obj = this.productList.find((item) => item.id === this.dataForm.productId);
this.dataForm.productCode = obj.productCode
this.dataForm.productName = obj.productName
},
},
};
</script>

View File

@ -1,282 +1,288 @@
<template>
<div class="app-container">
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="产品id" prop="productId">
<el-input v-model="queryParams.productId" placeholder="请输入产品id" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="货物规格代码" prop="productCode">
<el-input v-model="queryParams.productCode" placeholder="请输入货物规格代码" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="货物规格名称" prop="productName">
<el-input v-model="queryParams.productName" placeholder="请输入货物规格名称" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="数量" prop="number">
<el-input v-model="queryParams.number" placeholder="请输入数量" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="批次号" prop="dateNum">
<el-input v-model="queryParams.dateNum" placeholder="请输入批次号" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker v-model="queryParams.createTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange"
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" />
</el-form-item>
<el-form-item label="更新时间" prop="updateDate">
<el-date-picker v-model="queryParams.updateDate" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange"
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="queryParams.remark" placeholder="请输入备注" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="库位id" prop="storehouseId">
<el-input v-model="queryParams.storehouseId" placeholder="请输入库位id" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<!-- 操作工具栏 -->
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['axl:task-products-associate:create']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
v-hasPermi="['axl:task-products-associate:export']">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<!-- 列表 -->
<el-table v-loading="loading" :data="list">
<el-table-column label="id" align="center" prop="id" />
<el-table-column label="产品id" align="center" prop="productId" />
<el-table-column label="货物规格代码" align="center" prop="productCode" />
<el-table-column label="货物规格名称" align="center" prop="productName" />
<search-bar
:isFold="true"
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick" />
<el-table
:data="tableData"
:span-method="objectSpanMethod"
:header-cell-style="{
background: '#F2F4F9',
color: '#606266',
}"
border
v-loading="dataListLoading"
style="width: 100%"
ref="dataList">
<el-table-column label="库位名称" align="center" prop="storehouseName" />
<el-table-column label="货物编码" align="center" prop="productCode" />
<el-table-column label="货物名称" align="center" prop="productName" />
<el-table-column label="数量" align="center" prop="number" />
<el-table-column label="批次号" align="center" prop="dateNum" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<el-table-column
label="创建时间"
align="center"
prop="createTime"
width="150">
<template v-slot="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="更新时间" align="center" prop="updateDate" width="180">
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="操作" align="center">
<template v-slot="scope">
<span>{{ parseTime(scope.row.updateDate) }}</span>
<el-button
size="mini"
type="text"
v-hasPermi="['axl:task-products-associate:update']"
@click="handleClick({ data: scope.row, type: 'edit' })">
编辑
</el-button>
<el-button
size="mini"
type="text"
v-hasPermi="['axl:task-products-associate:delete']"
@click="
handleClick({
data: { ...scope.row, _pageIndex: scope.$index+1 },
type: 'delete',
})
">
删除
</el-button>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="库位id" align="center" prop="storehouseId" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column label="出库" align="center">
<template v-slot="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['axl:task-products-associate:update']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['axl:task-products-associate:delete']">删除</el-button>
<el-button
size="mini"
type="text"
@click="outWare(scope.row.storehouseId)">
到输送线
</el-button>
<el-button
size="mini"
type="text"
@click="outWare2(scope.row.storehouseId)">
到载货台
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
@pagination="getList"/>
<!-- 对话框(添加 / 修改) -->
<el-dialog :title="title" :visible.sync="open" width="500px" v-dialogDrag append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="产品id" prop="productId">
<el-input v-model="form.productId" placeholder="请输入产品id" />
</el-form-item>
<el-form-item label="货物规格代码" prop="productCode">
<el-input v-model="form.productCode" placeholder="请输入货物规格代码" />
</el-form-item>
<el-form-item label="货物规格名称" prop="productName">
<el-input v-model="form.productName" placeholder="请输入货物规格名称" />
</el-form-item>
<el-form-item label="数量" prop="number">
<el-input v-model="form.number" placeholder="请输入数量" />
</el-form-item>
<el-form-item label="批次号" prop="dateNum">
<el-input v-model="form.dateNum" placeholder="请输入批次号" />
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker clearable v-model="form.createTime" type="date" value-format="timestamp" placeholder="选择创建时间" />
</el-form-item>
<el-form-item label="更新时间" prop="updateDate">
<el-date-picker clearable v-model="form.updateDate" type="date" value-format="timestamp" placeholder="选择更新时间" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
<el-form-item label="库位id" prop="storehouseId">
<el-input v-model="form.storehouseId" placeholder="请输入库位id" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<pagination
:limit.sync="listQuery.pageSize"
:page.sync="listQuery.pageNo"
:total="listQuery.total"
@pagination="getDataList" />
<base-dialog
:dialogTitle="addOrEditTitle"
:dialogVisible="addOrUpdateVisible"
@cancel="handleCancel"
@confirm="handleConfirm"
:before-close="handleCancel"
width="35%">
<add-or-update
ref="addOrUpdate"
@refreshDataList="successSubmit"></add-or-update>
</base-dialog>
</div>
</template>
<script>
import { createTaskProductsAssociate, updateTaskProductsAssociate, deleteTaskProductsAssociate, getTaskProductsAssociate, getTaskProductsAssociatePage, exportTaskProductsAssociateExcel } from "@/api/axl/taskProductsAssociate";
import basicPage from '../mixins/basic-page';
import AddOrUpdate from './add-or-updata';
import {
deleteTaskProductsAssociate,
getTaskProductsAssociatePage,
} from '@/api/axl/taskProductsAssociate';
import { outWare, outWare2 } from '@/api/axl/warehousestorehouse';
export default {
name: "TaskProductsAssociate",
components: {
},
mixins: [basicPage],
data() {
return {
//
loading: true,
//
exportLoading: false,
//
showSearch: true,
//
total: 0,
//
list: [],
//
title: "",
//
open: false,
//
queryParams: {
urlOptions: {
getDataListURL: getTaskProductsAssociatePage,
deleteURL: deleteTaskProductsAssociate,
},
tableData: [],
dataListLoading: false,
drawerVisible: false,
listQuery: {
pageSize: 20,
pageNo: 1,
pageSize: 10,
productId: null,
productCode: null,
productName: null,
number: null,
dateNum: null,
createTime: [],
updateDate: [],
remark: null,
storehouseId: null,
total: 1,
},
//
form: {},
//
rules: {
productId: [{ required: true, message: "产品id不能为空", trigger: "blur" }],
storehouseId: [{ required: true, message: "库位id不能为空", trigger: "blur" }],
}
formConfig: [
{
type: 'input',
label: '货物编码',
placeholder: '货物编码',
param: 'code',
},
{
type: 'input',
label: '货物名称',
placeholder: '货物名称',
param: 'name',
},
{
type: 'datePicker',
label: '创建时间',
dateType: 'daterange',
format: 'yyyy-MM-dd',
valueFormat: 'yyyy-MM-dd HH:mm:ss',
rangeSeparator: '-',
startPlaceholder: '开始时间',
endPlaceholder: '结束时间',
param: 'searchTime',
},
{
type: 'input',
label: '备注',
placeholder: '备注',
param: 'remark',
},
{
type: 'button',
btnName: '搜索',
name: 'search',
color: 'primary',
},
{
type: 'separate',
},
{
type: this.$auth.hasPermi('axl:task-products-associate:create') ? 'button' : '',
btnName: '新增',
name: 'add',
color: 'success',
plain: true,
},
{
type: 'separate',
},
{
type: 'button',
btnName: '重置',
name: 'reset',
},
],
};
},
created() {
this.getList();
components: {
AddOrUpdate,
},
created() {},
methods: {
/** 查询列表 */
getList() {
this.loading = true;
//
getTaskProductsAssociatePage(this.queryParams).then(response => {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
//
getDataList() {
this.dataListLoading = true;
this.urlOptions.getDataListURL(this.listQuery).then((response) => {
this.tableData = response.data.list;
this.listQuery.total = response.data.total;
this.setSpan();
this.dataListLoading = false;
});
},
/** 取消按钮 */
cancel() {
this.open = false;
this.reset();
},
/** 表单重置 */
reset() {
this.form = {
id: undefined,
productId: undefined,
productCode: undefined,
productName: undefined,
number: undefined,
dateNum: undefined,
createTime: undefined,
updateDate: undefined,
remark: undefined,
storehouseId: undefined,
buttonClick(val) {
switch (val.btnName) {
case 'search':
this.listQuery.pageNo = 1;
this.listQuery.pageSize = 20;
this.listQuery.productCode = val.code;
this.listQuery.productName = val.name;
this.listQuery.remark = val.remark;
this.listQuery.createTime = val.searchTime;
this.getDataList();
break;
case 'add':
this.addOrEditTitle = '新增';
this.addOrUpdateVisible = true;
this.addOrUpdateHandle();
break;
case 'reset':
this.$refs.searchBarForm.resetForm();
this.listQuery = {
pageSize: 20,
pageNo: 1,
total: 1,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNo = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加任务关联货物";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id;
getTaskProductsAssociate(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改任务关联货物";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (!valid) {
return;
this.getDataList();
break;
default:
console.log(val);
}
//
if (this.form.id != null) {
updateTaskProductsAssociate(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
return;
}
//
createTaskProductsAssociate(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
});
},
/** 删除按钮操作 */
handleDelete(row) {
const id = row.id;
this.$modal.confirm('是否确认删除任务关联货物编号为"' + id + '"的数据项?').then(function() {
return deleteTaskProductsAssociate(id);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
//
let params = {...this.queryParams};
params.pageNo = undefined;
params.pageSize = undefined;
this.$modal.confirm('是否确认导出所有任务关联货物数据项?').then(() => {
this.exportLoading = true;
return exportTaskProductsAssociateExcel(params);
}).then(response => {
this.$download.excel(response, '任务关联货物.xls');
this.exportLoading = false;
}).catch(() => {});
setSpan() {
this.tableData.forEach((item) => {
item.rowspan = 1;
});
//
for (let i = 0; i < this.tableData.length; i++) {
for (let j = i + 1; j < this.tableData.length; j++) {
// id
if (
this.tableData[i].storehouseId === this.tableData[j].storehouseId
) {
this.tableData[i].rowspan++;
this.tableData[j].rowspan--;
}
}
//
i = i + this.tableData[i].rowspan - 1;
}
},
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) { // 1
return {
rowspan: row.rowspan,
colspan: 1,
};
}
if (columnIndex === 8) { // 8
return {
rowspan: row.rowspan,
colspan: 1,
};
}
},
outWare(id) {
this.$confirm(`确定对此库位进行 [出库到输送线] 操作?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
outWare(id).then((response) => {
this.$modal.msgSuccess('出库成功');
this.$router.push({ path: 'task' });
});
})
.catch(() => {});
},
outWare2(id) {
this.$confirm(`确定对此库位进行 [出库到载货台] 操作?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
outWare2(id).then((response) => {
this.$modal.msgSuccess('出库成功');
this.$router.push({ path: 'task' });
});
})
.catch(() => {});
},
},
};
</script>
<style>
.app-container .el-table .el-table__cell {
padding: 0;
height: 35px;
}
</style>

View File

@ -3,10 +3,20 @@
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="通讯类型:1 2 3 4" prop="type">
<el-select v-model="queryParams.type" placeholder="请选择通讯类型:1 2 3 4" clearable size="small">
<el-option label="请选择字典生成" value="" />
</el-select>
<el-form-item label="产品id" prop="productId">
<el-input v-model="queryParams.productId" placeholder="请输入产品id" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="货物规格代码" prop="productCode">
<el-input v-model="queryParams.productCode" placeholder="请输入货物规格代码" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="货物规格名称" prop="productName">
<el-input v-model="queryParams.productName" placeholder="请输入货物规格名称" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="数量" prop="number">
<el-input v-model="queryParams.number" placeholder="请输入数量" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="批次号" prop="dateNum">
<el-input v-model="queryParams.dateNum" placeholder="请输入批次号" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker v-model="queryParams.createTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange"
@ -19,6 +29,9 @@
<el-form-item label="备注" prop="remark">
<el-input v-model="queryParams.remark" placeholder="请输入备注" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="库位id" prop="storehouseId">
<el-input v-model="queryParams.storehouseId" placeholder="请输入库位id" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
@ -29,22 +42,23 @@
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['axl:commun-log:create']">新增</el-button>
v-hasPermi="['axl:task-products-associate:create']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
v-hasPermi="['axl:commun-log:export']">导出</el-button>
v-hasPermi="['axl:task-products-associate:export']">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<!-- 列表 -->
<el-table v-loading="loading" :data="list">
<el-table-column label="id 主键" align="center" prop="id" />
<el-table-column label="通讯类型:1 2 3 4" align="center" prop="type" />
<el-table-column label="参数" align="center" prop="args" />
<el-table-column label="结果数据" align="center" prop="resultData" />
<el-table-column label="内容集" align="center" prop="content" />
<el-table-column label="id" align="center" prop="id" />
<el-table-column label="产品id" align="center" prop="productId" />
<el-table-column label="货物规格代码" align="center" prop="productCode" />
<el-table-column label="货物规格名称" align="center" prop="productName" />
<el-table-column label="数量" align="center" prop="number" />
<el-table-column label="批次号" align="center" prop="dateNum" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template v-slot="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
@ -56,12 +70,13 @@
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="库位id" align="center" prop="storehouseId" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template v-slot="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['axl:commun-log:update']">修改</el-button>
v-hasPermi="['axl:task-products-associate:update']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['axl:commun-log:delete']">删除</el-button>
v-hasPermi="['axl:task-products-associate:delete']">删除</el-button>
</template>
</el-table-column>
</el-table>
@ -72,19 +87,20 @@
<!-- 对话框(添加 / 修改) -->
<el-dialog :title="title" :visible.sync="open" width="500px" v-dialogDrag append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="通讯类型:1 2 3 4" prop="type">
<el-select v-model="form.type" placeholder="请选择通讯类型:1 2 3 4">
<el-option label="请选择字典生成" value="" />
</el-select>
<el-form-item label="产品id" prop="productId">
<el-input v-model="form.productId" placeholder="请输入产品id" />
</el-form-item>
<el-form-item label="参数" prop="args">
<el-input v-model="form.args" placeholder="请输入参数" />
<el-form-item label="货物规格代码" prop="productCode">
<el-input v-model="form.productCode" placeholder="请输入货物规格代码" />
</el-form-item>
<el-form-item label="结果数据" prop="resultData">
<el-input v-model="form.resultData" placeholder="请输入结果数据" />
<el-form-item label="货物规格名称" prop="productName">
<el-input v-model="form.productName" placeholder="请输入货物规格名称" />
</el-form-item>
<el-form-item label="内容集">
<editor v-model="form.content" :min-height="192"/>
<el-form-item label="数量" prop="number">
<el-input v-model="form.number" placeholder="请输入数量" />
</el-form-item>
<el-form-item label="批次号" prop="dateNum">
<el-input v-model="form.dateNum" placeholder="请输入批次号" />
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker clearable v-model="form.createTime" type="date" value-format="timestamp" placeholder="选择创建时间" />
@ -95,6 +111,9 @@
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
<el-form-item label="库位id" prop="storehouseId">
<el-input v-model="form.storehouseId" placeholder="请输入库位id" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
@ -105,13 +124,11 @@
</template>
<script>
import { createCommunLog, updateCommunLog, deleteCommunLog, getCommunLog, getCommunLogPage, exportCommunLogExcel } from "@/api/axl/communLog";
import Editor from '@/components/Editor';
import { createTaskProductsAssociate, updateTaskProductsAssociate, deleteTaskProductsAssociate, getTaskProductsAssociate, getTaskProductsAssociatePage, exportTaskProductsAssociateExcel } from "@/api/axl/taskProductsAssociate";
export default {
name: "CommunLog",
name: "TaskProductsAssociate",
components: {
Editor
},
data() {
return {
@ -123,7 +140,7 @@ export default {
showSearch: true,
//
total: 0,
//
//
list: [],
//
title: "",
@ -133,19 +150,22 @@ export default {
queryParams: {
pageNo: 1,
pageSize: 10,
type: null,
productId: null,
productCode: null,
productName: null,
number: null,
dateNum: null,
createTime: [],
updateDate: [],
remark: null,
storehouseId: null,
},
//
form: {},
//
rules: {
type: [{ required: true, message: "通讯类型:1 2 3 4不能为空", trigger: "change" }],
args: [{ required: true, message: "参数不能为空", trigger: "blur" }],
resultData: [{ required: true, message: "结果数据不能为空", trigger: "blur" }],
content: [{ required: true, message: "内容集不能为空", trigger: "blur" }],
productId: [{ required: true, message: "产品id不能为空", trigger: "blur" }],
storehouseId: [{ required: true, message: "库位id不能为空", trigger: "blur" }],
}
};
},
@ -157,7 +177,7 @@ export default {
getList() {
this.loading = true;
//
getCommunLogPage(this.queryParams).then(response => {
getTaskProductsAssociatePage(this.queryParams).then(response => {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
@ -172,13 +192,15 @@ export default {
reset() {
this.form = {
id: undefined,
type: undefined,
args: undefined,
resultData: undefined,
content: undefined,
productId: undefined,
productCode: undefined,
productName: undefined,
number: undefined,
dateNum: undefined,
createTime: undefined,
updateDate: undefined,
remark: undefined,
storehouseId: undefined,
};
this.resetForm("form");
},
@ -196,16 +218,16 @@ export default {
handleAdd() {
this.reset();
this.open = true;
this.title = "添加通讯日志";
this.title = "添加任务关联货物";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id;
getCommunLog(id).then(response => {
getTaskProductsAssociate(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改通讯日志";
this.title = "修改任务关联货物";
});
},
/** 提交按钮 */
@ -216,7 +238,7 @@ export default {
}
//
if (this.form.id != null) {
updateCommunLog(this.form).then(response => {
updateTaskProductsAssociate(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
@ -224,7 +246,7 @@ export default {
return;
}
//
createCommunLog(this.form).then(response => {
createTaskProductsAssociate(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
@ -234,8 +256,8 @@ export default {
/** 删除按钮操作 */
handleDelete(row) {
const id = row.id;
this.$modal.confirm('是否确认删除通讯日志编号为"' + id + '"的数据项?').then(function() {
return deleteCommunLog(id);
this.$modal.confirm('是否确认删除任务关联货物编号为"' + id + '"的数据项?').then(function() {
return deleteTaskProductsAssociate(id);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
@ -247,11 +269,11 @@ export default {
let params = {...this.queryParams};
params.pageNo = undefined;
params.pageSize = undefined;
this.$modal.confirm('是否确认导出所有通讯日志数据项?').then(() => {
this.$modal.confirm('是否确认导出所有任务关联货物数据项?').then(() => {
this.exportLoading = true;
return exportCommunLogExcel(params);
return exportTaskProductsAssociateExcel(params);
}).then(response => {
this.$download.excel(response, '通讯日志.xls');
this.$download.excel(response, '任务关联货物.xls');
this.exportLoading = false;
}).catch(() => {});
}

View File

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-11-18 14:16:25
* @LastEditors: zwq
* @LastEditTime: 2023-11-01 16:35:29
* @LastEditTime: 2023-12-25 13:41:17
* @Description:
-->
<template>
@ -15,7 +15,12 @@
</template>
<script>
import { getProductList,outWare } from '@/api/axl/warehousestorehouse';
import {
getProductList,
outWare,
outWare2,
} from '@/api/axl/warehousestorehouse';
import { parseTime } from '../mixins/code-filter';
const tableProps = [
{
@ -38,6 +43,13 @@ const tableProps = [
label: '批次号',
align: 'center',
},
{
prop: 'createTime',
label: '时间',
align: 'center',
filter: parseTime,
width: 150,
},
{
prop: 'remark',
label: '备注',
@ -71,7 +83,13 @@ export default {
outWare() {
outWare(this.wareId).then((response) => {
this.visible = false;
this.$emit('refreshDataList');
this.$router.push({ path: 'task' });
});
},
outWare2() {
outWare2(this.wareId).then((response) => {
this.visible = false;
this.$router.push({ path: 'task' });
});
},
},

View File

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2023-08-21 14:26:23
* @LastEditors: zwq
* @LastEditTime: 2023-11-01 16:55:35
* @LastEditTime: 2023-12-27 14:19:20
* @Description:
-->
<template>
@ -23,13 +23,21 @@
<el-row type="flex" class="flex-warp">
<div
@click="
getProductList(a.id, a.warehouseStorehouseName, a.status)
getProductList(
a.id,
a.warehouseStorehouseName,
a.status,
a.filter
)
"
class="dashboard-layout-item"
v-for="a in wareData[i][4]"
:key="a.id + a.warehouseStorehouseCode"
:title="a.warehouseStorehouseName"
style="background: #fff8e8; float: left">
:style="{
cursor: a.filter === true ? 'pointer ' : 'not-allowed',
background: a.filter === true ? '#9dfffe' : '#e5e5e5',
}">
<div
class="dashboard-layout-item-cricle"
:style="{
@ -41,13 +49,21 @@
<el-row type="flex" class="flex-warp">
<div
@click="
getProductList(a.id, a.warehouseStorehouseName, a.status)
getProductList(
a.id,
a.warehouseStorehouseName,
a.status,
a.filter
)
"
class="dashboard-layout-item"
v-for="a in wareData[i][3]"
:key="a.id + a.warehouseStorehouseCode"
:title="a.warehouseStorehouseName"
style="background: #fff8e8; float: left">
:style="{
cursor: a.filter === true ? 'pointer ' : 'not-allowed',
background: a.filter === true ? '#9dfffe ' : '#e5e5e5',
}">
<div
class="dashboard-layout-item-cricle"
:style="{
@ -66,14 +82,22 @@
<el-row type="flex" class="flex-warp">
<div
@click="
getProductList(a.id, a.warehouseStorehouseName, a.status)
getProductList(
a.id,
a.warehouseStorehouseName,
a.status,
a.filter
)
"
class="dashboard-layout-item"
v-for="a in wareData[i][2]"
:style="{ marginRight: a.id === 1 ? '131px' : '' }"
:key="a.id + a.warehouseStorehouseCode"
:title="a.warehouseStorehouseName"
style="background: #fff8e8; float: left">
:style="{
cursor: a.filter === true ? 'pointer ' : 'not-allowed',
background: a.filter === true ? '#9dfffe ' : '#e5e5e5',
marginRight: a.id === 1 ? '131px' : '',
}">
<div
class="dashboard-layout-item-cricle"
:style="{
@ -85,13 +109,21 @@
<el-row type="flex" class="flex-warp">
<div
@click="
getProductList(a.id, a.warehouseStorehouseName, a.status)
getProductList(
a.id,
a.warehouseStorehouseName,
a.status,
a.filter
)
"
class="dashboard-layout-item"
v-for="a in wareData[i][1]"
:key="a.id + a.warehouseStorehouseCode"
:title="a.warehouseStorehouseName"
style="background: #fff8e8; float: left">
:style="{
cursor: a.filter === true ? 'pointer ' : 'not-allowed',
background: a.filter === true ? '#9dfffe ' : '#e5e5e5',
}">
<div
class="dashboard-layout-item-cricle"
:style="{
@ -108,7 +140,7 @@
:dialogTitle="addOrEditTitle"
:dialogVisible="addOrUpdateVisible"
:before-close="handleCancel"
width="40%">
width="50%">
<add-or-update
ref="addOrUpdate"
@refreshDataList="successSubmit"></add-or-update>
@ -124,7 +156,15 @@
size="small"
:disabled="!isOut"
@click="outWare">
出库
出库到输送线
</el-button>
<el-button
type="primary"
class="btnTextStyle"
size="small"
:disabled="!isOut"
@click="outWare2">
出库到载货台
</el-button>
</el-col>
</el-row>
@ -136,28 +176,61 @@
<script>
import AddOrUpdate from './add-or-updata';
import basicPage from '../mixins/basic-page';
import { getWarehousestorehouseList } from '@/api/axl/warehousestorehouse';
import { getWarehousestorehouseNList } from '@/api/axl/warehousestorehouse';
export default {
mixins: [basicPage],
data() {
return {
urlOptions: {
getDataListURL: getWarehousestorehouseList,
getDataListURL: getWarehousestorehouseNList,
},
listQuery: {
pageSize: 500,
productCode: null,
productName: null,
createTime: null,
},
wareData: {},
isOut: false,
bgColor: ['#16DC09', '#FFA08F', '#7362F3'],
formConfig: [
{
type: 'input',
label: '货物名称',
placeholder: '货物名称',
param: 'productName',
},
{
type: 'input',
label: '货物编码',
placeholder: '货物编码',
param: 'productCode',
},
{
type: 'datePicker',
label: '创建时间',
dateType: 'daterange',
format: 'yyyy-MM-dd',
valueFormat: 'yyyy-MM-dd HH:mm:ss',
rangeSeparator: '-',
startPlaceholder: '开始时间',
endPlaceholder: '结束时间',
param: 'searchTime',
},
{
type: 'button',
btnName: '刷新',
btnName: '查询',
name: 'search',
color: 'primary',
},
{
type: 'separate',
},
{
type: 'button',
btnName: '重置',
name: 'reset',
},
],
};
},
@ -176,16 +249,29 @@ export default {
buttonClick(val) {
switch (val.btnName) {
case 'search':
this.listQuery.productCode = val.productCode ? val.productCode : null;
this.listQuery.productName = val.productName ? val.productName : null;
this.listQuery.createTime = val.searchTime ? val.searchTime : [];
this.getDataList();
break;
case 'export':
this.handleExport();
break;
case 'reset':
this.$refs.searchBarForm.resetForm();
this.listQuery = {
productCode: null,
productName: null,
createTime: null,
};
this.getDataList();
break;
default:
console.log(val);
}
},
getProductList(id, name, status) {
getProductList(id, name, status, filter) {
if (filter === true) {
if (status === 2) {
this.isOut = true;
} else {
@ -196,13 +282,14 @@ export default {
this.$nextTick(() => {
this.$refs.addOrUpdate.init(id);
});
}
},
handleCancel() {
this.addOrUpdateVisible = false;
this.addOrEditTitle = '';
},
outWare() {
this.$confirm(`确定对此库位进行出库操作?`, '提示', {
this.$confirm(`确定对此库位进行 [出库到输送线] 操作?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
@ -212,6 +299,17 @@ export default {
})
.catch(() => {});
},
outWare2() {
this.$confirm(`确定对此库位进行 [出库到载货台] 操作?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
this.$refs.addOrUpdate.outWare2();
})
.catch(() => {});
},
},
};
</script>
@ -237,6 +335,8 @@ export default {
align-items: center;
justify-content: center;
position: relative;
background: #9dfffe;
float: left;
.dashboard-layout-item-cricle {
display: inline-block;
width: 12px;
@ -273,6 +373,6 @@ export default {
.tips {
position: absolute;
top: 22px;
left: 120px;
right: 120px;
}
</style>

View File

@ -153,6 +153,14 @@ export default {
name: 'search',
color: 'primary',
},
{
type: 'separate',
},
{
type: 'button',
btnName: '重置',
name: 'reset',
},
// {
// type: this.$auth.hasPermi('base:factory:create') ? 'separate' : '',
// },

View File

@ -0,0 +1,175 @@
<template>
<div :class="className" :style="{ height: height, width: width }" :id="id" />
</template>
<script>
import * as echarts from 'echarts';
require('echarts/theme/macarons'); // echarts theme
import resize from '@/utils/chartMixins/resize';
const animationDuration = 1000;
export default {
mixins: [resize],
props: {
id: {
type: String,
default: '',
},
className: {
type: String,
default: 'barChart',
},
title: {
type: String,
default: '',
},
width: {
type: String,
default: '95%',
},
height: {
type: String,
default: '420px',
},
barData: {
type: Array,
default: () => [],
},
},
data() {
return {
chart: null,
};
},
beforeDestroy() {
if (!this.chart) {
return;
}
this.chart.dispose();
this.chart = null;
},
methods: {
initChart(data) {
let barData = [];
for (const key in data) {
const obj = {
name: key,
value: data[key],
};
barData.push(obj);
}
this.chart = echarts.init(this.$el, 'macarons');
var option = {
color: ['#288AFF', '#8EF0AB', '#FFDC94'],
tooltip: {
trigger: 'axis',
axisPointer: {
//
type: 'line', // 线'line' | 'shadow'
},
},
grid: [
{
containLabel: true,
top: 40,
left: '2%',
right: '2%',
bottom: '3%',
},
],
xAxis: [
{
type: 'category',
data: barData.map((item) => {
return item.name;
}),
axisTick: {
alignWithLabel: true,
},
axisLabel: {
color: '#979797',
fontSize: 18,
},
axisLine: {
lineStyle: {
color: '#979797',
},
},
},
],
yAxis: [
{
name: '数量',
nameTextStyle: {
color: '#979797',
fontSize: 18,
},
axisTick: {
show: false,
},
splitLine: {
show: true,
lineStyle: {
color: '#4561AE',
},
},
splitArea: {
show: false,
},
axisLine: {
show: true,
lineStyle: {
color: '#4561AE',
},
},
axisLabel: {
color: '#979797',
fontSize: 18,
},
},
],
series: [
{
name: '数量',
type: 'bar',
barWidth: '16',
data: barData.map((item) => {
return item.value;
}),
label: {
show: true,
position: 'top',
color: '#DFF1FE',
},
animationDuration,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: '#83bff6' },
{ offset: 0.5, color: '#188df0' },
{ offset: 1, color: '#188df0' },
]),
},
emphasis: {
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: '#2378f7' },
{ offset: 0.7, color: '#2378f7' },
{ offset: 1, color: '#83bff6' },
]),
},
},
},
],
};
if (this.chart !== '') {
this.chart.setOption(option);
} else {
this.chart = echarts.init(document.getElementById(this.id));
this.chart.setOption(option);
}
},
},
};
</script>

View File

@ -0,0 +1,293 @@
<template>
<div :class="className" :style="{ height: height, width: width }" :id="id" />
</template>
<script>
import * as echarts from 'echarts';
require('echarts/theme/macarons'); // echarts theme
import resize from '@/utils/chartMixins/resize';
const animationDuration = 1000;
export default {
mixins: [resize],
props: {
id: {
type: String,
default: '',
},
className: {
type: String,
default: 'chart',
},
title: {
type: String,
default: 'chart',
},
width: {
type: String,
default: '100%',
},
height: {
type: String,
default: '200px',
},
pieData: {
type: Array,
default: () => [],
},
barColor: {
type: Array,
default: () => [
'#5fe1d2',
'#ffb2b0',
'#8e90ff',
'#f058aa',
'#8652da',
'#87fb84',
'#61b9ff',
'#fdf6a6',
'#ffc465',
'#98d9ff',
],
},
},
data() {
return {
chart: null,
newColor: [
'#2760FF',
'#6ef9ef',
'#bea010',
'#8fc162',
'#ffc465',
'#98d9ff',
'#5fe1d2',
'#ffb2b0',
'#8e90ff',
'#f058aa',
'#8652da',
'#87fb84',
'#61b9ff',
'#fdf6a6',
],
};
},
beforeDestroy() {
if (!this.chart) {
return;
}
this.chart.dispose();
this.chart = null;
},
methods: {
initChart(data) {
let barData = [];
for (const key in data) {
const obj = {
name: key,
value: data[key],
};
barData.push(obj);
}
this.chart = echarts.init(this.$el, 'macarons');
var option = {
title: {
text: `${barData.reduce(
(pre, cur) => pre + cur.value,
0
)}\n{name|总数}`,
top: '39%',
left: '49%',
textAlign: 'center',
textStyle: {
color: '#fff',
fontSize: 26,
fontWeight: 400,
lineHeight: 15,
rich: {
name: {
color: 'rgba(255, 255, 255, 0.7)',
fontWeight: 400,
textAlign: 'center',
fontSize: 18,
lineHeight: 25,
},
},
},
},
tooltip: {
trigger: 'item',
},
grid: {
top: '0px',
right: '0px',
bottom: '0px',
left: '0px',
containLabel: true,
},
// legend
legend: {
bottom: 0,
left: 'center',
// itemHeight: 10,
itemWidth: 15,
// icon: 'none',
// formatter: function (name) {
// let pieLegendVale = {};
// barData.filter((item, index) => {
// if (item.name === name) {
// pieLegendVale = item;
// }
// });
// const color = ['c', 'd', 'e', 'f', 'g', 'h'];
// const arr = [
// '{' + color[barData.findIndex((item) => item.name === name)] + '|}',
// '{b|' + pieLegendVale.name + '}',
// '{a|' + pieLegendVale.value + '}',
// ];
// return arr.join(' ');
// },
textStyle: {
color: 'rgba(255, 255, 255, 0.8)',
// rich: {
// a: {
// align: 'center',
// fontSize: 16,
// fontWeight: 400,
// color: 'rgba(255, 255, 255, 0.7)',
// padding: [0, 1],
// lineHeight: 16,
// },
// b: {
// // verticalAlign: 'top',
// align: 'center',
// fontSize: 16,
// fontWeight: 400,
// color: 'rgba(255, 255, 255)',
// },
// c: {
// // verticalAlign: 'top',
// align: 'center',
// width: 14,
// height: 14,
// backgroundColor: '#2760FF',
// },
// d: {
// // verticalAlign: 'top',
// align: 'center',
// width: 10,
// height: 10,
// backgroundColor: '#6ef9ef',
// },
// e: {
// // verticalAlign: 'top',
// align: 'center',
// width: 14,
// height: 14,
// backgroundColor: '#bea010',
// },
// f: {
// // verticalAlign: 'top',
// align: 'center',
// width: 14,
// height: 14,
// backgroundColor: '#8fc162',
// },
// g: {
// // verticalAlign: 'top',
// align: 'center',
// width: 14,
// height: 14,
// backgroundColor: '#ffc465',
// },
// h: {
// // verticalAlign: 'top',
// align: 'center',
// width: 14,
// height: 14,
// backgroundColor: '#98d9ff',
// },
// },
},
},
color: this.newColor,
series: [
{
name: 'default name',
type: 'pie',
radius: ['50%', '70%'],
silent: true,
bottom: '10%',
avoidLabelOverlap: true, // 线
label: {
show: true,
fontSize: 20,
lineHeight: 20,
formatter: '{d}%',
},
itemStyle: {
borderRadius: 5,
borderWidth: 2,
// normal: {
// color: (list) => {
// var colorList = [
// {
// colorStart: 'rgba(59, 76, 118, 0.2)',
// colorEnd: '#2760FF'
// },
// {
// colorStart: 'rgba(59, 76, 118, 0.2)',
// colorEnd: '#6ef9ef'
// },
// {
// colorStart: 'rgba(59, 76, 118, 0.2)',
// colorEnd: '#bea010'
// },
// {
// colorStart: 'rgba(59, 76, 118, 0.2)',
// colorEnd: '#8fc162'
// },
// {
// colorStart: 'rgba(59, 76, 118, 0.2)',
// colorEnd: '#ffc465'
// },
// {
// colorStart: 'rgba(59, 76, 118, 0.2)',
// colorEnd: '#98d9ff'
// }
// ]
// return new echarts.graphic.LinearGradient(0, list.dataIndex > 1 ? 1 : 0, 0, list.dataIndex > 1 ? 0 : 1, [{ //
// offset: 0,
// color: colorList[list.dataIndex]['colorStart']
// }, {
// offset: 1,
// color: colorList[list.dataIndex]['colorEnd']
// }])
// }
// },
},
labelLine: {
length: 15,
length2: 30,
maxSurfaceAngle: 80,
},
data: barData.map((item, index) => {
item.label = {
color: this.newColor[index],
};
return item;
}),
},
],
};
if (this.chart !== '') {
this.chart.setOption(option);
} else {
this.chart = echarts.init(document.getElementById(this.id));
this.chart.setOption(option);
}
},
},
};
</script>

View File

@ -1,98 +1,545 @@
<!--
* @Author: zwq
* @Date: 2023-09-14 13:44:22
* @LastEditors: zwq
* @LastEditTime: 2024-04-18 14:07:09
* @Description:,
-->
<template>
<div class="dashboard-editor-container">
<panel-group @handleSetLineChartData="handleSetLineChartData" />
<el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;">
<line-chart :chart-data="lineChartData" />
</el-row>
<el-row :gutter="32">
<el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper">
<raddar-chart />
<div id="main-body" ref="container" allowfullscreen="true">
<div class="container-title">
环动科技热处理车间立库看板
<div class="leftName">中国联合工程</div>
<div class="rightName">
{{ gettime[1] }} | {{ gettime[0] }} | 星期{{ gettime[2] }}
</div>
<el-button
type="text"
class="title-button"
:style="{ right: 15 + 'px', top: 27 + 'px', fontSize: 35 + 'px' }"
@click="changeFullScreen">
<svg-icon v-if="isFullScreen" icon-class="unFullScreenView" />
<svg-icon v-else icon-class="fullScreenView" />
</el-button>
</div>
<div class="container-body">
<el-row :gutter="5">
<el-col :span="8">
<div class="div-top div1">
<div class="div-title">
<svg-icon
icon-class="div1"
style="margin: 0 10px 0 20px; font-size: 25px" />
仓库实时状况
</div>
<pieChart
ref="pieChart1"
:id="'pieChart1'"
height="300px"
title="仓库实时状况"
:pie-data="pieData1" />
<div class="div1-info">
<div class="tip">1</div>
当前占用{{ percent }}% | {{ total }}
<div class="residue">剩余{{ residue }}</div>
<el-progress
style="margin-top: 15px"
:stroke-width="15"
:percentage="percent"
color="#2760FF"
define-back-color="#294378"
:show-text="false" />
</div>
</div>
</el-col>
<el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper">
<pie-chart />
<el-col :span="8">
<div class="div-top div2">
<div class="div-title">
<svg-icon icon-class="redis" style="margin: 0 10px 0 20px" />
出入库数据概况
<div style="float: right; margin-right: 20px" v-show="false">
<el-radio-group
v-model="radio"
size="mini"
@input="setType"
fill="#1D74D8">
<el-radio-button label="全部"></el-radio-button>
<el-radio-button label="本周"></el-radio-button>
<el-radio-button label="本月"></el-radio-button>
</el-radio-group>
</div>
</div>
<div class="div2-body">
<el-col :span="12" v-for="i in divList" :key="i.name">
<div class="div2-mini-body">
<div>{{ i.value }}</div>
<div class="div2-mini-body-sub">- {{ i.name }} -</div>
</div>
</el-col>
<el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper">
<bar-chart />
</div>
</div>
</el-col>
<el-col :span="8">
<div class="div-top div3">
<div class="div-title">
<svg-icon
icon-class="div3"
style="margin: 0 10px 0 20px; font-size: 25px" />
仓库实时状况
</div>
<pieChart
ref="pieChart2"
:id="'pieChart2'"
height="380px"
title="仓库实时状况"
:pie-data="pieData2" />
</div>
</el-col>
<el-col :span="12">
<div class="div-footer div4">
<div class="div-title">
<svg-icon
icon-class="div4"
style="margin: 0 10px 0 20px; font-size: 25px" />
库内货物情况
</div>
<barChart
ref="barChart"
:id="'barChart'"
height="350px"
title="库内货物情况"
:bar-data="barData" />
</div>
</el-col>
<el-col :span="12">
<div class="div-footer div5">
<div class="div-title">
<svg-icon
icon-class="div5"
style="margin: 0 10px 0 20px; font-size: 25px" />
出入库任务
</div>
<div style="margin: 10px">
<el-table
:data="tableData"
:header-cell-style="{
background: 'rgba(32, 55, 96, 0.9)',
color: '#fff',
height: 20 + 'px',
lineHeight: 20 + 'px',
padding: 0,
fontSize: 12 + 'px',
}"
height="340px"
:row-style="setRowStyle"
style="width: 100%; background: transparent"
ref="dataList">
<el-table-column type="index" label="序号"></el-table-column>
<el-table-column prop="mainTaskType" label="类型" width="60">
<template v-slot="scope">
<span>
{{
scope.row.mainTaskType === 1
? '入库'
: scope.row.mainTaskType === 2
? '出库'
: scope.row.mainTaskType === 3
? '移库'
: scope.row.mainTaskType === 4
? '越库'
: scope.row.mainTaskType === 5
? '盘点'
: '-'
}}
</span>
</template>
</el-table-column>
<el-table-column prop="status" label="状态" width="80">
<template v-slot="scope">
<span>
<div
class="table-div"
:class="
['status0', 'status1', 'status2'][scope.row.status]
" />
{{ ['未执行', '执行中', '已完成'][scope.row.status] }}
</span>
</template>
</el-table-column>
<el-table-column prop="createTime" label="添加时间" width="150">
<template v-slot="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column prop="productName" label="货物名称" />
<el-table-column prop="productNum" label="货物数量/件" />
<el-table-column prop="remark" label="备注" />
</el-table>
</div>
</div>
</el-col>
</el-row>
</div>
</div>
</template>
<script>
import PanelGroup from './dashboard/PanelGroup'
import LineChart from './dashboard/LineChart'
import RaddarChart from './dashboard/RaddarChart'
import PieChart from './dashboard/PieChart'
import BarChart from './dashboard/BarChart'
import barChart from './chart/BarChart.vue';
import pieChart from './chart/PieChart.vue';
import screenfull from 'screenfull';
import { screenData } from '@/api/axl/alarmLog';
const lineChartData = {
newVisitis: {
expectedData: [100, 120, 161, 134, 105, 160, 165],
actualData: [120, 82, 91, 154, 162, 140, 145]
const legendData2 = [
{
name: '齿轮',
value: 498,
},
messages: {
expectedData: [200, 192, 120, 144, 160, 130, 140],
actualData: [180, 160, 151, 106, 145, 150, 130]
{
name: '轴承',
value: 285,
},
purchases: {
expectedData: [80, 100, 121, 104, 105, 90, 100],
actualData: [120, 90, 100, 138, 142, 130, 130]
{
name: '其他',
value: 388,
},
shoppings: {
expectedData: [130, 140, 141, 142, 145, 150, 160],
actualData: [120, 82, 91, 154, 162, 140, 130]
}
}
];
export default {
name: 'Index',
name: 'Board',
components: {
PanelGroup,
LineChart,
RaddarChart,
PieChart,
BarChart
barChart,
pieChart,
},
data() {
return {
lineChartData: lineChartData.newVisitis
}
gettime: [],
pieData1: [],
pieData2: legendData2,
barData: [],
percent: 0,
total: 0,
residue: 0,
radio: '全部',
divList: [],
tableData: [],
isFullScreen: false,
};
},
mounted() {
this.getCurrentTime();
this.getScreenData();
this.startFun();
},
created() {
this.init();
},
methods: {
handleSetLineChartData(type) {
this.lineChartData = lineChartData[type]
startFun() {
const timer = setInterval(() => {
this.getCurrentTime();
this.getScreenData();
}, 60000);
this.$once('hook:beforeDestroy', () => {
clearInterval(timer);
});
},
getCurrentTime() {
let yy = new Date().getFullYear();
let mm = new Date().getMonth() + 1;
let dd = new Date().getDate();
let hh = new Date().getHours();
let mf =
new Date().getMinutes() < 10
? '0' + new Date().getMinutes()
: new Date().getMinutes();
const weekdays = ['日', '一', '二', '三', '四', '五', '六'];
this.gettime = [
yy + '.' + mm + '.' + dd,
hh + ':' + mf,
weekdays[new Date().getDay()],
];
},
setType() {
console.log(this.radio);
},
setRowStyle(v) {
if (v.rowIndex % 2 === 0) {
return {
background: 'rgba(14, 32, 62, 0.5)',
color: 'rgba(255,255,255,0.5)',
height: 20 + 'px',
lineHeight: 20 + 'px',
padding: 0,
fontSize: 14 + 'px',
};
} else {
return {
background: 'rgba(32, 55, 96, 0.5)',
color: 'rgba(255,255,255,0.5)',
height: 20 + 'px',
lineHeight: 20 + 'px',
padding: 0,
fontSize: 14 + 'px',
};
}
},
change() {
this.isFullScreen = screenfull.isFullscreen;
},
init() {
if (screenfull.isEnabled) {
screenfull.on('change', this.change);
}
},
destroy() {
if (screenfull.isEnabled) {
screenfull.off('change', this.change);
}
},
changeFullScreen() {
if (!screenfull.isEnabled) {
this.$message({
message: 'you browser can not work',
type: 'warning',
});
return false;
}
screenfull.toggle(this.$refs.container);
},
getScreenData() {
screenData().then((response) => {
this.barData.splice(0, this.barData.length);
this.tableData = response.data.ScreenTask;
this.percent = response.data.WareHouseRankProportion;
this.total = response.data.WareHouseRankTotal;
this.residue = response.data.WareHouseRankSurplus;
const obj = {
加工中: response.data.ProductProcessing,
加工完成: response.data.ProductNotProcessing,
};
this.divList = [
{
name: '总次数',
value: response.data.TaskTotal,
},
{
name: 'FOCOS下发次数',
value: response.data.TaskFromFocos,
},
{
name: '加工中暂存次数',
value: response.data.TaskNotProcessing,
},
{
name: '货物总数',
value: response.data.TaskProductTotal,
},
{
name: '加工完成存储次数',
value: response.data.TaskProcessing,
},
{
name: '人工下发次数',
value: response.data.TaskFromManual,
},
];
this.$nextTick(() => {
this.$refs.pieChart1.initChart(obj);
this.$refs.pieChart2.initChart(response.data.ProductByType);
this.$refs.barChart.initChart(response.data.ProductAndNum);
});
});
},
},
};
</script>
<style lang="scss" scoped>
.dashboard-editor-container {
padding: 32px;
background-color: #e9e9e9;
#main-body {
min-height: 100vh;
width: 100%;
background: url(~@/assets/axl/bg.png) center no-repeat;
background-size: cover;
overflow: hidden;
.container-title {
width: 100%;
height: 80px;
background: url(~@/assets/axl/title.png) no-repeat;
background-size: 100% 100%;
color: #ffffff;
font-size: 30px;
line-height: 80px;
text-align: center;
letter-spacing: 5px;
position: relative;
.chart-wrapper {
background: #fff;
padding: 16px 16px 0;
margin-bottom: 32px;
.leftName {
font-size: 18px;
color: #69b4ff;
letter-spacing: 3px;
position: absolute;
left: 25%;
top: 20px;
}
.rightName {
font-size: 18px;
color: #69b4ff;
letter-spacing: 3px;
position: absolute;
left: 67%;
top: 22px;
}
.title-button {
color: #89b9fe;
position: absolute;
}
}
@media (max-width:1024px) {
.chart-wrapper {
padding: 8px;
.container-body {
margin-top: 20px;
.div-title {
height: 48px;
font-size: 20px;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
color: #ffffff;
line-height: 48px;
::v-deep .el-radio-button__inner {
background-color: #0a1c51;
color: white;
border: none;
}
}
.div-top {
margin-bottom: 10px;
height: 490px;
}
.div1 {
background: url(~@/assets/axl/1.png) no-repeat;
background-size: 100% 100%;
margin-left: 20px;
.div1-info {
font-size: 18px;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
color: #ffffff;
margin: 35px;
}
.tip {
float: left;
width: 20px;
height: 20px;
color: #68b5ff;
text-align: center;
margin-right: 10px;
background: rgba(0, 106, 205, 0.22);
}
.residue {
float: right;
}
}
.div2 {
background: url(~@/assets/axl/2.png) no-repeat;
background-size: 100% 483px;
.div2-body {
margin: 16px 22px;
color: #ffffff;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
}
.div2-mini-body {
height: 127px;
background: url(~@/assets/axl/div2.png) no-repeat;
background-size: 100% 127px;
font-size: 40px;
line-height: 43px;
text-align: center;
padding-top: 28px;
margin-bottom: 8px;
border: 1px rgb(179, 179, 179) dashed;
}
.div2-mini-body-sub {
font-size: 20px;
color: #5da3e9;
line-height: 30px;
}
}
.div3 {
background: url(~@/assets/axl/3.png) no-repeat;
background-size: 100% 100%;
margin-right: 20px;
}
.div-footer {
height: 420px;
margin-bottom: 20px;
}
.div4 {
background: url(~@/assets/axl/4.png) no-repeat;
background-size: 100% 100%;
margin-left: 20px;
}
.div5 {
background: url(~@/assets/axl/5.png) no-repeat;
background-size: 100% 413px;
margin-right: 20px;
.el-table {
border: 0;
}
::v-deep .el-table__cell {
border-bottom: none;
border-right: 1px #0d1728 solid;
}
.el-table::before {
height: 0px;
}
// --
::v-deep .el-table tbody tr {
pointer-events: none;
}
//
::v-deep .el-table__body-wrapper::-webkit-scrollbar-track {
background-color: #063570;
}
::v-deep .el-table__body-wrapper::-webkit-scrollbar {
width: 2px;
opacity: 0.5;
}
::v-deep .el-table__body-wrapper::-webkit-scrollbar-thumb {
border-radius: 15px;
background-color: #0257aa;
}
//
::v-deep .el-table__header tr,
::v-deep .el-table th,
.el-table tr {
background-color: transparent;
}
.table-div {
width: 6px;
height: 6px;
border-radius: 3px;
float: left;
margin-top: 10px;
margin-right: 10px;
}
.status0 {
background: #ff5454;
box-shadow: 0px 0px 2px 2px rgba(255, 84, 84, 0.5);
}
.status1 {
background: #0b58ff;
box-shadow: 0px 0px 2px 2px rgba(11, 88, 255, 0.5);
}
.status2 {
background: #03d300;
box-shadow: 0px 0px 2px 2px rgba(3, 211, 0, 0.5);
}
}
}
}
</style>
<style lang="scss"></style>

View File

@ -131,13 +131,13 @@ export default {
mobileCodeTimer: 0,
loginForm: {
loginType: "uname",
username: "admin",
password: "admin123",
username: "",
password: "",
captchaVerification: "",
mobile: "",
mobileCode: "",
rememberMe: false,
tenantName: "爱协林热处理",
tenantName: "系统管理员",
},
scene: 21,

View File

@ -1,3 +1,10 @@
<!--
* @Author: zwq
* @Date: 2023-09-14 13:44:22
* @LastEditors: zwq
* @LastEditTime: 2023-12-15 10:31:48
* @Description:
-->
<template>
<div>
<doc-alert title="报表设计器" url="https://doc.iocoder.cn/report/" />
@ -12,7 +19,7 @@ export default {
components: { iFrame },
data() {
return {
url: process.env.VUE_APP_BASE_API + "/jmreport/list?token=" + getAccessToken(),
url: process.env.VUE_APP_JM_API + "/jmreport/list?token=" + getAccessToken(),
};
},
};

View File

@ -8,7 +8,7 @@ function resolve(dir) {
const CompressionPlugin = require('compression-webpack-plugin')
const name = process.env.VUE_APP_TITLE || '爱协林管理系统' // 网页标题
const name = process.env.VUE_APP_TITLE || '热处理立库管理系统' // 网页标题
const port = process.env.port || process.env.npm_config_port || 80 // 端口