Merge remote-tracking branch 'origin/master'

master
mengjiao 3 months ago
commit 9ff9a45b2c

@ -0,0 +1,10 @@
import request from '@/utils/request'
// 查询黑蚊香车间的生产信息
export function getOrderInWork(data) {
return request({
url: '/mes/mesborad/getOrderInWork',
method: 'post',
data: data
});
}

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询成型机产量列表
export function listProducted(query) {
return request({
url: '/mes/producted/list',
method: 'get',
params: query
})
}
// 查询成型机产量详细
export function getProducted(workorderCode) {
return request({
url: '/mes/producted/' + workorderCode,
method: 'get'
})
}
// 新增成型机产量
export function addProducted(data) {
return request({
url: '/mes/producted',
method: 'post',
data: data
})
}
// 修改成型机产量
export function updateProducted(data) {
return request({
url: '/mes/producted',
method: 'put',
data: data
})
}
// 删除成型机产量
export function delProducted(workorderCode) {
return request({
url: '/mes/producted/' + workorderCode,
method: 'delete'
})
}

@ -43,6 +43,14 @@ export function updateEquipment(data) {
data: data
});
}
// 同步SAP设备信息
export function SyncSAP(equipmentId) {
return request({
url: '/wms/equipment/sapSync/' + equipmentId,
method: 'get'
});
}
// 删除设备管
export function delEquipment(equipmentId) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 701 KiB

@ -0,0 +1 @@
<svg t="1742969056142" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4900" width="600" height="600"><path d="M0 258.730667v506.538666h517.546667L1024 258.730667z m139.264 94.208h0.213333c36.821333 0.042667 81.706667 10.453333 114.176 27.008l-34.986666 61.013333c-35.626667-17.237333-53.546667-18.858667-73.813334-19.925333-30.208-1.621333-45.397333 9.173333-45.610666 20.821333-0.298667 14.165333 28.544 27.008 55.68 35.754667 41.130667 13.056 93.44 30.506667 101.418666 81.066666L331.52 359.978667h87.296l88.064 237.909333-0.298667-237.866667h101.12c96.298667 0 141.568 32.597333 141.568 107.477334 0 67.2-46.506667 107.264-125.269333 107.264h-32.554667l-0.426666 89.344-153.088-0.128-10.666667-38.741334c-15.786667 5.205333-33.578667 8.064-52.48 8.064-19.456 0-37.76-3.029333-53.888-8.533333l-15.274667 39.210667-85.333333 0.256 3.84-19.712c-1.237333 1.066667-2.432 2.133333-3.712 3.157333-22.826667 18.346667-51.541333 26.837333-86.912 27.477333l-9.088 0.085334a216.533333 216.533333 0 0 1-110.122667-28.8l31.146667-61.781334c33.706667 19.925333 54.869333 24.405333 83.456 23.808 14.805333-0.298667 25.514667-2.986667 32.469333-10.197333a23.765333 23.765333 0 0 0 6.656-15.744c0.298667-16.042667-22.613333-23.594667-50.56-32.256-22.656-6.997333-48.426667-16.597333-68.522666-31.36-23.850667-17.493333-35.2-39.424-34.645334-70.4a84.906667 84.906667 0 0 1 24.149334-58.752c22.144-22.912 57.898667-36.821333 100.821333-36.821333z m452.138667 71.253333v81.237333h22.229333c29.610667 0 53.205333-9.813333 53.248-41.130666 0-30.250667-23.637333-40.106667-53.248-40.106667z m-217.045334 32.725333l-31.914666 100.778667c9.514667 3.626667 20.522667 5.674667 32.298666 5.674667 11.434667 0 22.186667-2.005333 31.658667-5.376l-31.402667-101.12z" p-id="4901" fill="#2c2c2c"></path></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

@ -2,13 +2,22 @@
<div>
<div class="bg">
<div class="title1">黑蚊香车间生产监控看板</div>
<!-- 新增横向滚动标题 -->
<div class="scroll-title-container">
<div class="scroll-title-content">
{{ scrollText }} <!-- Vue数据绑定 -->
<!-- 如需静态文字可直接写在这里 -->
</div>
</div>
<div class="floorNum floorNum1">1F</div>
<div class="floorNum floorNum2">2F</div>
<div class="floorNum floorNum3">3F</div>
<div class="floorNum floorNum4" @click="$router.push('/cs2')">4F</div>
<div class="floorNum floorNum5">5F</div>
<div class="floorNum floorNum6">6F</div>
<div class="output" v-for="i in outputData" :style="`left:${i.left}%`"><span>产量10</span></div>
<div class="output" v-for="i in outputData" :style="`left:${i.left}%`"><span>{{i.no}}</span></div>
<div v-for="i in equipmentData" class="equipment" :style="`left: ${i.left}%`">
<div :class="i.isRight?'equipmentName1':'equipmentName'"><span>设备名称</span></div>
</div>
@ -125,19 +134,55 @@
<div class="arrow" :style="`top: 62%;left: 75.3%;transform: rotate(345deg);`"></div>
<div class="arrow" :style="`top: 66%;left: 76.1%;transform: rotate(345deg);`"></div>
</div>
<div class="bottomArrows" v-for="(i,k) in 9">
<div class="arrow" :style="`top: 72.5%;left: ${31.9 + 5.2*k}%;`"></div>
</div>
<div class="bottomArrows" v-for="(i,k) in 5">
<div class="arrow" :style="`top: 73.7%;left: ${50.5 - 5.2*k}%;`"></div>
</div>
<!-- <div class="fixed-table-container">-->
<!-- <el-table ref="autoScrollTable" :data="tableData" style="width: 80%" height="200" class="transparent-table">-->
<!-- <el-table-column prop="time" label="时间" width="120"></el-table-column>-->
<!-- <el-table-column prop="device" label="设备" width="120"></el-table-column>-->
<!-- </el-table>-->
<!-- </div>-->
<div v-for="i in infoData " class="info"
:style="`top: ${i.top}%;left: ${i.left}%;transform: rotate(${i.rotate}deg);`">
:style="`width: ${i.width}%; height: ${i.height}%;top: ${i.top}%;left: ${i.left}%;transform: rotate(${i.rotate}deg); background: #CB4C4C${i.alpha};border-radius: ${i.radius}%;`">
<div :class="i.isRight?'infoModel':'infoModel'" :style="`transform: rotate(${360 -i.rotate}deg);`">
<div class="title">设备名称</div>
<div class="equipmentOutput"><span style="color: #fff9">设备产量:</span> 10</div>
<div class="equipmentInfo"><span style="color: #fff9">设备信息:</span> 10</div>
<div class="title">{{ i.equipmentName }}</div>
<div style="color: #fff;
position: absolute;
top: 65%;
font-size: 0.6vw;
letter-spacing: 3px;
left: 7%;"><span style="color: #fff9">产品:</span> <span>{{ i.productName }}</span></div>
<div style="color: #fff;
position: absolute;
top: 90%;
font-size: 0.6vw;
letter-spacing: 3px;
left: 7%;"><span style="color: #fff9">产量:</span> <span>{{ i.quantityFeedback }}</span></div>
<div style="color: #fff;
position: absolute;
top: 110%;
font-size: 0.6vw;
letter-spacing: 3px;
left: 7%;"><span style="color: #fff9">订单号:</span> <span>{{ i.workorderCodeSap }}</span></div>
<div style="color: #fff;
position: absolute;
top: 130%;
font-size: 0.6vw;
letter-spacing: 3px;
left: 7%;"><span style="color: #fff9">工单日期:</span> <span>{{ i.productDate }}</span></div>
<div style="color: #fff;
position: absolute;
top: 155%;
font-size: 0.6vw;
letter-spacing: 3px;
left: 7%;"><span style="color: #fff9">组长:</span> <span>{{ i.teamLeaderNames }}</span></div>
</div>
</div>
</div>
@ -145,118 +190,208 @@
</template>
<script>
import {getDailyReportNew} from "../../api/mes/reportWork";
import moment from 'moment';
export default {
data() {
return {
isRun: [1, 2, 3, 4, 5, 6, 7, 8],
url: "ws://127.0.0.1:9208/websocket/message",
message: "",
text_content: "",
scrollText: "",
repairOrders:[],
ws: null,
//
queryParams: {
timeArray: [],
productDateStart: null,
productDateEnd: null,
sapName: null,
pageNum: 1,
pageSize: 20,
workCenter: null,
factoryCode: null
},
tableData: [
{ time: '08:30', device: '设备A', status: '运行中', output: '1200' },
{ time: '09:15', device: '设备B', status: '待机', output: '800' },
{ time: '08:30', device: '设备A', status: '运行中', output: '1200' },
{ time: '09:15', device: '设备B', status: '待机', output: '800' },
{ time: '08:30', device: '设备A', status: '运行中', output: '1200' },
{ time: '09:15', device: '设备B', status: '待机', output: '800' },
{ time: '08:30', device: '设备A', status: '运行中', output: '1200' },
{ time: '09:15', device: '设备B', status: '待机', output: '800' },
{ time: '08:30', device: '设备A', status: '运行中', output: '1200' },
{ time: '09:15', device: '设备B', status: '待机', output: '800' },
{ time: '08:30', device: '设备A', status: '运行中', output: '1200' },
{ time: '09:15', device: '设备B', status: '待机', output: '800' },
{ time: '08:30', device: '设备A', status: '运行中', output: '1200' },
{ time: '09:15', device: '设备B', status: '待机', output: '800' },
{ time: '08:30', device: '设备A', status: '运行中', output: '1200' },
{ time: '09:15', device: '设备B', status: '待机', output: '800' },
{ time: '08:30', device: '设备A', status: '运行中', output: '1200' },
{ time: '09:15', device: '设备B', status: '待机', output: '800' },
// ...
],
scrollInterval: null,
isRun: [1, 2, 3, 4, 5, 6, 7, 8,9],
infoData: [
{
top: 28,
left: 32.7,
top: 31,
left: 13.6,
rotate: 14,
width: 2,
height:40,
alpha: '80',
radius:20,
isRight: false,
equipmentName: "包装线11"
},
{
top: 31,
left: 20.3,
rotate: 14,
width: 2,
height:40,
alpha: '80',
radius:20,
isRight: false,
equipmentName: "包装线10"
},
{
top: 31,
left: 24.3,
rotate: 10,
width: 2,
height:40,
alpha: '80',
radius:20,
isRight: false,
equipmentName: "包装线09"
},
{
top: 31,
left: 33.7,
rotate: 7,
isRight: false
width: 2,
height:40,
alpha: '80',
radius:20,
isRight: false,
equipmentName: "包装线08"
},
{
top: 27,
left: 37.1,
top: 31,
left: 38.5,
rotate: 3,
isRight: true
width: 2,
height:40,
isRight: true,
equipmentName: "包装线07"
},
{
top: 26.5,
left: 44.1,
top: 31,
left: 45.1,
rotate: 2,
isRight: false
width: 2,
height:40,
isRight: false,
equipmentName: "包装线06"
},
{
top: 26,
left: 48.8,
top: 31,
left: 50.5,
rotate: 358,
isRight: true
width: 2,
height:40,
isRight: true,
equipmentName: "包装线05"
},
{
top: 25,
left: 55.8,
rotate: 355,
isRight: false
top: 31,
left: 56.8,
rotate: 357,
width: 2,
height:40,
isRight: false,
equipmentName: "包装线04"
},
{
top: 24,
left: 60.2,
top: 31,
left: 61.5,
rotate: 354,
width: 2,
height:40,
isRight: true,
equipmentName: "包装线03"
},
{
top: 31,
left: 68.1,
rotate: 351,
isRight: true
width: 2,
height:40,
isRight: false,
equipmentName: "包装线02"
},
{
top: 24,
left: 66.8,
rotate: 351,
isRight: false
},
{
top: 22.5,
left: 71.6,
rotate: 346,
isRight: false
top: 31,
left: 72.9,
rotate: 348,
width: 2,
height:40,
isRight: false,
equipmentName: "包装线01"
},
],
equipmentData: [
// {
// left: 16,
// isRight: false,
// },
// {
// left: 23.5,
// isRight: true,
// },
// {
// left: 38,
// isRight: false,
// },
// {
// left: 45.3,
// isRight: true,
// },
// {
// left: 59.3,
// isRight: false,
// },
// {
// left: 66.6,
// isRight: true,
// },
// {
// left: 81.2,
// isRight: false,
// },
// {
// left: 88.5,
// isRight: false,
// },
],
outputData: [
{
left: 13.6,
no:"11"
},
{
left: 20.3,
no:"10"
},
{
left: 25.3,
no:"09"
},
{
left: 33.3,
no:"08"
},
{
left: 37.7,
no:"07"
},
{
left: 43.9,
no:"06"
},
{
left: 48.5,
no:"05"
},
{
left: 54.5,
no:"04"
},
{
left: 59,
no:"03"
},
{
left: 65,
no:"02"
},
{
left: 69.5,
no:"01"
},
],
arrowData: [
@ -287,16 +422,141 @@ export default {
]
}
},
methods: {},
methods: {
Fungetdate(num) {
var dd = new Date();
dd.setDate(dd.getDate() + num);
var y = dd.getFullYear();
var m = dd.getMonth() + 1; //
var d = dd.getDate();
return y + "-" + m + "-" + d;
},
getDate() {
let start = this.Fungetdate(0);
let end = this.Fungetdate(1);
this.queryParams.timeArray.push(start, end);
this.getData();
},
getData() {
if(this.queryParams.timeArray.length>0){
this.queryParams.productDateStart = moment(this.queryParams.timeArray[0]).format('YYYY-MM-DD');
this.queryParams.productDateEnd = moment(this.queryParams.timeArray[1]).format('YYYY-MM-DD');
}
getDailyReportNew(this.queryParams).then(e => {
// e.rows
if (e.rows && Array.isArray(e.rows)) {
// equipmentName
const rowMap = e.rows.reduce((map, row) => {
map[row.equipmentName] = row; // equipmentName
return map;
}, {});
// infoData
this.infoData = this.infoData.map(infoItem => {
const matchedRow = rowMap[infoItem.equipmentName];
return {
...infoItem,
productName: matchedRow?.productName || null ,// productName
teamLeaderNames: matchedRow?.teamLeaderNames || null,
prodType: matchedRow?.prodType || null,
quantityFeedback: matchedRow?.quantityFeedback || null,
productDate: matchedRow?.productDate || null,
workorderCodeSap: matchedRow?.workorderCodeSap || null,
sapCode:matchedRow?.sapCode || null,
};
});
console.log(this.infoData)
}
}).catch(error => {
console.error("获取数据失败:", error);
});
},
startAutoScroll() {
const tableBody = this.$refs.autoScrollTable.$el.querySelector('.el-table__body-wrapper')
let scrollTop = 0
this.scrollInterval = setInterval(() => {
if (tableBody) {
// 1
scrollTop += 1
//
if (scrollTop >= tableBody.scrollHeight - tableBody.clientHeight) {
scrollTop = 0 //
}
tableBody.scrollTop = scrollTop
}
}, 50) //
},
stopAutoScroll() {
clearInterval(this.scrollInterval)
},
join() {
const wsuri = this.url;
this.ws = new WebSocket(wsuri);
const self = this;
this.ws.onopen = function (event) {
self.text_content = self.text_content + "已经打开连接!" + "\n";
};
this.ws.onmessage = function (event) {
self.text_content = event.data + "\n";
console.log(self.text_content);
try {
// JSON
const receivedData = JSON.parse(event.data)
if (Array.isArray(receivedData)) {
//
this.repairOrders = receivedData.map(item => ({
...item,
}))
} else {
console.warn('收到非数组格式数据:', receivedData)
}
} catch (error) {
console.error("JSON parsing failed:", error)
this.$notify.error({ title: '数据错误', message: '接收数据格式异常' })
}
};
this.ws.onclose = function (event) {
self.text_content = self.text_content + "已经关闭连接!" + "\n";
};
},
exit() {
if (this.ws) {
this.ws.close();
this.ws = null;
}
},
send() {
if (this.ws) {
this.ws.send(this.message);
} else {
alert("未连接到服务器");
}
},
},
created(){
this.join();
},
mounted() {
}
this.getDate();
this.startAutoScroll();
},
beforeDestroy() {
this.stopAutoScroll()
},
}
</script>
<style lang="less" scoped>
.bg {
background-image: url("~@/assets/board/车间监控系统 - 02.jpg");
background-image: url("~@/assets/board/车间监控系统 - 02 - 2.jpg");
background-size: 100% 100%;
background-repeat: no-repeat;
position: absolute;
@ -312,7 +572,7 @@ export default {
font-weight: 700;
letter-spacing: 0.1vw;
font-size: 2.1vw;
color: #fff;
color: #ffffff;
transform: translateX(-50%);
}
@ -489,7 +749,7 @@ export default {
.infoModel, .infoModel1 {
position: absolute;
top: 0%;
left: -295%;
left: -700%;
width: 14.1vw;
height: 14.7vh;
color: #fff;
@ -501,24 +761,38 @@ export default {
top: 0;
left: 0;
width: 100%;
height: 100%;
height: 180%;
background-image: url("~@/assets/board/弹窗1-设备信息.png");
background-repeat: no-repeat;
background-size: 100% 100%;
}
.title {
color: #fff;
position: absolute;
top: 7%;
font-size: 1vw;
top: 15%;
font-size: 0.8vw;
letter-spacing: 3px;
/* 高度自适应方案 */
min-height: 60px; /* 设置最小高度保障基础显示 */
line-height: 1.5; /* 行高增加到字号的1.5倍 */
overflow: visible; /* 解除内容截断限制 */
display: inline-flex; /* 启用弹性布局 */
align-items: flex-start; /* 顶部对齐防止偏移 */
/* 换行增强配置 */
overflow-wrap: break-word;
word-break: break-word; /* 优化为更自然的换词策略 */
max-width: 120px;
white-space: pre-wrap; /* 保留空格换行符 */
}
.equipmentOutput {
color: #fff;
position: absolute;
top: 45%;
font-size: 0.9vw;
font-size: 0.6vw;
letter-spacing: 3px;
}
@ -526,7 +800,21 @@ export default {
color: #fff;
position: absolute;
top: 70%;
font-size: 0.9vw;
font-size: 0.8vw;
letter-spacing: 3px;
}
.equipmentInfo2 {
color: #fff;
position: absolute;
top: 70%;
font-size: 0.6vw;
letter-spacing: 3px;
}
.equipmentInfo3 {
color: #fff;
position: absolute;
top: 95%;
font-size: 0.6vw;
letter-spacing: 3px;
}
}
@ -544,6 +832,12 @@ export default {
.equipmentInfo {
left: 7%;
}
.equipmentInfo2 {
left: 7%;
}
.equipmentInfo3 {
left: 7%;
}
}
.infoModel1 {
@ -690,5 +984,35 @@ export default {
}
}
}
/* 新增样式 */
.scroll-title-container {
top:10%;
width: 100%;
height: 30px;
background: rgba(0, 128, 255, 0.1);
overflow: hidden;
position: relative;
margin: 10px 0;
border: none !important;
}
.scroll-title-content {
position: absolute;
white-space: nowrap;
animation: scroll 15s linear infinite;
font-size: 18px;
color: #00f7ff;
line-height: 30px;
text-shadow: 0 0 5px rgba(0, 247, 255, 0.5);
}
@keyframes scroll {
0% {
transform: translateX(100%);
}
100% {
transform: translateX(-100%);
}
}
</style>

@ -7,8 +7,8 @@
<div class="subTitle" style="left: 48.9%;">烘房区</div>
<div class="subTitle" style="left: 70.8%;">收坯区</div>
<div class="floorNum floorNum1">1F</div>
<!-- <div class="floorNum floorNum2" @click="$router.push('/cs')">2F</div>-->
<div class="floorNum floorNum2">2F</div>
<div class="floorNum floorNum2" @click="$router.push('/cs')">2F</div>
<!-- <div class="floorNum floorNum2">2F</div>-->
<div class="floorNum floorNum3">3F</div>
<div class="floorNum floorNum4">4F</div>
<div class="floorNum floorNum5">5F</div>

@ -219,7 +219,7 @@ export default {
/** 查询备料单列表 */
getList() {
this.loading = true;
if(this.queryParams.timeArray.length>0){
if(this.queryParams.timeArray.length>0){
this.queryParams.productDateStart = moment(this.queryParams.timeArray[0]).format('YYYY-MM-DD');
this.queryParams.productDateEnd = moment(this.queryParams.timeArray[1]).format('YYYY-MM-DD');
}

@ -0,0 +1,357 @@
<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="工单号" prop="workorderCode">-->
<!-- <el-input-->
<!-- v-model="queryParams.workorderCode"-->
<!-- placeholder="请输入工单号"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="机台编码" prop="workorderName">
<el-input
v-model="queryParams.workorderName"
placeholder="请输入机台编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!-- <el-form-item label="备用1" prop="attr1">-->
<!-- <el-input-->
<!-- v-model="queryParams.attr1"-->
<!-- placeholder="请输入备用1"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="工单日期" prop="productDateArray">-->
<!-- <el-date-picker-->
<!-- v-model="queryParams.createTime"-->
<!-- format="yyyy-MM-dd"-->
<!-- type="daterange"-->
<!-- range-separator="至"-->
<!-- start-placeholder="开始日期"-->
<!-- end-placeholder="结束日期">-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<el-form-item label="生产日期" prop="createTime">
<el-date-picker
v-model="dateRange"
format="yyyy-MM-dd HH:mm:00"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<!-- <el-form-item label="备用2" prop="attr2">-->
<!-- <el-input-->
<!-- v-model="queryParams.attr2"-->
<!-- placeholder="请输入备用2"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="备用2" prop="attr3">-->
<!-- <el-input-->
<!-- v-model="queryParams.attr3"-->
<!-- placeholder="请输入备用2"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @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="['system:producted:add']"-->
<!-- >新增</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="success"-->
<!-- plain-->
<!-- icon="el-icon-edit"-->
<!-- size="mini"-->
<!-- :disabled="single"-->
<!-- @click="handleUpdate"-->
<!-- v-hasPermi="['system:producted:edit']"-->
<!-- >修改</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="danger"-->
<!-- plain-->
<!-- icon="el-icon-delete"-->
<!-- size="mini"-->
<!-- :disabled="multiple"-->
<!-- @click="handleDelete"-->
<!-- v-hasPermi="['system:producted:remove']"-->
<!-- >删除</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="warning"-->
<!-- plain-->
<!-- icon="el-icon-download"-->
<!-- size="mini"-->
<!-- @click="handleExport"-->
<!-- v-hasPermi="['system:producted:export']"-->
<!-- >导出</el-button>-->
<!-- </el-col>-->
<!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>-->
<!-- </el-row>-->
<el-table v-loading="loading" :data="productedList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="工单号" align="center" prop="workorderCode" />
<el-table-column label="机台编码" align="center" prop="workorderName" />
<el-table-column label="产品编码" align="center" prop="productCode" />
<el-table-column label="产品名称" align="center" prop="productName" />
<!-- <el-table-column label="班次" align="center" prop="shiftId" />-->
<el-table-column label="班次" align="center">
<template slot-scope="scope">
{{ scope.row.shiftId === '5' ? '白班' : (scope.row.shiftId === '2' ? '夜班' : scope.row.shiftId) }}
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" />
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-edit"-->
<!-- @click="handleUpdate(scope.row)"-->
<!-- v-hasPermi="['system:producted:edit']"-->
<!-- >修改</el-button>-->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['system:producted:remove']"-->
<!-- >删除</el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改成型机产量对话框 -->
<!-- <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>-->
<!-- <el-form ref="form" :model="form" :rules="rules" label-width="80px">-->
<!-- <el-form-item label="工单号" prop="workorderCode">-->
<!-- <el-input v-model="form.workorderCode" placeholder="请输入工单号" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="机台编码" prop="workorderName">-->
<!-- <el-input v-model="form.workorderName" placeholder="请输入机台编码" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="备用1" prop="attr1">-->
<!-- <el-input v-model="form.attr1" placeholder="请输入备用1" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="备用2" prop="attr2">-->
<!-- <el-input v-model="form.attr2" placeholder="请输入备用2" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="备用2" prop="attr3">-->
<!-- <el-input v-model="form.attr3" placeholder="请输入备用2" />-->
<!-- </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>-->
</div>
</template>
<script>
import { listProducted, getProducted, delProducted, addProducted, updateProducted } from "@/api/mes/producted";
export default {
name: "Producted",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
productedList: [],
//
title: "",
//
open: false,
dateRange: [this.getStartOfDay(), this.getEndOfDay()], //
//
queryParams: {
pageNum: 1,
pageSize: 10,
workorderCode: null,
workorderName: null,
productName: null,
shiftId: null,
productCode: null,
createTime: null,
beginTime: null, //
endTime: null //
},
//
form: {},
//
rules: {
}
};
},
created() {
this.getList();
},
methods: {
//
getStartOfDay() {
const date = new Date();
date.setHours(0, 0, 0, 0);
return date;
},
//
getEndOfDay() {
const date = new Date();
date.setHours(23, 59, 59, 999);
return date;
},
/** 查询成型机产量列表 */
getList() {
this.loading = true;
if (this.dateRange && this.dateRange.length === 2) {
//
const formatDate = (date) => {
const offset = date.getTimezoneOffset() * 60000;
const localDate = new Date(date.getTime() - offset);
return localDate.toISOString().replace('T', ' ').substring(0, 19);
};
this.queryParams.beginTime = formatDate(this.dateRange[0]);
this.queryParams.endTime = formatDate(this.dateRange[1]);
} else {
this.queryParams.beginTime = null;
this.queryParams.endTime = null;
}
listProducted(this.queryParams).then(response => {
this.productedList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
workorderCode: null,
workorderName: null,
createTime: null,
attr1: null,
attr2: null,
attr3: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.workorderCode)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
// handleAdd() {
// this.reset();
// this.open = true;
// this.title = "";
// },
// /** */
// handleUpdate(row) {
// this.reset();
// const workorderCode = row.workorderCode || this.ids
// getProducted(workorderCode).then(response => {
// this.form = response.data;
// this.open = true;
// this.title = "";
// });
// },
// /** */
// submitForm() {
// this.$refs["form"].validate(valid => {
// if (valid) {
// if (this.form.workorderCode != null) {
// updateProducted(this.form).then(response => {
// this.$modal.msgSuccess("");
// this.open = false;
// this.getList();
// });
// } else {
// addProducted(this.form).then(response => {
// this.$modal.msgSuccess("");
// this.open = false;
// this.getList();
// });
// }
// }
// });
// },
// /** */
// handleDelete(row) {
// const workorderCodes = row.workorderCode || this.ids;
// this.$modal.confirm('"' + workorderCodes + '"').then(function() {
// return delProducted(workorderCodes);
// }).then(() => {
// this.getList();
// this.$modal.msgSuccess("");
// }).catch(() => {});
// },
/** 导出按钮操作 */
handleExport() {
this.download('system/producted/export', {
...this.queryParams
}, `producted_${new Date().getTime()}.xlsx`)
}
}
};
</script>

@ -0,0 +1,767 @@
<template>
<div class="app-container">
<div id="table" v-show="showTable">
<el-form class="print-selfMutualInspection">
<el-row>
<el-col :span="5">
<img src="@/assets/logo/lanjv.png" class="lanju-logo" />
</el-col>
<el-col class="tittle-text" :span="14">
<span>中山榄菊日化实业有限公司</span>
</el-col>
<el-col :span="5"> </el-col>
</el-row>
<el-row>
<el-col class="tittle-text">
<span>班组安全生产每日点检报表</span>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div>
生产产线:
<el-select
v-model="headerParameters.lineCode"
filterable
placeholder="请选择产线"
style="width: 160px"
@change="handleSelectLineChange"
>
<el-option
v-for="item in lineCodeOption"
:key="item.equipmentCode"
:label="item.equipmentName"
:value="item.equipmentCode"
>
</el-option>
</el-select>
</div>
<br />
</el-col>
<el-col :span="8">
<div>
检查日期:
<el-date-picker
clearable
v-model="headerParameters.checkDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择检查日期"
>
</el-date-picker>
</div>
</el-col>
<el-col :span="8">
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handlePrintPre"
>打印
</el-button>
<el-button
type="primary"
plain
icon="el-icon-check"
size="mini"
@click="handleSubmit"
>提交
</el-button>
<el-button
type="primary"
plain
icon="el-icon-check"
size="mini"
@click="AddNewColumn"
>新增一列
</el-button>
</el-col>
</el-row>
</el-form>
<div>
<table class="bordered-table">
<tr>
<th rowspan="1" style="width: 50px">班组名称</th>
<th rowspan="1" style="width: 120px">黑蚊香</th>
<th style="width: 250px">产线{{ headerParameters.lineName }}</th>
<th
v-for="(item, key) in tableData[0]"
:key="item.key"
v-if="key !== '序号' && key !== '点检内容' && key !== '点检项目'"
:width="tableTittleWidth"
>
<el-row>
<label>
<input
type="checkbox"
class="check-box"
:checked="item.whetherOpenLine === true"
@change="
handleCheckboxChange(
item,
'openLine',
key,
$event.target.checked
)
"
size="4"
/>线
</label>
<label>
<input
type="checkbox"
class="check-box"
:checked="item.whetherOpenLine === false"
@change="
handleCheckboxChange(
item,
'clearLine',
key,
$event.target.checked
)
"
size="4"
/>线
</label>
</el-row>
</th>
</tr>
<tr>
<th>日期{{ headerParameters.checkDate }}</th>
<td
columnspan="1"
v-for="(item, key) in tableData[0]"
:key="item.key"
v-if="key !== '序号' && key !== '点检内容' && key !== '点检项目'"
>
<el-row>
<el-col :span="10"><span>班次</span></el-col>
<el-col :span="14"
><el-input
type="text"
v-model="item.remark"
@change="handleRemarkChange(key, $event)" /></el-col
></el-row>
</td>
</tr>
<tr>
<!-- 动态渲染列名 -->
<th
v-for="item in tableTittle0"
:key="item.key"
style="width: 50px"
>
{{ item.label }}
</th>
<!-- 动态渲染列名 -->
<th
v-for="item in tableTittle1"
:key="item.key"
style="width: 120px"
>
{{ item.label }}
</th>
<!-- 动态渲染列名 -->
<th
v-for="item in tableTittle2"
:key="item.key"
style="width: 250px"
>
{{ item.label }}
</th>
<!-- 动态渲染列名 -->
<th
v-for="item in tableTittle"
:key="item.key"
:width="tableTittleWidth"
>
{{ item.label }}
</th>
</tr>
<tr v-for="item in tableData" :key="item.id">
<!-- 动态渲染列值 -->
<td columnspan="1" v-for="(value, key) in item" :key="key">
<template
v-if="
key !== '序号' && key !== '点检内容' && key !== '点检项目'
"
>
<el-select v-model="item[key].checkResult">
<el-option label="√" value="√"></el-option>
<el-option label="×" value="×"></el-option>
</el-select>
</template>
<template v-else>
{{ value.data }}
</template>
</td>
</tr>
</table>
</div>
<br />
<div>
<el-row>填写要求</el-row>
<el-row>1.产线组长在开线品种转换时填写该表</el-row>
<el-row>
<el-col :span="20">2.在"口" </el-col
><el-col :span="4"
>班组长签字{{ headerParameters.createBy }}</el-col
>
</el-row>
<el-row>3."点检结果",是填"√",否填"×",若有异常则填写实际情况</el-row>
</div>
</div>
<div id="printPage" v-show="showPrintPage">
<br />
<el-row>
<el-col :span="5">
<img src="@/assets/logo/lanjv.png" class="lanju-logo-print" />
</el-col>
<el-col class="tittle-text-print" :span="14">
<span>中山榄菊日化实业有限公司</span>
</el-col>
<el-col :span="5"> </el-col>
</el-row>
<el-row>
<el-col :span="5"> </el-col>
<el-col class="tittle-text-print">
<span>产品转换/完产清线点检表</span>
</el-col>
<el-col :span="5"> </el-col>
</el-row>
<br />
<el-row>
<div class="formCode">表单编号:08GL05C001-014A</div>
<br />
</el-row>
<el-row>
<el-col :span="24">
<table class="bordered-table-print" border="1">
<tr>
<th rowspan="2" style="width: 50px">车间</th>
<th rowspan="2" style="width: 120px">黑蚊香</th>
<th style="width: 250px">
产线{{ headerParameters.lineName }}
</th>
<th
v-for="(item, key) in tableData[0]"
:key="item.key"
v-if="
key !== '序号' && key !== '点检内容' && key !== '点检项目'
"
:width="tableTittleWidth"
>
<el-row>
<label>
<input
type="checkbox"
class="check-box"
:checked="item.whetherOpenLine === true"
@change="handleCheckboxChange(item, 'openLine')"
size="4"
/>线
</label>
<label>
<input
type="checkbox"
class="check-box"
:checked="item.whetherOpenLine === false"
@change="handleCheckboxChange(item, 'clearLine')"
size="4"
/>线
</label>
</el-row>
</th>
</tr>
<tr>
<th>日期{{ headerParameters.checkDate }}</th>
<!-- 班次 -->
<td
columnspan="1"
v-for="(item, key) in tableData[0]"
:key="item.key"
v-if="
key !== '序号' && key !== '点检内容' && key !== '点检项目'
"
>
班次{{ item.remark }}
</td>
</tr>
<tr>
<!-- 动态渲染列名 -->
<th
v-for="item in tableTittle0"
:key="item.key"
style="width: 50px"
>
{{ item.label }}
</th>
<!-- 动态渲染列名 -->
<th
v-for="item in tableTittle1"
:key="item.key"
style="width: 120px"
>
{{ item.label }}
</th>
<!-- 动态渲染列名 -->
<th
v-for="item in tableTittle2"
:key="item.key"
style="width: 250px"
>
{{ item.label }}
</th>
<!-- 动态渲染列名 -->
<th
v-for="item in tableTittle"
:key="item.key"
:width="tableTittleWidth"
>
{{ item.label }}
</th>
</tr>
<tr v-for="item in tableData" :key="item.id">
<!-- 动态渲染列值 -->
<td columnspan="1" v-for="(value, key) in item" :key="key">
<template
v-if="
key !== '序号' && key !== '点检内容' && key !== '点检项目'
"
>
{{ value.checkResult }}
</template>
<template v-else>
{{ value.data }}
</template>
</td>
</tr>
</table>
</el-col>
</el-row>
<br />
<br />
<el-row>填写要求</el-row>
<el-row>1.产线组长在开线品种转换时填写该表</el-row>
<el-row>
<el-col :span="20">2.在"口" </el-col
><el-col :span="4">班组长签字{{ headerParameters.createBy }}</el-col>
</el-row>
<el-row>3."点检结果",是填"√",否填"×",若有异常则填写实际情况</el-row>
</div>
</div>
</template>
<script>
import {
listPointInspection,
getSelfMutualInspectionData,
getLineCodeList,
updatePointInspectionTable,
} from "@/api/mes/selfMutualInspection";
export default {
name: "Item",
dicts: ["device_item_type", "device_loop_type"],
data() {
return {
printData: {
printable: "printPage",
ignore: ["no-print"],
},
currentSelectedRow: null,
showPrintPage: false,
showTable: false,
lineCodeOption: [],
propertyNum: null,
tableTittle: [],
tableTittle0: [],
tableTittle1: [],
tableTittle2: [],
tableTittleWidth: null,
tableData: [],
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
title: "",
//
open: false,
//
queryParams: {},
//
headerParameters: {
reportName: "CheckReport", //
productionWorkshop: null, //
lineCode: null, //线
lineName: null, //线
createBy: null, //
productName: null, //
checkDate: null, //
whetherOpenLine: null, //
remark: null, //
},
//
form: {},
//
rules: {},
};
},
created() {
// this.getDate();
this.getLineCode();
this.getList();
},
methods: {
handleCheckboxChange(item, checkboxType, transKey, newBz) {
if (checkboxType === "openLine") {
this.$set(item, "whetherOpenLine", true);
} else {
this.$set(item, "whetherOpenLine", false);
}
this.$nextTick(() => {
console.log("item", item);
this.tableData.forEach((dataItem) => {
Object.keys(dataItem).forEach((key) => {
if (key === transKey) {
this.$set(dataItem[transKey], "whetherOpenLine", newBz);
}
});
});
});
},
//线线
handleSelectLineChange(value) {
const selectedOption = this.lineCodeOption.find(
(option) => option.equipmentCode === value
);
if (selectedOption) {
this.headerParameters.lineName = selectedOption.equipmentName;
}
},
dynamicWidthStyle() {
return { width: `${1000 / this.propertyNum}px` };
},
//
handlePrintPre() {
this.$confirm("是否确定提交当前页面信息并进行打印操作?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
//
this.showTable = false;
this.showPrintPage = true;
this.$nextTick(() => {
this.handleSubmit(); //
this.handlePrint(); //
});
})
.catch(() => {
//
console.log("用户取消了打印预处理操作");
});
},
handleSubmit() {
this.headerParameters.tableData = this.tableData;
updatePointInspectionTable(this.headerParameters).then((response) => {
this.$modal.msgSuccess("提交成功");
if (response.code == 200) {
this.headerParameters.tableData = null;
this.getList();
}
});
},
//
handlePrint() {
printJS({
printable: this.printData.printable, // 'printPage', // id
type: this.printData.type || "html",
maxWidth: 1500, //
font_size: "", //
header: this.printData.header, // '',
targetStyles: ["*"],
style: "@page {margin:0 10mm};", // -
ignoreElements: this.printData.ignore || [], // ['no-print']
properties: this.printData.properties || null,
});
this.showTable = true; //
this.showPrintPage = false; //
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
if (this.headerParameters.lineCode == null) {
this.$modal.msg("您没有选择生产产线,请选择!");
} else if (this.headerParameters.checkDate == null) {
this.$modal.msg("您没有选择检查时间,请选择!");
} else {
this.getList();
}
},
getLineCode() {
getLineCodeList().then((response) => {
this.lineCodeOption = response;
});
},
/** 重置按钮操作 */
resetQuery() {
(this.headerParameters.productionWorkshop = null), //
(this.headerParameters.lineCode = null), //线
(this.headerParameters.lineName = null), //线
(this.headerParameters.createBy = null), //
(this.headerParameters.productName = null), //
(this.headerParameters.checkDate = null), //
(this.headerParameters.whetherOpenLine = null), //
(this.headerParameters.remark = null), //
// this.getDate();
this.getList();
},
handleRemarkChange(transKey, newRemark) {
// checkTime
this.tableData.forEach((item) => {
Object.keys(item).forEach((key) => {
if (key == transKey) {
const originalRemark = item[key].remark;
item[key].remark = newRemark;
console.log(
key + "原来的班组:",
originalRemark + "现在的班组:",
item[key].remark
);
}
});
});
},
AddNewColumn() {
this.propertyNum = Object.keys(this.tableData[0]).length - 3 + 1; //
this.tableTittle.push({
label: "点检结果",
key: this.propertyNum + 3,
});
this.tableTittleWidth = 880 / this.propertyNum + "px";
//
let tableLines = [];
for (let key in table[0]) {
if (key !== "序号" && key !== "点检项目" && key !== "点检内容") {
Object.keys(item).forEach((key) => {
if (key === "tableLine") {
tableLines.push(item[key]);
}
});
}
}
let maxEndTimeInMinutes = Math.max(...tableLines);
console.log("maxEndTimeInMinutes", maxEndTimeInMinutes);
//
this.tableData.forEach((item) => {
var dynamicPropertyName = "第" + this.propertyNum + "列";
let newProperty = {};
newProperty.productCode = this.headerParameters.productCode;
newProperty.productName = this.headerParameters.productName;
newProperty.tableLine = this.propertyNum;
newProperty.remark = "";
this.$set(item, dynamicPropertyName, newProperty);
});
},
/** 查询检查项维护列表 */
getList() {
this.showTable = true; //
this.showPrintPage = false; //
this.tableData = [];
this.tableTittle = [];
this.tableTittle0 = [];
this.tableTittle1 = [];
this.tableTittle2 = [];
this.propertyNum = null;
this.loading = true;
getSelfMutualInspectionData(this.headerParameters).then((response) => {
this.headerParameters.createBy = response.createBy; //
this.headerParameters.productName = response.productName; //
this.headerParameters.remark = response.remark; //
this.headerParameters.whetherOpenLine = response.whetherOpenLine; //
this.headerParameters.id = response.id; //id
listPointInspection(this.headerParameters).then((response) => {
this.tableData = response;
this.propertyNum = Object.keys(this.tableData[0]).length - 3; //
this.tableTittle0.push({
label: "序号",
key: 0,
});
this.tableTittle1.push({
label: "点检项目",
key: 1,
});
this.tableTittle2.push({
label: "点检内容",
key: 2,
});
for (let i = 0; i < this.propertyNum; i++) {
this.tableTittle.push({
label: "点检结果",
key: i + 3,
});
}
this.tableTittleWidth = 880 / this.propertyNum + "px";
});
});
},
},
};
</script>
<style scoped>
.tittle-text {
text-align: center;
font-size: 25px;
font-weight: 800;
color: black;
}
.lanju-logo {
margin-top: 15px;
margin-left: 15px;
height: 50px;
}
.bordered-table {
border-collapse: collapse; /* 确保边框合并为单一边框 */
width: 1300px; /* 表格宽度 */
}
.bordered-table th,
.bordered-table td {
border: 1px solid #ddd; /* 边框样式 */
text-align: center; /* 文本对齐 */
height: 35px; /* 表格高度 */
}
.bordered-table tr {
word-break: break-all;
word-wrap: break-word;
border-collapse: collapse;
height: 35px; /* 表格高度 */
}
.bordered-table-bottom {
border-collapse: collapse; /* 确保边框合并为单一边框 */
width: 1300px; /* 表格宽度 */
}
.bordered-table-bottom td {
border: 1px solid #ddd; /* 边框样式 */
text-align: left; /* 文本对齐 */
width: 1300px; /* 表格宽度 */
}
/* 下面是和打印有关系的 */
.tittle-text-print {
text-align: center;
font-size: 40px;
font-weight: 800;
color: black;
}
.lanju-logo-print {
margin-top: 15px;
margin-left: 15px;
height: 75px;
}
.text-print {
text-align: left;
font-size: 20px;
color: black;
}
.bordered-table-print {
border-collapse: collapse; /* 确保边框合并为单一边框 */
width: 1300px; /* 表格宽度 */
}
.bordered-table-print td {
text-align: center; /* 文本对齐 */
height: 35px; /* 表格高度 */
}
.bordered-table-bottom-print {
border-collapse: collapse; /* 确保边框合并为单一边框 */
width: 1300px; /* 表格宽度 */
}
.bordered-table-bottom-print td {
text-align: left; /* 文本对齐 */
height: 35px; /* 表格宽度 */
width: 1300px; /* 表格高度 */
}
.bottom-remark {
margin-top: 15px;
}
.bordered-table-print tr {
word-break: break-all;
word-wrap: break-word;
border-collapse: collapse;
}
.formCode {
margin-left: 1000px;
font-size: 20px;
}
.check-box {
font-size: 3px;
}
</style>

@ -107,7 +107,6 @@
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type="primary"
@ -182,6 +181,23 @@
>
</div>
</el-col>
<el-col :span="1.5">
<div>
<el-button
type="primary"
plain
size="mini"
:disabled="single"
@click="handleSyncSAP"
v-hasPermi="['wms:equipment:sap']"
>
<svg-icon icon-class="sap" />
SAP信息同步
</el-button>
</div>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
@ -1203,6 +1219,7 @@
import {
listEquipment,
getEquipment,
SyncSAP,
delEquipment,
addEquipment,
updateEquipment,
@ -1995,6 +2012,19 @@ export default {
row.status = row.status === "0" ? "1" : "0";
});
},
handleSyncSAP(row){
this.loading = true;
const equipmentId = row.equipmentId || this.ids;
SyncSAP(equipmentId).then((response) => {
this.loading = false;
if(response.code==200){
this.$modal.msgSuccess(response.msg);
}else {
this.$modal.msgError(response.msg);
}
})
}
},
};
</script>
@ -2020,4 +2050,8 @@ export default {
height: 300px;
overflow-y: auto;
}
.el-button--primary:hover .svg-icon {
fill: #409EFF !important; /* 保持与按钮主色一致 */
}
</style>

@ -36,10 +36,13 @@ module.exports = {
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: {
// target: `http://192.168.202.20:8080`,
target: `http://localhost:8080`,
target: `http://localhost:8080`,
// target: `http://172.18.80.215:8080`,
// target: `http://192.168.3.93:8080`,
// target: `http://192.168.3.158:8080`,
//target: `http://192.168.202.34:30000`,
// target: `http://10.11.176.97:8080`,
// target: `http://192.168.202.34:30000/prod-api`,
// target: `http://192.168.202.20:9000/prod-api`,
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: ''

Loading…
Cancel
Save