feat(system):下发图纸模块
This commit is contained in:
parent
b5585458ec
commit
9172b9c881
8
.idea/.gitignore
vendored
Normal file
8
.idea/.gitignore
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
# 默认忽略的文件
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# 基于编辑器的 HTTP 客户端请求
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
12
.idea/git_toolbox_blame.xml
Normal file
12
.idea/git_toolbox_blame.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="GitToolBoxBlameSettings">
|
||||
<option name="showEditorInlineBlameOverride">
|
||||
<BoolValueOverride>
|
||||
<option name="enabled" value="true" />
|
||||
<option name="value" value="true" />
|
||||
</BoolValueOverride>
|
||||
</option>
|
||||
<option name="version" value="2" />
|
||||
</component>
|
||||
</project>
|
||||
6
.idea/inspectionProfiles/Project_Default.xml
Normal file
6
.idea/inspectionProfiles/Project_Default.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
</profile>
|
||||
</component>
|
||||
10
package.json
10
package.json
@ -37,13 +37,14 @@
|
||||
"dependencies": {
|
||||
"@element-plus/icons-vue": "^2.3.1",
|
||||
"@riophae/vue-treeselect": "0.4.0",
|
||||
"@vue/composition-api": "^1.7.2",
|
||||
"axios": "^0.24.0",
|
||||
"clipboard": "2.0.8",
|
||||
"core-js": "3.25.3",
|
||||
"dayjs": "^1.11.11",
|
||||
"dhtmlx-gantt": "^8.0.9",
|
||||
"echarts": "5.4.0",
|
||||
"element-ui": "2.15.12",
|
||||
"dhtmlx-gantt": "^8.0.11",
|
||||
"echarts-gl": "^2.0.9",
|
||||
"element-ui": "^2.15.12",
|
||||
"file-saver": "2.0.5",
|
||||
"font-awesome": "^4.7.0",
|
||||
"fuse.js": "6.4.3",
|
||||
@ -62,6 +63,8 @@
|
||||
"vue": "2.6.12",
|
||||
"vue-count-to": "1.0.13",
|
||||
"vue-cropper": "0.5.5",
|
||||
"vue-echart": "^1.0.5",
|
||||
"vue-echarts": "^5.0.0-beta.0",
|
||||
"vue-gantt-schedule-timeline-calendar": "^3.0.44",
|
||||
"vue-meta": "2.4.0",
|
||||
"vue-router": "3.4.9",
|
||||
@ -77,6 +80,7 @@
|
||||
"chalk": "4.1.0",
|
||||
"compression-webpack-plugin": "5.0.2",
|
||||
"connect": "3.6.6",
|
||||
"echarts": "^5.6.0",
|
||||
"eslint": "^6.0.1",
|
||||
"eslint-plugin-vue": "7.2.0",
|
||||
"less": "^4.2.0",
|
||||
|
||||
44
src/api/system/configIni.js
Normal file
44
src/api/system/configIni.js
Normal file
@ -0,0 +1,44 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询图纸配置列表
|
||||
export function listConfigIni(query) {
|
||||
return request({
|
||||
url: '/system/configIni/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 查询图纸配置详细
|
||||
export function getConfigIni(id) {
|
||||
return request({
|
||||
url: '/system/configIni/' + id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增图纸配置
|
||||
export function addConfigIni(data) {
|
||||
return request({
|
||||
url: '/system/configIni',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改图纸配置
|
||||
export function updateConfigIni(data) {
|
||||
return request({
|
||||
url: '/system/configIni',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除图纸配置
|
||||
export function delConfigIni(id) {
|
||||
return request({
|
||||
url: '/system/configIni/' + id,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
@ -18,9 +18,9 @@ export function getOrderPro(id) {
|
||||
}
|
||||
export function processList(params) {
|
||||
return request({
|
||||
url: '/system/orderPro/processlist', // 这里应该是 processlist,而不是 processList
|
||||
url: '/system/orderPro/processlist',
|
||||
method: 'get',
|
||||
params: params // 使用 params 来传递查询参数
|
||||
params: params
|
||||
});
|
||||
}
|
||||
|
||||
@ -49,3 +49,58 @@ export function delOrderPro(id) {
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
|
||||
// 获取图纸类型数据
|
||||
export function getDrawingTypeDict() {
|
||||
return request({
|
||||
url: '/system/configIni/list',
|
||||
method: 'get',
|
||||
params: {
|
||||
pageNum: 1,
|
||||
pageSize: 1000 // 获取足够多的数据
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export function addProduct(data) {
|
||||
return request({
|
||||
url: '/system/orderPro/addProduct',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
// 查询此项目用到的产品列表
|
||||
export function listSave(query) {
|
||||
return request({
|
||||
url: '/system/save/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
// 执行出图
|
||||
export function executDrawing(data) {
|
||||
return request({
|
||||
url: '/system/orderPro/executDrawing',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除销齿链型号
|
||||
export function delSave(ids) {
|
||||
return request({
|
||||
url: '/system/save/' + ids,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
|
||||
// 下载PDF
|
||||
export function uploadPDF(id) {
|
||||
return request({
|
||||
url: '/system/orderPro/uploadPDF',
|
||||
method: 'get',
|
||||
params: { id },
|
||||
responseType: 'blob', // 设置响应类型为blob,用于文件下载
|
||||
headers: { 'Content-Type': 'application/json; application/octet-stream' }
|
||||
})
|
||||
}
|
||||
44
src/api/system/pcRigidChain.js
Normal file
44
src/api/system/pcRigidChain.js
Normal file
@ -0,0 +1,44 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询销齿链型号管理列表
|
||||
export function listRigidChain(query) {
|
||||
return request({
|
||||
url: '/system/pcRigidChain/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 查询销齿链型号管理详细
|
||||
export function getRigidChain(id) {
|
||||
return request({
|
||||
url: '/system/pcRigidChain/' + id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增销齿链型号管理
|
||||
export function addRigidChain(data) {
|
||||
return request({
|
||||
url: '/system/pcRigidChain',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改销齿链型号管理
|
||||
export function updateRigidChain(data) {
|
||||
return request({
|
||||
url: '/system/pcRigidChain',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除销齿链型号管理
|
||||
export function delRigidChain(id) {
|
||||
return request({
|
||||
url: '/system/rigidChain/' + id,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
@ -19,7 +19,7 @@ export function getRigidChain(id) {
|
||||
|
||||
// 新增刚性链报价
|
||||
export function addRigidChain(data) {
|
||||
return request({
|
||||
return request({
|
||||
url: '/system/rigidChain',
|
||||
method: 'post',
|
||||
data: data
|
||||
@ -42,3 +42,15 @@ export function delRigidChain(id) {
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -104,8 +104,40 @@ export function updateProcessPlan(rooteProdet) {
|
||||
method: 'post',
|
||||
params: { rooteProdet },
|
||||
});
|
||||
}
|
||||
|
||||
}export function updateProcesTime(rooteProdet) {
|
||||
return request({
|
||||
url: '/system/route/updateProcesTime',
|
||||
method: 'post',
|
||||
params: { rooteProdet },
|
||||
});
|
||||
}
|
||||
export function getKindeeExcel(rooteProdet) {
|
||||
return request({
|
||||
url: '/system/route/getKindeeExcel',
|
||||
method: 'get',
|
||||
params: { rooteProdet },
|
||||
})
|
||||
.then(response => {
|
||||
return response.data; // 返回数据
|
||||
})
|
||||
.catch(error => {
|
||||
throw new Error('获取标准工艺失败,请重试!');
|
||||
});
|
||||
}
|
||||
export function getAllRouteAndUse(rooteProdet) {
|
||||
return request({
|
||||
url: '/system/route/getAllRouteAndUse',
|
||||
method: 'post',
|
||||
params: { rooteProdet },
|
||||
})
|
||||
.then(response => {
|
||||
return response.data; // 返回数据
|
||||
})
|
||||
.catch(error => {
|
||||
throw new Error('获取全部工艺失败,请重试!');
|
||||
});
|
||||
}
|
||||
export function generatePDFs(rooteProdet) {
|
||||
return request({
|
||||
url: '/system/route/generatePDFs',
|
||||
|
||||
17
src/main.js
17
src/main.js
@ -1,5 +1,5 @@
|
||||
import Vue from 'vue'
|
||||
|
||||
import VueComposition from '@vue/composition-api'
|
||||
import Cookies from 'js-cookie'
|
||||
|
||||
import Element from 'element-ui'
|
||||
@ -34,12 +34,25 @@ import ImagePreview from "@/components/ImagePreview"
|
||||
// 字典标签组件
|
||||
import DictTag from '@/components/DictTag'
|
||||
// 头部标签组件
|
||||
|
||||
import VueMeta from 'vue-meta'
|
||||
// 字典数据组件
|
||||
import DictData from '@/components/DictData'
|
||||
// 表格拖拽
|
||||
import VDrag from "./assets/js/drag";
|
||||
|
||||
import ECharts from 'vue-echarts'
|
||||
// 手动引入 ECharts 各模块来减小打包体积
|
||||
import 'echarts/lib/chart/bar'
|
||||
import 'echarts/lib/component/tooltip'
|
||||
import 'echarts/lib/chart/line'
|
||||
import 'echarts/lib/component/polar'
|
||||
|
||||
// 如果需要配合 ECharts 扩展使用,只需要直接引入扩展包即可
|
||||
// 以 ECharts-GL 为例:
|
||||
// 需要安装依赖:npm install --save echarts-gl,并添加如下引用
|
||||
import 'echarts-gl'
|
||||
|
||||
// 全局方法挂载
|
||||
Vue.prototype.$axios = axios
|
||||
Vue.prototype.getDicts = getDicts
|
||||
@ -61,7 +74,9 @@ Vue.component('Editor', Editor)
|
||||
Vue.component('FileUpload', FileUpload)
|
||||
Vue.component('ImageUpload', ImageUpload)
|
||||
Vue.component('ImagePreview', ImagePreview)
|
||||
Vue.component('v-chart', ECharts)
|
||||
|
||||
Vue.use(VueComposition)
|
||||
Vue.use(directive)
|
||||
Vue.use(plugins)
|
||||
Vue.use(VueMeta)
|
||||
|
||||
@ -70,6 +70,11 @@ export const constantRoutes = [
|
||||
component: () => import('@/views/login'),
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
path: '/login',
|
||||
component: () => import('@/views/'),
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
path: '/register',
|
||||
component: () => import('@/views/register'),
|
||||
@ -114,7 +119,7 @@ export const constantRoutes = [
|
||||
{
|
||||
path: '/index',
|
||||
component: () => import('@/views/index'),
|
||||
hidden: true
|
||||
hidden: true
|
||||
}
|
||||
// {
|
||||
// path: '/',
|
||||
|
||||
@ -1,143 +1,257 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form
|
||||
v-for="(n,i) in list"
|
||||
:inline="true"
|
||||
:model="n"
|
||||
ref="ruleForm"
|
||||
size="mini"
|
||||
:rules="rules"
|
||||
>
|
||||
<el-form-item prop="key1">
|
||||
<el-input
|
||||
placeholder="请输入材料BOM物料编码"
|
||||
v-model="n.key1"
|
||||
size="mini"
|
||||
clearable />
|
||||
</el-form-item>
|
||||
<el-form-item prop="key2">
|
||||
<el-input
|
||||
placeholder="请输入材料BOM物料名称"
|
||||
v-model="n.key2"
|
||||
size="mini"
|
||||
clearable />
|
||||
</el-form-item>
|
||||
<el-form-item prop="key3">
|
||||
<el-input
|
||||
placeholder="请输入用量"
|
||||
style="width:120px"
|
||||
v-model="n.key3"
|
||||
size="mini"
|
||||
clearable />
|
||||
</el-form-item>
|
||||
<el-form-item prop="key4">
|
||||
<el-input
|
||||
placeholder="请输入单重"
|
||||
style="width:120px"
|
||||
v-model="n.key4"
|
||||
size="mini"
|
||||
clearable />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="i == 0">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
size="mini"
|
||||
@click="save"
|
||||
>保存</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
size="mini"
|
||||
@click="addlist"
|
||||
>添加</el-button>
|
||||
</el-form-item>
|
||||
<div class="dashboard-container">
|
||||
<!-- 顶部统计卡片 -->
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="6">
|
||||
<el-card class="stat-card">
|
||||
<div class="card-content">
|
||||
<div class="card-icon" style="background:#409EFF">
|
||||
<i class="el-icon-s-data"></i>
|
||||
</div>
|
||||
<div class="card-info">
|
||||
<span class="label">今日产量</span>
|
||||
<span class="value">1,234 件</span>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-card class="stat-card">
|
||||
<div class="card-content">
|
||||
<div class="card-icon" style="background:#67C23A">
|
||||
<i class="el-icon-s-check"></i>
|
||||
</div>
|
||||
<div class="card-info">
|
||||
<span class="label">良品率</span>
|
||||
<span class="value">98.5%</span>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-card class="stat-card">
|
||||
<div class="card-content">
|
||||
<div class="card-icon" style="background:#E6A23C">
|
||||
<i class="el-icon-s-tools"></i>
|
||||
</div>
|
||||
<div class="card-info">
|
||||
<span class="label">设备利用率</span>
|
||||
<span class="value">85%</span>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-card class="stat-card">
|
||||
<div class="card-content">
|
||||
<div class="card-icon" style="background:#F56C6C">
|
||||
<i class="el-icon-s-flag"></i>
|
||||
</div>
|
||||
<div class="card-info">
|
||||
<span class="label">异常数量</span>
|
||||
<span class="value">3 件</span>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item v-else>
|
||||
<el-button
|
||||
type="danger"
|
||||
plain
|
||||
size="mini"
|
||||
@click="dellist(i)"
|
||||
>删除</el-button>
|
||||
</el-form-item>
|
||||
<!-- 主要图表区域 -->
|
||||
<el-row :gutter="20" class="chart-row">
|
||||
<el-col :span="16">
|
||||
<el-card>
|
||||
<div slot="header" class="chart-title">生产趋势分析</div>
|
||||
<v-chart :options="lineChart" class="chart" />
|
||||
</el-card>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-card>
|
||||
<div slot="header" class="chart-title">生产进度</div>
|
||||
<el-progress
|
||||
type="circle"
|
||||
:percentage="75"
|
||||
:stroke-width="10"
|
||||
status="success"
|
||||
class="progress-circle"/>
|
||||
<div class="progress-text">当前工单进度</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
</el-form>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<!-- 底部设备状态 -->
|
||||
<el-row :gutter="20" class="status-row">
|
||||
<el-col :span="24">
|
||||
<el-card>
|
||||
<div slot="header" class="chart-title">设备运行状态</div>
|
||||
<div class="equipment-status">
|
||||
<div
|
||||
v-for="(item, index) in equipmentList"
|
||||
:key="index"
|
||||
class="status-item">
|
||||
<i class="el-icon-s-platform" :style="{color: item.statusColor}"></i>
|
||||
<span>{{ item.name }}</span>
|
||||
<el-tag :type="item.statusType">{{ item.statusText }}</el-tag>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ECharts from 'vue-echarts'
|
||||
import 'echarts/lib/chart/line'
|
||||
import 'echarts/lib/component/polar'
|
||||
|
||||
export default {
|
||||
props:{
|
||||
showdel:{
|
||||
type:Boolean,
|
||||
default:true
|
||||
},
|
||||
obj:{
|
||||
type:Object,
|
||||
default(){
|
||||
return {}
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
list:[{
|
||||
key1:'',
|
||||
key2:'',
|
||||
key3:'',
|
||||
key4:''
|
||||
}],
|
||||
rules: {
|
||||
key1: [
|
||||
{ required: true, message: "请输入材料BOM物料编码", trigger: "blur" }
|
||||
],
|
||||
key2: [
|
||||
{ required: true, message: "请输入材料BOM物料名称", trigger: "blur" }
|
||||
],
|
||||
key3: [
|
||||
{ required: true, message: "请输入用量", trigger: "blur" }
|
||||
],
|
||||
key4: [
|
||||
{ required: true, message: "请输入单重", trigger: "blur" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
methods:{
|
||||
addlist() {
|
||||
this.list.push({
|
||||
key1:'',
|
||||
key2:'',
|
||||
key3:'',
|
||||
key4:''
|
||||
})
|
||||
},
|
||||
dellist(i) {
|
||||
this.list.splice(i,1)
|
||||
},
|
||||
save() {
|
||||
const _this = this
|
||||
let isyz = true
|
||||
this.list.forEach((n,i) => {
|
||||
this.$refs['ruleForm'][i].validate((valid) => {
|
||||
if (!valid) {
|
||||
isyz = false
|
||||
}
|
||||
})
|
||||
})
|
||||
if(isyz){
|
||||
this.$message({
|
||||
message: '保存成功',
|
||||
type: 'success'
|
||||
})
|
||||
}
|
||||
}
|
||||
export default {
|
||||
components: {
|
||||
'v-chart': ECharts
|
||||
},
|
||||
data() {
|
||||
let data = []
|
||||
|
||||
for (let i = 0; i <= 360; i++) {
|
||||
let t = i / 180 * Math.PI
|
||||
let r = Math.sin(2 * t) * Math.cos(2 * t)
|
||||
data.push([r, i])
|
||||
}
|
||||
|
||||
return {
|
||||
polar: {
|
||||
title: {
|
||||
text: '极坐标双数值轴'
|
||||
},
|
||||
legend: {
|
||||
data: ['line']
|
||||
},
|
||||
polar: {
|
||||
center: ['50%', '54%']
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'cross'
|
||||
}
|
||||
},
|
||||
angleAxis: {
|
||||
type: 'value',
|
||||
startAngle: 0
|
||||
},
|
||||
radiusAxis: {
|
||||
min: 0
|
||||
},
|
||||
series: [
|
||||
{
|
||||
coordinateSystem: 'polar',
|
||||
name: 'line',
|
||||
type: 'line',
|
||||
showSymbol: false,
|
||||
data: data
|
||||
}
|
||||
],
|
||||
animationDuration: 2000
|
||||
},
|
||||
equipmentList: [
|
||||
{ name: 'CNC-001', statusText: '运行中', statusType: 'success', statusColor: '#67C23A' },
|
||||
{ name: '注塑机-002', statusText: '待机', statusType: 'warning', statusColor: '#E6A23C' },
|
||||
{ name: '组装线-003', statusText: '故障', statusType: 'danger', statusColor: '#F56C6C' },
|
||||
{ name: '包装机-004', statusText: '维护', statusType: 'info', statusColor: '#909399' }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.dashboard-container {
|
||||
padding: 20px;
|
||||
|
||||
.stat-card {
|
||||
margin-bottom: 20px;
|
||||
|
||||
.card-content {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.card-icon {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
border-radius: 8px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
i {
|
||||
font-size: 24px;
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
|
||||
.card-info {
|
||||
margin-left: 15px;
|
||||
|
||||
.label {
|
||||
display: block;
|
||||
color: #999;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.value {
|
||||
display: block;
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
margin-top: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.chart-row {
|
||||
margin-top: 20px;
|
||||
|
||||
.chart {
|
||||
height: 400px;
|
||||
}
|
||||
|
||||
.progress-circle {
|
||||
display: block;
|
||||
margin: 20px auto;
|
||||
}
|
||||
|
||||
.progress-text {
|
||||
text-align: center;
|
||||
color: #666;
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
.status-row {
|
||||
margin-top: 20px;
|
||||
|
||||
.equipment-status {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
||||
gap: 20px;
|
||||
|
||||
.status-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 10px;
|
||||
background: #f8f8f8;
|
||||
border-radius: 4px;
|
||||
|
||||
i {
|
||||
font-size: 24px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
span {
|
||||
flex: 1;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -1,664 +1,251 @@
|
||||
<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="routeDescription">
|
||||
<el-input
|
||||
v-model="queryParams.routeDescription"
|
||||
placeholder="请输入令号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="工序控制" prop="processControl">
|
||||
<el-input
|
||||
v-model="queryParams.processControl"
|
||||
placeholder="请输入工序控制"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="活动时长" prop="activityDuration">
|
||||
<el-input
|
||||
v-model="queryParams.activityDuration"
|
||||
placeholder="请输入活动时长"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="活动单位" prop="activityUnit">
|
||||
<el-input
|
||||
v-model="queryParams.activityUnit"
|
||||
placeholder="请输入活动单位"
|
||||
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:route:add']"
|
||||
>新增</el-button>
|
||||
<div class="dashboard-container">
|
||||
<!-- 顶部统计卡片 -->
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="6">
|
||||
<el-card class="stat-card">
|
||||
<div class="card-content">
|
||||
<div class="card-icon" style="background:#409EFF">
|
||||
<i class="el-icon-s-data"></i>
|
||||
</div>
|
||||
<div class="card-info">
|
||||
<span class="label">今日产量</span>
|
||||
<span class="value">1,234 件</span>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</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:route:edit']"
|
||||
>修改</el-button>
|
||||
<el-col :span="6">
|
||||
<el-card class="stat-card">
|
||||
<div class="card-content">
|
||||
<div class="card-icon" style="background:#67C23A">
|
||||
<i class="el-icon-s-check"></i>
|
||||
</div>
|
||||
<div class="card-info">
|
||||
<span class="label">良品率</span>
|
||||
<span class="value">98.5%</span>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</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:route:remove']"
|
||||
>删除</el-button>
|
||||
<el-col :span="6">
|
||||
<el-card class="stat-card">
|
||||
<div class="card-content">
|
||||
<div class="card-icon" style="background:#E6A23C">
|
||||
<i class="el-icon-s-tools"></i>
|
||||
</div>
|
||||
<div class="card-info">
|
||||
<span class="label">设备利用率</span>
|
||||
<span class="value">85%</span>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="warning"
|
||||
plain
|
||||
icon="el-icon-download"
|
||||
size="mini"
|
||||
@click="handleExport"
|
||||
v-hasPermi="['system:route:export']"
|
||||
>导出</el-button>
|
||||
<el-col :span="6">
|
||||
<el-card class="stat-card">
|
||||
<div class="card-content">
|
||||
<div class="card-icon" style="background:#F56C6C">
|
||||
<i class="el-icon-s-flag"></i>
|
||||
</div>
|
||||
<div class="card-info">
|
||||
<span class="label">异常数量</span>
|
||||
<span class="value">3 件</span>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="info"
|
||||
plain
|
||||
icon="el-icon-upload2"
|
||||
size="mini"
|
||||
@click="handleImport"
|
||||
v-hasPermi="['system:details:import']"
|
||||
>导入工艺
|
||||
</el-button>
|
||||
</el-col>
|
||||
|
||||
|
||||
<!-- <el-col :span="1.5">
|
||||
<el-button
|
||||
type="info"
|
||||
plain
|
||||
icon="el-icon-sort"
|
||||
size="mini"
|
||||
@click="shouhide"
|
||||
v-hasPermi="['system:details:import']"
|
||||
>展开/折叠
|
||||
</el-button>
|
||||
</el-col> -->
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table
|
||||
v-if="showtable"
|
||||
v-loading="loading"
|
||||
:data="routeList"
|
||||
stripe
|
||||
:cell-style="columnStyle"
|
||||
border
|
||||
max-height="680px"
|
||||
@cell-click="cellhand"
|
||||
:default-expand-all="true"
|
||||
@selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<!-- <el-table-column label="主键ID" align="center" prop="id" v-if="true"/>-->
|
||||
<el-table-column label="" align="center" type="expand">
|
||||
<template slot-scope="props">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<!-- 主要图表区域 -->
|
||||
<el-row :gutter="20" class="chart-row">
|
||||
<el-col :span="16">
|
||||
<el-card>
|
||||
<div slot="header" class="chart-title">生产趋势分析</div>
|
||||
<v-chart :options="polar" />
|
||||
</el-card>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-card>
|
||||
<div slot="header" class="chart-title">生产进度</div>
|
||||
<el-progress
|
||||
type="circle"
|
||||
:percentage="75"
|
||||
:stroke-width="10"
|
||||
status="success"
|
||||
class="progress-circle"/>
|
||||
<div class="progress-text">当前工单进度</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<fromed />
|
||||
</el-col>
|
||||
<!-- <el-col :span="12">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
size="mini"
|
||||
@click="save"
|
||||
>保存</el-button>
|
||||
</el-col>
|
||||
<el-col :span="2">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
size="mini"
|
||||
@click="addgx"
|
||||
>添加</el-button>
|
||||
</el-col>
|
||||
</el-col> -->
|
||||
</el-row>
|
||||
|
||||
<!-- {{props.row.materialCode}} -->
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="项目令号" align="center">
|
||||
<template slot-scope="scope">
|
||||
<router-link :to="'/route1/' + scope.row.routeDescription" type="primary" :underline="false">{{ scope.row.routeDescription }}</router-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="物料编码" width="100" align="center" prop="materialCode" />
|
||||
<el-table-column label="名称" width="100" align="center" prop="materialName" />
|
||||
<el-table-column label="材质" width="80" align="center" prop="material" />
|
||||
<el-table-column label="单重"width="60" align="center" prop="discWeight" />
|
||||
|
||||
<el-table-column label="材料BOM物料编码" width="220"align="center" prop="rawMaterialCode" />
|
||||
<el-table-column label="材料BOM物料名称"width="220" align="center" prop="rawMaterialName" />
|
||||
<el-table-column label="用量"width="60"align="center" prop="discUsage" />
|
||||
<el-table-column label="单位"width="60" align="center" prop="bomUnit" />
|
||||
<el-table-column label="工序号" width="60"align="center" prop="processNo" />
|
||||
<el-table-column label="工作中心" width="150"align="center" prop="workCenter" />
|
||||
<el-table-column label="工序名称"width="150" align="center" prop="processName" />
|
||||
|
||||
<el-table-column label="工序说明" width="300"align="center" prop="processDescription" />
|
||||
<el-table-column label="工序控制"width="220" align="center" prop="processControl" />
|
||||
<el-table-column label="活动时长" align="center" prop="activityDuration" />
|
||||
<el-table-column label="活动单位" align="center" prop="activityUnit" />
|
||||
|
||||
<el-table-column label="材料BOM单位" align="center" prop="bomUnit" />
|
||||
<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:route:edit']"
|
||||
>修改</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['system:route: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="routeDescription">
|
||||
<el-input v-model="form.routeDescription" placeholder="请输入工艺路线描述" />
|
||||
</el-form-item>
|
||||
<el-form-item label="物料编码" prop="materialCode">
|
||||
<el-input v-model="form.materialCode" placeholder="请输入物料编码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="物料名称" prop="materialName">
|
||||
<el-input v-model="form.materialName" placeholder="请输入物料名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="单位" prop="bomUnit">
|
||||
<el-input v-model="form.bomUnit" placeholder="请输入单位" />
|
||||
</el-form-item>
|
||||
<el-form-item label="工序号" prop="processNo">
|
||||
<el-input v-model="form.processNo" placeholder="请输入工序号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="工作中心" prop="workCenter">
|
||||
<el-input v-model="form.workCenter" placeholder="请输入工作中心" />
|
||||
</el-form-item>
|
||||
<el-form-item label="工序名称" prop="processName">
|
||||
<el-input v-model="form.processName" placeholder="请输入工序名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="原材料编码" prop="rawMaterialCode">
|
||||
<el-input v-model="form.rawMaterialCode" placeholder="请输入原材料编码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="原材料名称" prop="rawMaterialName">
|
||||
<el-input v-model="form.rawMaterialName" placeholder="请输入原材料名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="金碟重量" prop="discWeight">
|
||||
<el-input v-model="form.discWeight" placeholder="请输入金碟重量" />
|
||||
</el-form-item>
|
||||
<el-form-item label="金碟用量" prop="discUsage">
|
||||
<el-input v-model="form.discUsage" placeholder="请输入金碟用量" />
|
||||
</el-form-item>
|
||||
<el-form-item label="工序说明" prop="processDescription">
|
||||
<el-input v-model="form.processDescription" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
<el-form-item label="工序控制" prop="processControl">
|
||||
<el-input v-model="form.processControl" placeholder="请输入工序控制" />
|
||||
</el-form-item>
|
||||
<el-form-item label="活动时长" prop="activityDuration">
|
||||
<el-input v-model="form.activityDuration" placeholder="请输入活动时长" />
|
||||
</el-form-item>
|
||||
<el-form-item label="活动单位" prop="activityUnit">
|
||||
<el-input v-model="form.activityUnit" placeholder="请输入活动单位" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!-- 导入导入对话框 -->
|
||||
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
|
||||
<el-upload
|
||||
ref="upload"
|
||||
:limit="1"
|
||||
accept=".xlsx, .xls"
|
||||
:headers="upload.headers"
|
||||
:action="upload.url + '?updateSupport=' + upload.updateSupport"
|
||||
:disabled="upload.isUploading"
|
||||
:on-progress="handleFileUploadProgress"
|
||||
:on-success="handleFileSuccess"
|
||||
:auto-upload="false"
|
||||
drag
|
||||
>
|
||||
<i class="el-icon-upload"></i>
|
||||
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
||||
<div class="el-upload__tip text-center" slot="tip">
|
||||
<div class="el-upload__tip" slot="tip">
|
||||
<el-checkbox v-model="upload.updateSupport"/>
|
||||
是否更新已经存在的物料数据
|
||||
<!-- 底部设备状态 -->
|
||||
<el-row :gutter="20" class="status-row">
|
||||
<el-col :span="24">
|
||||
<el-card>
|
||||
<div slot="header" class="chart-title">设备运行状态</div>
|
||||
<div class="equipment-status">
|
||||
<div
|
||||
v-for="(item, index) in equipmentList"
|
||||
:key="index"
|
||||
class="status-item">
|
||||
<i class="el-icon-s-platform" :style="{color: item.statusColor}"></i>
|
||||
<span>{{ item.name }}</span>
|
||||
<el-tag :type="item.statusType">{{ item.statusText }}</el-tag>
|
||||
</div>
|
||||
</div>
|
||||
<span>仅允许导入xls、xlsx格式文件。</span>
|
||||
<!-- <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;"
|
||||
@click="importTemplate">下载模板
|
||||
</el-link>-->
|
||||
</div>
|
||||
</el-upload>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitFileForm">确 定</el-button>
|
||||
<el-button @click="upload.open = false">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-drawer
|
||||
title="添加BOM"
|
||||
:visible.sync="BOMpop"
|
||||
:before-close="bomClose"
|
||||
:size="850"
|
||||
>
|
||||
<div style="padding: 20px;">
|
||||
<el-table
|
||||
:data="bomList"
|
||||
stripe
|
||||
max-height="400px"
|
||||
border
|
||||
>
|
||||
<el-table-column label="单重" width="70" align="center" prop="discWeight" />
|
||||
<el-table-column label="材料BOM物料编码" width="330" align="center" prop="rawMaterialCode" />
|
||||
<el-table-column label="材料BOM物料名称" width="320" align="center" prop="rawMaterialName" />
|
||||
<el-table-column label="用量" width="88" align="center" prop="discUsage" />
|
||||
</el-table>
|
||||
<Bomfrom v-if="BOMpop" style="padding-top: 20px;" />
|
||||
</div>
|
||||
</el-drawer>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listRoute, getRoute, delRoute, addRoute, updateRoute } from "@/api/system/route";
|
||||
import upload from "svg-sprite-loader/examples/custom-runtime-generator/build/main";
|
||||
import {getToken} from "../../../utils/auth";
|
||||
|
||||
import Fromed from './fromed'
|
||||
import Bomfrom from './bomfrom'
|
||||
|
||||
export default {
|
||||
name: "",
|
||||
components:{
|
||||
Fromed,
|
||||
Bomfrom
|
||||
},
|
||||
computed: {
|
||||
upload() {
|
||||
return upload
|
||||
}
|
||||
},
|
||||
data() {
|
||||
let data = []
|
||||
|
||||
for (let i = 0; i <= 360; i++) {
|
||||
let t = i / 180 * Math.PI
|
||||
let r = Math.sin(2 * t) * Math.cos(2 * t)
|
||||
data.push([r, i])
|
||||
}
|
||||
|
||||
return {
|
||||
showtable:true,
|
||||
expand:true,
|
||||
BOMpop:false,
|
||||
bomList:[],
|
||||
//expandRowKeys:[],
|
||||
omdelData:'',
|
||||
routeDescription: '', // 用于存储 productionOrderNo 的变量
|
||||
// 按钮loading
|
||||
buttonLoading: false,
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 工艺路线表格数据
|
||||
routeList: [],
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 100,
|
||||
routeDescription: undefined,
|
||||
materialCode: undefined,
|
||||
materialName: undefined,
|
||||
bomUnit: undefined,
|
||||
processNo: undefined,
|
||||
workCenter: undefined,
|
||||
processName: undefined,
|
||||
rawMaterialCode: undefined,
|
||||
rawMaterialName: undefined,
|
||||
discWeight: undefined,
|
||||
discUsage: undefined,
|
||||
processDescription: undefined,
|
||||
processControl: undefined,
|
||||
activityDuration: undefined,
|
||||
activityUnit: undefined,
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
upload: {
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
// 是否禁用上传
|
||||
isUploading: false,
|
||||
// 是否更新已经存在的用户数据
|
||||
updateSupport: 0,
|
||||
// 设置上传的请求头部
|
||||
headers: {Authorization: "Bearer " + getToken()},
|
||||
// 上传的地址
|
||||
url: process.env.VUE_APP_BASE_API + "/system/route/importData"
|
||||
},
|
||||
// 表单校验
|
||||
rules: {
|
||||
id: [
|
||||
{ required: true, message: "主键ID不能为空", trigger: "blur" }
|
||||
],
|
||||
routeDescription: [
|
||||
{ required: true, message: "工艺路线描述不能为空", trigger: "blur" }
|
||||
],
|
||||
materialCode: [
|
||||
{ required: true, message: "物料编码不能为空", trigger: "blur" }
|
||||
],
|
||||
materialName: [
|
||||
{ required: true, message: "物料名称不能为空", trigger: "blur" }
|
||||
],
|
||||
bomUnit: [
|
||||
{ required: true, message: "单位不能为空", trigger: "blur" }
|
||||
],
|
||||
processNo: [
|
||||
{ required: true, message: "工序号不能为空", trigger: "blur" }
|
||||
],
|
||||
workCenter: [
|
||||
{ required: true, message: "工作中心不能为空", trigger: "blur" }
|
||||
],
|
||||
processName: [
|
||||
{ required: true, message: "工序名称不能为空", trigger: "blur" }
|
||||
],
|
||||
rawMaterialCode: [
|
||||
{ required: true, message: "原材料编码不能为空", trigger: "blur" }
|
||||
],
|
||||
rawMaterialName: [
|
||||
{ required: true, message: "原材料名称不能为空", trigger: "blur" }
|
||||
],
|
||||
discWeight: [
|
||||
{ required: true, message: "金碟重量不能为空", trigger: "blur" }
|
||||
],
|
||||
discUsage: [
|
||||
{ required: true, message: "金碟用量不能为空", trigger: "blur" }
|
||||
],
|
||||
processDescription: [
|
||||
{ required: true, message: "工序说明不能为空", trigger: "blur" }
|
||||
],
|
||||
processControl: [
|
||||
{ required: true, message: "工序控制不能为空", trigger: "blur" }
|
||||
],
|
||||
activityDuration: [
|
||||
{ required: true, message: "活动时长不能为空", trigger: "blur" }
|
||||
],
|
||||
activityUnit: [
|
||||
{ required: true, message: "活动单位不能为空", trigger: "blur" }
|
||||
],
|
||||
createBy: [
|
||||
{ required: true, message: "创建者不能为空", trigger: "blur" }
|
||||
],
|
||||
createTime: [
|
||||
{ required: true, message: "创建时间不能为空", trigger: "blur" }
|
||||
],
|
||||
updateTime: [
|
||||
{ required: true, message: "更新时间不能为空", trigger: "blur" }
|
||||
]
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
const productionOrderNo = this.$route.query.productionOrderNo;
|
||||
if (productionOrderNo) {
|
||||
this.queryParams.routeDescription = productionOrderNo;
|
||||
}else {}
|
||||
this.getList();
|
||||
},
|
||||
mounted() {
|
||||
// 获取查询参数 productionOrderNo
|
||||
|
||||
},
|
||||
methods: {
|
||||
cellhand(row, column) {
|
||||
if(/单重|材料BOM物料编码|材料BOM物料名称|用量/.test(column.label)){
|
||||
this.BOMpop = true
|
||||
}
|
||||
},
|
||||
bomClose(){
|
||||
this.BOMpop = false
|
||||
},
|
||||
shouhide() {
|
||||
this.showtable = false
|
||||
setTimeout(() => {
|
||||
this.showtable = true
|
||||
this.expand = !this.expand
|
||||
}, 0);
|
||||
|
||||
},
|
||||
columnStyle({ row, column, rowIndex, columnIndex }) {
|
||||
// 第一列的背景色
|
||||
if (columnIndex === 6) {
|
||||
return 'background:#ccff99'
|
||||
}
|
||||
if (columnIndex === 7) {
|
||||
return 'background:#ccff99'
|
||||
}
|
||||
if (columnIndex === 8) {
|
||||
return 'background:#ccff99'
|
||||
}
|
||||
if (columnIndex === 9) {
|
||||
return 'background:#ccff99'
|
||||
}
|
||||
},
|
||||
/** 查询工艺路线列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
listRoute(this.queryParams).then(response => {
|
||||
this.routeList = response.rows;
|
||||
this.total = response.total;
|
||||
// this.expandRowKeys = routeList.map(n => {
|
||||
// return n.id
|
||||
// })
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
|
||||
// 表单重置
|
||||
reset() {
|
||||
this.form = {
|
||||
id: undefined,
|
||||
routeDescription: undefined,
|
||||
materialCode: undefined,
|
||||
materialName: undefined,
|
||||
bomUnit: undefined,
|
||||
processNo: undefined,
|
||||
workCenter: undefined,
|
||||
processName: undefined,
|
||||
rawMaterialCode: undefined,
|
||||
rawMaterialName: undefined,
|
||||
discWeight: undefined,
|
||||
discUsage: undefined,
|
||||
processDescription: undefined,
|
||||
processControl: undefined,
|
||||
activityDuration: undefined,
|
||||
activityUnit: undefined,
|
||||
createBy: undefined,
|
||||
updateBy: undefined,
|
||||
createTime: undefined,
|
||||
updateTime: undefined
|
||||
};
|
||||
this.resetForm("form");
|
||||
},
|
||||
/** 导入按钮操作 */
|
||||
handleImport() {
|
||||
this.upload.title = "工艺导入";
|
||||
this.upload.open = true;
|
||||
},
|
||||
/** 下载模板操作 */
|
||||
importTemplate() {
|
||||
this.download('system/route/importTemplate', {}, `route_template_${new Date().getTime()}.xlsx`)
|
||||
},
|
||||
// 文件上传中处理
|
||||
handleFileUploadProgress(event, file, fileList) {
|
||||
this.upload.isUploading = true;
|
||||
},
|
||||
// 文件上传成功处理
|
||||
handleFileSuccess(response, file, fileList) {
|
||||
this.upload.open = false;
|
||||
this.upload.isUploading = false;
|
||||
this.$refs.upload.clearFiles();
|
||||
this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>"
|
||||
+ response.msg + "</div>", "导入结果", {dangerouslyUseHTMLString: true});
|
||||
this.getList();
|
||||
},
|
||||
// 提交上传文件
|
||||
submitFileForm() {
|
||||
this.$refs.upload.submit();
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false;
|
||||
this.reset();
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1;
|
||||
this.getList();
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm");
|
||||
this.handleQuery();
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length!==1
|
||||
this.multiple = !selection.length
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = "添加工艺路线";
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.loading = true;
|
||||
this.reset();
|
||||
const id = row.id || this.ids
|
||||
getRoute(id).then(response => {
|
||||
this.loading = false;
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = "修改工艺路线";
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
this.buttonLoading = true;
|
||||
if (this.form.id != null) {
|
||||
updateRoute(this.form).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
}).finally(() => {
|
||||
this.buttonLoading = false;
|
||||
});
|
||||
} else {
|
||||
addRoute(this.form).then(response => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
}).finally(() => {
|
||||
this.buttonLoading = false;
|
||||
});
|
||||
polar: {
|
||||
title: {
|
||||
text: '极坐标双数值轴'
|
||||
},
|
||||
legend: {
|
||||
data: ['line']
|
||||
},
|
||||
polar: {
|
||||
center: ['50%', '54%']
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'cross'
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
this.$modal.confirm('是否确认删除工艺路线编号为"' + ids + '"的数据项?').then(() => {
|
||||
this.loading = true;
|
||||
return delRoute(ids);
|
||||
}).then(() => {
|
||||
this.loading = false;
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {
|
||||
}).finally(() => {
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
this.download('system/route/export', {
|
||||
...this.queryParams
|
||||
}, `route_${new Date().getTime()}.xlsx`)
|
||||
},
|
||||
angleAxis: {
|
||||
type: 'value',
|
||||
startAngle: 0
|
||||
},
|
||||
radiusAxis: {
|
||||
min: 0
|
||||
},
|
||||
series: [
|
||||
{
|
||||
coordinateSystem: 'polar',
|
||||
name: 'line',
|
||||
type: 'line',
|
||||
showSymbol: false,
|
||||
data: data
|
||||
}
|
||||
],
|
||||
animationDuration: 2000
|
||||
},
|
||||
equipmentList: [
|
||||
{ name: 'CNC-001', statusText: '运行中', statusType: 'success', statusColor: '#67C23A' },
|
||||
{ name: '注塑机-002', statusText: '待机', statusType: 'warning', statusColor: '#E6A23C' },
|
||||
{ name: '组装线-003', statusText: '故障', statusType: 'danger', statusColor: '#F56C6C' },
|
||||
{ name: '包装机-004', statusText: '维护', statusType: 'info', statusColor: '#909399' }
|
||||
]
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.dashboard-container {
|
||||
padding: 20px;
|
||||
|
||||
.stat-card {
|
||||
margin-bottom: 20px;
|
||||
|
||||
.card-content {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.card-icon {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
border-radius: 8px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
i {
|
||||
font-size: 24px;
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
|
||||
.card-info {
|
||||
margin-left: 15px;
|
||||
|
||||
.label {
|
||||
display: block;
|
||||
color: #999;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.value {
|
||||
display: block;
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
margin-top: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.chart-row {
|
||||
margin-top: 20px;
|
||||
|
||||
.echarts {
|
||||
width: 100% !important;
|
||||
height: 100vh !important;
|
||||
}
|
||||
|
||||
.progress-circle {
|
||||
display: block;
|
||||
margin: 20px auto;
|
||||
}
|
||||
|
||||
.progress-text {
|
||||
text-align: center;
|
||||
color: #666;
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
.status-row {
|
||||
margin-top: 20px;
|
||||
|
||||
.equipment-status {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
||||
gap: 20px;
|
||||
|
||||
.status-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 10px;
|
||||
background: #f8f8f8;
|
||||
border-radius: 4px;
|
||||
|
||||
i {
|
||||
font-size: 24px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
span {
|
||||
flex: 1;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -103,16 +103,25 @@
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
<el-dialog :visible="dialogVisible" @close="dialogVisible = false" width="30%">
|
||||
<span class="dialog-title"> 库存信息</span>
|
||||
<div class="dialog-content">
|
||||
<p class="dialog-text">物料编号: {{ inventoryData.materialCode }}</p>
|
||||
<p class="dialog-text">库存数量: {{ inventoryData.inventory }}</p>
|
||||
<p class="dialog-text">物料仓库: {{ inventoryData.stockName }}</p>
|
||||
<p class="dialog-text">物料名称: {{ inventoryData.materialName }}</p>
|
||||
<p class="dialog-text">物料单位: {{ inventoryData.stockUnit }}</p>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<transition name="fade">
|
||||
<el-dialog :visible="dialogVisible" @close="dialogVisible = false" width="30%">
|
||||
<el-card class="box-card" v-loading="dialogLoading" element-loading-text="加载中..." element-loading-background="rgba(255, 255, 255, 0.8)">
|
||||
|
||||
<div slot="header" class="clearfix">
|
||||
<span class="dialog-title">库存信息</span>
|
||||
</div>
|
||||
<div class="dialog-body">
|
||||
<p class="dialog-item"><strong>物料编号:</strong>{{ inventoryData.materialCode }}</p>
|
||||
<p class="dialog-item"><strong>库存:</strong>{{ inventoryData.kucun }}</p>
|
||||
<p class="dialog-item"><strong>子项未领料量:</strong>{{ inventoryData.inventory }}</p>
|
||||
<p class="dialog-item"><strong>生产订单未入库:</strong>{{ inventoryData.stockName }}</p>
|
||||
<p class="dialog-item"><strong>采购订单未入库:</strong>{{ inventoryData.materialName }}</p>
|
||||
<p class="dialog-item"><strong>预计可用库存:</strong>{{ inventoryData.stockUnit }}</p>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-dialog>
|
||||
</transition>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
@ -134,6 +143,7 @@ export default {
|
||||
return {
|
||||
// 按钮loading
|
||||
buttonLoading: false,
|
||||
dialogLoading: false,
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
@ -183,17 +193,21 @@ export default {
|
||||
this.showInventory(row.materialCode); // 打开弹框
|
||||
},
|
||||
showInventory(materialCode) {
|
||||
// 向后端发送请求获取库存数
|
||||
this.dialogLoading = true; // 显示加载动画
|
||||
material_inventory(materialCode).then(response => {
|
||||
this.inventoryData.materialCode = materialCode; // 设置物料编号
|
||||
this.inventoryData.inventory = response.data.quantity; // 设置库存数
|
||||
this.inventoryData.materialName = response.data.materialName; // 设置库存数
|
||||
this.inventoryData.stockName = response.data.stockName; // 设置库存数
|
||||
this.inventoryData.stockUnit = response.data.stockUnit; // 设置库存数
|
||||
this.dialogVisible = true; // 打开弹框显示数据
|
||||
this.inventoryData.materialCode = materialCode;
|
||||
this.inventoryData.inventory = response.data.quantity;
|
||||
this.inventoryData.materialName = response.data.materialName;
|
||||
this.inventoryData.stockName = response.data.stockName;
|
||||
this.inventoryData.stockUnit = response.data.stockUnit;
|
||||
this.inventoryData.kucun = response.data.kucun;
|
||||
this.dialogVisible = true;
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('获取库存数失败:', error);
|
||||
})
|
||||
.finally(() => {
|
||||
this.dialogLoading = false; // 隐藏加载动画
|
||||
});
|
||||
},
|
||||
|
||||
@ -275,6 +289,39 @@ export default {
|
||||
align-items: flex-start; /* 左对齐字段数据 */
|
||||
margin-left: 5px; /* 调整字段数据与边框的距禿 */
|
||||
}
|
||||
.fade-enter-active, .fade-leave-active {
|
||||
transition: opacity 0.4s ease;
|
||||
}
|
||||
.fade-enter, .fade-leave-to {
|
||||
opacity: 0;
|
||||
}
|
||||
.box-card {
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.dialog-title {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
color: #409EFF;
|
||||
}
|
||||
|
||||
.dialog-body {
|
||||
font-family: '微软雅黑', sans-serif;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.dialog-item {
|
||||
margin-bottom: 10px;
|
||||
font-size: 14px;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.clearfix::after {
|
||||
content: "";
|
||||
display: block;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.dialog-text {
|
||||
margin: 8px 0;
|
||||
|
||||
394
src/views/system/configIni/index.vue
Normal file
394
src/views/system/configIni/index.vue
Normal file
@ -0,0 +1,394 @@
|
||||
<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="dir" prop="dir">
|
||||
<el-input
|
||||
v-model="queryParams.dir"
|
||||
placeholder="请输入dir"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>-->
|
||||
<el-form-item label="路径" prop="url">
|
||||
<el-input
|
||||
v-model="queryParams.url"
|
||||
placeholder="请输入路径"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="项目图纸路径" prop="productDir">
|
||||
<el-input
|
||||
v-model="queryParams.productDir"
|
||||
placeholder="请输入项目图纸路径"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="图纸路径" prop="fileUrl">
|
||||
<el-input
|
||||
v-model="queryParams.fileUrl"
|
||||
placeholder="请输入图纸路径"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="备用字段1" prop="sparedOne">
|
||||
<el-input
|
||||
v-model="queryParams.sparedOne"
|
||||
placeholder="请输入备用字段1"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="备用字段2" prop="sparedTwo">
|
||||
<el-input
|
||||
v-model="queryParams.sparedTwo"
|
||||
placeholder="请输入备用字段2"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="备用字段3" prop="sparedThree">
|
||||
<el-input
|
||||
v-model="queryParams.sparedThree"
|
||||
placeholder="请输入备用字段3"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="备用字段4" prop="sparedFour">
|
||||
<el-input
|
||||
v-model="queryParams.sparedFour"
|
||||
placeholder="请输入备用字段4"
|
||||
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:configIni: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:configIni: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:configIni: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:configIni:export']"
|
||||
>导出</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="configIniList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<!-- <el-table-column label="项目图纸路径" align="center" prop="productDir" />-->
|
||||
<el-table-column label="图纸类别" align="center" prop="fileType" />
|
||||
<el-table-column label="图纸路径" align="center" prop="fileUrl" />
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
|
||||
<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:configIni:edit']"
|
||||
>修改</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['system:configIni: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="dir" prop="dir">
|
||||
<el-input v-model="form.dir" placeholder="请输入dir" />
|
||||
</el-form-item>
|
||||
<el-form-item label="路径" prop="url">
|
||||
<el-input v-model="form.url" placeholder="请输入路径" />
|
||||
</el-form-item>-->
|
||||
<el-form-item label="项目图纸路径" prop="productDir">
|
||||
<el-input v-model="form.productDir" placeholder="请输入项目图纸路径" />
|
||||
</el-form-item>
|
||||
<el-form-item label="图纸路径" prop="fileUrl">
|
||||
<el-input v-model="form.fileUrl" placeholder="请输入图纸路径" />
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="form.remark" placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备用字段1" prop="sparedOne">
|
||||
<el-input v-model="form.sparedOne" placeholder="请输入备用字段1" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备用字段2" prop="sparedTwo">
|
||||
<el-input v-model="form.sparedTwo" placeholder="请输入备用字段2" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备用字段3" prop="sparedThree">
|
||||
<el-input v-model="form.sparedThree" placeholder="请输入备用字段3" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备用字段4" prop="sparedFour">
|
||||
<el-input v-model="form.sparedFour" placeholder="请输入备用字段4" />
|
||||
</el-form-item>-->
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listConfigIni, getConfigIni, delConfigIni, addConfigIni, updateConfigIni } from "@/api/system/configIni";
|
||||
|
||||
export default {
|
||||
name: "ConfigIni",
|
||||
data() {
|
||||
return {
|
||||
// 按钮loading
|
||||
buttonLoading: false,
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 图纸配置表格数据
|
||||
configIniList: [],
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
dir: undefined,
|
||||
url: undefined,
|
||||
productDir: undefined,
|
||||
fileType: undefined,
|
||||
fileUrl: undefined,
|
||||
sparedOne: undefined,
|
||||
sparedTwo: undefined,
|
||||
sparedThree: undefined,
|
||||
sparedFour: undefined,
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
/*id: [
|
||||
{ required: true, message: "主键id不能为空", trigger: "blur" }
|
||||
],
|
||||
dir: [
|
||||
{ required: true, message: "dir不能为空", trigger: "blur" }
|
||||
],
|
||||
url: [
|
||||
{ required: true, message: "路径不能为空", trigger: "blur" }
|
||||
],*/
|
||||
productDir: [
|
||||
{ required: true, message: "项目图纸路径不能为空", trigger: "blur" }
|
||||
],
|
||||
fileType: [
|
||||
{ required: true, message: "图纸类别不能为空", trigger: "change" }
|
||||
],
|
||||
fileUrl: [
|
||||
{ required: true, message: "图纸路径不能为空", trigger: "blur" }
|
||||
],
|
||||
/*remark: [
|
||||
{ required: true, message: "备注不能为空", trigger: "blur" }
|
||||
],
|
||||
sparedOne: [
|
||||
{ required: true, message: "备用字段1不能为空", trigger: "blur" }
|
||||
],
|
||||
sparedTwo: [
|
||||
{ required: true, message: "备用字段2不能为空", trigger: "blur" }
|
||||
],
|
||||
sparedThree: [
|
||||
{ required: true, message: "备用字段3不能为空", trigger: "blur" }
|
||||
],
|
||||
sparedFour: [
|
||||
{ required: true, message: "备用字段4不能为空", trigger: "blur" }
|
||||
],*/
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
/** 查询图纸配置列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
listConfigIni(this.queryParams).then(response => {
|
||||
this.configIniList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false;
|
||||
this.reset();
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
this.form = {
|
||||
id: undefined,
|
||||
createTime: undefined,
|
||||
dir: undefined,
|
||||
url: undefined,
|
||||
productDir: undefined,
|
||||
fileType: undefined,
|
||||
fileUrl: undefined,
|
||||
remark: undefined,
|
||||
sparedOne: undefined,
|
||||
sparedTwo: undefined,
|
||||
sparedThree: undefined,
|
||||
sparedFour: undefined,
|
||||
delFlag: undefined
|
||||
};
|
||||
this.resetForm("form");
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1;
|
||||
this.getList();
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm");
|
||||
this.handleQuery();
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length!==1
|
||||
this.multiple = !selection.length
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = "添加图纸配置";
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.loading = true;
|
||||
this.reset();
|
||||
const id = row.id || this.ids
|
||||
getConfigIni(id).then(response => {
|
||||
this.loading = false;
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = "修改图纸配置";
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
this.buttonLoading = true;
|
||||
if (this.form.id != null) {
|
||||
updateConfigIni(this.form).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
}).finally(() => {
|
||||
this.buttonLoading = false;
|
||||
});
|
||||
} else {
|
||||
addConfigIni(this.form).then(response => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
}).finally(() => {
|
||||
this.buttonLoading = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
this.$modal.confirm('是否确认删除图纸配置编号为"' + ids + '"的数据项?').then(() => {
|
||||
this.loading = true;
|
||||
return delConfigIni(ids);
|
||||
}).then(() => {
|
||||
this.loading = false;
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {
|
||||
}).finally(() => {
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
this.download('system/configIni/export', {
|
||||
...this.queryParams
|
||||
}, `configIni_${new Date().getTime()}.xlsx`)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
@ -414,6 +414,11 @@ export default {
|
||||
},
|
||||
|
||||
generateMaterialCode() {
|
||||
// 如果是修改操作,不生成新的编码
|
||||
if (this.form.id) {
|
||||
return;
|
||||
}
|
||||
|
||||
const materialType = this.form.materialType; // 获取选中的类别
|
||||
if (!materialType) {
|
||||
this.$message.warning('请先选择类别。');
|
||||
@ -427,8 +432,6 @@ export default {
|
||||
},
|
||||
|
||||
getNextMaterialCode(baseCode) {
|
||||
// 这里可以调用后端接口检查数据库中已有的编码
|
||||
// 假设返回的编码列表是 ["DC0000000001", "DC0000000002"]
|
||||
const existingCodes = ["DC0000000001", "DC0000000002"]; // 示例数据
|
||||
let nextCode = baseCode;
|
||||
|
||||
@ -445,15 +448,20 @@ export default {
|
||||
// 处理型号选择
|
||||
handleModelSelect(item) {
|
||||
if (item) {
|
||||
// 自动填充表单字段
|
||||
// 保存当前的物料编码
|
||||
const currentMaterialCode = this.form.materialCode;
|
||||
|
||||
// 更新其他字段
|
||||
this.form = {
|
||||
...this.form, // 保留其他字段
|
||||
materialCode: item.materialCode,
|
||||
materialType: item.materialType,
|
||||
materialName: item.materialName,
|
||||
model: item.model,
|
||||
brand: item.brand
|
||||
};
|
||||
|
||||
// 恢复物料编码
|
||||
this.form.materialCode = currentMaterialCode;
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
621
src/views/system/pcRigidChain/index.vue
Normal file
621
src/views/system/pcRigidChain/index.vue
Normal file
@ -0,0 +1,621 @@
|
||||
<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="typeName">
|
||||
<el-input
|
||||
v-model="queryParams.typeName"
|
||||
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="materialCode">
|
||||
<el-input
|
||||
v-model="queryParams.materialCode"
|
||||
placeholder="请输入物料编码"
|
||||
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:pcRigidChain: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:pcRigidChain: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:pcRigidChain: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:pcRigidChain:export']"
|
||||
>导出</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="pcRigidChainList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="主键" align="center" prop="id" v-if="true"/>
|
||||
<el-table-column label="类型" align="center" prop="type" />
|
||||
<el-table-column label="型号全称" align="center" prop="typeName" />
|
||||
<el-table-column label="产品id" align="center" prop="productId" />
|
||||
<el-table-column label="产品名称" align="center" prop="productName" />
|
||||
<el-table-column label="轴向" align="center" prop="axialDirection" />
|
||||
<el-table-column label="箱体" align="center" prop="box" />
|
||||
<el-table-column label="行程" align="center" prop="journey" />
|
||||
<el-table-column label="标记号" align="center" prop="lableNumber" />
|
||||
<el-table-column label="L1" align="center" prop="lOne" />
|
||||
<el-table-column label="L2" align="center" prop="lTwo" />
|
||||
<el-table-column label="L3" align="center" prop="lThree" />
|
||||
<el-table-column label="总重量" align="center" prop="sumWeight" />
|
||||
<el-table-column label="链条自重" align="center" prop="chainWeight" />
|
||||
<el-table-column label="动载荷" align="center" prop="dynamicLoad" />
|
||||
<el-table-column label="静载荷" align="center" prop="deadLoad" />
|
||||
<el-table-column label="每转上升高度" align="center" prop="riseInHeightPerRevolution" />
|
||||
<el-table-column label="速度" align="center" prop="speed" />
|
||||
<el-table-column label="系统效率" align="center" prop="efficiency" />
|
||||
<el-table-column label="链条节距" align="center" prop="chainPitch" />
|
||||
<el-table-column label="节圆半径" align="center" prop="pitchRadius" />
|
||||
<el-table-column label="最低高度" align="center" prop="minimumAltitude" />
|
||||
<el-table-column label="一米链条自重" align="center" prop="singleMeterChainWeight" />
|
||||
<el-table-column label="驱动箱重量" align="center" prop="drivingBoxWeight" />
|
||||
<el-table-column label="链箱重量" align="center" prop="chainBoxWeight" />
|
||||
<el-table-column label="单价" align="center" prop="univalence" />
|
||||
<el-table-column label="图片" align="center" prop="picture" />
|
||||
<el-table-column label="部件id集合" align="center" prop="partId" />
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
<el-table-column label="备用字段1" align="center" prop="sparedOne" />
|
||||
<el-table-column label="备用字段2" align="center" prop="sparedTwo" />
|
||||
<el-table-column label="备用字段3" align="center" prop="sparedThree" />
|
||||
<el-table-column label="备用字段4" align="center" prop="sparedFour" />
|
||||
<el-table-column label="行程" align="center" prop="vOne" />
|
||||
<el-table-column label="设备总长" align="center" prop="vTwo" />
|
||||
<el-table-column label="地脚位置1" align="center" prop="vThree" />
|
||||
<el-table-column label="地脚位置2" align="center" prop="vFour" />
|
||||
<el-table-column label="箱体装配长度" align="center" prop="vFive" />
|
||||
<el-table-column label="箱体地脚位置1" align="center" prop="vSix" />
|
||||
<el-table-column label="箱体地脚位置2" align="center" prop="vSeven" />
|
||||
<el-table-column label="铝箱长度1" align="center" prop="vEight" />
|
||||
<el-table-column label="铝箱长度2" align="center" prop="vNine" />
|
||||
<el-table-column label="导向条长度1" align="center" prop="vTen" />
|
||||
<el-table-column label="导向条长度1数量" align="center" prop="vEleven" />
|
||||
<el-table-column label="导向条长度2" align="center" prop="vTwelve" />
|
||||
<el-table-column label="导向条长度2数量" align="center" prop="vThirteen" />
|
||||
<el-table-column label="导向条长度3" align="center" prop="vFourteen" />
|
||||
<el-table-column label="导向条长度3数量" align="center" prop="vFifteen" />
|
||||
<el-table-column label="孔位总长1" align="center" prop="vSixteen" />
|
||||
<el-table-column label="间隔数量1" align="center" prop="vSeveteen" />
|
||||
<el-table-column label="孔位总长2" align="center" prop="vEighteen" />
|
||||
<el-table-column label="间隔数量2" align="center" prop="vNineteen" />
|
||||
<el-table-column label="铆钉数量" align="center" prop="vTwenty" />
|
||||
<el-table-column label="v21" align="center" prop="vTwentyOne" />
|
||||
<el-table-column label="v22" align="center" prop="vTwentyTwo" />
|
||||
<el-table-column label="v23" align="center" prop="vTwentyThree" />
|
||||
<el-table-column label="v24" align="center" prop="vTwentyFour" />
|
||||
<el-table-column label="v25" align="center" prop="vTwentyFive" />
|
||||
<el-table-column label="26" align="center" prop="vTwentySix" />
|
||||
<el-table-column label="v27" align="center" prop="vTwentySeven" />
|
||||
<el-table-column label="v28" align="center" prop="vTwentyEight" />
|
||||
<el-table-column label="v29" align="center" prop="vTwentyNine" />
|
||||
<el-table-column label="v30" align="center" prop="vThirty" />
|
||||
<el-table-column label="v31" align="center" prop="vThirtyOne" />
|
||||
<el-table-column label="v32" align="center" prop="vThirtyTwo" />
|
||||
<el-table-column label="v33" align="center" prop="vThirtyThree" />
|
||||
<el-table-column label="v34" align="center" prop="vThirtyFour" />
|
||||
<el-table-column label="v35" align="center" prop="vThirtyFive" />
|
||||
<el-table-column label="v36" align="center" prop="vThirtySix" />
|
||||
<el-table-column label="v37" align="center" prop="vThirtySeven" />
|
||||
<el-table-column label="v38" align="center" prop="vThirtyEight" />
|
||||
<el-table-column label="v39" align="center" prop="vThirtyNine" />
|
||||
<el-table-column label="v40" align="center" prop="vForty" />
|
||||
<el-table-column label="X1" align="center" prop="vFortyOne" />
|
||||
<el-table-column label="X2" align="center" prop="vFortyTwo" />
|
||||
<el-table-column label="X3" align="center" prop="vFortyThree" />
|
||||
<el-table-column label="X4" align="center" prop="vFortyFour" />
|
||||
<el-table-column label="X5" align="center" prop="vFortyFive" />
|
||||
<el-table-column label="X6" align="center" prop="vFortySix" />
|
||||
<el-table-column label="X7" align="center" prop="vFortySeven" />
|
||||
<el-table-column label="X8" align="center" prop="vFortyEight" />
|
||||
<el-table-column label="X9" align="center" prop="vFortyNine" />
|
||||
<el-table-column label="X10" align="center" prop="vFifty" />
|
||||
<el-table-column label="X11" align="center" prop="vFiftyOne" />
|
||||
<el-table-column label="X12" align="center" prop="vFiftyTwo" />
|
||||
<el-table-column label="X13" align="center" prop="vFiftyThree" />
|
||||
<el-table-column label="重量" align="center" prop="gOne" />
|
||||
<el-table-column label="重量" align="center" prop="gTwo" />
|
||||
<el-table-column label="重量" align="center" prop="gThree" />
|
||||
<el-table-column label="重量" align="center" prop="gFour" />
|
||||
<el-table-column label="重量" align="center" prop="gFive" />
|
||||
<el-table-column label="重量" align="center" prop="gSix" />
|
||||
<el-table-column label="重量" align="center" prop="gSeven" />
|
||||
<el-table-column label="重量" align="center" prop="gEight" />
|
||||
<el-table-column label="重量" align="center" prop="gNine" />
|
||||
<el-table-column label="重量" align="center" prop="gTen" />
|
||||
<el-table-column label="重量" align="center" prop="gEleven" />
|
||||
<el-table-column label="重量" align="center" prop="gTwelve" />
|
||||
<el-table-column label="重量" align="center" prop="gThirteen" />
|
||||
<el-table-column label="重量" align="center" prop="gFourteen" />
|
||||
<el-table-column label="重量" align="center" prop="gFifteen" />
|
||||
<el-table-column label="重量" align="center" prop="gSixteen" />
|
||||
<el-table-column label="重量" align="center" prop="gSeveteen" />
|
||||
<el-table-column label="重量" align="center" prop="gEighteen" />
|
||||
<el-table-column label="重量" align="center" prop="gNineteen" />
|
||||
<el-table-column label="重量" align="center" prop="gTwenty" />
|
||||
<el-table-column label="物料编码" align="center" prop="materialCode" />
|
||||
<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:pcRigidChain:edit']"
|
||||
>修改</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['system:pcRigidChain: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="typeName">
|
||||
<el-input v-model="form.typeName" placeholder="请输入型号全称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="产品id" prop="productId">
|
||||
<el-input v-model="form.productId" placeholder="请输入产品id" />
|
||||
</el-form-item>
|
||||
<el-form-item label="产品名称" prop="productName">
|
||||
<el-input v-model="form.productName" placeholder="请输入产品名称" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="物料编码" prop="materialCode">
|
||||
<el-input v-model="form.materialCode" placeholder="请输入物料编码" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listRigidChain, getRigidChain, delRigidChain, addRigidChain, updateRigidChain } from "@/api/system/pcRigidChain";
|
||||
|
||||
export default {
|
||||
name: "RigidChain",
|
||||
data() {
|
||||
return {
|
||||
// 按钮loading
|
||||
buttonLoading: false,
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 销齿链型号管理表格数据
|
||||
pcRigidChainList: [],
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
type: undefined,
|
||||
typeName: undefined,
|
||||
productId: undefined,
|
||||
productName: undefined,
|
||||
axialDirection: undefined,
|
||||
box: undefined,
|
||||
journey: undefined,
|
||||
lableNumber: undefined,
|
||||
lOne: undefined,
|
||||
lTwo: undefined,
|
||||
lThree: undefined,
|
||||
sumWeight: undefined,
|
||||
chainWeight: undefined,
|
||||
dynamicLoad: undefined,
|
||||
deadLoad: undefined,
|
||||
riseInHeightPerRevolution: undefined,
|
||||
speed: undefined,
|
||||
efficiency: undefined,
|
||||
chainPitch: undefined,
|
||||
pitchRadius: undefined,
|
||||
minimumAltitude: undefined,
|
||||
singleMeterChainWeight: undefined,
|
||||
drivingBoxWeight: undefined,
|
||||
chainBoxWeight: undefined,
|
||||
univalence: undefined,
|
||||
picture: undefined,
|
||||
partId: undefined,
|
||||
sparedOne: undefined,
|
||||
sparedTwo: undefined,
|
||||
sparedThree: undefined,
|
||||
sparedFour: undefined,
|
||||
vOne: undefined,
|
||||
vTwo: undefined,
|
||||
vThree: undefined,
|
||||
vFour: undefined,
|
||||
vFive: undefined,
|
||||
vSix: undefined,
|
||||
vSeven: undefined,
|
||||
vEight: undefined,
|
||||
vNine: undefined,
|
||||
vTen: undefined,
|
||||
vEleven: undefined,
|
||||
vTwelve: undefined,
|
||||
vThirteen: undefined,
|
||||
vFourteen: undefined,
|
||||
vFifteen: undefined,
|
||||
vSixteen: undefined,
|
||||
vSeveteen: undefined,
|
||||
vEighteen: undefined,
|
||||
vNineteen: undefined,
|
||||
vTwenty: undefined,
|
||||
vTwentyOne: undefined,
|
||||
vTwentyTwo: undefined,
|
||||
vTwentyThree: undefined,
|
||||
vTwentyFour: undefined,
|
||||
vTwentyFive: undefined,
|
||||
vTwentySix: undefined,
|
||||
vTwentySeven: undefined,
|
||||
vTwentyEight: undefined,
|
||||
vTwentyNine: undefined,
|
||||
vThirty: undefined,
|
||||
vThirtyOne: undefined,
|
||||
vThirtyTwo: undefined,
|
||||
vThirtyThree: undefined,
|
||||
vThirtyFour: undefined,
|
||||
vThirtyFive: undefined,
|
||||
vThirtySix: undefined,
|
||||
vThirtySeven: undefined,
|
||||
vThirtyEight: undefined,
|
||||
vThirtyNine: undefined,
|
||||
vForty: undefined,
|
||||
vFortyOne: undefined,
|
||||
vFortyTwo: undefined,
|
||||
vFortyThree: undefined,
|
||||
vFortyFour: undefined,
|
||||
vFortyFive: undefined,
|
||||
vFortySix: undefined,
|
||||
vFortySeven: undefined,
|
||||
vFortyEight: undefined,
|
||||
vFortyNine: undefined,
|
||||
vFifty: undefined,
|
||||
vFiftyOne: undefined,
|
||||
vFiftyTwo: undefined,
|
||||
vFiftyThree: undefined,
|
||||
gOne: undefined,
|
||||
gTwo: undefined,
|
||||
gThree: undefined,
|
||||
gFour: undefined,
|
||||
gFive: undefined,
|
||||
gSix: undefined,
|
||||
gSeven: undefined,
|
||||
gEight: undefined,
|
||||
gNine: undefined,
|
||||
gTen: undefined,
|
||||
gEleven: undefined,
|
||||
gTwelve: undefined,
|
||||
gThirteen: undefined,
|
||||
gFourteen: undefined,
|
||||
gFifteen: undefined,
|
||||
gSixteen: undefined,
|
||||
gSeveteen: undefined,
|
||||
gEighteen: undefined,
|
||||
gNineteen: undefined,
|
||||
gTwenty: undefined,
|
||||
materialCode: undefined
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
id: [
|
||||
{ required: true, message: "主键不能为空", trigger: "blur" }
|
||||
],
|
||||
type: [
|
||||
{ required: true, message: "类型不能为空", trigger: "change" }
|
||||
],
|
||||
typeName: [
|
||||
{ required: true, message: "型号全称不能为空", trigger: "blur" }
|
||||
],
|
||||
productId: [
|
||||
{ required: true, message: "产品id不能为空", trigger: "blur" }
|
||||
],
|
||||
productName: [
|
||||
{ required: true, message: "产品名称不能为空", trigger: "blur" }
|
||||
],
|
||||
|
||||
materialCode: [
|
||||
{ required: true, message: "物料编码不能为空", trigger: "blur" }
|
||||
]
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
/** 查询销齿链型号管理列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
listRigidChain(this.queryParams).then(response => {
|
||||
this.pcRigidChainList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false;
|
||||
this.reset();
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
this.form = {
|
||||
id: undefined,
|
||||
createTime: undefined,
|
||||
type: undefined,
|
||||
typeName: undefined,
|
||||
productId: undefined,
|
||||
productName: undefined,
|
||||
axialDirection: undefined,
|
||||
box: undefined,
|
||||
journey: undefined,
|
||||
lableNumber: undefined,
|
||||
lOne: undefined,
|
||||
lTwo: undefined,
|
||||
lThree: undefined,
|
||||
sumWeight: undefined,
|
||||
chainWeight: undefined,
|
||||
dynamicLoad: undefined,
|
||||
deadLoad: undefined,
|
||||
riseInHeightPerRevolution: undefined,
|
||||
speed: undefined,
|
||||
efficiency: undefined,
|
||||
chainPitch: undefined,
|
||||
pitchRadius: undefined,
|
||||
minimumAltitude: undefined,
|
||||
singleMeterChainWeight: undefined,
|
||||
drivingBoxWeight: undefined,
|
||||
chainBoxWeight: undefined,
|
||||
univalence: undefined,
|
||||
picture: undefined,
|
||||
partId: undefined,
|
||||
remark: undefined,
|
||||
sparedOne: undefined,
|
||||
sparedTwo: undefined,
|
||||
sparedThree: undefined,
|
||||
sparedFour: undefined,
|
||||
delFlag: undefined,
|
||||
vOne: undefined,
|
||||
vTwo: undefined,
|
||||
vThree: undefined,
|
||||
vFour: undefined,
|
||||
vFive: undefined,
|
||||
vSix: undefined,
|
||||
vSeven: undefined,
|
||||
vEight: undefined,
|
||||
vNine: undefined,
|
||||
vTen: undefined,
|
||||
vEleven: undefined,
|
||||
vTwelve: undefined,
|
||||
vThirteen: undefined,
|
||||
vFourteen: undefined,
|
||||
vFifteen: undefined,
|
||||
vSixteen: undefined,
|
||||
vSeveteen: undefined,
|
||||
vEighteen: undefined,
|
||||
vNineteen: undefined,
|
||||
vTwenty: undefined,
|
||||
vTwentyOne: undefined,
|
||||
vTwentyTwo: undefined,
|
||||
vTwentyThree: undefined,
|
||||
vTwentyFour: undefined,
|
||||
vTwentyFive: undefined,
|
||||
vTwentySix: undefined,
|
||||
vTwentySeven: undefined,
|
||||
vTwentyEight: undefined,
|
||||
vTwentyNine: undefined,
|
||||
vThirty: undefined,
|
||||
vThirtyOne: undefined,
|
||||
vThirtyTwo: undefined,
|
||||
vThirtyThree: undefined,
|
||||
vThirtyFour: undefined,
|
||||
vThirtyFive: undefined,
|
||||
vThirtySix: undefined,
|
||||
vThirtySeven: undefined,
|
||||
vThirtyEight: undefined,
|
||||
vThirtyNine: undefined,
|
||||
vForty: undefined,
|
||||
vFortyOne: undefined,
|
||||
vFortyTwo: undefined,
|
||||
vFortyThree: undefined,
|
||||
vFortyFour: undefined,
|
||||
vFortyFive: undefined,
|
||||
vFortySix: undefined,
|
||||
vFortySeven: undefined,
|
||||
vFortyEight: undefined,
|
||||
vFortyNine: undefined,
|
||||
vFifty: undefined,
|
||||
vFiftyOne: undefined,
|
||||
vFiftyTwo: undefined,
|
||||
vFiftyThree: undefined,
|
||||
gOne: undefined,
|
||||
gTwo: undefined,
|
||||
gThree: undefined,
|
||||
gFour: undefined,
|
||||
gFive: undefined,
|
||||
gSix: undefined,
|
||||
gSeven: undefined,
|
||||
gEight: undefined,
|
||||
gNine: undefined,
|
||||
gTen: undefined,
|
||||
gEleven: undefined,
|
||||
gTwelve: undefined,
|
||||
gThirteen: undefined,
|
||||
gFourteen: undefined,
|
||||
gFifteen: undefined,
|
||||
gSixteen: undefined,
|
||||
gSeveteen: undefined,
|
||||
gEighteen: undefined,
|
||||
gNineteen: undefined,
|
||||
gTwenty: undefined,
|
||||
materialCode: undefined
|
||||
};
|
||||
this.resetForm("form");
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1;
|
||||
this.getList();
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm");
|
||||
this.handleQuery();
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length!==1
|
||||
this.multiple = !selection.length
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = "添加销齿链型号管理";
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.loading = true;
|
||||
this.reset();
|
||||
const id = row.id || this.ids
|
||||
getRigidChain(id).then(response => {
|
||||
this.loading = false;
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = "修改销齿链型号管理";
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
this.buttonLoading = true;
|
||||
if (this.form.id != null) {
|
||||
updateRigidChain(this.form).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
}).finally(() => {
|
||||
this.buttonLoading = false;
|
||||
});
|
||||
} else {
|
||||
addRigidChain(this.form).then(response => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
}).finally(() => {
|
||||
this.buttonLoading = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
this.$modal.confirm('是否确认删除销齿链型号管理编号为"' + ids + '"的数据项?').then(() => {
|
||||
this.loading = true;
|
||||
return delRigidChain(ids);
|
||||
}).then(() => {
|
||||
this.loading = false;
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {
|
||||
}).finally(() => {
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
this.download('system/pcRigidChain/export', {
|
||||
...this.queryParams
|
||||
}, `pcRigidChain_${new Date().getTime()}.xlsx`)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
@ -305,19 +305,40 @@
|
||||
<el-input v-model="form.drawingPreview" placeholder="请输入执行单路径"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- 循环展示固定的七个子项 -->
|
||||
<el-row :gutter="20" v-for="(item, index) in form.subItems" :key="index">
|
||||
<el-col :span="12">
|
||||
<el-form-item :label="item.text">
|
||||
<el-date-picker v-model="item.startDate" type="datetime" placeholder="请选择开始日期"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item>
|
||||
<el-input v-model.number="item.duration" placeholder="请输入持续时间(天数)"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-form-item label="开始日期" prop="startDate">
|
||||
<el-date-picker clearable
|
||||
v-model="form.startDate"
|
||||
type="datetime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
placeholder="请选择开始日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="结束时间" prop="endTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.endTime"
|
||||
type="datetime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
placeholder="请选择结束时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<!-- 图片上传控件 -->
|
||||
<el-form-item label="图片" prop="pictureUrl">
|
||||
<el-upload
|
||||
:action="imgUpload.url"
|
||||
:headers="imgUpload.headers"
|
||||
:on-success="handlePictureSuccess"
|
||||
:before-upload="beforePictureUpload"
|
||||
list-type="picture-card"
|
||||
:file-list="fileListShow"
|
||||
:on-preview="handlePictureCardPreview"
|
||||
:on-remove="handleRemovePicture"
|
||||
multiple>
|
||||
<i class="el-icon-plus"></i>
|
||||
</el-upload>
|
||||
<el-dialog :visible.sync="dialogVisible">
|
||||
<img width="100%" :src="dialogImageUrl" />
|
||||
</el-dialog>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
@ -526,7 +547,16 @@ export default {
|
||||
productionAssemblyTime: [
|
||||
{ required: true, message: "生产装配时间不能为空", trigger: "blur" }
|
||||
],*/
|
||||
}
|
||||
},
|
||||
imgUpload: {
|
||||
url: process.env.VUE_APP_BASE_API + "/system/plan/uploadPicture",
|
||||
headers: {Authorization: "Bearer " + getToken()}
|
||||
},
|
||||
dialogVisible: false,
|
||||
dialogImageUrl: '',
|
||||
fileListShow: [],
|
||||
fileListPut: [],
|
||||
type: 0
|
||||
};
|
||||
},
|
||||
created() {
|
||||
@ -881,27 +911,31 @@ export default {
|
||||
handleUpdate(row) {
|
||||
this.loading = true;
|
||||
this.reset();
|
||||
const id = row.id || this.ids
|
||||
const id = row.id || this.ids;
|
||||
getPlan(id).then(response => {
|
||||
this.loading = false;
|
||||
this.form = response.data;
|
||||
console.log(response.data)
|
||||
// this.form.subItems = [
|
||||
// {text: '下 料', startDate: '', duration: ''},
|
||||
// {text: '铆 焊', startDate: '', duration: ''},
|
||||
// {text: '热 处 理', startDate: '', duration: ''},
|
||||
// {text: '普车钻床', startDate: '', duration: ''},
|
||||
// {text: '走心 机', startDate: '', duration: ''},
|
||||
// {text: '龙门立加', startDate: '', duration: ''},
|
||||
// {text: '表面处理', startDate: '', duration: ''},
|
||||
// {text: '外购 件', startDate: '', duration: ''}
|
||||
// ]
|
||||
// 图片回显
|
||||
if (this.form.pictureUrl) {
|
||||
try {
|
||||
this.fileListShow = JSON.parse(this.form.pictureUrl);
|
||||
this.fileListPut = JSON.parse(this.form.pictureUrl);
|
||||
} catch (e) {
|
||||
this.fileListShow = [];
|
||||
this.fileListPut = [];
|
||||
}
|
||||
} else {
|
||||
this.fileListShow = [];
|
||||
this.fileListPut = [];
|
||||
}
|
||||
this.open = true;
|
||||
this.title = "修改排产计划";
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
// 提交前将图片列表转为JSON
|
||||
this.form.pictureUrl = JSON.stringify(this.fileListPut);
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
this.buttonLoading = true;
|
||||
@ -945,6 +979,27 @@ export default {
|
||||
this.download('system/plan/export', {
|
||||
...this.queryParams
|
||||
}, `plan_${new Date().getTime()}.xlsx`)
|
||||
},
|
||||
handlePictureSuccess(response, file) {
|
||||
const imgObj = { name: file.name, url: response.data.url };
|
||||
this.fileListShow.push(imgObj);
|
||||
this.fileListPut.push(imgObj);
|
||||
},
|
||||
beforePictureUpload(file) {
|
||||
const isJPG = file.type === 'image/jpeg';
|
||||
const isPNG = file.type === 'image/png';
|
||||
if (!isJPG && !isPNG) {
|
||||
this.$message.error('上传图片只能是 JPG 或 PNG 格式!');
|
||||
}
|
||||
return isJPG || isPNG;
|
||||
},
|
||||
handlePictureCardPreview(file) {
|
||||
this.dialogImageUrl = file.url;
|
||||
this.dialogVisible = true;
|
||||
},
|
||||
handleRemovePicture(file) {
|
||||
this.fileListShow = this.fileListShow.filter(f => f.name !== file.name);
|
||||
this.fileListPut = this.fileListPut.filter(f => f.name !== file.name);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -0,0 +1,67 @@
|
||||
/* dhtmlx-gantt basic styling */
|
||||
.dhx_cal_data {
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
||||
.dhx_cal_event {
|
||||
position: absolute;
|
||||
cursor: pointer;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.dhx_cal_event_line {
|
||||
background-color: #00a0e9;
|
||||
border: 1px solid #0077b5;
|
||||
}
|
||||
|
||||
.dhx_cal_event_task {
|
||||
background-color: #f5a623;
|
||||
}
|
||||
|
||||
.dhx_cal_event_complete {
|
||||
background-color: #66bb6a;
|
||||
}
|
||||
|
||||
.dhx_gantt_task_line {
|
||||
border-left: 2px solid #00a0e9;
|
||||
}
|
||||
|
||||
.dhx_gantt_grid_line {
|
||||
border-top: 1px solid #ccc;
|
||||
}
|
||||
|
||||
.dhx_gantt_grid_data {
|
||||
background-color: #fafafa;
|
||||
}
|
||||
|
||||
.dhx_gantt_grid_cell {
|
||||
padding: 4px;
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.dhx_gantt_calendar_button {
|
||||
border: 1px solid #ccc;
|
||||
padding: 5px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.dhx_gantt_scale {
|
||||
background-color: #f4f4f4;
|
||||
padding: 5px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.dhx_gantt_scale_cell {
|
||||
border-right: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.dhx_gantt_scale_cell_today {
|
||||
background-color: #ffeb3b;
|
||||
}
|
||||
|
||||
.dhx_gantt_task {
|
||||
background-color: #e1e8f0;
|
||||
border: 1px solid #b0c4de;
|
||||
}
|
||||
@ -5,7 +5,7 @@
|
||||
<el-form :model="queryParams">
|
||||
<el-form-item label="项目令号" prop="routeDescription">
|
||||
<el-select v-model="queryParams.routeDescription" filterable remote :remote-method="handleQuery1"
|
||||
placeholder="请输入令号" clearable :loading="loading">
|
||||
placeholder="请输入令号" clearable :loading="loading">
|
||||
<el-option v-for="item in projectCodes" :key="item" :label="item" :value="item"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@ -21,50 +21,65 @@
|
||||
<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:route:add']">新增
|
||||
v-hasPermi="['system:route: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:route:edit']">修改
|
||||
v-hasPermi="['system:route: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:route:remove']">删除
|
||||
v-hasPermi="['system:route: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:route:export']">导出
|
||||
<el-button type="primary" plain icon="el-icon-download" size="mini" @click="handleExport"
|
||||
v-hasPermi="['system:route:export']">导出
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport"
|
||||
v-hasPermi="['system:details:import']">导入工艺
|
||||
<el-button type="success" plain icon="el-icon-upload" size="mini" @click="handleImport"
|
||||
v-hasPermi="['system:details:importRoute']">导入工艺
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="info" plain icon="el-icon-upload" size="mini" @click="handleImportTime"
|
||||
v-hasPermi="['system:route:importDataTime']">导入时间
|
||||
<el-button type="warning" plain icon="el-icon-time" size="mini" @click="handleImportTime"
|
||||
v-hasPermi="['system:route:importDataTime']">导入时间
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="info" plain icon="el-icon-upload" size="mini" @click="pushRouteBom"
|
||||
v-hasPermi="['system:details:import']">推送工艺
|
||||
<el-button type="info" plain icon="el-icon-share" size="mini" @click="pushRouteBom"
|
||||
v-hasPermi="['system:details:pushRouteBom']">推送工艺
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="info" plain icon="el-icon-upload" size="mini" @click="updateProcessPlan"
|
||||
v-hasPermi="['system:details:import']">更新计划时间
|
||||
<el-button type="danger" plain icon="el-icon-edit" size="mini" @click="updateProcessPlan"
|
||||
v-hasPermi="['system:details:updateProcessPlan']">更新计划时间
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="info" plain icon="el-icon-upload" size="mini" @click="generatePDFs1"
|
||||
v-hasPermi="['system:details:import']">生成PDF
|
||||
<el-button type="success" plain icon="el-icon-setting" size="mini" @click="updateProcesTime"
|
||||
v-hasPermi="['system:details:updateProcesTime']">更新生产订单
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="el-icon-document" size="mini" @click="generatePDFs1"
|
||||
v-hasPermi="['system:details:generatePDFs1']">生成PDF
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" plain icon="el-icon-warning" size="mini" @click="getKindeeExcel"
|
||||
v-hasPermi="['system:route:getKindeeExcel']">获取标准工艺
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" plain icon="el-icon-warning" size="mini" @click="getAllRouteAndUse"
|
||||
v-hasPermi="['system:route:getAllRouteAndUse']">获取全部工艺
|
||||
</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
@ -72,18 +87,18 @@
|
||||
|
||||
<el-form :inline="true" :model="form" ref="ruleForm" size="mini" :rules="rules">
|
||||
<el-table v-if="showtable" v-loading="loading" row-key="id" ref="tree" v-drag:[config]="form.routeList"
|
||||
:tree-props="{ children: 'children' }" :data="form.routeList" stripe :row-class-name="tableRowClassName"
|
||||
:cell-style="columnStyle" border max-height="680px" @cell-click="cellhand" :default-expand-all="true"
|
||||
@selection-change="handleSelectionChange">
|
||||
:tree-props="{ children: 'children' }" :data="form.routeList" stripe :row-class-name="tableRowClassName"
|
||||
:cell-style="columnStyle" border max-height="680px" @cell-click="cellhand" :default-expand-all="true"
|
||||
@selection-change="handleSelectionChange">
|
||||
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column type="selection" width="55" align="center"/>
|
||||
<!-- <el-table-column label="主键ID" align="center" prop="id" v-if="true"/>-->
|
||||
<el-table-column label="操作" align="center">
|
||||
<el-table-column label="操作" width="55" align="center">
|
||||
<template slot-scope="props">
|
||||
<!-- <el-button type="text" icon="el-icon-check" v-if="scope.row.id < 0" @click="onSaveChild()" /> -->
|
||||
<!-- <fromed v-if="props.row.parentId" /> -->
|
||||
<!-- {{props.row.materialCode}} -->
|
||||
<el-button v-if="props.row.parentId" size="mini" class="handle" icon="el-icon el-icon-rank" />
|
||||
<el-button v-if="props.row.parentId" size="mini" class="handle" icon="el-icon el-icon-rank"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
@ -93,12 +108,12 @@
|
||||
scope.row.routeDescription }}</router-link>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
<el-table-column label="物料编码" width="120" align="center" prop="materialCode" />
|
||||
<el-table-column label="名称" width="120" align="center" prop="materialName" />
|
||||
<el-table-column label="物料编码" width="120" align="center" prop="materialCode"/>
|
||||
<el-table-column label="名称" width="120" align="center" prop="materialName"/>
|
||||
|
||||
<el-table-column label="材质" width="80" align="center" prop="material" />
|
||||
<el-table-column label="单重" width="60" align="center" prop="discWeight" />
|
||||
<el-table-column label="可用量"width="60" align="center" prop="firstBatchQuantity">
|
||||
<el-table-column label="材质" width="80" align="center" prop="material"/>
|
||||
<el-table-column label="单重" width="60" align="center" prop="discWeight"/>
|
||||
<el-table-column label="单台数" width="60" align="center" prop="unitQuantity">
|
||||
<template slot-scope="scope">
|
||||
<span :style="{
|
||||
color: scope.row.firstBatchQuantity > 0 ? 'green' : 'red',
|
||||
@ -108,34 +123,35 @@
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="本批数" width="60" align="center" prop="batchQuantity" />
|
||||
<el-table-column label="本批数" width="60" align="center" prop="batchQuantity"/>
|
||||
|
||||
<!--
|
||||
<el-table-column label="材料BOM物料编码" width="220"align="center" prop="rawMaterialCode" />
|
||||
<el-table-column label="材料BOM物料名称"width="220" align="center" prop="rawMaterialName" />
|
||||
<el-table-column label="用量"width="60"align="center" prop="discUsage" />
|
||||
<el-table-column label="单位"width="60" align="center" prop="bomUnit" />-->
|
||||
<el-table-column label="工序号" width="60" align="center" prop="processNo" />
|
||||
<el-table-column label="工作中心" width="84" align="center">
|
||||
<el-table-column label="工序号" width="60" align="center" prop="processNo"/>
|
||||
<el-table-column label="工作中心" width="96" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item v-if="scope.row.isEdit" :prop="'routeList.' + scope.$index + '.workCenter'">
|
||||
<el-select v-model="scope.row.workCenter" placeholder="请选择工作中心" clearable>
|
||||
<el-option v-for="dict in dict.type.work_center" :key="dict.value" :label="dict.label"
|
||||
:value="dict.value" />
|
||||
:value="dict.value"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<span v-else>
|
||||
<dict-tag :options="dict.type.work_center" :value="scope.row.workCenter" />
|
||||
<dict-tag :options="dict.type.work_center" :value="scope.row.workCenter"/>
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="工序名称" width="100" align="center">
|
||||
<el-table-column label="工序名称" width="160" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item v-if="scope.row.id < 0 || scope.row.isEdit"
|
||||
:prop="'routeList.' + scope.$index + '.processName'">
|
||||
:prop="'routeList.' + scope.$index + '.processName'">
|
||||
<el-select v-model="scope.row.processName" filterable remote :remote-method="handleQuery3"
|
||||
placeholder="请输入工序名称" clearable :loading="loading" @change="handleProcessNameChange(scope)">
|
||||
placeholder="请输入工序名称" clearable :loading="loading"
|
||||
@change="handleProcessNameChange(scope)">
|
||||
<el-option v-for="item in processName" :key="item" :label="item" :value="item"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@ -143,10 +159,10 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="序说明" width="200" align="center">
|
||||
<el-table-column label="序说明" width="300" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item v-if="scope.row.id < 0 || scope.row.isEdit"
|
||||
:prop="'routeList.' + scope.$index + '.processDescription'">
|
||||
:prop="'routeList.' + scope.$index + '.processDescription'">
|
||||
<el-input v-model="scope.row.processDescription"></el-input>
|
||||
</el-form-item>
|
||||
<span v-else>{{ scope.row.processDescription }}</span>
|
||||
@ -170,20 +186,20 @@
|
||||
<el-table-column label="活动时长" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item v-if="scope.row.id < 0 || scope.row.isEdit"
|
||||
:prop="'routeList.' + scope.$index + '.activityDuration'">
|
||||
:prop="'routeList.' + scope.$index + '.activityDuration'">
|
||||
<el-input v-model="scope.row.activityDuration"></el-input>
|
||||
</el-form-item>
|
||||
<span v-else>{{ scope.row.activityDuration }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="活动单位" align="center" prop="activityUnit" />
|
||||
<el-table-column label="活动单位" align="center" prop="activityUnit"/>
|
||||
<el-table-column label="序开始时间" align="center" prop="xuStartTime" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item v-if="scope.row.id < 0 || scope.row.isEdit"
|
||||
:prop="'routeList.' + scope.$index + '.xuStartTime'">
|
||||
:prop="'routeList.' + scope.$index + '.xuStartTime'">
|
||||
<el-date-picker v-model="scope.row.xuStartTime" type="date" placeholder="选择序开始时间"
|
||||
value-format="yyyy-MM-dd" format="yyyy-MM-dd">
|
||||
value-format="yyyy-MM-dd" format="yyyy-MM-dd">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<span v-else>{{ parseTime(scope.row.xuStartTime, '{y}-{m}-{d}') }}</span>
|
||||
@ -192,16 +208,17 @@
|
||||
<el-table-column label="序结束时间" align="center" prop="xuEndTime" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item v-if="scope.row.id < 0 || scope.row.isEdit"
|
||||
:prop="'routeList.' + scope.$index + '.xuEndTime'">
|
||||
<el-date-picker v-model="scope.row.xuEndTime" type="date" placeholder="选择序结束时间" value-format="yyyy-MM-dd"
|
||||
format="yyyy-MM-dd">
|
||||
:prop="'routeList.' + scope.$index + '.xuEndTime'">
|
||||
<el-date-picker v-model="scope.row.xuEndTime" type="date" placeholder="选择序结束时间"
|
||||
value-format="yyyy-MM-dd"
|
||||
format="yyyy-MM-dd">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<span v-else>{{ parseTime(scope.row.xuEndTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- //<el-table-column label="单位" align="center" prop="bomUnit" /> -->
|
||||
<!-- <el-table-column label="单台数量" align="center" prop="unitQuantity" /> -->
|
||||
<!-- //<el-table-column label="单位" align="center" prop="bomUnit" /> -->
|
||||
<!-- <el-table-column label="单台数量" align="center" prop="unitQuantity" /> -->
|
||||
|
||||
<el-table-column label="计划开始时间" align="center" prop="planStartTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
@ -215,13 +232,13 @@
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column class="maxWidth" label="操作" width="220" fixed="right" align="center"
|
||||
class-name="small-padding fixed-width">
|
||||
class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button class="btn" size="mini" @click="onAddChild(scope)" v-if="!scope.row.parentId">
|
||||
添加工艺
|
||||
</el-button>
|
||||
<el-button class="btn" size="mini" type="success" @click="onSave(scope)"
|
||||
v-if="!scope.row.parentId && showParentSaveBtn === scope.row.id">
|
||||
v-if="!scope.row.parentId && showParentSaveBtn === scope.row.id">
|
||||
保存工艺
|
||||
</el-button>
|
||||
<template v-else-if="scope.row.parentId">
|
||||
@ -236,11 +253,11 @@
|
||||
<template v-else>
|
||||
<template v-if="scope.row.id > 0">
|
||||
<el-button class="btn" size="mini" type="primary" @click="handleRowEdit(scope)"
|
||||
v-hasPermi="['system:route:edit']">
|
||||
v-hasPermi="['system:route:edit']">
|
||||
修改
|
||||
</el-button>
|
||||
<el-button class="btn" size="mini" type="danger" @click="handleDelete(scope)"
|
||||
v-hasPermi="['system:route:remove']">
|
||||
v-hasPermi="['system:route:remove']">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
@ -257,7 +274,7 @@
|
||||
</el-form>
|
||||
|
||||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
|
||||
@pagination="getList" />
|
||||
@pagination="getList"/>
|
||||
|
||||
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
|
||||
@ -265,12 +282,12 @@
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="物料编码" prop="materialCode">
|
||||
<el-input v-model="form.materialCode" placeholder="请输入物料编码" />
|
||||
<el-input v-model="form.materialCode" placeholder="请输入物料编码"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="物料名称" prop="materialName">
|
||||
<el-input v-model="form.materialName" placeholder="请输入物料名称" />
|
||||
<el-input v-model="form.materialName" placeholder="请输入物料名称"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@ -278,12 +295,12 @@
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="材质" prop="material">
|
||||
<el-input v-model="form.material" placeholder="请输入材质" />
|
||||
<el-input v-model="form.material" placeholder="请输入材质"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="单重" prop="discWeight">
|
||||
<el-input v-model="form.discWeight" placeholder="请输入单重" />
|
||||
<el-input v-model="form.discWeight" placeholder="请输入单重"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@ -303,7 +320,7 @@
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="单台数量" prop="unitQuantity">
|
||||
<el-input-number v-model="form.unitQuantity" :min="0" placeholder="请输入单台数量" />
|
||||
<el-input-number v-model="form.unitQuantity" :min="0" placeholder="请输入单台数量"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@ -311,12 +328,12 @@
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="本批数量" prop="batchQuantity">
|
||||
<el-input-number v-model="form.batchQuantity" :min="0" placeholder="请输入本批数量" />
|
||||
<el-input-number v-model="form.batchQuantity" :min="0" placeholder="请输入本批数量"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="首批数量" prop="firstBatchQuantity">
|
||||
<el-input-number v-model="form.firstBatchQuantity" :min="0" placeholder="请输入首批数量" />
|
||||
<el-input-number v-model="form.firstBatchQuantity" :min="0" placeholder="请输入首批数量"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@ -340,7 +357,7 @@
|
||||
<el-col :span="12">
|
||||
<el-form-item label="工序名称" prop="processName">
|
||||
<el-select v-model="form.processName" filterable remote :remote-method="handleQuery3"
|
||||
placeholder="请输入工序名称" clearable :loading="loading" @change="handleProcessNameChange">
|
||||
placeholder="请输入工序名称" clearable :loading="loading" @change="handleProcessNameChange">
|
||||
<el-option v-for="item in processName" :key="item" :label="item" :value="item"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@ -350,7 +367,7 @@
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="工序说明" prop="processDescription">
|
||||
<el-input type="textarea" v-model="form.processDescription" placeholder="请输入工序说明" />
|
||||
<el-input type="textarea" v-model="form.processDescription" placeholder="请输入工序说明"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@ -367,7 +384,7 @@
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="活动时长" prop="activityDuration">
|
||||
<el-input v-model="form.activityDuration" placeholder="请输入活动时长" />
|
||||
<el-input v-model="form.activityDuration" placeholder="请输入活动时长"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@ -375,15 +392,17 @@
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="序开始时间" prop="xuStartTime">
|
||||
<el-date-picker v-model="form.xuStartTime" type="date" placeholder="选择序开始时间" value-format="yyyy-MM-dd"
|
||||
format="yyyy-MM-dd">
|
||||
<el-date-picker v-model="form.xuStartTime" type="date" placeholder="选择序开始时间"
|
||||
value-format="yyyy-MM-dd"
|
||||
format="yyyy-MM-dd">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="序结束时间" prop="xuEndTime">
|
||||
<el-date-picker v-model="form.xuEndTime" type="date" placeholder="选择序结束时间" value-format="yyyy-MM-dd"
|
||||
format="yyyy-MM-dd">
|
||||
<el-date-picker v-model="form.xuEndTime" type="date" placeholder="选择序结束时间"
|
||||
value-format="yyyy-MM-dd"
|
||||
format="yyyy-MM-dd">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -397,13 +416,13 @@
|
||||
<!-- 导入导入对话框 -->
|
||||
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
|
||||
<el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
|
||||
:action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
|
||||
:on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
|
||||
:action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
|
||||
:on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
|
||||
<i class="el-icon-upload"></i>
|
||||
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
||||
<div class="el-upload__tip text-center" slot="tip">
|
||||
<div class="el-upload__tip" slot="tip">
|
||||
<el-checkbox v-model="upload.updateSupport" />
|
||||
<el-checkbox v-model="upload.updateSupport"/>
|
||||
是否更新已经存在的物料数据
|
||||
</div>
|
||||
<span>仅允许导入xls、xlsx格式文件。</span>
|
||||
@ -420,8 +439,8 @@
|
||||
|
||||
<el-dialog :title="timeUpload.title" :visible.sync="timeUpload.open" width="400px" append-to-body>
|
||||
<el-upload ref="timeUpload" :limit="1" accept=".xlsx, .xls" :headers="timeUpload.headers" :action="timeUpload.url"
|
||||
:disabled="timeUpload.isUploading" :on-progress="handleTimeFileUploadProgress"
|
||||
:on-success="handleTimeFileSuccess" :auto-upload="false" drag>
|
||||
:disabled="timeUpload.isUploading" :on-progress="handleTimeFileUploadProgress"
|
||||
:on-success="handleTimeFileSuccess" :auto-upload="false" drag>
|
||||
<i class="el-icon-upload"></i>
|
||||
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
||||
<div class="el-upload__tip text-center" slot="tip">
|
||||
@ -465,13 +484,13 @@
|
||||
|
||||
<!-- BOM数据表格 -->
|
||||
<el-table :data="filteredBomData" stripe max-height="400px" border v-loading="bomLoading"
|
||||
@selection-change="handleBomSelectionChange" element-loading-text="加载中..."
|
||||
element-loading-spinner="el-icon-loading">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="生产令号" width="150" align="center" prop="projectNumber" />
|
||||
<el-table-column label="物料编码" width="200" align="center" prop="materialCode" show-overflow-tooltip />
|
||||
<el-table-column label="物料名称" width="200" align="center" prop="materialName" show-overflow-tooltip />
|
||||
<el-table-column label="材质" width="70" align="center" prop="materialType" />
|
||||
@selection-change="handleBomSelectionChange" element-loading-text="加载中..."
|
||||
element-loading-spinner="el-icon-loading">
|
||||
<el-table-column type="selection" width="55" align="center"/>
|
||||
<el-table-column label="生产令号" width="150" align="center" prop="projectNumber"/>
|
||||
<el-table-column label="物料编码" width="200" align="center" prop="materialCode" show-overflow-tooltip/>
|
||||
<el-table-column label="物料名称" width="200" align="center" prop="materialName" show-overflow-tooltip/>
|
||||
<el-table-column label="材质" width="70" align="center" prop="materialType"/>
|
||||
|
||||
<el-table-column label="库存" width="88" align="center" prop="singleWeight ">
|
||||
<template slot-scope="scope">
|
||||
@ -483,12 +502,13 @@
|
||||
<span>{{ scope.row.quantity || '0' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="单位" width="88" align="center" prop="unit" />
|
||||
<el-table-column label="单位" width="88" align="center" prop="unit"/>
|
||||
<el-table-column label="操作" align="center" width="150">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleBomEdit(scope.row)">修改</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-delete"
|
||||
@click="handleBomDelete(scope.row)">删除</el-button>
|
||||
@click="handleBomDelete(scope.row)">删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@ -502,7 +522,8 @@
|
||||
<!-- 物料名称 - 支持搜索或手动输入 -->
|
||||
<el-form-item label="物料名称" prop="materialName">
|
||||
<el-autocomplete v-model="bomForm.materialName" :fetch-suggestions="handleMaterialSearch"
|
||||
:trigger-on-focus="false" @select="handleMaterialSelect" placeholder="请输入物料名称" clearable
|
||||
:trigger-on-focus="false" @select="handleMaterialSelect" placeholder="请输入物料名称"
|
||||
clearable
|
||||
popper-class="material-autocomplete-dropdown">
|
||||
<template slot-scope="{ item }">
|
||||
<div class="material-suggestion-item">
|
||||
@ -542,12 +563,14 @@
|
||||
|
||||
<!-- 当前库存 - 允许手动输入 -->
|
||||
<el-form-item label="当前库存" prop="stock">
|
||||
<el-input-number v-model="bomForm.stock" :min="0" :precision="2" placeholder="请输入库存"></el-input-number>
|
||||
<el-input-number v-model="bomForm.stock" :min="0" :precision="2"
|
||||
placeholder="请输入库存"></el-input-number>
|
||||
</el-form-item>
|
||||
|
||||
<!-- 用量 -->
|
||||
<el-form-item label="用量" prop="quantity">
|
||||
<el-input-number v-model="bomForm.quantity" :min="0" :precision="2" placeholder="请输入用量"></el-input-number>
|
||||
<el-input-number v-model="bomForm.quantity" :min="0" :precision="2"
|
||||
placeholder="请输入用量"></el-input-number>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
@ -562,14 +585,14 @@
|
||||
<h3>工艺路线信息</h3>
|
||||
</div>
|
||||
<el-table :data="processRoutes" stripe border v-loading="processLoading">
|
||||
<el-table-column label="工艺编号" prop="fnumber" width="120" align="center" />
|
||||
<el-table-column label="项目令号" prop="project_code" width="180" align="center" />
|
||||
<el-table-column label="物料编码" prop="materialCode" width="140" align="center" />
|
||||
<el-table-column label="物料名称" prop="materialName" min-width="140" align="center" />
|
||||
<el-table-column label="工艺编号" prop="fnumber" width="120" align="center"/>
|
||||
<el-table-column label="项目令号" prop="project_code" width="180" align="center"/>
|
||||
<el-table-column label="物料编码" prop="materialCode" width="140" align="center"/>
|
||||
<el-table-column label="物料名称" prop="materialName" min-width="140" align="center"/>
|
||||
<el-table-column label="操作" width="120" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" @click="handleViewRoute(scope.row)"
|
||||
:type="selectedRouteId === scope.row.id ? 'success' : 'primary'">
|
||||
:type="selectedRouteId === scope.row.id ? 'success' : 'primary'">
|
||||
{{ selectedRouteId === scope.row.id ? '查看中' : '查看' }}
|
||||
</el-button>
|
||||
</template>
|
||||
@ -582,11 +605,11 @@
|
||||
<h4>工序信息 - {{ selectedRoute.fnumber }}</h4>
|
||||
</div>
|
||||
<el-table :data="currentProcessList" stripe border max-height="300px">
|
||||
<el-table-column label="工序号" prop="processNo" width="80" align="center" />
|
||||
<el-table-column label="工作中心" prop="workCenter" width="120" align="center" />
|
||||
<el-table-column label="工序名称" prop="processName" width="120" align="center" />
|
||||
<el-table-column label="工序说明" prop="processDescription" min-width="200" show-overflow-tooltip />
|
||||
<el-table-column label="工序控制" prop="processControl" width="120" align="center" />
|
||||
<el-table-column label="工序号" prop="processNo" width="80" align="center"/>
|
||||
<el-table-column label="工作中心" prop="workCenter" width="120" align="center"/>
|
||||
<el-table-column label="工序名称" prop="processName" width="120" align="center"/>
|
||||
<el-table-column label="工序说明" prop="processDescription" min-width="200" show-overflow-tooltip/>
|
||||
<el-table-column label="工序控制" prop="processControl" width="120" align="center"/>
|
||||
<el-table-column label="活动时长" align="center" width="120">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.activityDuration }} {{ scope.row.activityUnit }}
|
||||
@ -607,16 +630,18 @@ import {
|
||||
addRoute,
|
||||
updateRoute,
|
||||
getDistinctProjectCodes,
|
||||
updateProcessPlan, generatePDFs, updateBom, addBom, deleteBom
|
||||
updateProcessPlan, generatePDFs, updateBom, addBom, deleteBom, getKindeeExcel,getAllRouteAndUse,updateProcesTime
|
||||
|
||||
} from "@/api/system/route";
|
||||
import { getToken } from "../../../utils/auth";
|
||||
import {getToken} from "../../../utils/auth";
|
||||
import Fromed from './fromed'
|
||||
import Bomfrom from './bomfrom'
|
||||
import { getProcessInfoList, pushRouteBom, onSave, getBomInfo, getProcessRouteList } from "@/api/system/route";
|
||||
import { listMaterial } from "@/api/system/material";
|
||||
import {getProcessInfoList, pushRouteBom, onSave, getBomInfo, getProcessRouteList} from "@/api/system/route";
|
||||
import {listMaterial} from "@/api/system/material";
|
||||
|
||||
import dict from "@/utils/dict";
|
||||
import DictData from "@/components/DictData";
|
||||
|
||||
DictData.install();
|
||||
export default {
|
||||
name: "",
|
||||
@ -643,7 +668,7 @@ export default {
|
||||
open: false,
|
||||
title: "",
|
||||
isUploading: false,
|
||||
headers: { Authorization: "Bearer " + getToken() },
|
||||
headers: {Authorization: "Bearer " + getToken()},
|
||||
url: process.env.VUE_APP_BASE_API + "/system/route/importDataTime"
|
||||
},
|
||||
materialOptions: [], // 用于存储物料信息
|
||||
@ -676,7 +701,7 @@ export default {
|
||||
// 非单禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
multiple: false,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 显示父级的保存工艺按钮
|
||||
@ -810,7 +835,7 @@ export default {
|
||||
// 是否更新已经存在的用户数据
|
||||
updateSupport: 0,
|
||||
// 设置上传的请求头部
|
||||
headers: { Authorization: "Bearer " + getToken() },
|
||||
headers: {Authorization: "Bearer " + getToken()},
|
||||
// 上传的地址
|
||||
url: process.env.VUE_APP_BASE_API + "/system/route/importData"
|
||||
},
|
||||
@ -818,25 +843,25 @@ export default {
|
||||
// 表单校验
|
||||
rules: {
|
||||
id: [
|
||||
{ required: true, message: "主键ID不能为空", trigger: "blur" }
|
||||
{required: true, message: "主键ID不能为空", trigger: "blur"}
|
||||
],
|
||||
routeDescription: [
|
||||
{ required: true, message: "工艺路线描述不能为空", trigger: "blur" }
|
||||
{required: true, message: "工艺路线描述不能为空", trigger: "blur"}
|
||||
],
|
||||
materialCode: [
|
||||
{ required: true, message: "物料编码不能为空", trigger: "blur" }
|
||||
{required: true, message: "物料编码不能为空", trigger: "blur"}
|
||||
],
|
||||
materialName: [
|
||||
{ required: true, message: "物料名称不能为空", trigger: "blur" }
|
||||
{required: true, message: "物料名称不能为空", trigger: "blur"}
|
||||
],
|
||||
processControl: [ // 添加工序控制码的验证
|
||||
{ required: true, message: "工序控制码不能为空", trigger: "blur" }
|
||||
{required: true, message: "工序控制码不能为空", trigger: "blur"}
|
||||
],
|
||||
processName: [ // 添加工序名称的验证
|
||||
{ required: true, message: "工序名称不能为空", trigger: "blur" }
|
||||
{required: true, message: "工序名称不能为空", trigger: "blur"}
|
||||
],
|
||||
activityDuration: [ // 添加活动时长的验证
|
||||
{ required: true, message: "活动时长不能为空", trigger: "blur" }
|
||||
{required: true, message: "活动时长不能为空", trigger: "blur"}
|
||||
]
|
||||
},
|
||||
bomDialogVisible: false,
|
||||
@ -855,31 +880,31 @@ export default {
|
||||
},
|
||||
bomRules: {
|
||||
materialName: [
|
||||
{ required: true, message: '请输入物料名称', trigger: 'blur' }
|
||||
{required: true, message: '请输入物料名称', trigger: 'blur'}
|
||||
],
|
||||
materialCode: [
|
||||
{ required: true, message: '请输入物料编码', trigger: 'blur' }
|
||||
{required: true, message: '请输入物料编码', trigger: 'blur'}
|
||||
],
|
||||
materialType: [
|
||||
{ required: true, message: '请选择材质', trigger: 'change' }
|
||||
{required: true, message: '请选择材质', trigger: 'change'}
|
||||
],
|
||||
unit: [
|
||||
{ required: true, message: '请选择单位', trigger: 'change' }
|
||||
{required: true, message: '请选择单位', trigger: 'change'}
|
||||
],
|
||||
quantity: [
|
||||
{ required: true, message: '请输入用量', trigger: 'blur' }
|
||||
{required: true, message: '请输入用量', trigger: 'blur'}
|
||||
],
|
||||
projectNumber: [
|
||||
{ required: true, message: '项目令号不能为空', trigger: 'blur' }
|
||||
{required: true, message: '项目令号不能为空', trigger: 'blur'}
|
||||
],
|
||||
parentMaterialCode: [
|
||||
{ required: true, message: '父级物料编码不能为空', trigger: 'blur' }
|
||||
{required: true, message: '父级物料编码不能为空', trigger: 'blur'}
|
||||
],
|
||||
parentMaterialName: [
|
||||
{ required: true, message: '父级物料名称不能为空', trigger: 'blur' }
|
||||
{required: true, message: '父级物料名称不能为空', trigger: 'blur'}
|
||||
],
|
||||
stock: [
|
||||
{ required: true, message: '库存不能为空', trigger: 'blur' }
|
||||
{required: true, message: '库存不能为空', trigger: 'blur'}
|
||||
]
|
||||
},
|
||||
selectedBomRows: [],
|
||||
@ -899,6 +924,7 @@ export default {
|
||||
selectedRouteId: null, // 当前选中的工艺路线ID
|
||||
selectedRoute: null, // 当前选中的工艺路线完整信息
|
||||
currentProcessList: [], // 当前显示的工序列表
|
||||
dataList: [], // 存储获取到的数据
|
||||
};
|
||||
},
|
||||
created() {
|
||||
@ -935,11 +961,77 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getKindeeExcel() {
|
||||
// 显示加载状态
|
||||
const loadingInstance = this.$loading({
|
||||
lock: true,
|
||||
text: '正在获取已投放的工艺数据...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(255, 255, 255, 0.7)',
|
||||
});
|
||||
this.loading = true;
|
||||
|
||||
// 调用 reset 方法,重置表单或状态
|
||||
this.reset();
|
||||
|
||||
// 获取生产订单号
|
||||
const rooteProdet = this.$route.query.productionOrderNo;
|
||||
|
||||
// 调用 getKindeeExcel 方法
|
||||
getKindeeExcel(rooteProdet)
|
||||
.then(data => {
|
||||
// 处理返回的数据
|
||||
this.$message.success('获取工艺成功!');
|
||||
})
|
||||
.catch(error => {
|
||||
this.$message.error(error.message); // 显示错误消息
|
||||
})
|
||||
.finally(() => {
|
||||
// 关闭加载状态
|
||||
loadingInstance.close();
|
||||
this.loading = false; // 关闭 loading 状态
|
||||
});
|
||||
this.handleBomRefresh();
|
||||
},
|
||||
|
||||
dict,
|
||||
getAllRouteAndUse() {
|
||||
// 显示加载状态
|
||||
const loadingInstance = this.$loading({
|
||||
lock: true,
|
||||
text: '正在获取全部工艺数据...',
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(255, 255, 255, 0.7)',
|
||||
});
|
||||
this.loading = true;
|
||||
|
||||
// 调用 reset 方法,重置表单或状态
|
||||
this.reset();
|
||||
|
||||
// 获取生产订单号
|
||||
const rooteProdet = this.$route.query.productionOrderNo;
|
||||
|
||||
// 调用 getAllRouteAndUse 方法
|
||||
getAllRouteAndUse(rooteProdet)
|
||||
.then(data => {
|
||||
// 处理返回的数据
|
||||
this.$message.success('获取全部工艺成功!');
|
||||
})
|
||||
.catch(error => {
|
||||
this.$message.error(error.message); // 显示错误消息
|
||||
})
|
||||
.finally(() => {
|
||||
// 关闭加载状态
|
||||
loadingInstance.close();
|
||||
this.loading = false; // 关闭 loading 状态
|
||||
});
|
||||
this.handleBomRefresh();
|
||||
},
|
||||
|
||||
|
||||
// 处理工作中心变化
|
||||
handleWorkCenterChange(scope) {
|
||||
const { row } = scope;
|
||||
const {row} = scope;
|
||||
const currentIndex = this.form.routeList.findIndex(item => item === row);
|
||||
|
||||
// 移除自动设置工序控制码的逻辑
|
||||
@ -971,7 +1063,7 @@ export default {
|
||||
}
|
||||
}
|
||||
|
||||
return { valid: true };
|
||||
return {valid: true};
|
||||
},
|
||||
|
||||
// 开始编辑行
|
||||
@ -1029,9 +1121,6 @@ export default {
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/** 导入时间按钮操作 */
|
||||
handleImportTime() {
|
||||
this.timeUpload.title = "导入时间";
|
||||
@ -1047,7 +1136,7 @@ export default {
|
||||
this.timeUpload.isUploading = false;
|
||||
this.$refs.timeUpload.clearFiles();
|
||||
this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>"
|
||||
+ response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true });
|
||||
+ response.msg + "</div>", "导入结果", {dangerouslyUseHTMLString: true});
|
||||
this.getList();
|
||||
},
|
||||
// 提交时间文件上传
|
||||
@ -1058,7 +1147,7 @@ export default {
|
||||
const tbody = document.querySelector('.el-table__body-wrapper tbody');
|
||||
const _this = this;
|
||||
Sortable.create(tbody, {
|
||||
onEnd({ newIndex, oldIndex }) {
|
||||
onEnd({newIndex, oldIndex}) {
|
||||
const currRow = _this.form.routeList[oldIndex];
|
||||
// 只处理子工序
|
||||
if (currRow.parentId) {
|
||||
@ -1109,7 +1198,6 @@ export default {
|
||||
this.bomData = response || [];
|
||||
this.totalBomCount = this.bomData.length;
|
||||
}).catch(error => {
|
||||
console.error('获取BOM数据失败:', error);
|
||||
this.$message.error('获取BOM数据失败');
|
||||
this.bomData = [];
|
||||
}).finally(() => {
|
||||
@ -1163,7 +1251,7 @@ export default {
|
||||
});
|
||||
},
|
||||
// 控制表格可移动部分
|
||||
tableRowClassName({ row, rowIndex }) {
|
||||
tableRowClassName({row, rowIndex}) {
|
||||
// 过滤掉父节点
|
||||
if (!row.parentId) {
|
||||
return "filtered";
|
||||
@ -1259,7 +1347,6 @@ export default {
|
||||
},
|
||||
|
||||
|
||||
|
||||
setTotalWeight() {
|
||||
const totalWeight = this.$route.query.productionOrderNo;
|
||||
if (totalWeight) {
|
||||
@ -1326,7 +1413,7 @@ export default {
|
||||
this.upload.isUploading = false;
|
||||
this.$refs.upload.clearFiles();
|
||||
this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>"
|
||||
+ response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true });
|
||||
+ response.msg + "</div>", "导入结果", {dangerouslyUseHTMLString: true});
|
||||
this.getList();
|
||||
},
|
||||
// 提交上传文件
|
||||
@ -1389,7 +1476,7 @@ export default {
|
||||
getRoute(id).then(response => {
|
||||
this.loading = false;
|
||||
// 只提取工艺相关字段
|
||||
const { workCenter, processName, processDescription, processControl, activityDuration } = response.data;
|
||||
const {workCenter, processName, processDescription, processControl, activityDuration} = response.data;
|
||||
this.form = {
|
||||
...this.form, // 保留现有数据
|
||||
id: id,
|
||||
@ -1407,7 +1494,6 @@ export default {
|
||||
},
|
||||
|
||||
|
||||
|
||||
/**推送工艺 */
|
||||
async pushRouteBom() {
|
||||
// 获取生产订单号
|
||||
@ -1449,7 +1535,7 @@ export default {
|
||||
timeoutPromise
|
||||
]);
|
||||
// 处理后端返回的数据
|
||||
const { duplicateRoutes, failedRoutes, successfulRoutes } = response;
|
||||
const {duplicateRoutes, failedRoutes, successfulRoutes} = response;
|
||||
// 提取物料编码
|
||||
const duplicateCodes = duplicateRoutes.join(', ');
|
||||
const failedCodes = failedRoutes.map(route => route.materialCode).join(', ');
|
||||
@ -1494,7 +1580,7 @@ export default {
|
||||
this.loading = false;
|
||||
}
|
||||
},
|
||||
/** 更新计划<EFBFBD><EFBFBD><EFBFBD>间*/
|
||||
/** 更新计划时间间*/
|
||||
updateProcessPlan(row) {
|
||||
// 显示加载状态
|
||||
this.loading = true;
|
||||
@ -1524,6 +1610,36 @@ export default {
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
/** 更新生产订单时间*/
|
||||
updateProcesTime(row) {
|
||||
// 显示加载状态
|
||||
this.loading = true;
|
||||
// 调用 reset 方法,重置表单或状态
|
||||
this.reset();
|
||||
// 获取生产订单号
|
||||
const rooteProdet = this.$route.query.productionOrderNo;
|
||||
console.log(rooteProdet);
|
||||
|
||||
// 调用封装好的 API 方法
|
||||
updateProcesTime(rooteProdet)
|
||||
.then(response => {
|
||||
// 假设后端返回的数据可以直接赋值给表单
|
||||
this.form = response;
|
||||
// 弹出成功消息
|
||||
this.$modal.msgSuccess("更新" + rooteProdet + "生产订单成功");
|
||||
// 调用方法更新列表
|
||||
this.getList();
|
||||
})
|
||||
.catch(error => {
|
||||
// 处理错误,弹出错误提示
|
||||
this.$modal.msgError("更新,请重试!");
|
||||
console.error('更新生产订单失败:', error);
|
||||
})
|
||||
.finally(() => {
|
||||
// 隐藏加载状态
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
generatePDFs1(row) {
|
||||
// 显示加载状态
|
||||
this.loading = true;
|
||||
@ -1537,7 +1653,7 @@ export default {
|
||||
generatePDFs(rooteProdet)
|
||||
.then(response => {
|
||||
|
||||
let blob = new Blob([response], { type: 'application/zip' })
|
||||
let blob = new Blob([response], {type: 'application/zip'})
|
||||
let url = window.URL.createObjectURL(blob)
|
||||
const link = document.createElement('a') // 创建a标签
|
||||
link.href = url
|
||||
@ -1653,7 +1769,8 @@ export default {
|
||||
}).then(() => {
|
||||
this.$message.success('删除成功');
|
||||
this.handleBomRefresh();
|
||||
}).catch(() => { });
|
||||
}).catch(() => {
|
||||
});
|
||||
},
|
||||
|
||||
// 提交BOM表单
|
||||
|
||||
@ -90,6 +90,8 @@
|
||||
<el-table-column label="主键ID" align="center" prop="id" v-if="true"/>
|
||||
<el-table-column label="物料编码" align="center" prop="materialCode" />
|
||||
<el-table-column label="物料名称" align="center" prop="materialName" />
|
||||
<el-table-column label="材质" align="center" prop="wlMaterial" />
|
||||
<el-table-column label="类型" align="center" prop="type" />
|
||||
<el-table-column label="最低安全库存" align="center" prop="minSafetyStock" />
|
||||
<el-table-column label="最高安全库存" align="center" prop="maxSafetyStock" />
|
||||
<el-table-column label="即时库存" align="center" prop="currentStock" />
|
||||
|
||||
@ -9,11 +9,19 @@
|
||||
<el-input v-model="queryParams.materialName" placeholder="请输入物料名称" clearable
|
||||
@keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="所需库存" prop="requiredStock">
|
||||
<el-form-item label="材质" prop="wlMaterial">
|
||||
<el-input
|
||||
v-model="queryParams.wlMaterial"
|
||||
placeholder="请输入材质"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="预计可用量" prop="requiredStock">
|
||||
<el-input v-model="queryParams.requiredStock" placeholder="请输入所需库存" clearable
|
||||
@keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="当前库存" prop="currentStock">
|
||||
<el-form-item label="即时库存" prop="currentStock">
|
||||
<el-input v-model="queryParams.currentStock" placeholder="请输入当前库存" clearable
|
||||
@keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
@ -22,6 +30,31 @@
|
||||
placeholder="请选择触发时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否符合要求" prop="safeStatus">
|
||||
<el-select v-model="queryParams.safeStatus" placeholder="请选择" clearable>
|
||||
<el-option label="是" :value="1" />
|
||||
<el-option label="否" :value="0" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="分组" prop="wlMaterial">
|
||||
<el-select v-model="queryParams.wlMaterial" placeholder="请选择" clearable>
|
||||
<el-option label="30S" value="30S" />
|
||||
<el-option label="30D" value="30D" />
|
||||
<el-option label="35E" value="35E" />
|
||||
<el-option label="40S" value="40S" />
|
||||
<el-option label="35R" value="35R" />
|
||||
<el-option label="40R" value="40R" />
|
||||
<el-option label="40C" value="40C" />
|
||||
<el-option label="60R" value="60R" />
|
||||
<el-option label="80R" value="80R" />
|
||||
<el-option label="通用" value="通用" />
|
||||
<el-option label="行程检测" value="行程检测" />
|
||||
<el-option label="行程检测白模具三" value="行程检测白模具三" />
|
||||
<el-option label="行程检测灰模具三" value="行程检测灰模具三" />
|
||||
<el-option label="行程检测模具四" value="行程检测模具四" />
|
||||
<el-option label="行程检测模具五" value="行程检测模具五" />
|
||||
</el-select>
|
||||
</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>
|
||||
@ -67,23 +100,30 @@
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="物料名称" align="center" prop="materialName" />
|
||||
<el-table-column label="所需库存" align="center" prop="requiredStock" />
|
||||
<el-table-column label="当前库存" align="center" prop="currentStock" />
|
||||
<el-table-column label="材质 " align="center" width="200" prop="documentType" />
|
||||
<el-table-column label="预计可用量" align="center" prop="currentStock" />
|
||||
<!-- <el-table-column label="即时库存" align="center" prop="currentStock" />-->
|
||||
|
||||
<el-table-column label="可用库存" align="center" prop="availableStock" />
|
||||
<el-table-column label="库存量" align="center" prop="secAvbqty" />
|
||||
<el-table-column label="生产订单数量" align="center" prop="productionQty" />
|
||||
<el-table-column label="采购订单数量" align="center" prop="purchaseQty" />
|
||||
<el-table-column label="预留量" align="center" prop="secQty" />
|
||||
<el-table-column label="用料清单未领料数量" align="center" prop="availableStock" />
|
||||
<el-table-column label="即时库存" align="center" prop="secAvbqty" />
|
||||
|
||||
|
||||
<el-table-column label="生产订单未入库数量" align="center" prop="productionQty" />
|
||||
<el-table-column label="采购订单未入库数量" align="center" prop="purchaseQty" />
|
||||
<el-table-column label="最大安全库存" align="center" prop="maxsafetyStock" />
|
||||
<el-table-column label="最低安全库存" align="center" prop="minsafetyStock" />
|
||||
|
||||
<el-table-column label="分组" align="center" prop="wlMaterial" />
|
||||
<el-table-column label="是否符合安全库存要求" align="center" prop="safeStatus">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.safe_status" :value="scope.row.safeStatus"></dict-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="触发时间" align="center" prop="triggerTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.triggerTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="单据类型 " align="center" width="200" prop="documentType" />
|
||||
|
||||
<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)"
|
||||
@ -137,6 +177,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
import {
|
||||
listStockData,
|
||||
getStockData,
|
||||
@ -145,10 +186,12 @@ import {
|
||||
updateStockData,
|
||||
generateDoc,
|
||||
logs,
|
||||
fetchLogs
|
||||
} from "@/api/system/stockData";
|
||||
|
||||
import dict from "@/utils/dict";
|
||||
import DictData from "@/components/DictData";
|
||||
DictData.install();
|
||||
export default {
|
||||
dicts: ['safe_status'],
|
||||
name: "StockData",
|
||||
data() {
|
||||
return {
|
||||
@ -182,6 +225,7 @@ export default {
|
||||
currentStock: undefined,
|
||||
triggerTime: undefined,
|
||||
documentType: undefined,
|
||||
wlMaterial: undefined,
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
@ -231,6 +275,7 @@ export default {
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
dict,
|
||||
/** 查询安全库存单据列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
@ -256,6 +301,8 @@ export default {
|
||||
triggerTime: undefined,
|
||||
documentType: undefined,
|
||||
createTime: undefined,
|
||||
safeStatus: undefined,
|
||||
wlMaterial: undefined,
|
||||
updateTime: undefined,
|
||||
createBy: undefined,
|
||||
updateBy: undefined
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
<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="productionOrderNumber">
|
||||
<!-- <el-form-item label="生产令号" prop="productionOrderNumber">
|
||||
<el-input
|
||||
v-model="queryParams.productionOrderNumber"
|
||||
placeholder="请输入生产令号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form-item>-->
|
||||
<el-form-item label="物料编码" prop="materialCode">
|
||||
<el-input
|
||||
v-model="queryParams.materialCode"
|
||||
@ -25,28 +25,28 @@
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="数量" prop="quantity">
|
||||
<el-form-item label="仓库编码" prop="quantity">
|
||||
<el-input
|
||||
v-model="queryParams.quantity"
|
||||
placeholder="请输入数量"
|
||||
placeholder="请输入仓库编码"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="库存" prop="inventory">
|
||||
<el-form-item label="仓位编码" prop="inventory">
|
||||
<el-input
|
||||
v-model="queryParams.inventory"
|
||||
placeholder="请输入库存"
|
||||
placeholder="请输入仓位编码"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="需求时间" prop="demandTime">
|
||||
<!-- <el-form-item label="需求时间" prop="demandTime">
|
||||
<el-date-picker clearable
|
||||
v-model="queryParams.demandTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择需求时间">
|
||||
v-model="queryParams.demandTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择需求时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remarks">
|
||||
@ -56,7 +56,7 @@
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
</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>
|
||||
@ -106,18 +106,17 @@
|
||||
v-hasPermi="['system:total:export']"
|
||||
>导出</el-button>
|
||||
</el-col>
|
||||
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="totalList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="" align="center" prop="id" v-if="true"/>
|
||||
<el-table-column label="生产令号" align="center" prop="productionOrderNumber" />
|
||||
<!-- <el-table-column label="" align="center" prop="id" v-if="true"/>
|
||||
<el-table-column label="生产令号" align="center" prop="productionOrderNumber" />-->
|
||||
<el-table-column label="物料编码" align="center" prop="materialCode" />
|
||||
<el-table-column label="物料名称" align="center" prop="materialName" />
|
||||
<el-table-column label="数量" align="center" prop="quantity" />
|
||||
<el-table-column label="库存" align="center" prop="inventory" />
|
||||
<el-table-column label="仓库编码" align="center" prop="quantity" />
|
||||
<el-table-column label="仓位编码" align="center" prop="inventory" />
|
||||
<el-table-column label="需求时间" align="center" prop="demandTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.demandTime, '{y}-{m}-{d}') }}</span>
|
||||
@ -155,27 +154,27 @@
|
||||
<!-- 添加或修改物料汇总对话框 -->
|
||||
<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="productionOrderNumber">
|
||||
<!-- <el-form-item label="生产令号" prop="productionOrderNumber">
|
||||
<el-input v-model="form.productionOrderNumber" placeholder="请输入生产令号" />
|
||||
</el-form-item>
|
||||
</el-form-item>-->
|
||||
<el-form-item label="物料编码" prop="materialCode">
|
||||
<el-input v-model="form.materialCode" placeholder="请输入物料编码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="物料名称" prop="materialName">
|
||||
<el-input v-model="form.materialName" placeholder="请输入物料名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="数量" prop="quantity">
|
||||
<el-input v-model="form.quantity" placeholder="请输入数量" />
|
||||
<el-form-item label="仓库编码" prop="quantity">
|
||||
<el-input v-model="form.quantity" placeholder="请输入仓库编码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="库存" prop="inventory">
|
||||
<el-input v-model="form.inventory" placeholder="请输入库存" />
|
||||
<el-form-item label="仓位编码" prop="inventory">
|
||||
<el-input v-model="form.inventory" placeholder="请输入仓位编码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="需求时间" prop="demandTime">
|
||||
<el-date-picker clearable
|
||||
v-model="form.demandTime"
|
||||
type="datetime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
placeholder="请选择需求时间">
|
||||
v-model="form.demandTime"
|
||||
type="datetime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
placeholder="请选择需求时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remarks">
|
||||
@ -233,12 +232,7 @@ export default {
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
id: [
|
||||
{ required: true, message: "不能为空", trigger: "blur" }
|
||||
],
|
||||
productionOrderNumber: [
|
||||
{ required: true, message: "生产令号不能为空", trigger: "blur" }
|
||||
],
|
||||
|
||||
materialCode: [
|
||||
{ required: true, message: "物料编码不能为空", trigger: "blur" }
|
||||
],
|
||||
@ -246,17 +240,15 @@ export default {
|
||||
{ required: true, message: "物料名称不能为空", trigger: "blur" }
|
||||
],
|
||||
quantity: [
|
||||
{ required: true, message: "数量不能为空", trigger: "blur" }
|
||||
{ required: true, message: "仓库编码不能为空", trigger: "blur" }
|
||||
],
|
||||
inventory: [
|
||||
{ required: true, message: "库存不能为空", trigger: "blur" }
|
||||
{ required: true, message: "仓位编码不能为空", trigger: "blur" }
|
||||
],
|
||||
demandTime: [
|
||||
{ required: true, message: "需求时间不能为空", trigger: "blur" }
|
||||
],
|
||||
remarks: [
|
||||
{ required: true, message: "备注不能为空", trigger: "blur" }
|
||||
]
|
||||
|
||||
}
|
||||
};
|
||||
},
|
||||
@ -316,7 +308,7 @@ export default {
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = "添加物料汇总";
|
||||
this.title = "添加仓位编码";
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
@ -327,7 +319,7 @@ export default {
|
||||
this.loading = false;
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = "修改物料汇总";
|
||||
this.title = "修改仓位编码";
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
|
||||
@ -40,6 +40,14 @@ module.exports = {
|
||||
pathRewrite: {
|
||||
['^' + process.env.VUE_APP_BASE_API]: ''
|
||||
}
|
||||
},
|
||||
'/all': {
|
||||
//target: `http://192.168.5.23:9000`,
|
||||
target: `http://192.168.5.18:9000`,
|
||||
changeOrigin: true,
|
||||
pathRewrite: {
|
||||
'^/all': ''
|
||||
}
|
||||
}
|
||||
},
|
||||
disableHostCheck: true
|
||||
@ -132,5 +140,9 @@ module.exports = {
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
},
|
||||
transpileDependencies: [
|
||||
'vue-echarts',
|
||||
'resize-detector'
|
||||
]
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user