projects/mes-dy #63
6
.env.dev
6
.env.dev
@ -1,7 +1,7 @@
|
|||||||
###
|
###
|
||||||
# @Author: Do not edit
|
# @Author: Do not edit
|
||||||
# @Date: 2023-08-29 09:40:39
|
# @Date: 2023-08-29 09:40:39
|
||||||
# @LastEditTime: 2023-11-03 11:16:12
|
# @LastEditTime: 2023-11-06 09:08:54
|
||||||
# @LastEditors: DY
|
# @LastEditors: DY
|
||||||
# @Description:
|
# @Description:
|
||||||
###
|
###
|
||||||
@ -13,11 +13,11 @@ VUE_APP_TITLE = MES系统
|
|||||||
|
|
||||||
# 芋道管理系统/开发环境
|
# 芋道管理系统/开发环境
|
||||||
# VUE_APP_BASE_API = 'http://100.64.0.26:48082'
|
# VUE_APP_BASE_API = 'http://100.64.0.26:48082'
|
||||||
VUE_APP_BASE_API = 'http://192.168.0.33:48082'
|
# VUE_APP_BASE_API = 'http://192.168.0.33:48082'
|
||||||
# VUE_APP_BASE_API = 'http://192.168.2.173:48080'
|
# VUE_APP_BASE_API = 'http://192.168.2.173:48080'
|
||||||
# VUE_APP_BASE_API = 'http://192.168.1.49:48080'
|
# VUE_APP_BASE_API = 'http://192.168.1.49:48080'
|
||||||
# VUE_APP_BASE_API = 'http://192.168.1.8:48080'
|
# VUE_APP_BASE_API = 'http://192.168.1.8:48080'
|
||||||
# VUE_APP_BASE_API = 'http://192.168.1.56:48080'
|
VUE_APP_BASE_API = 'http://192.168.1.56:48080'
|
||||||
# VUE_APP_BASE_API = 'http://192.168.1.188:48080'
|
# VUE_APP_BASE_API = 'http://192.168.1.188:48080'
|
||||||
# VUE_APP_BASE_API = 'http://192.168.2.159:48080'
|
# VUE_APP_BASE_API = 'http://192.168.2.159:48080'
|
||||||
|
|
||||||
|
60
src/api/base/coreAlarmLog.js
Normal file
60
src/api/base/coreAlarmLog.js
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
* @Author: Do not edit
|
||||||
|
* @Date: 2023-10-21 11:50:46
|
||||||
|
* @LastEditTime: 2023-11-03 15:25:55
|
||||||
|
* @LastEditors: DY
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 创建异常警告
|
||||||
|
export function createcoreAlarmLog(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-alarm-log/create',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新异常警告
|
||||||
|
export function updatecoreAlarmLog(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-alarm-log/update',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除异常警告
|
||||||
|
export function deletecoreAlarmLog(id) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-alarm-log/delete?id=' + id,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得异常警告
|
||||||
|
export function getcoreAlarmLog(id) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-alarm-log/get?id=' + id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得警告分页
|
||||||
|
export function getcoreAlarmLogPage(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-alarm-log/page',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得所有列表
|
||||||
|
export function getcoreAlarmLogList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-alarm-log/list',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
111
src/api/base/coreProduct.js
Normal file
111
src/api/base/coreProduct.js
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
/*
|
||||||
|
* @Author: Do not edit
|
||||||
|
* @Date: 2023-10-21 11:50:46
|
||||||
|
* @LastEditTime: 2023-11-04 10:42:50
|
||||||
|
* @LastEditors: DY
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 创建产品
|
||||||
|
export function createCoreProduct(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-product/create',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新产品
|
||||||
|
export function updateCoreProduct(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-product/update',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除产品
|
||||||
|
export function deleteCoreProduct(id) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-product/delete?id=' + id,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得产品
|
||||||
|
export function getCoreProduct(id) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-product/get?id=' + id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得产品code
|
||||||
|
export function getCode() {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-product/getCode',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得产品分页
|
||||||
|
export function getCoreProductPage(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-product/page',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得所有列表
|
||||||
|
export function getCoreProductList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-product/listAll',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建产品属性
|
||||||
|
export function createCoreProductAttr(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-product-attr/create',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新产品属性
|
||||||
|
export function updateCoreProductAttr(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-product-attr/update',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除产品属性
|
||||||
|
export function deleteCoreProductAttr(id) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-product-attr/delete?id=' + id,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得产品属性
|
||||||
|
export function getCoreProductAttr(id) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-product-attr/get?id=' + id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得产品属性分页
|
||||||
|
export function getCoreProductAttrPage(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-product-attr/page',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
68
src/api/base/coreProductionLine.js
Normal file
68
src/api/base/coreProductionLine.js
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
/*
|
||||||
|
* @Author: Do not edit
|
||||||
|
* @Date: 2023-10-21 11:50:46
|
||||||
|
* @LastEditTime: 2023-11-03 19:06:15
|
||||||
|
* @LastEditors: DY
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 创建产线
|
||||||
|
export function createCorePL(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-production-line/create',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新产线
|
||||||
|
export function updateCorePL(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-production-line/update',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除产线
|
||||||
|
export function deleteCorePL(id) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-production-line/delete?id=' + id,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得产线
|
||||||
|
export function getCorePL(id) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-production-line/get?id=' + id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得产线code
|
||||||
|
export function getCode() {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-production-line/getCode',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得产线分页
|
||||||
|
export function getCorePLPage(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-production-line/page',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得所有列表
|
||||||
|
export function getCorePLList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-production-line/listAll',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
111
src/api/base/coreWorkOrder.js
Normal file
111
src/api/base/coreWorkOrder.js
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
/*
|
||||||
|
* @Author: Do not edit
|
||||||
|
* @Date: 2023-10-21 11:50:46
|
||||||
|
* @LastEditTime: 2023-11-06 10:50:57
|
||||||
|
* @LastEditors: DY
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 创建工单
|
||||||
|
export function createCoreWO(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-work-order/create',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新工单
|
||||||
|
export function updateCoreWO(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-work-order/update',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除工单
|
||||||
|
export function deleteCoreWO(id) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-work-order/delete?id=' + id,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得工单
|
||||||
|
export function getCoreWO(id) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-work-order/get?id=' + id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得工单code
|
||||||
|
export function getCode() {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-work-order/getCode',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得工单分页
|
||||||
|
export function getCoreWOPage(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-work-order/page',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得所有列表
|
||||||
|
export function getCoreWOList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-work-order/listbyfilter',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建工单预使用原料
|
||||||
|
export function createCoreWOMa(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-work-order-material/create',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新工单预使用原料
|
||||||
|
export function updateCoreWOMa(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-work-order-material/update',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除工单预使用原料
|
||||||
|
export function deleteCoreWOMa(id) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-work-order-material/delete?id=' + id,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得工单预使用原料
|
||||||
|
export function getCoreWOMa(id) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-work-order-material/get?id=' + id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得工单预使用原料分页
|
||||||
|
export function getCoreWOMaPage(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-work-order-material/page',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
68
src/api/base/coreWorkshopSection.js
Normal file
68
src/api/base/coreWorkshopSection.js
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
/*
|
||||||
|
* @Author: Do not edit
|
||||||
|
* @Date: 2023-10-21 11:50:46
|
||||||
|
* @LastEditTime: 2023-11-03 19:18:00
|
||||||
|
* @LastEditors: DY
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 创建工段
|
||||||
|
export function createCWSection(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-workshop-section/create',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新工段
|
||||||
|
export function updateCWSection(data) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-workshop-section/update',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除工段
|
||||||
|
export function deleteCWSection(id) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-workshop-section/delete?id=' + id,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得工段
|
||||||
|
export function getCWSection(id) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-workshop-section/get?id=' + id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得工段code
|
||||||
|
export function getCode() {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-workshop-section/getCode',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得工段分页
|
||||||
|
export function getCWSectionPage(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-workshop-section/page',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得所有列表
|
||||||
|
export function getCWSectionList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-workshop-section/listAll',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
@ -1,9 +1,16 @@
|
|||||||
|
/*
|
||||||
|
* @Author: Do not edit
|
||||||
|
* @Date: 2023-10-21 10:11:01
|
||||||
|
* @LastEditTime: 2023-11-03 19:03:44
|
||||||
|
* @LastEditors: DY
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
import request from '@/utils/request'
|
import request from '@/utils/request'
|
||||||
|
|
||||||
// 创建工厂
|
// 创建工厂
|
||||||
export function createFactory(data) {
|
export function createFactory(data) {
|
||||||
return request({
|
return request({
|
||||||
url: '/base/factory/create',
|
url: '/base/core-factory/create',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: data
|
data: data
|
||||||
})
|
})
|
||||||
@ -12,7 +19,7 @@ export function createFactory(data) {
|
|||||||
// 更新工厂
|
// 更新工厂
|
||||||
export function updateFactory(data) {
|
export function updateFactory(data) {
|
||||||
return request({
|
return request({
|
||||||
url: '/base/factory/update',
|
url: '/base/core-factory/update',
|
||||||
method: 'put',
|
method: 'put',
|
||||||
data: data
|
data: data
|
||||||
})
|
})
|
||||||
@ -21,7 +28,7 @@ export function updateFactory(data) {
|
|||||||
// 删除工厂
|
// 删除工厂
|
||||||
export function deleteFactory(id) {
|
export function deleteFactory(id) {
|
||||||
return request({
|
return request({
|
||||||
url: '/base/factory/delete?id=' + id,
|
url: '/base/core-factory/delete?id=' + id,
|
||||||
method: 'delete'
|
method: 'delete'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -29,21 +36,30 @@ export function deleteFactory(id) {
|
|||||||
// 获得工厂
|
// 获得工厂
|
||||||
export function getFactory(id) {
|
export function getFactory(id) {
|
||||||
return request({
|
return request({
|
||||||
url: '/base/factory/get?id=' + id,
|
url: '/base/core-factory/get?id=' + id,
|
||||||
method: 'get'
|
method: 'get'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 获得工厂code
|
// 获得工厂code
|
||||||
export function getCode() {
|
export function getCode() {
|
||||||
return request({
|
return request({
|
||||||
url: '/base/factory/getCode',
|
url: '/base/core-factory/getCode',
|
||||||
method: 'get'
|
method: 'get'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 获得工厂分页
|
// 获得工厂分页
|
||||||
export function getFactoryPage(query) {
|
export function getFactoryPage(query) {
|
||||||
return request({
|
return request({
|
||||||
url: '/base/factory/page',
|
url: '/base/core-factory/page',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得所有列表
|
||||||
|
export function getFactoryList(query) {
|
||||||
|
return request({
|
||||||
|
url: '/base/core-factory/listAll',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: query
|
params: query
|
||||||
})
|
})
|
||||||
@ -52,7 +68,7 @@ export function getFactoryPage(query) {
|
|||||||
// 导出工厂 Excel
|
// 导出工厂 Excel
|
||||||
export function exportFactoryExcel(query) {
|
export function exportFactoryExcel(query) {
|
||||||
return request({
|
return request({
|
||||||
url: '/base/factory/export-excel',
|
url: '/base/core-factory/export-excel',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: query,
|
params: query,
|
||||||
responseType: 'blob'
|
responseType: 'blob'
|
||||||
|
19
src/assets/icons/svg/table_add.svg
Normal file
19
src/assets/icons/svg/table_add.svg
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg width="10px" height="10px" viewBox="0 0 10 10" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<!-- Generator: Sketch 60 (88103) - https://sketch.com -->
|
||||||
|
<desc>Created with Sketch.</desc>
|
||||||
|
<g id="11_系统管理" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||||
|
<g id="11-1用户管理" transform="translate(-1764.000000, -160.000000)">
|
||||||
|
<g id="编组-15" transform="translate(1763.000000, 158.000000)">
|
||||||
|
<g id="编组-18">
|
||||||
|
<g id="icon/界面内/新增" transform="translate(0.000000, 1.000000)">
|
||||||
|
<g id="编组">
|
||||||
|
<rect id="矩形" stroke="#979797" fill="#D8D8D8" opacity="0" x="0.5" y="0.5" width="11" height="11"></rect>
|
||||||
|
<path d="M10.0813953,6.42885117 L6.37790698,6.42885117 L6.37790698,10.0770235 C6.37790698,10.3108355 6.19069767,10.5 5.95930233,10.5 L5.95930233,10.5 C5.72790698,10.5 5.54069767,10.3108355 5.54069767,10.0770235 L5.54069767,6.42885117 L1.91860465,6.42885117 C1.6872093,6.42885117 1.5,6.23968668 1.5,6.00587467 L1.5,6.00587467 C1.5,5.77206266 1.6872093,5.58289817 1.91860465,5.58289817 L5.54069767,5.58289817 L5.54069767,1.9229765 C5.54069767,1.68916449 5.72790698,1.5 5.95930233,1.5 L5.95930233,1.5 C6.19069767,1.5 6.37790698,1.68916449 6.37790698,1.9229765 L6.37790698,5.58289817 L10.0813953,5.58289817 C10.3127907,5.58289817 10.5,5.77206266 10.5,6.00587467 L10.5,6.00587467 C10.5,6.23968668 10.3127907,6.42885117 10.0813953,6.42885117 L10.0813953,6.42885117 Z" id="Shape" fill="#0B58FF" transform="translate(6.000000, 6.000000) scale(1, -1) translate(-6.000000, -6.000000) "></path>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.8 KiB |
182
src/views/base/coreAlarmLog/index.vue
Normal file
182
src/views/base/coreAlarmLog/index.vue
Normal file
@ -0,0 +1,182 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<search-bar
|
||||||
|
:formConfigs="formConfig"
|
||||||
|
ref="searchBarForm"
|
||||||
|
@headBtnClick="buttonClick" />
|
||||||
|
<base-table
|
||||||
|
v-loading="dataListLoading"
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.pageNo"
|
||||||
|
:limit="listQuery.pageSize"
|
||||||
|
:table-data="tableData">
|
||||||
|
<method-btn
|
||||||
|
v-if="tableBtn.length"
|
||||||
|
slot="handleBtn"
|
||||||
|
:width="120"
|
||||||
|
label="操作"
|
||||||
|
:method-list="tableBtn"
|
||||||
|
@clickBtn="handleClick" />
|
||||||
|
</base-table>
|
||||||
|
<pagination
|
||||||
|
:limit.sync="listQuery.pageSize"
|
||||||
|
:page.sync="listQuery.pageNo"
|
||||||
|
:total="listQuery.total"
|
||||||
|
@pagination="getDataList" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import basicPage from '../../core/mixins/basic-page';
|
||||||
|
import { parseTime } from '../../core/mixins/code-filter';
|
||||||
|
import {
|
||||||
|
getcoreAlarmLogPage
|
||||||
|
} from '@/api/base/coreAlarmLog';
|
||||||
|
import {DICT_TYPE, getDictDatas} from "@/utils/dict";
|
||||||
|
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: 'alarmTime',
|
||||||
|
label: '报警时间',
|
||||||
|
filter: parseTime
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'alarmSource',
|
||||||
|
label: '报警来源'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'alarmType',
|
||||||
|
label: '报警类型'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'alarmGrade',
|
||||||
|
label: '报警级别'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'alarmReason',
|
||||||
|
label: '报警原因'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'alarmContent',
|
||||||
|
label: '报警详细'
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [basicPage],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
urlOptions: {
|
||||||
|
getDataListURL: getcoreAlarmLogPage
|
||||||
|
},
|
||||||
|
tableProps,
|
||||||
|
tableBtn: [].filter((v)=>v),
|
||||||
|
tableData: [],
|
||||||
|
listQuery: {
|
||||||
|
pageSize: 10,
|
||||||
|
pageNo: 1,
|
||||||
|
total: 0,
|
||||||
|
alarmSource: undefined,
|
||||||
|
alarmGrade: undefined,
|
||||||
|
alarmTime: []
|
||||||
|
},
|
||||||
|
formConfig: [
|
||||||
|
{
|
||||||
|
type: 'input',
|
||||||
|
label: '报警来源',
|
||||||
|
placeholder: '报警来源',
|
||||||
|
param: 'name',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'datePicker',
|
||||||
|
label: '时间段',
|
||||||
|
dateType: 'datetimerange',
|
||||||
|
format: 'yyyy-MM-dd',
|
||||||
|
valueFormat: 'yyyy-MM-dd HH:mm:ss',
|
||||||
|
rangeSeparator: '-',
|
||||||
|
startPlaceholder: '开始时间',
|
||||||
|
endPlaceholder: '结束时间',
|
||||||
|
width: 350,
|
||||||
|
param: 'time'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'select',
|
||||||
|
label: '报警级别',
|
||||||
|
placeholder: '请选择报警级别',
|
||||||
|
param: 'alarmGrade',
|
||||||
|
selectOptions: [],
|
||||||
|
filterable: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'button',
|
||||||
|
btnName: '查询',
|
||||||
|
name: 'search',
|
||||||
|
color: 'primary',
|
||||||
|
}
|
||||||
|
// {
|
||||||
|
// type: 'separate',
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// type: this.$auth.hasPermi('base:core-alarm-log:create') ? 'button' : '',
|
||||||
|
// btnName: '新增',
|
||||||
|
// name: 'add',
|
||||||
|
// color: 'success',
|
||||||
|
// plain: true
|
||||||
|
// },
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getDict()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 获取下拉框
|
||||||
|
async getDict() {
|
||||||
|
const res = await getDictDatas(this.DICT_TYPE.EQU_ALARM_LEVEL)
|
||||||
|
console.log('111', res)
|
||||||
|
this.formConfig[2].selectOptions = res.map(item => {
|
||||||
|
return {
|
||||||
|
id: item.value,
|
||||||
|
name: item.label
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
buttonClick(val) {
|
||||||
|
switch (val.btnName) {
|
||||||
|
case 'search':
|
||||||
|
this.listQuery.pageNo = 1;
|
||||||
|
this.listQuery.pageSize = 10;
|
||||||
|
this.listQuery.alarmSource = val.name ? val.name : undefined;
|
||||||
|
this.listQuery.alarmGrade = val.alarmGrade ? val.alarmGrade : undefined;
|
||||||
|
if (val.time) {
|
||||||
|
this.listQuery.alarmTime[0] = val.time[0]
|
||||||
|
this.listQuery.alarmTime[1] = val.time[1]
|
||||||
|
} else {
|
||||||
|
this.listQuery.alarmTime = []
|
||||||
|
}
|
||||||
|
this.getDataList();
|
||||||
|
break;
|
||||||
|
case 'reset':
|
||||||
|
this.$refs.searchBarForm.resetForm();
|
||||||
|
this.listQuery = {
|
||||||
|
pageSize: 10,
|
||||||
|
pageNo: 1,
|
||||||
|
total: 1,
|
||||||
|
};
|
||||||
|
this.getDataList();
|
||||||
|
break;
|
||||||
|
case 'add':
|
||||||
|
this.addOrEditTitle = '新增';
|
||||||
|
this.addOrUpdateVisible = true;
|
||||||
|
this.addOrUpdateHandle();
|
||||||
|
break;
|
||||||
|
case 'export':
|
||||||
|
this.handleExport();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log(val);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
65
src/views/base/coreProduct/SmallTitle.vue
Normal file
65
src/views/base/coreProduct/SmallTitle.vue
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
<!--
|
||||||
|
* @Author: zwq
|
||||||
|
* @Date: 2023-08-01 15:27:31
|
||||||
|
* @LastEditors: zwq
|
||||||
|
* @LastEditTime: 2023-08-01 16:25:54
|
||||||
|
* @Description:
|
||||||
|
-->
|
||||||
|
<template>
|
||||||
|
<div :class="[className, { 'p-0': noPadding }]">
|
||||||
|
<slot />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
size: {
|
||||||
|
// 取值范围: xl lg md sm
|
||||||
|
type: String,
|
||||||
|
default: 'de',
|
||||||
|
validator: function (val) {
|
||||||
|
return ['xl', 'lg', 'de', 'md', 'sm'].indexOf(val) !== -1;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
noPadding: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
className: function () {
|
||||||
|
return `${this.size}-title`;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
$pxls: (xl, 28px) (lg, 24px) (de, 20px) (md, 18px) (sm, 16px);
|
||||||
|
$mgr: 8px;
|
||||||
|
@each $size, $height in $pxls {
|
||||||
|
.#{$size}-title {
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: $height;
|
||||||
|
color: #000;
|
||||||
|
font-weight: 500;
|
||||||
|
font-family: '微软雅黑', 'Microsoft YaHei', Arial, Helvetica, sans-serif;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: top;
|
||||||
|
width: 4px;
|
||||||
|
height: $height + 2px;
|
||||||
|
border-radius: 1px;
|
||||||
|
margin-right: $mgr;
|
||||||
|
background-color: #0b58ff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.p-0 {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
</style>
|
417
src/views/base/coreProduct/add-or-updata.vue
Normal file
417
src/views/base/coreProduct/add-or-updata.vue
Normal file
@ -0,0 +1,417 @@
|
|||||||
|
<!--
|
||||||
|
* @Author: zwq
|
||||||
|
* @Date: 2021-11-18 14:16:25
|
||||||
|
* @LastEditors: DY
|
||||||
|
* @LastEditTime: 2023-11-04 17:57:18
|
||||||
|
* @Description:
|
||||||
|
-->
|
||||||
|
<template>
|
||||||
|
<el-drawer
|
||||||
|
:visible.sync="visible"
|
||||||
|
:show-close="false"
|
||||||
|
:wrapper-closable="false"
|
||||||
|
class="drawer"
|
||||||
|
size="50%">
|
||||||
|
<small-title slot="title" :no-padding="true">
|
||||||
|
{{ isdetail ? '详情' : !dataForm.id ? '新增' : '编辑' }}
|
||||||
|
</small-title>
|
||||||
|
<div class="content">
|
||||||
|
<div class="visual-part">
|
||||||
|
<el-form
|
||||||
|
:model="dataForm"
|
||||||
|
:rules="dataRule"
|
||||||
|
ref="dataForm"
|
||||||
|
@keyup.enter.native="dataFormSubmit()"
|
||||||
|
label-width="100px"
|
||||||
|
label-position="top">
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="产品名称" prop="name">
|
||||||
|
<el-input v-model="dataForm.name" :disabled="isdetail" clearable placeholder="请输入产品名称" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="产品编码" prop="code">
|
||||||
|
<el-input
|
||||||
|
v-model="dataForm.code"
|
||||||
|
clearable
|
||||||
|
:disabled="isdetail"
|
||||||
|
placeholder="请输入产品编码" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="物料类型" prop="materialType">
|
||||||
|
<el-select
|
||||||
|
v-model="dataForm.materialType"
|
||||||
|
filterable
|
||||||
|
:disabled="isdetail"
|
||||||
|
style="width: 100%"
|
||||||
|
placeholder="请选择物料类型">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in getDictDatas('material_type')"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="产品类型" prop="productType">
|
||||||
|
<el-select
|
||||||
|
v-model="dataForm.productType"
|
||||||
|
filterable
|
||||||
|
:disabled="isdetail"
|
||||||
|
style="width: 100%"
|
||||||
|
placeholder="请选择产品类型">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in getDictDatas(DICT_TYPE.PRODUCT_TYPE)"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="单位" prop="unit">
|
||||||
|
<el-select
|
||||||
|
v-model="dataForm.unit"
|
||||||
|
filterable
|
||||||
|
:disabled="isdetail"
|
||||||
|
style="width: 100%"
|
||||||
|
placeholder="请选择单位">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in getDictDatas(DICT_TYPE.UNIT_DICT)"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="单位平方数" prop="area">
|
||||||
|
<el-input-number v-model="dataForm.area" :precision="2" style="width: 100%" :disabled="isdetail" clearable placeholder="请输入单位平方数" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="规格" prop="specifications">
|
||||||
|
<el-input v-model="dataForm.specifications" :disabled="isdetail" clearable placeholder="请输入规格" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="产线生产单位用时(S)" prop="processTime">
|
||||||
|
<el-input v-model.number="dataForm.processTime" type="number" :disabled="isdetail" clearable placeholder="请输入产线生产单位用时" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="dataForm.remark" :disabled="isdetail" clearable placeholder="请输入备注" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
<div class="drawer-body__footer">
|
||||||
|
<el-button style="" @click="goback()">取消</el-button>
|
||||||
|
<el-button v-if="isdetail" type="primary" @click="goEdit()">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-else type="primary" @click="dataFormSubmit()">确定</el-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="attr-list" v-if="idAttrShow">
|
||||||
|
<small-title
|
||||||
|
style="margin: 16px 0; padding-left: 8px"
|
||||||
|
:no-padding="true">
|
||||||
|
产品属性
|
||||||
|
</small-title>
|
||||||
|
|
||||||
|
<div v-if="!isdetail" class="action_btn">
|
||||||
|
<template>
|
||||||
|
<span style="display: inline-block;" @click="addNew()">
|
||||||
|
<svg-icon style="width: 14px; height: 14px" class="item-icon" icon-class="table_add" />
|
||||||
|
<span class="add">添加</span>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
<base-table
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.pageNo"
|
||||||
|
:limit="listQuery.pageSize"
|
||||||
|
:table-data="productAttrList">
|
||||||
|
<method-btn
|
||||||
|
v-if="!isdetail"
|
||||||
|
slot="handleBtn"
|
||||||
|
:width="120"
|
||||||
|
label="操作"
|
||||||
|
:method-list="tableBtn"
|
||||||
|
@clickBtn="handleClick" />
|
||||||
|
</base-table>
|
||||||
|
<pagination
|
||||||
|
v-show="listQuery.total > 0"
|
||||||
|
:total="listQuery.total"
|
||||||
|
:page.sync="listQuery.pageNo"
|
||||||
|
:limit.sync="listQuery.pageSize"
|
||||||
|
:page-sizes="[5, 10, 15]"
|
||||||
|
@pagination="getList" />
|
||||||
|
|
||||||
|
<div class="drawer-body__footer">
|
||||||
|
<el-button type="primary" @click="goback()">关闭</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<attr-add
|
||||||
|
v-if="addOrUpdateVisible"
|
||||||
|
ref="addOrUpdate"
|
||||||
|
:product-id="dataForm.id"
|
||||||
|
@refreshDataList="getList" />
|
||||||
|
</el-drawer>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import basicAdd from '../../core/mixins/basic-add';
|
||||||
|
import { createCoreProduct, updateCoreProduct, getCoreProduct, getCode, getCoreProductAttrPage, deleteCoreProductAttr } from "@/api/base/coreProduct";
|
||||||
|
import SmallTitle from './SmallTitle';
|
||||||
|
import { parseTime } from '../../core/mixins/code-filter';
|
||||||
|
import attrAdd from './attr-add';
|
||||||
|
import {DICT_TYPE, getDictDatas} from "@/utils/dict";
|
||||||
|
|
||||||
|
const tableBtn = [
|
||||||
|
{
|
||||||
|
type: 'edit',
|
||||||
|
btnName: '编辑',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'delete',
|
||||||
|
btnName: '删除',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: 'createTime',
|
||||||
|
label: '添加时间',
|
||||||
|
filter: parseTime,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'name',
|
||||||
|
label: '属性名',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'value',
|
||||||
|
label: '属性值',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const topBtnConfig = [
|
||||||
|
{
|
||||||
|
type: 'add',
|
||||||
|
btnName: 'btn.add'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [basicAdd],
|
||||||
|
components: { SmallTitle, attrAdd },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableBtn,
|
||||||
|
tableProps,
|
||||||
|
topBtnConfig,
|
||||||
|
addOrUpdateVisible: false,
|
||||||
|
urlOptions: {
|
||||||
|
isGetCode: true,
|
||||||
|
codeURL: getCode,
|
||||||
|
createURL: createCoreProduct,
|
||||||
|
updateURL: updateCoreProduct,
|
||||||
|
infoURL: getCoreProduct,
|
||||||
|
},
|
||||||
|
listQuery: {
|
||||||
|
pageSize: 10,
|
||||||
|
pageNo: 1,
|
||||||
|
total: 0,
|
||||||
|
},
|
||||||
|
dataForm: {
|
||||||
|
id: undefined,
|
||||||
|
code: undefined,
|
||||||
|
name: '',
|
||||||
|
materialType: undefined,
|
||||||
|
productType: undefined,
|
||||||
|
area: undefined,
|
||||||
|
specifications: undefined,
|
||||||
|
processTime: 0,
|
||||||
|
remark: undefined,
|
||||||
|
unit: undefined
|
||||||
|
},
|
||||||
|
productAttrList: [],
|
||||||
|
visible: false,
|
||||||
|
isdetail: false,
|
||||||
|
idAttrShow: false,
|
||||||
|
dataRule: {
|
||||||
|
code: [{ required: true, message: "物料编码不能为空", trigger: "blur" }],
|
||||||
|
name: [{ required: true, message: "物料名称不能为空", trigger: "blur" }],
|
||||||
|
materialType: [{ required: true, message: "物料类型不能为空", trigger: "change" }],
|
||||||
|
productType: [{ required: true, message: "产品类型不能为空", trigger: "change" }],
|
||||||
|
processTime: [{ required: true, message: "产线生产单位用时不能为空", trigger: "blur" }]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {},
|
||||||
|
methods: {
|
||||||
|
initData() {
|
||||||
|
this.productAttrList.splice(0);
|
||||||
|
this.listQuery.total = 0;
|
||||||
|
},
|
||||||
|
handleClick(raw) {
|
||||||
|
if (raw.type === 'delete') {
|
||||||
|
this.$confirm(
|
||||||
|
`确定对${
|
||||||
|
raw.data.attrName
|
||||||
|
? '[名称=' + raw.data.attrName + ']'
|
||||||
|
: '[序号=' + raw.data._pageIndex + ']'
|
||||||
|
}进行删除操作?`,
|
||||||
|
'提示',
|
||||||
|
{
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning',
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.then(() => {
|
||||||
|
deleteCoreProductAttr(raw.data.id).then(({ data }) => {
|
||||||
|
this.$message({
|
||||||
|
message: '操作成功',
|
||||||
|
type: 'success',
|
||||||
|
duration: 1500,
|
||||||
|
onClose: () => {
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => {});
|
||||||
|
} else {
|
||||||
|
this.addNew(raw.data.id);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getList() {
|
||||||
|
// 获取产品属性列表
|
||||||
|
getCoreProductAttrPage({
|
||||||
|
...this.listQuery,
|
||||||
|
productId: this.dataForm.id,
|
||||||
|
}).then((response) => {
|
||||||
|
this.productAttrList = response.data.list;
|
||||||
|
this.listQuery.total = response.data.total;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
init(id, isdetail) {
|
||||||
|
this.initData();
|
||||||
|
this.isdetail = isdetail || false;
|
||||||
|
this.dataForm.id = id || undefined;
|
||||||
|
this.visible = true;
|
||||||
|
if (id) {
|
||||||
|
this.idAttrShow = true
|
||||||
|
} else {
|
||||||
|
this.idAttrShow = false
|
||||||
|
}
|
||||||
|
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs['dataForm'].resetFields();
|
||||||
|
|
||||||
|
if (this.dataForm.id) {
|
||||||
|
// 获取产品详情
|
||||||
|
this.urlOptions.infoURL(id).then(response => {
|
||||||
|
this.dataForm = response.data
|
||||||
|
this.dataForm.unit = String(this.dataForm.unit)
|
||||||
|
this.dataForm.materialType = String(this.dataForm.materialType)
|
||||||
|
this.dataForm.productType = String(this.dataForm.productType)
|
||||||
|
});
|
||||||
|
// 获取产品属性列表
|
||||||
|
this.getList();
|
||||||
|
} else {
|
||||||
|
if (this.urlOptions.isGetCode) {
|
||||||
|
this.getCode()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
goback() {
|
||||||
|
this.$emit('refreshDataList');
|
||||||
|
this.visible = false;
|
||||||
|
// this.initData();
|
||||||
|
},
|
||||||
|
goEdit() {
|
||||||
|
this.isdetail = false;
|
||||||
|
},
|
||||||
|
// 新增 / 修改
|
||||||
|
addNew(id) {
|
||||||
|
this.addOrUpdateVisible = true;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.addOrUpdate.init(id);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
.drawer >>> .el-drawer {
|
||||||
|
border-radius: 8px 0 0 8px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.drawer >>> .el-form-item__label {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.drawer >>> .el-drawer__header {
|
||||||
|
margin: 0;
|
||||||
|
padding: 32px 32px 24px;
|
||||||
|
border-bottom: 1px solid #dcdfe6;
|
||||||
|
}
|
||||||
|
.drawer >>> .el-drawer__body {
|
||||||
|
flex: 1;
|
||||||
|
height: 1px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.drawer >>> .content {
|
||||||
|
padding: 30px 24px;
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
/* height: 100%; */
|
||||||
|
}
|
||||||
|
|
||||||
|
.drawer >>> .visual-part {
|
||||||
|
flex: 1 auto;
|
||||||
|
max-height: 76vh;
|
||||||
|
overflow: hidden;
|
||||||
|
overflow-y: scroll;
|
||||||
|
padding-right: 10px; /* 调整滚动条样式 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.drawer >>> .el-form,
|
||||||
|
.drawer >>> .attr-list {
|
||||||
|
padding: 0 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.drawer-body__footer {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
padding: 18px;
|
||||||
|
}
|
||||||
|
.action_btn {
|
||||||
|
float: right;
|
||||||
|
margin: 5px 15px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.add {
|
||||||
|
color: #0b58ff;
|
||||||
|
}
|
||||||
|
</style>
|
141
src/views/base/coreProduct/attr-add.vue
Normal file
141
src/views/base/coreProduct/attr-add.vue
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
:visible.sync="visible"
|
||||||
|
:width="'35%'"
|
||||||
|
:append-to-body="true"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
class="dialog">
|
||||||
|
<template #title>
|
||||||
|
<slot name="title">
|
||||||
|
<div class="titleStyle">
|
||||||
|
{{ !dataForm.id ? '新增' : '编辑' }}
|
||||||
|
</div>
|
||||||
|
</slot>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<el-form
|
||||||
|
ref="dataForm"
|
||||||
|
:model="dataForm"
|
||||||
|
:rules="dataRule"
|
||||||
|
label-width="100px"
|
||||||
|
@keyup.enter.native="dataFormSubmit()">
|
||||||
|
<el-form-item label="属性名" prop="name">
|
||||||
|
<el-input
|
||||||
|
v-model="dataForm.name"
|
||||||
|
placeholder="请输入属性名"
|
||||||
|
clearable />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="属性值" prop="value">
|
||||||
|
<el-input
|
||||||
|
v-model="dataForm.value"
|
||||||
|
placeholder="请输入属性值"
|
||||||
|
clearable />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<el-row style="text-align: right">
|
||||||
|
<el-button @click="visible = false">取消</el-button>
|
||||||
|
<el-button type="primary" @click="dataFormSubmit()">确定</el-button>
|
||||||
|
</el-row>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
createCoreProductAttr,
|
||||||
|
updateCoreProductAttr,
|
||||||
|
getCoreProductAttr
|
||||||
|
} from '@/api/base/coreProduct';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
productId: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
visible: false,
|
||||||
|
dataForm: {
|
||||||
|
id: undefined,
|
||||||
|
name: '',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
dataRule: {
|
||||||
|
attrName: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init(id) {
|
||||||
|
this.dataForm.id = id || '';
|
||||||
|
this.visible = true;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs['dataForm'].resetFields();
|
||||||
|
if (this.dataForm.id) {
|
||||||
|
getCoreProductAttr({
|
||||||
|
id: this.dataForm.id
|
||||||
|
}).then((res) => {
|
||||||
|
const { name, value } = res.data;
|
||||||
|
this.dataForm.name = name;
|
||||||
|
this.dataForm.value = value;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 表单提交
|
||||||
|
dataFormSubmit() {
|
||||||
|
this.$refs['dataForm'].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
// 修改的提交
|
||||||
|
if (this.dataForm.id) {
|
||||||
|
updateCoreProductAttr({
|
||||||
|
...this.dataForm,
|
||||||
|
productId: this.productId,
|
||||||
|
}).then((response) => {
|
||||||
|
this.$modal.msgSuccess('修改成功');
|
||||||
|
this.visible = false;
|
||||||
|
this.$emit('refreshDataList');
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 添加的提交
|
||||||
|
createCoreProductAttr({
|
||||||
|
...this.dataForm,
|
||||||
|
productId: this.productId,
|
||||||
|
}).then((response) => {
|
||||||
|
this.$modal.msgSuccess('新增成功');
|
||||||
|
this.visible = false;
|
||||||
|
this.$emit('refreshDataList');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.dialog >>> .el-dialog__body {
|
||||||
|
padding: 30px 24px;
|
||||||
|
}
|
||||||
|
.dialog >>> .el-dialog__header {
|
||||||
|
font-size: 16px;
|
||||||
|
color: rgba(0, 0, 0, 0.85);
|
||||||
|
font-weight: 500;
|
||||||
|
padding: 13px 24px;
|
||||||
|
border-bottom: 1px solid #e9e9e9;
|
||||||
|
}
|
||||||
|
.dialog >>> .el-dialog__header .titleStyle::before {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
width: 4px;
|
||||||
|
height: 16px;
|
||||||
|
background-color: #0b58ff;
|
||||||
|
border-radius: 1px;
|
||||||
|
margin-right: 8px;
|
||||||
|
position: relative;
|
||||||
|
top: 2px;
|
||||||
|
}
|
||||||
|
</style>
|
186
src/views/base/coreProduct/index.vue
Normal file
186
src/views/base/coreProduct/index.vue
Normal file
@ -0,0 +1,186 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<search-bar
|
||||||
|
:formConfigs="formConfig"
|
||||||
|
ref="searchBarForm"
|
||||||
|
@headBtnClick="buttonClick" />
|
||||||
|
<base-table
|
||||||
|
v-loading="dataListLoading"
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.pageNo"
|
||||||
|
:limit="listQuery.pageSize"
|
||||||
|
:table-data="tableData">
|
||||||
|
<method-btn
|
||||||
|
v-if="tableBtn.length"
|
||||||
|
slot="handleBtn"
|
||||||
|
:width="120"
|
||||||
|
label="操作"
|
||||||
|
:method-list="tableBtn"
|
||||||
|
@clickBtn="handleClick" />
|
||||||
|
</base-table>
|
||||||
|
<pagination
|
||||||
|
:limit.sync="listQuery.pageSize"
|
||||||
|
:page.sync="listQuery.pageNo"
|
||||||
|
:total="listQuery.total"
|
||||||
|
@pagination="getDataList" />
|
||||||
|
<add-or-update
|
||||||
|
v-if="addOrUpdateVisible"
|
||||||
|
ref="addOrUpdate"
|
||||||
|
@refreshDataList="successSubmit" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import AddOrUpdate from './add-or-updata';
|
||||||
|
import basicPage from '../../core/mixins/basic-page';
|
||||||
|
import { parseTime } from '../../core/mixins/code-filter';
|
||||||
|
import { publicFormatter } from '@/utils/dict';
|
||||||
|
import {
|
||||||
|
getCoreProductPage,
|
||||||
|
deleteCoreProduct
|
||||||
|
} from '@/api/base/coreProduct';
|
||||||
|
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: 'createTime',
|
||||||
|
label: '添加时间',
|
||||||
|
filter: parseTime
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'name',
|
||||||
|
label: '产品名称'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'code',
|
||||||
|
label: '产品编码'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'productType',
|
||||||
|
label: '产品类型',
|
||||||
|
filter: publicFormatter('product_type')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'specifications',
|
||||||
|
label: '规格'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'unit',
|
||||||
|
label: '单位',
|
||||||
|
filter: publicFormatter('unit_dict')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'remark',
|
||||||
|
label: '备注',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [basicPage],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
urlOptions: {
|
||||||
|
getDataListURL: getCoreProductPage,
|
||||||
|
deleteURL: deleteCoreProduct
|
||||||
|
},
|
||||||
|
tableProps,
|
||||||
|
tableBtn: [
|
||||||
|
this.$auth.hasPermi(`base:core-product:update`)
|
||||||
|
? {
|
||||||
|
type: 'edit',
|
||||||
|
btnName: '编辑',
|
||||||
|
}
|
||||||
|
: undefined,
|
||||||
|
this.$auth.hasPermi(`base:core-product:detail`)
|
||||||
|
? {
|
||||||
|
type: 'detail',
|
||||||
|
btnName: '查看详情',
|
||||||
|
}
|
||||||
|
: undefined,
|
||||||
|
this.$auth.hasPermi(`base:core-product:delete`)
|
||||||
|
? {
|
||||||
|
type: 'delete',
|
||||||
|
btnName: '删除',
|
||||||
|
}
|
||||||
|
: undefined,
|
||||||
|
].filter((v)=>v),
|
||||||
|
tableData: [],
|
||||||
|
formConfig: [
|
||||||
|
{
|
||||||
|
type: 'input',
|
||||||
|
label: '工单名称',
|
||||||
|
placeholder: '工单名称',
|
||||||
|
param: 'name'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'input',
|
||||||
|
label: '产品编号',
|
||||||
|
placeholder: '产品编号',
|
||||||
|
param: 'code'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'button',
|
||||||
|
btnName: '查询',
|
||||||
|
name: 'search',
|
||||||
|
color: 'primary',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'separate',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: this.$auth.hasPermi('base:core-product:create') ? 'button' : '',
|
||||||
|
btnName: '新增',
|
||||||
|
name: 'add',
|
||||||
|
color: 'success',
|
||||||
|
plain: true
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
AddOrUpdate
|
||||||
|
},
|
||||||
|
created() {},
|
||||||
|
methods: {
|
||||||
|
// 查看详情
|
||||||
|
otherMethods(val) {
|
||||||
|
if (val.type === 'detail') {
|
||||||
|
this.addOrUpdateVisible = true;
|
||||||
|
this.addOrEditTitle = "详情";
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.addOrUpdate.init(val.data.id, true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
buttonClick(val) {
|
||||||
|
switch (val.btnName) {
|
||||||
|
case 'search':
|
||||||
|
this.listQuery.pageNo = 1;
|
||||||
|
this.listQuery.pageSize = 10;
|
||||||
|
this.listQuery.name = val.name ? val.name : undefined;
|
||||||
|
this.listQuery.code = val.code ? val.code : undefined;
|
||||||
|
this.getDataList();
|
||||||
|
break;
|
||||||
|
case 'reset':
|
||||||
|
this.$refs.searchBarForm.resetForm();
|
||||||
|
this.listQuery = {
|
||||||
|
pageSize: 10,
|
||||||
|
pageNo: 1,
|
||||||
|
total: 1,
|
||||||
|
};
|
||||||
|
this.getDataList();
|
||||||
|
break;
|
||||||
|
case 'add':
|
||||||
|
this.addOrEditTitle = '新增';
|
||||||
|
this.addOrUpdateVisible = true;
|
||||||
|
this.addOrUpdateHandle();
|
||||||
|
break;
|
||||||
|
case 'export':
|
||||||
|
this.handleExport();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log(val);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
114
src/views/base/coreProductionLine/add-or-updata.vue
Normal file
114
src/views/base/coreProductionLine/add-or-updata.vue
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
<!--
|
||||||
|
* @Author: zwq
|
||||||
|
* @Date: 2021-11-18 14:16:25
|
||||||
|
* @LastEditors: DY
|
||||||
|
* @LastEditTime: 2023-11-03 19:28:06
|
||||||
|
* @Description:
|
||||||
|
-->
|
||||||
|
<template>
|
||||||
|
<el-form
|
||||||
|
:model="dataForm"
|
||||||
|
:rules="dataRule"
|
||||||
|
ref="dataForm"
|
||||||
|
@keyup.enter.native="dataFormSubmit()"
|
||||||
|
label-width="80px">
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="产线名称" prop="name">
|
||||||
|
<el-input v-model="dataForm.name" clearable placeholder="请输入产线名称" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="产线编号" prop="code">
|
||||||
|
<el-input v-model="dataForm.code" clearable placeholder="请输入产线编号" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="工厂名称" prop="factoryId">
|
||||||
|
<el-select
|
||||||
|
v-model="dataForm.factoryId"
|
||||||
|
filterable
|
||||||
|
placeholder="请选择工厂">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in factoryList"
|
||||||
|
:key="dict.id"
|
||||||
|
:label="dict.name"
|
||||||
|
:value="dict.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="产线TT值(h)" prop="tvalue">
|
||||||
|
<el-input
|
||||||
|
v-model.number="dataForm.tvalue"
|
||||||
|
type="number"
|
||||||
|
placeholder="TT值" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="描述信息" prop="description">
|
||||||
|
<el-input
|
||||||
|
v-model="dataForm.description"
|
||||||
|
placeholder="请输入描述信息" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input
|
||||||
|
v-model="dataForm.remark"
|
||||||
|
placeholder="请输入备注" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import basicAdd from '../../core/mixins/basic-add';
|
||||||
|
import { createCorePL, updateCorePL, getCorePL, getCode } from "@/api/base/coreProductionLine";
|
||||||
|
import { getFactoryList } from '@/api/core/base/factory';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [basicAdd],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
urlOptions: {
|
||||||
|
isGetCode: true,
|
||||||
|
codeURL: getCode,
|
||||||
|
createURL: createCorePL,
|
||||||
|
updateURL: updateCorePL,
|
||||||
|
infoURL: getCorePL,
|
||||||
|
},
|
||||||
|
dataForm: {
|
||||||
|
id: undefined,
|
||||||
|
code: undefined,
|
||||||
|
name: undefined,
|
||||||
|
description: undefined,
|
||||||
|
tvalue: 0,
|
||||||
|
factoryId: undefined,
|
||||||
|
remark: undefined,
|
||||||
|
},
|
||||||
|
factoryList: [],
|
||||||
|
dataRule: {
|
||||||
|
code: [{ required: true, message: "专业编码不能为空", trigger: "blur" }],
|
||||||
|
name: [{ required: true, message: "专业名称不能为空", trigger: "blur" }],
|
||||||
|
factoryId: [{ required: true, message: "工厂不能为空", trigger: "blur" }]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getDict()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async getDict() {
|
||||||
|
// 工厂列表
|
||||||
|
const factoryRes = await getFactoryList();
|
||||||
|
this.factoryList = factoryRes.data;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
177
src/views/base/coreProductionLine/index.vue
Normal file
177
src/views/base/coreProductionLine/index.vue
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<search-bar
|
||||||
|
:formConfigs="formConfig"
|
||||||
|
ref="searchBarForm"
|
||||||
|
@headBtnClick="buttonClick" />
|
||||||
|
<base-table
|
||||||
|
v-loading="dataListLoading"
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.pageNo"
|
||||||
|
:limit="listQuery.pageSize"
|
||||||
|
:table-data="tableData">
|
||||||
|
<method-btn
|
||||||
|
v-if="tableBtn.length"
|
||||||
|
slot="handleBtn"
|
||||||
|
:width="120"
|
||||||
|
label="操作"
|
||||||
|
:method-list="tableBtn"
|
||||||
|
@clickBtn="handleClick" />
|
||||||
|
</base-table>
|
||||||
|
<pagination
|
||||||
|
:limit.sync="listQuery.pageSize"
|
||||||
|
:page.sync="listQuery.pageNo"
|
||||||
|
:total="listQuery.total"
|
||||||
|
@pagination="getDataList" />
|
||||||
|
<base-dialog
|
||||||
|
:dialogTitle="addOrEditTitle"
|
||||||
|
:dialogVisible="addOrUpdateVisible"
|
||||||
|
@cancel="handleCancel"
|
||||||
|
@confirm="handleConfirm"
|
||||||
|
:before-close="handleCancel"
|
||||||
|
width="50%">
|
||||||
|
<add-or-update
|
||||||
|
ref="addOrUpdate"
|
||||||
|
@refreshDataList="successSubmit"></add-or-update>
|
||||||
|
</base-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import AddOrUpdate from './add-or-updata';
|
||||||
|
import basicPage from '../../core/mixins/basic-page';
|
||||||
|
import { parseTime } from '../../core/mixins/code-filter';
|
||||||
|
import {
|
||||||
|
getCorePLPage,
|
||||||
|
deleteCorePL
|
||||||
|
} from '@/api/base/coreProductionLine';
|
||||||
|
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: 'createTime',
|
||||||
|
label: '添加时间',
|
||||||
|
filter: parseTime
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'factoryName',
|
||||||
|
label: '工厂'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'name',
|
||||||
|
label: '产线名称'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'code',
|
||||||
|
label: '产线编码'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'enabled',
|
||||||
|
label: '当前状态',
|
||||||
|
filter: (val) => ['停用', '启用'][val]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'description',
|
||||||
|
label: '描述'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'remark',
|
||||||
|
label: '备注'
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [basicPage],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
urlOptions: {
|
||||||
|
getDataListURL: getCorePLPage,
|
||||||
|
deleteURL: deleteCorePL
|
||||||
|
},
|
||||||
|
tableProps,
|
||||||
|
tableBtn: [
|
||||||
|
this.$auth.hasPermi(`base:core-production-line:update`)
|
||||||
|
? {
|
||||||
|
type: 'edit',
|
||||||
|
btnName: '编辑',
|
||||||
|
}
|
||||||
|
: undefined,
|
||||||
|
this.$auth.hasPermi(`base:core-production-line:delete`)
|
||||||
|
? {
|
||||||
|
type: 'delete',
|
||||||
|
btnName: '删除',
|
||||||
|
}
|
||||||
|
: undefined,
|
||||||
|
].filter((v)=>v),
|
||||||
|
tableData: [],
|
||||||
|
formConfig: [
|
||||||
|
{
|
||||||
|
type: 'input',
|
||||||
|
label: '产线名称',
|
||||||
|
placeholder: '产线名称',
|
||||||
|
param: 'name'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'button',
|
||||||
|
btnName: '查询',
|
||||||
|
name: 'search',
|
||||||
|
color: 'primary',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'separate',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: this.$auth.hasPermi('base:core-production-line:create') ? 'button' : '',
|
||||||
|
btnName: '新增',
|
||||||
|
name: 'add',
|
||||||
|
color: 'success',
|
||||||
|
plain: true
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
AddOrUpdate,
|
||||||
|
},
|
||||||
|
created() {},
|
||||||
|
methods: {
|
||||||
|
// 获取数据列表
|
||||||
|
// getDataList() {
|
||||||
|
// this.dataListLoading = true;
|
||||||
|
// this.urlOptions.getDataListURL(this.listQuery).then(response => {
|
||||||
|
// this.tableData = response.data.list;
|
||||||
|
// this.listQuery.total = response.data.total;
|
||||||
|
// this.dataListLoading = false;
|
||||||
|
// });
|
||||||
|
// },
|
||||||
|
buttonClick(val) {
|
||||||
|
switch (val.btnName) {
|
||||||
|
case 'search':
|
||||||
|
this.listQuery.pageNo = 1;
|
||||||
|
this.listQuery.pageSize = 10;
|
||||||
|
this.listQuery.name = val.name ? val.name : undefined;
|
||||||
|
this.getDataList();
|
||||||
|
break;
|
||||||
|
case 'reset':
|
||||||
|
this.$refs.searchBarForm.resetForm();
|
||||||
|
this.listQuery = {
|
||||||
|
pageSize: 10,
|
||||||
|
pageNo: 1,
|
||||||
|
total: 1,
|
||||||
|
};
|
||||||
|
this.getDataList();
|
||||||
|
break;
|
||||||
|
case 'add':
|
||||||
|
this.addOrEditTitle = '新增';
|
||||||
|
this.addOrUpdateVisible = true;
|
||||||
|
this.addOrUpdateHandle();
|
||||||
|
break;
|
||||||
|
case 'export':
|
||||||
|
this.handleExport();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log(val);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
65
src/views/base/coreWorkOrder/SmallTitle.vue
Normal file
65
src/views/base/coreWorkOrder/SmallTitle.vue
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
<!--
|
||||||
|
* @Author: zwq
|
||||||
|
* @Date: 2023-08-01 15:27:31
|
||||||
|
* @LastEditors: zwq
|
||||||
|
* @LastEditTime: 2023-08-01 16:25:54
|
||||||
|
* @Description:
|
||||||
|
-->
|
||||||
|
<template>
|
||||||
|
<div :class="[className, { 'p-0': noPadding }]">
|
||||||
|
<slot />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
size: {
|
||||||
|
// 取值范围: xl lg md sm
|
||||||
|
type: String,
|
||||||
|
default: 'de',
|
||||||
|
validator: function (val) {
|
||||||
|
return ['xl', 'lg', 'de', 'md', 'sm'].indexOf(val) !== -1;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
noPadding: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
className: function () {
|
||||||
|
return `${this.size}-title`;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
$pxls: (xl, 28px) (lg, 24px) (de, 20px) (md, 18px) (sm, 16px);
|
||||||
|
$mgr: 8px;
|
||||||
|
@each $size, $height in $pxls {
|
||||||
|
.#{$size}-title {
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: $height;
|
||||||
|
color: #000;
|
||||||
|
font-weight: 500;
|
||||||
|
font-family: '微软雅黑', 'Microsoft YaHei', Arial, Helvetica, sans-serif;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: top;
|
||||||
|
width: 4px;
|
||||||
|
height: $height + 2px;
|
||||||
|
border-radius: 1px;
|
||||||
|
margin-right: $mgr;
|
||||||
|
background-color: #0b58ff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.p-0 {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
</style>
|
416
src/views/base/coreWorkOrder/add-or-updata copy.vue
Normal file
416
src/views/base/coreWorkOrder/add-or-updata copy.vue
Normal file
@ -0,0 +1,416 @@
|
|||||||
|
<!--
|
||||||
|
* @Author: zwq
|
||||||
|
* @Date: 2021-11-18 14:16:25
|
||||||
|
* @LastEditors: DY
|
||||||
|
* @LastEditTime: 2023-11-04 11:39:25
|
||||||
|
* @Description:
|
||||||
|
-->
|
||||||
|
<template>
|
||||||
|
<el-drawer
|
||||||
|
:visible.sync="visible"
|
||||||
|
:show-close="false"
|
||||||
|
:wrapper-closable="false"
|
||||||
|
class="drawer"
|
||||||
|
size="50%">
|
||||||
|
<small-title slot="title" :no-padding="true">
|
||||||
|
{{ isdetail ? '详情' : !dataForm.id ? '新增' : '编辑' }}
|
||||||
|
</small-title>
|
||||||
|
<div class="content">
|
||||||
|
<div class="visual-part">
|
||||||
|
<el-form
|
||||||
|
:model="dataForm"
|
||||||
|
:rules="dataRule"
|
||||||
|
ref="dataForm"
|
||||||
|
@keyup.enter.native="dataFormSubmit()"
|
||||||
|
label-width="100px"
|
||||||
|
label-position="top">
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="产品名称" prop="name">
|
||||||
|
<el-input v-model="dataForm.name" :disabled="isdetail" clearable placeholder="请输入产品名称" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="产品编码" prop="code">
|
||||||
|
<el-input
|
||||||
|
v-model="dataForm.code"
|
||||||
|
clearable
|
||||||
|
:disabled="isdetail"
|
||||||
|
placeholder="请输入产品编码" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="物料类型" prop="materialType">
|
||||||
|
<el-select
|
||||||
|
v-model="dataForm.materialType"
|
||||||
|
filterable
|
||||||
|
:disabled="isdetail"
|
||||||
|
style="width: 100%"
|
||||||
|
placeholder="请选择物料类型">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in this.getDictDatas('material_type')"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="产品类型" prop="productType">
|
||||||
|
<el-select
|
||||||
|
v-model="dataForm.productType"
|
||||||
|
filterable
|
||||||
|
:disabled="isdetail"
|
||||||
|
style="width: 100%"
|
||||||
|
placeholder="请选择产品类型">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in this.getDictDatas(DICT_TYPE.PRODUCT_TYPE)"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="单位" prop="unit">
|
||||||
|
<el-select
|
||||||
|
v-model="dataForm.unit"
|
||||||
|
filterable
|
||||||
|
:disabled="isdetail"
|
||||||
|
style="width: 100%"
|
||||||
|
placeholder="请选择单位">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in this.getDictDatas(DICT_TYPE.UNIT_DICT)"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="单位平方数" prop="area">
|
||||||
|
<el-input-number v-model="dataForm.area" :precision="2" style="width: 100%" :disabled="isdetail" clearable placeholder="请输入单位平方数" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="规格" prop="specifications">
|
||||||
|
<el-input v-model="dataForm.specifications" :disabled="isdetail" clearable placeholder="请输入规格" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="产线生产单位用时(S)" prop="processTime">
|
||||||
|
<el-input v-model.number="dataForm.processTime" type="number" :disabled="isdetail" clearable placeholder="请输入产线生产单位用时" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="dataForm.remark" :disabled="isdetail" clearable placeholder="请输入备注" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
<div class="drawer-body__footer">
|
||||||
|
<el-button style="" @click="goback()">取消</el-button>
|
||||||
|
<el-button v-if="isdetail" type="primary" @click="goEdit()">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button v-else type="primary" @click="dataFormSubmit()">确定</el-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="attr-list" v-if="idAttrShow">
|
||||||
|
<small-title
|
||||||
|
style="margin: 16px 0; padding-left: 8px"
|
||||||
|
:no-padding="true">
|
||||||
|
产品属性
|
||||||
|
</small-title>
|
||||||
|
|
||||||
|
<div v-if="!isdetail" class="action_btn">
|
||||||
|
<template>
|
||||||
|
<span style="display: inline-block;" @click="addNew()">
|
||||||
|
<svg-icon style="width: 14px; height: 14px" class="item-icon" icon-class="table_add" />
|
||||||
|
<span class="add">添加</span>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
<base-table
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.pageNo"
|
||||||
|
:limit="listQuery.pageSize"
|
||||||
|
:table-data="productAttrList">
|
||||||
|
<method-btn
|
||||||
|
v-if="!isdetail"
|
||||||
|
slot="handleBtn"
|
||||||
|
:width="120"
|
||||||
|
label="操作"
|
||||||
|
:method-list="tableBtn"
|
||||||
|
@clickBtn="handleClick" />
|
||||||
|
</base-table>
|
||||||
|
<pagination
|
||||||
|
v-show="listQuery.total > 0"
|
||||||
|
:total="listQuery.total"
|
||||||
|
:page.sync="listQuery.pageNo"
|
||||||
|
:limit.sync="listQuery.pageSize"
|
||||||
|
:page-sizes="[5, 10, 15]"
|
||||||
|
@pagination="getList" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="drawer-body__footer">
|
||||||
|
<el-button type="primary" @click="goback()">关闭</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<attr-add
|
||||||
|
v-if="addOrUpdateVisible"
|
||||||
|
ref="addOrUpdate"
|
||||||
|
:product-id="dataForm.id"
|
||||||
|
@refreshDataList="getList" />
|
||||||
|
</el-drawer>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import basicAdd from '../../core/mixins/basic-add';
|
||||||
|
import { createCoreProduct, updateCoreProduct, getCoreProduct, getCode, getCoreProductAttrPage, deleteCoreProductAttr } from "@/api/base/coreProduct";
|
||||||
|
import SmallTitle from './SmallTitle';
|
||||||
|
import { parseTime } from '../../core/mixins/code-filter';
|
||||||
|
import attrAdd from './attr-add';
|
||||||
|
import {DICT_TYPE, getDictDatas} from "@/utils/dict";
|
||||||
|
|
||||||
|
const tableBtn = [
|
||||||
|
{
|
||||||
|
type: 'edit',
|
||||||
|
btnName: '编辑',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'delete',
|
||||||
|
btnName: '删除',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: 'createTime',
|
||||||
|
label: '添加时间',
|
||||||
|
filter: parseTime,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'name',
|
||||||
|
label: '属性名',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'value',
|
||||||
|
label: '属性值',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const topBtnConfig = [
|
||||||
|
{
|
||||||
|
type: 'add',
|
||||||
|
btnName: 'btn.add'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [basicAdd],
|
||||||
|
components: { SmallTitle, attrAdd },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableBtn,
|
||||||
|
tableProps,
|
||||||
|
topBtnConfig,
|
||||||
|
addOrUpdateVisible: false,
|
||||||
|
urlOptions: {
|
||||||
|
isGetCode: true,
|
||||||
|
codeURL: getCode,
|
||||||
|
createURL: createCoreProduct,
|
||||||
|
updateURL: updateCoreProduct,
|
||||||
|
infoURL: getCoreProduct,
|
||||||
|
},
|
||||||
|
listQuery: {
|
||||||
|
pageSize: 10,
|
||||||
|
pageNo: 1,
|
||||||
|
total: 0,
|
||||||
|
},
|
||||||
|
dataForm: {
|
||||||
|
id: undefined,
|
||||||
|
code: undefined,
|
||||||
|
name: '',
|
||||||
|
materialType: undefined,
|
||||||
|
productType: undefined,
|
||||||
|
area: undefined,
|
||||||
|
specifications: undefined,
|
||||||
|
processTime: 0,
|
||||||
|
remark: undefined,
|
||||||
|
unit: undefined
|
||||||
|
},
|
||||||
|
productAttrList: [],
|
||||||
|
visible: false,
|
||||||
|
isdetail: false,
|
||||||
|
idAttrShow: false,
|
||||||
|
dataRule: {
|
||||||
|
code: [{ required: true, message: "物料编码不能为空", trigger: "blur" }],
|
||||||
|
name: [{ required: true, message: "物料名称不能为空", trigger: "blur" }],
|
||||||
|
materialType: [{ required: true, message: "物料类型不能为空", trigger: "change" }],
|
||||||
|
productType: [{ required: true, message: "产品类型不能为空", trigger: "change" }],
|
||||||
|
processTime: [{ required: true, message: "产线生产单位用时不能为空", trigger: "blur" }]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {},
|
||||||
|
methods: {
|
||||||
|
initData() {
|
||||||
|
this.productAttrList.splice(0);
|
||||||
|
this.listQuery.total = 0;
|
||||||
|
},
|
||||||
|
handleClick(raw) {
|
||||||
|
if (raw.type === 'delete') {
|
||||||
|
this.$confirm(
|
||||||
|
`确定对${
|
||||||
|
raw.data.attrName
|
||||||
|
? '[名称=' + raw.data.attrName + ']'
|
||||||
|
: '[序号=' + raw.data._pageIndex + ']'
|
||||||
|
}进行删除操作?`,
|
||||||
|
'提示',
|
||||||
|
{
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning',
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.then(() => {
|
||||||
|
deleteCoreProductAttr(raw.data.id).then(({ data }) => {
|
||||||
|
this.$message({
|
||||||
|
message: '操作成功',
|
||||||
|
type: 'success',
|
||||||
|
duration: 1500,
|
||||||
|
onClose: () => {
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => {});
|
||||||
|
} else {
|
||||||
|
this.addNew(raw.data.id);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getList() {
|
||||||
|
// 获取产品属性列表
|
||||||
|
getCoreProductAttrPage({
|
||||||
|
...this.listQuery,
|
||||||
|
productId: this.dataForm.id,
|
||||||
|
}).then((response) => {
|
||||||
|
this.productAttrList = response.data.list;
|
||||||
|
this.listQuery.total = response.data.total;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
init(id, isdetail) {
|
||||||
|
this.initData();
|
||||||
|
this.isdetail = isdetail || false;
|
||||||
|
this.dataForm.id = id || undefined;
|
||||||
|
this.visible = true;
|
||||||
|
if (id) {
|
||||||
|
this.idAttrShow = true
|
||||||
|
} else {
|
||||||
|
this.idAttrShow = false
|
||||||
|
}
|
||||||
|
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs['dataForm'].resetFields();
|
||||||
|
|
||||||
|
if (this.dataForm.id) {
|
||||||
|
// 获取产品详情
|
||||||
|
this.urlOptions.infoURL(id).then(response => {
|
||||||
|
this.dataForm = response.data
|
||||||
|
this.dataForm.unit = String(this.dataForm.unit)
|
||||||
|
this.dataForm.materialType = String(this.dataForm.materialType)
|
||||||
|
this.dataForm.productType = String(this.dataForm.productType)
|
||||||
|
});
|
||||||
|
// 获取产品属性列表
|
||||||
|
this.getList();
|
||||||
|
} else {
|
||||||
|
if (this.urlOptions.isGetCode) {
|
||||||
|
this.getCode()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
goback() {
|
||||||
|
this.visible = false;
|
||||||
|
this.$emit('refreshDataList');
|
||||||
|
// this.initData();
|
||||||
|
},
|
||||||
|
goEdit() {
|
||||||
|
this.isdetail = false;
|
||||||
|
},
|
||||||
|
// 新增 / 修改
|
||||||
|
addNew(id) {
|
||||||
|
this.addOrUpdateVisible = true;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.addOrUpdate.init(id);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
.drawer >>> .el-drawer {
|
||||||
|
border-radius: 8px 0 0 8px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.drawer >>> .el-form-item__label {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.drawer >>> .el-drawer__header {
|
||||||
|
margin: 0;
|
||||||
|
padding: 32px 32px 24px;
|
||||||
|
border-bottom: 1px solid #dcdfe6;
|
||||||
|
}
|
||||||
|
.drawer >>> .el-drawer__body {
|
||||||
|
flex: 1;
|
||||||
|
height: 1px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.drawer >>> .content {
|
||||||
|
padding: 30px 24px;
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
/* height: 100%; */
|
||||||
|
}
|
||||||
|
|
||||||
|
.drawer >>> .visual-part {
|
||||||
|
flex: 1 auto;
|
||||||
|
max-height: 76vh;
|
||||||
|
overflow: hidden;
|
||||||
|
overflow-y: scroll;
|
||||||
|
padding-right: 10px; /* 调整滚动条样式 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.drawer >>> .el-form,
|
||||||
|
.drawer >>> .attr-list {
|
||||||
|
padding: 0 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.drawer-body__footer {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
padding: 18px;
|
||||||
|
}
|
||||||
|
.action_btn {
|
||||||
|
float: right;
|
||||||
|
margin: 5px 15px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.add {
|
||||||
|
color: #0b58ff;
|
||||||
|
}
|
||||||
|
</style>
|
304
src/views/base/coreWorkOrder/add-or-updata.vue
Normal file
304
src/views/base/coreWorkOrder/add-or-updata.vue
Normal file
@ -0,0 +1,304 @@
|
|||||||
|
<!--
|
||||||
|
* @Author: zwq
|
||||||
|
* @Date: 2021-11-18 14:16:25
|
||||||
|
* @LastEditors: DY
|
||||||
|
* @LastEditTime: 2023-11-06 10:01:37
|
||||||
|
* @Description:
|
||||||
|
-->
|
||||||
|
<template>
|
||||||
|
<el-drawer
|
||||||
|
:visible.sync="visible"
|
||||||
|
:show-close="false"
|
||||||
|
:wrapper-closable="false"
|
||||||
|
class="drawer"
|
||||||
|
size="50%">
|
||||||
|
<small-title slot="title" :no-padding="true">
|
||||||
|
{{ '预使用主原料信息' }}
|
||||||
|
</small-title>
|
||||||
|
<div class="content">
|
||||||
|
<div style="height: 15vh">
|
||||||
|
<div style="font-size: 18px;">工单名:{{ workOrderName }}</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="attr-list">
|
||||||
|
<small-title
|
||||||
|
style="margin: 16px 0; padding-left: 8px"
|
||||||
|
:no-padding="true">
|
||||||
|
批次信息
|
||||||
|
</small-title>
|
||||||
|
|
||||||
|
<div class="action_btn">
|
||||||
|
<template>
|
||||||
|
<span style="display: inline-block;" @click="addNew()">
|
||||||
|
<svg-icon style="width: 14px; height: 14px" class="item-icon" icon-class="table_add" />
|
||||||
|
<span class="add">添加</span>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
<base-table
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.pageNo"
|
||||||
|
:limit="listQuery.pageSize"
|
||||||
|
:table-data="materialList">
|
||||||
|
<method-btn
|
||||||
|
slot="handleBtn"
|
||||||
|
:width="120"
|
||||||
|
label="操作"
|
||||||
|
:method-list="tableBtn"
|
||||||
|
@clickBtn="handleClick" />
|
||||||
|
</base-table>
|
||||||
|
<pagination
|
||||||
|
v-show="listQuery.total > 0"
|
||||||
|
:total="listQuery.total"
|
||||||
|
:page.sync="listQuery.pageNo"
|
||||||
|
:limit.sync="listQuery.pageSize"
|
||||||
|
:page-sizes="[5, 10, 15]"
|
||||||
|
@pagination="getList" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="drawer-body__footer">
|
||||||
|
<el-button type="primary" @click="goback()">关闭</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<attr-add
|
||||||
|
v-if="addOrUpdateVisible"
|
||||||
|
ref="addOrUpdate"
|
||||||
|
:product-id="dataForm.id"
|
||||||
|
@refreshDataList="getList" />
|
||||||
|
</el-drawer>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import basicAdd from '../../core/mixins/basic-add';
|
||||||
|
import { getCoreWOMaPage, deleteCoreWOMa } from "@/api/base/coreWorkOrder";
|
||||||
|
import SmallTitle from './SmallTitle';
|
||||||
|
import { parseTime } from '../../core/mixins/code-filter';
|
||||||
|
import attrAdd from './attr-add';
|
||||||
|
import { publicFormatter } from "@/utils/dict";
|
||||||
|
|
||||||
|
const tableBtn = [
|
||||||
|
{
|
||||||
|
type: 'edit',
|
||||||
|
btnName: '编辑',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'delete',
|
||||||
|
btnName: '删除',
|
||||||
|
}
|
||||||
|
];
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: 'createTime',
|
||||||
|
label: '添加时间',
|
||||||
|
filter: parseTime,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'material',
|
||||||
|
label: '原料名称'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'origin',
|
||||||
|
label: '来源',
|
||||||
|
filter: (val) => ['', '内部', '采购'][val]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'supplierId',
|
||||||
|
label: '供应商',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'batch',
|
||||||
|
label: '批次',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'num',
|
||||||
|
label: '数量',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'unit',
|
||||||
|
label: '单位',
|
||||||
|
filter: publicFormatter('unit_dict')
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const topBtnConfig = [
|
||||||
|
{
|
||||||
|
type: 'add',
|
||||||
|
btnName: 'btn.add'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [basicAdd],
|
||||||
|
components: { SmallTitle, attrAdd },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableBtn,
|
||||||
|
tableProps,
|
||||||
|
topBtnConfig,
|
||||||
|
workOrderName: '111',
|
||||||
|
addOrUpdateVisible: false,
|
||||||
|
listQuery: {
|
||||||
|
pageSize: 10,
|
||||||
|
pageNo: 1,
|
||||||
|
total: 0,
|
||||||
|
},
|
||||||
|
dataForm: {
|
||||||
|
id: undefined
|
||||||
|
},
|
||||||
|
materialList: [],
|
||||||
|
visible: false,
|
||||||
|
isdetail: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {},
|
||||||
|
methods: {
|
||||||
|
initData() {
|
||||||
|
this.materialList.splice(0);
|
||||||
|
this.listQuery.total = 0;
|
||||||
|
},
|
||||||
|
handleClick(raw) {
|
||||||
|
if (raw.type === 'delete') {
|
||||||
|
this.$confirm(
|
||||||
|
`确定对${
|
||||||
|
raw.data.attrName
|
||||||
|
? '[名称=' + raw.data.attrName + ']'
|
||||||
|
: '[序号=' + raw.data._pageIndex + ']'
|
||||||
|
}进行删除操作?`,
|
||||||
|
'提示',
|
||||||
|
{
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning',
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.then(() => {
|
||||||
|
deleteCoreWOMa(raw.data.id).then(({ data }) => {
|
||||||
|
this.$message({
|
||||||
|
message: '操作成功',
|
||||||
|
type: 'success',
|
||||||
|
duration: 1500,
|
||||||
|
onClose: () => {
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => {});
|
||||||
|
} else {
|
||||||
|
this.addNew(raw.data.id);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getList() {
|
||||||
|
// 获取预使用原料列表
|
||||||
|
getCoreWOMaPage({
|
||||||
|
...this.listQuery,
|
||||||
|
workOrderId: this.dataForm.id,
|
||||||
|
}).then((response) => {
|
||||||
|
this.materialList = response.data.list;
|
||||||
|
this.listQuery.total = response.data.total;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
init(id, isdetail) {
|
||||||
|
this.initData();
|
||||||
|
this.isdetail = isdetail || false;
|
||||||
|
this.dataForm.id = id || undefined;
|
||||||
|
this.visible = true;
|
||||||
|
this.getList()
|
||||||
|
|
||||||
|
// this.$nextTick(() => {
|
||||||
|
// this.$refs['dataForm'].resetFields();
|
||||||
|
|
||||||
|
// if (this.dataForm.id) {
|
||||||
|
// // 获取产品详情
|
||||||
|
// this.urlOptions.infoURL(id).then(response => {
|
||||||
|
// this.dataForm = response.data
|
||||||
|
// this.dataForm.unit = String(this.dataForm.unit)
|
||||||
|
// this.dataForm.materialType = String(this.dataForm.materialType)
|
||||||
|
// this.dataForm.productType = String(this.dataForm.productType)
|
||||||
|
// });
|
||||||
|
// // 获取产品属性列表
|
||||||
|
// this.getList();
|
||||||
|
// } else {
|
||||||
|
// if (this.urlOptions.isGetCode) {
|
||||||
|
// this.getCode()
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
},
|
||||||
|
goback() {
|
||||||
|
this.visible = false;
|
||||||
|
this.$emit('refreshDataList');
|
||||||
|
// this.initData();
|
||||||
|
},
|
||||||
|
goEdit() {
|
||||||
|
this.isdetail = false;
|
||||||
|
},
|
||||||
|
// 新增 / 修改
|
||||||
|
addNew(id) {
|
||||||
|
this.addOrUpdateVisible = true;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.addOrUpdate.init(id);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
.drawer >>> .el-drawer {
|
||||||
|
border-radius: 8px 0 0 8px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.drawer >>> .el-form-item__label {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.drawer >>> .el-drawer__header {
|
||||||
|
margin: 0;
|
||||||
|
padding: 32px 32px 24px;
|
||||||
|
border-bottom: 1px solid #dcdfe6;
|
||||||
|
}
|
||||||
|
.drawer >>> .el-drawer__body {
|
||||||
|
flex: 1;
|
||||||
|
height: 1px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.drawer >>> .content {
|
||||||
|
padding: 30px 24px;
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
/* height: 100%; */
|
||||||
|
}
|
||||||
|
|
||||||
|
.drawer >>> .visual-part {
|
||||||
|
flex: 1 auto;
|
||||||
|
/* max-height: 76vh; */
|
||||||
|
overflow: hidden;
|
||||||
|
overflow-y: scroll;
|
||||||
|
padding-right: 10px; /* 调整滚动条样式 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.drawer >>> .el-form,
|
||||||
|
.drawer >>> .attr-list {
|
||||||
|
padding: 0 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.drawer-body__footer {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
padding: 18px;
|
||||||
|
}
|
||||||
|
.action_btn {
|
||||||
|
float: right;
|
||||||
|
margin: 5px 15px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.add {
|
||||||
|
color: #0b58ff;
|
||||||
|
}
|
||||||
|
</style>
|
300
src/views/base/coreWorkOrder/addWorkOrder.vue
Normal file
300
src/views/base/coreWorkOrder/addWorkOrder.vue
Normal file
@ -0,0 +1,300 @@
|
|||||||
|
<template>
|
||||||
|
<el-form ref="dataForm" :rules="rules" label-width="130px" :model="dataForm">
|
||||||
|
<el-row>
|
||||||
|
<el-col :span='12'>
|
||||||
|
<el-form-item label="工单名称" prop="name">
|
||||||
|
<el-input v-model="dataForm.name"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span='12'>
|
||||||
|
<el-form-item label="工单编码" prop="code">
|
||||||
|
<el-input v-model="dataForm.code" disabled></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span='12'>
|
||||||
|
<el-form-item label="产品名称" prop="planProductId">
|
||||||
|
<el-select v-model="dataForm.planProductId" placeholder="请选择" style="width: 100%;" @change="selectProduct">
|
||||||
|
<el-option
|
||||||
|
v-for="item in productList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span='12'>
|
||||||
|
<el-form-item label="产品规格" prop="productSpec">
|
||||||
|
<el-input v-model="dataForm.productSpec" disabled></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span='12'>
|
||||||
|
<el-form-item label="计划开始时间">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="planStartTime"
|
||||||
|
type="datetime"
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
style="width: 100%;"
|
||||||
|
placeholder="选择日期">
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span='12'>
|
||||||
|
<el-form-item label="计划完成时间">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="planFinishTime"
|
||||||
|
type="datetime"
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
style="width: 100%;"
|
||||||
|
placeholder="选择日期">
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span='12'>
|
||||||
|
<el-form-item label="计划投入数量" prop="planAssignQuantity">
|
||||||
|
<el-input-number v-model="dataForm.planAssignQuantity" :min="0" :max="9999999999999" style="width: 100%;"></el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span='12'>
|
||||||
|
<el-form-item label="计划生产数量" prop="planQuantity">
|
||||||
|
<el-input-number v-model="dataForm.planQuantity" :min="0" :max="9999999999999" style="width: 100%;"></el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span='12'>
|
||||||
|
<el-form-item label="关联工艺" prop="processFlowId">
|
||||||
|
<el-select v-model="dataForm.processFlowId" placeholder="请选择" style="width: 100%;">
|
||||||
|
<el-option
|
||||||
|
v-for="item in processFlowList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span='12'>
|
||||||
|
<el-form-item label="物料计算方式" prop="materialMethod">
|
||||||
|
<el-radio-group v-model="dataForm.materialMethod">
|
||||||
|
<el-radio :label="1">产品基础</el-radio>
|
||||||
|
<el-radio :label="2">工艺扩展</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span='12'>
|
||||||
|
<el-form-item label="优先级" prop="priority">
|
||||||
|
<el-select v-model="dataForm.priority" placeholder="请选择" style="width: 100%;">
|
||||||
|
<el-option
|
||||||
|
v-for="item in getDictDatas(DICT_TYPE.ORDER_PRIORITY)"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span='12'>
|
||||||
|
<el-form-item label="工单类型" prop="type">
|
||||||
|
<el-select v-model="dataForm.type" placeholder="请选择" style="width: 100%;">
|
||||||
|
<el-option
|
||||||
|
v-for="item in workOrderTypeList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span='12'>
|
||||||
|
<el-form-item label="关联产线" prop="productLineIds">
|
||||||
|
<el-select v-model="dataForm.productLineIds" placeholder="请选择" multiple style="width: 100%;">
|
||||||
|
<el-option
|
||||||
|
v-for="item in productLineList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span='12'>
|
||||||
|
<el-form-item label="负责人" prop="workers">
|
||||||
|
<el-input v-model="dataForm.workers"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<!-- <el-row>
|
||||||
|
<el-col :span='12'>
|
||||||
|
<el-form-item label="计划分配订单量" prop="planAssignmentQuantity">
|
||||||
|
<el-input-number v-model="form.planAssignmentQuantity" :min="0" :max="9999999999999" style="width: 100%;"></el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row> -->
|
||||||
|
</el-form>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { getProductAll } from '@/api/base/product'
|
||||||
|
import { getProcessFlowList, workOrderList } from '@/api/base/orderManage'
|
||||||
|
import { createCoreWO, updateCoreWO, getCode, getCoreWO } from '@/api/base/coreWorkOrder'
|
||||||
|
import { getLineAll } from '@/api/base/productionLine'
|
||||||
|
import basicAdd from '../../core/mixins/basic-add';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'AddWorkOrder',
|
||||||
|
mixins: [basicAdd],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
urlOptions: {
|
||||||
|
isGetCode: true,
|
||||||
|
codeURL: getCode,
|
||||||
|
createURL: createCoreWO,
|
||||||
|
updateURL: updateCoreWO,
|
||||||
|
infoURL: getCoreWO
|
||||||
|
},
|
||||||
|
dataForm: {
|
||||||
|
id: undefined,
|
||||||
|
workOrderId: '',
|
||||||
|
name: '',
|
||||||
|
code: '',
|
||||||
|
planProductId: '',
|
||||||
|
productSpec: '',
|
||||||
|
planStartTime: '',
|
||||||
|
planFinishTime: '',
|
||||||
|
planAssignQuantity: 0,
|
||||||
|
planQuantity: 0,
|
||||||
|
processFlowId: '',
|
||||||
|
materialMethod: 1,
|
||||||
|
priority: '',
|
||||||
|
productLineIds: [],
|
||||||
|
type: '',
|
||||||
|
workers: ''
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
name: [{ required: true, message: "工单名称不能为空", trigger: "blur" }],
|
||||||
|
planProductId: [{ required: true, message: "产品名称不能为空", trigger: "change" }],
|
||||||
|
planAssignQuantity: [{ required: true, message: "计划投入数量不能为空", trigger: "blur" }],
|
||||||
|
planQuantity: [{ required: true, message: "计划生产数量不能为空", trigger: "blur" }],
|
||||||
|
productLineIds: [{ required: true, message: "产品不能为空", trigger: "change" }]
|
||||||
|
},
|
||||||
|
productList: [],
|
||||||
|
processFlowList: [],
|
||||||
|
productLineList: [],
|
||||||
|
workOrderTypeList: [
|
||||||
|
{id: 1,name:'标准工单'},
|
||||||
|
{id: 2, name:'特殊工单'}
|
||||||
|
],
|
||||||
|
planStartTime: '',
|
||||||
|
planFinishTime: '',
|
||||||
|
isBind: false,
|
||||||
|
workOrderList: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getDict()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init(id) {
|
||||||
|
this.dataForm.id = id || "";
|
||||||
|
this.visible = true;
|
||||||
|
if (this.urlOptions.getOption) {
|
||||||
|
this.getArr()
|
||||||
|
}
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs["dataForm"].resetFields();
|
||||||
|
this.planStartTime = ''
|
||||||
|
this.planFinishTime = ''
|
||||||
|
if (this.dataForm.id) {
|
||||||
|
getCoreWO(id).then(response => {
|
||||||
|
this.dataForm = response.data;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
if (this.urlOptions.isGetCode) {
|
||||||
|
this.getCode()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 表单提交
|
||||||
|
dataFormSubmit() {
|
||||||
|
this.$refs["dataForm"].validate((valid) => {
|
||||||
|
if (!valid) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// 修改的提交
|
||||||
|
if (this.dataForm.id) {
|
||||||
|
this.urlOptions.updateURL(this.dataForm).then(response => {
|
||||||
|
this.$modal.msgSuccess("修改成功");
|
||||||
|
this.visible = false;
|
||||||
|
this.$emit("refreshDataList");
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 添加的提交
|
||||||
|
this.urlOptions.createURL(this.dataForm).then(response => {
|
||||||
|
this.$modal.msgSuccess("新增成功");
|
||||||
|
this.visible = false;
|
||||||
|
this.$confirm('是否添加预使用主原料信息?', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
this.$emit("refreshDataList", true);
|
||||||
|
}).catch(() => {
|
||||||
|
this.$emit("refreshDataList");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getCode() {
|
||||||
|
this.urlOptions.codeURL()
|
||||||
|
.then(({ data: res }) => {
|
||||||
|
this.dataForm.code = res;
|
||||||
|
})
|
||||||
|
.catch(() => {});
|
||||||
|
},
|
||||||
|
getDict() {
|
||||||
|
// 产品
|
||||||
|
getProductAll().then(res => {
|
||||||
|
this.productList = res.data || []
|
||||||
|
})
|
||||||
|
// 产线
|
||||||
|
getLineAll().then(res => {
|
||||||
|
this.productLineList = res.data || []
|
||||||
|
})
|
||||||
|
// 工艺
|
||||||
|
getProcessFlowList().then(res => {
|
||||||
|
this.processFlowList = res.data || []
|
||||||
|
})
|
||||||
|
// 工单list
|
||||||
|
workOrderList({
|
||||||
|
status: 1
|
||||||
|
}).then(res => {
|
||||||
|
this.workOrderList = res.data || []
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 选产品带出规格
|
||||||
|
selectProduct(val) {
|
||||||
|
if (val) {
|
||||||
|
this.productList.map(item => {
|
||||||
|
if (val === item.id) {
|
||||||
|
this.dataForm.productSpec = item.specifications
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.dataForm.productSpec = ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
211
src/views/base/coreWorkOrder/attr-add.vue
Normal file
211
src/views/base/coreWorkOrder/attr-add.vue
Normal file
@ -0,0 +1,211 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
:visible.sync="visible"
|
||||||
|
:width="'35%'"
|
||||||
|
:append-to-body="true"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
class="dialog">
|
||||||
|
<template #title>
|
||||||
|
<slot name="title">
|
||||||
|
<div class="titleStyle">
|
||||||
|
{{ !dataForm.id ? '新增' : '编辑' }}
|
||||||
|
</div>
|
||||||
|
</slot>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<el-form
|
||||||
|
ref="dataForm"
|
||||||
|
:model="dataForm"
|
||||||
|
:rules="dataRule"
|
||||||
|
label-width="100px"
|
||||||
|
@keyup.enter.native="dataFormSubmit()">
|
||||||
|
<el-form-item label="原料" prop="material">
|
||||||
|
<el-select
|
||||||
|
v-model="dataForm.material"
|
||||||
|
filterable
|
||||||
|
style="width: 100%"
|
||||||
|
placeholder="请选择原料">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in getDictDatas('material')"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="来源" prop="origin">
|
||||||
|
<el-select
|
||||||
|
v-model="dataForm.origin"
|
||||||
|
filterable
|
||||||
|
style="width: 100%"
|
||||||
|
placeholder="请选择来源">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in originList"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="供应商" prop="supplierId">
|
||||||
|
<el-select
|
||||||
|
v-model="dataForm.supplierId"
|
||||||
|
filterable
|
||||||
|
style="width: 100%"
|
||||||
|
placeholder="请选择供应商">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in supplierList"
|
||||||
|
:key="dict.id"
|
||||||
|
:label="dict.name"
|
||||||
|
:value="dict.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="批次号" prop="batch">
|
||||||
|
<el-input
|
||||||
|
v-model="dataForm.batch"
|
||||||
|
clearable
|
||||||
|
placeholder="请输入规格" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="数量" prop="num">
|
||||||
|
<el-input-number
|
||||||
|
v-model="dataForm.num"
|
||||||
|
clearable
|
||||||
|
style="width: 100%"
|
||||||
|
placeholder="请输入数量" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="单位" prop="unit">
|
||||||
|
<el-select
|
||||||
|
v-model="dataForm.unit"
|
||||||
|
filterable
|
||||||
|
placeholder="请选择单位">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in getDictDatas('unit_dict')"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<el-row style="text-align: right">
|
||||||
|
<el-button @click="visible = false">取消</el-button>
|
||||||
|
<el-button type="primary" @click="dataFormSubmit()">确定</el-button>
|
||||||
|
</el-row>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
createCoreWOMa,
|
||||||
|
updateCoreWOMa,
|
||||||
|
getCoreWOMa
|
||||||
|
} from '@/api/base/coreWorkOrder';
|
||||||
|
import { getSupplierList } from "@/api/base/material";
|
||||||
|
import { getDictDatas} from "@/utils/dict";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
productId: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
visible: false,
|
||||||
|
dataForm: {
|
||||||
|
id: undefined,
|
||||||
|
material: '',
|
||||||
|
origin: undefined,
|
||||||
|
supplierId: undefined,
|
||||||
|
batch: undefined,
|
||||||
|
num: 0,
|
||||||
|
unit: undefined
|
||||||
|
},
|
||||||
|
originList: [
|
||||||
|
{ label: 1, value: '内部'},
|
||||||
|
{ label: 2, value: '采购'}
|
||||||
|
],
|
||||||
|
supplierList: [],
|
||||||
|
dataRule: {
|
||||||
|
material: [{ required: true, message: '物料不能为空', trigger: 'blur' }],
|
||||||
|
num: [{ required: true, message: '数量不能为空', trigger: 'blur' }]
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getDict()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async getDict() {
|
||||||
|
// 供应商列表
|
||||||
|
const supplierRes = await getSupplierList();
|
||||||
|
this.supplierList = supplierRes.data;
|
||||||
|
},
|
||||||
|
init(id) {
|
||||||
|
this.dataForm.id = id || '';
|
||||||
|
this.visible = true;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs['dataForm'].resetFields();
|
||||||
|
if (this.dataForm.id) {
|
||||||
|
getCoreWOMa({
|
||||||
|
id: this.dataForm.id
|
||||||
|
}).then((res) => {
|
||||||
|
this.dataForm = res.data
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 表单提交
|
||||||
|
dataFormSubmit() {
|
||||||
|
this.$refs['dataForm'].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
// 修改的提交
|
||||||
|
if (this.dataForm.id) {
|
||||||
|
updateCoreWOMa({
|
||||||
|
...this.dataForm,
|
||||||
|
workOrderId: this.productId,
|
||||||
|
}).then((response) => {
|
||||||
|
this.$modal.msgSuccess('修改成功');
|
||||||
|
this.visible = false;
|
||||||
|
this.$emit('refreshDataList');
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 添加的提交
|
||||||
|
createCoreWOMa({
|
||||||
|
...this.dataForm,
|
||||||
|
workOrderId: this.productId,
|
||||||
|
}).then((response) => {
|
||||||
|
this.$modal.msgSuccess('新增成功');
|
||||||
|
this.visible = false;
|
||||||
|
this.$emit('refreshDataList');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.dialog >>> .el-dialog__body {
|
||||||
|
padding: 30px 24px;
|
||||||
|
}
|
||||||
|
.dialog >>> .el-dialog__header {
|
||||||
|
font-size: 16px;
|
||||||
|
color: rgba(0, 0, 0, 0.85);
|
||||||
|
font-weight: 500;
|
||||||
|
padding: 13px 24px;
|
||||||
|
border-bottom: 1px solid #e9e9e9;
|
||||||
|
}
|
||||||
|
.dialog >>> .el-dialog__header .titleStyle::before {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
width: 4px;
|
||||||
|
height: 16px;
|
||||||
|
background-color: #0b58ff;
|
||||||
|
border-radius: 1px;
|
||||||
|
margin-right: 8px;
|
||||||
|
position: relative;
|
||||||
|
top: 2px;
|
||||||
|
}
|
||||||
|
</style>
|
265
src/views/base/coreWorkOrder/index.vue
Normal file
265
src/views/base/coreWorkOrder/index.vue
Normal file
@ -0,0 +1,265 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<search-bar
|
||||||
|
:formConfigs="formConfig"
|
||||||
|
ref="searchBarForm"
|
||||||
|
@headBtnClick="buttonClick" />
|
||||||
|
<base-table
|
||||||
|
v-loading="dataListLoading"
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.pageNo"
|
||||||
|
:limit="listQuery.pageSize"
|
||||||
|
:table-data="tableData">
|
||||||
|
<method-btn
|
||||||
|
v-if="tableBtn.length"
|
||||||
|
slot="handleBtn"
|
||||||
|
:width="300"
|
||||||
|
label="操作"
|
||||||
|
:method-list="tableBtn"
|
||||||
|
@clickBtn="handleClick" />
|
||||||
|
</base-table>
|
||||||
|
<pagination
|
||||||
|
:limit.sync="listQuery.pageSize"
|
||||||
|
:page.sync="listQuery.pageNo"
|
||||||
|
:total="listQuery.total"
|
||||||
|
@pagination="getDataList" />
|
||||||
|
<base-dialog
|
||||||
|
:dialogTitle="addOrEditTitle"
|
||||||
|
:dialogVisible="addOrUpdateVisible"
|
||||||
|
@cancel="handleCancel"
|
||||||
|
@confirm="handleConfirm"
|
||||||
|
:before-close="handleCancel"
|
||||||
|
width="70%">
|
||||||
|
<add-work-order
|
||||||
|
ref="addOrUpdate"
|
||||||
|
@refreshDataList="refreshWorkOrder"></add-work-order>
|
||||||
|
</base-dialog>
|
||||||
|
<add-or-update
|
||||||
|
v-if="detailVisible"
|
||||||
|
ref="detail"
|
||||||
|
@refreshDataList="closeDetail"></add-or-update>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import AddOrUpdate from './add-or-updata';
|
||||||
|
import AddWorkOrder from './addWorkOrder'
|
||||||
|
import basicPage from '../../core/mixins/basic-page';
|
||||||
|
import { parseTime } from '../../core/mixins/code-filter';
|
||||||
|
import {
|
||||||
|
getCoreWOPage,
|
||||||
|
deleteCoreWO
|
||||||
|
} from '@/api/base/coreWorkOrder';
|
||||||
|
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: 'createTime',
|
||||||
|
label: '创建时间',
|
||||||
|
filter: parseTime
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'name',
|
||||||
|
label: '工单名称'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'code',
|
||||||
|
label: '工单编码'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'workers',
|
||||||
|
label: '负责人'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'priority',
|
||||||
|
label: '优先级',
|
||||||
|
filter: (val) => ['', '低', '正常', '高'][val]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'triggerOrigin',
|
||||||
|
label: '来源',
|
||||||
|
filter: (val) => ['', 'MES', 'ERP'][val]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'status',
|
||||||
|
label: '工单状态',
|
||||||
|
filter: (val) => ['', '等待', '激活', '暂停', '完成', '', '', '', '', '作废'][val]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'planFinishTime',
|
||||||
|
label: '计划完成时间',
|
||||||
|
filter: parseTime
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'planQuantity',
|
||||||
|
label: '计划生产数量'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'actualQuantity',
|
||||||
|
label: '实际生产数量'
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [basicPage],
|
||||||
|
components: {
|
||||||
|
AddWorkOrder,
|
||||||
|
AddOrUpdate
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
urlOptions: {
|
||||||
|
getDataListURL: getCoreWOPage,
|
||||||
|
deleteURL: deleteCoreWO
|
||||||
|
},
|
||||||
|
detailVisible: false,
|
||||||
|
tableProps,
|
||||||
|
tableBtn: [
|
||||||
|
this.$auth.hasPermi(`base:core-work-order:update`)
|
||||||
|
? {
|
||||||
|
type: 'edit',
|
||||||
|
btnName: '编辑',
|
||||||
|
}
|
||||||
|
: undefined,
|
||||||
|
this.$auth.hasPermi(`base:core-work-order:material`)
|
||||||
|
? {
|
||||||
|
type: 'material',
|
||||||
|
btnName: '预使用原料信息',
|
||||||
|
}
|
||||||
|
: undefined,
|
||||||
|
this.$auth.hasPermi(`base:core-work-order:detail`)
|
||||||
|
? {
|
||||||
|
type: 'detail',
|
||||||
|
btnName: '查看详情',
|
||||||
|
}
|
||||||
|
: undefined,
|
||||||
|
this.$auth.hasPermi(`base:core-work-order:delete`)
|
||||||
|
? {
|
||||||
|
type: 'delete',
|
||||||
|
btnName: '删除',
|
||||||
|
}
|
||||||
|
: undefined,
|
||||||
|
// {
|
||||||
|
// type: 'equal',
|
||||||
|
// btnName: '开始',
|
||||||
|
// showParam: {
|
||||||
|
// type: '&',
|
||||||
|
// data: [
|
||||||
|
// {
|
||||||
|
// name: 'status',
|
||||||
|
// type: 'equal',
|
||||||
|
// value: 1
|
||||||
|
// }
|
||||||
|
// ]
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
].filter((v)=>v),
|
||||||
|
tableData: [],
|
||||||
|
formConfig: [
|
||||||
|
{
|
||||||
|
type: 'input',
|
||||||
|
label: '工单名称',
|
||||||
|
placeholder: '工单名称',
|
||||||
|
param: 'name'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'select',
|
||||||
|
label: '状态',
|
||||||
|
selectOptions: [
|
||||||
|
{ id: 1, name: '等待' },
|
||||||
|
{ id: 2, name: '激活' },
|
||||||
|
{ id: 3, name: '暂停' },
|
||||||
|
{ id: 4, name: '完成' },
|
||||||
|
{ id: 9, name: '作废' }
|
||||||
|
],
|
||||||
|
param: 'status',
|
||||||
|
clearable: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'datePicker',
|
||||||
|
label: '工单实际开始时间',
|
||||||
|
dateType: 'datetimerange',
|
||||||
|
format: 'yyyy-MM-dd',
|
||||||
|
valueFormat: 'yyyy-MM-dd HH:mm:ss',
|
||||||
|
rangeSeparator: '-',
|
||||||
|
startPlaceholder: '开始时间',
|
||||||
|
endPlaceholder: '结束时间',
|
||||||
|
width: 350,
|
||||||
|
param: 'time'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'button',
|
||||||
|
btnName: '查询',
|
||||||
|
name: 'search',
|
||||||
|
color: 'primary',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'separate',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: this.$auth.hasPermi('base:core-work-order:create') ? 'button' : '',
|
||||||
|
btnName: '新增',
|
||||||
|
name: 'add',
|
||||||
|
color: 'success',
|
||||||
|
plain: true
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {},
|
||||||
|
methods: {
|
||||||
|
refreshWorkOrder(val) {
|
||||||
|
console.log(val)
|
||||||
|
if (val) {
|
||||||
|
console.log('打印')
|
||||||
|
} else {
|
||||||
|
this.successSubmit()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
closeDetail() {
|
||||||
|
this.detailVisible = false
|
||||||
|
this.getDataList()
|
||||||
|
},
|
||||||
|
// 其他方法
|
||||||
|
otherMethods(val) {
|
||||||
|
if (val.type === 'material') {
|
||||||
|
this.detailVisible = true;
|
||||||
|
this.addOrEditTitle = "预使用主原料信息";
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.detail.init(val.data.id, true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
buttonClick(val) {
|
||||||
|
switch (val.btnName) {
|
||||||
|
case 'search':
|
||||||
|
this.listQuery.pageNo = 1;
|
||||||
|
this.listQuery.pageSize = 10;
|
||||||
|
this.listQuery.name = val.name ? val.name : undefined;
|
||||||
|
this.listQuery.status = val.status ? val.status : undefined;
|
||||||
|
this.listQuery.startProduceTime = val.time ? val.time : undefined
|
||||||
|
this.getDataList();
|
||||||
|
break;
|
||||||
|
case 'reset':
|
||||||
|
this.$refs.searchBarForm.resetForm();
|
||||||
|
this.listQuery = {
|
||||||
|
pageSize: 10,
|
||||||
|
pageNo: 1,
|
||||||
|
total: 1,
|
||||||
|
};
|
||||||
|
this.getDataList();
|
||||||
|
break;
|
||||||
|
case 'add':
|
||||||
|
this.addOrEditTitle = '新增';
|
||||||
|
this.addOrUpdateVisible = true;
|
||||||
|
this.addOrUpdateHandle();
|
||||||
|
break;
|
||||||
|
case 'export':
|
||||||
|
this.handleExport();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log(val);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
103
src/views/base/coreWorkshopSection/add-or-updata.vue
Normal file
103
src/views/base/coreWorkshopSection/add-or-updata.vue
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
<!--
|
||||||
|
* @Author: zwq
|
||||||
|
* @Date: 2021-11-18 14:16:25
|
||||||
|
* @LastEditors: DY
|
||||||
|
* @LastEditTime: 2023-11-03 19:31:25
|
||||||
|
* @Description:
|
||||||
|
-->
|
||||||
|
<template>
|
||||||
|
<el-form
|
||||||
|
:model="dataForm"
|
||||||
|
:rules="dataRule"
|
||||||
|
ref="dataForm"
|
||||||
|
@keyup.enter.native="dataFormSubmit()"
|
||||||
|
label-width="80px">
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="工段名称" prop="name">
|
||||||
|
<el-input v-model="dataForm.name" clearable placeholder="请输入工段名称" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="工段编号" prop="code">
|
||||||
|
<el-input v-model="dataForm.code" clearable placeholder="请输入工段编号" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="产线" prop="productionLineId">
|
||||||
|
<el-select
|
||||||
|
v-model="dataForm.productionLineId"
|
||||||
|
filterable
|
||||||
|
placeholder="请选择产线">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in proLineList"
|
||||||
|
:key="dict.id"
|
||||||
|
:label="dict.name"
|
||||||
|
:value="dict.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="排序" prop="sort">
|
||||||
|
<el-input-number
|
||||||
|
v-model="dataForm.sort"
|
||||||
|
placeholder="排序" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input
|
||||||
|
v-model="dataForm.remark"
|
||||||
|
placeholder="请输入备注" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import basicAdd from '../../core/mixins/basic-add';
|
||||||
|
import { createCWSection, updateCWSection, getCWSection, getCode } from "@/api/base/coreWorkshopSection";
|
||||||
|
import { getCorePLList } from '@/api/base/coreProductionLine';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [basicAdd],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
urlOptions: {
|
||||||
|
isGetCode: true,
|
||||||
|
codeURL: getCode,
|
||||||
|
createURL: createCWSection,
|
||||||
|
updateURL: updateCWSection,
|
||||||
|
infoURL: getCWSection
|
||||||
|
},
|
||||||
|
dataForm: {
|
||||||
|
id: undefined,
|
||||||
|
code: undefined,
|
||||||
|
name: undefined,
|
||||||
|
description: undefined,
|
||||||
|
sort: 0,
|
||||||
|
productionLineId: undefined,
|
||||||
|
remark: undefined,
|
||||||
|
},
|
||||||
|
proLineList: [],
|
||||||
|
dataRule: {
|
||||||
|
code: [{ required: true, message: "专业编码不能为空", trigger: "blur" }],
|
||||||
|
name: [{ required: true, message: "专业名称不能为空", trigger: "blur" }],
|
||||||
|
productionLineId: [{ required: true, message: "产线不能为空", trigger: "blur" }],
|
||||||
|
sort: [{ required: true, message: "排序不能为空", trigger: "blur" }]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getDict()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async getDict() {
|
||||||
|
// 产线列表
|
||||||
|
const res = await getCorePLList();
|
||||||
|
this.proLineList = res.data;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
172
src/views/base/coreWorkshopSection/index.vue
Normal file
172
src/views/base/coreWorkshopSection/index.vue
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<search-bar
|
||||||
|
:formConfigs="formConfig"
|
||||||
|
ref="searchBarForm"
|
||||||
|
@headBtnClick="buttonClick" />
|
||||||
|
<base-table
|
||||||
|
v-loading="dataListLoading"
|
||||||
|
:table-props="tableProps"
|
||||||
|
:page="listQuery.pageNo"
|
||||||
|
:limit="listQuery.pageSize"
|
||||||
|
:table-data="tableData">
|
||||||
|
<method-btn
|
||||||
|
v-if="tableBtn.length"
|
||||||
|
slot="handleBtn"
|
||||||
|
:width="120"
|
||||||
|
label="操作"
|
||||||
|
:method-list="tableBtn"
|
||||||
|
@clickBtn="handleClick" />
|
||||||
|
</base-table>
|
||||||
|
<pagination
|
||||||
|
:limit.sync="listQuery.pageSize"
|
||||||
|
:page.sync="listQuery.pageNo"
|
||||||
|
:total="listQuery.total"
|
||||||
|
@pagination="getDataList" />
|
||||||
|
<base-dialog
|
||||||
|
:dialogTitle="addOrEditTitle"
|
||||||
|
:dialogVisible="addOrUpdateVisible"
|
||||||
|
@cancel="handleCancel"
|
||||||
|
@confirm="handleConfirm"
|
||||||
|
:before-close="handleCancel"
|
||||||
|
width="50%">
|
||||||
|
<add-or-update
|
||||||
|
ref="addOrUpdate"
|
||||||
|
@refreshDataList="successSubmit"></add-or-update>
|
||||||
|
</base-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import AddOrUpdate from './add-or-updata';
|
||||||
|
import basicPage from '../../core/mixins/basic-page';
|
||||||
|
import { parseTime } from '../../core/mixins/code-filter';
|
||||||
|
import {
|
||||||
|
getCWSectionPage,
|
||||||
|
deleteCWSection
|
||||||
|
} from '@/api/base/coreWorkshopSection';
|
||||||
|
|
||||||
|
const tableProps = [
|
||||||
|
{
|
||||||
|
prop: 'createTime',
|
||||||
|
label: '添加时间',
|
||||||
|
filter: parseTime
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'code',
|
||||||
|
label: '工段编码'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'name',
|
||||||
|
label: '工段名称'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'productionLineName',
|
||||||
|
label: '产线名'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'sort',
|
||||||
|
label: '排序'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'remark',
|
||||||
|
label: '备注'
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [basicPage],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
urlOptions: {
|
||||||
|
getDataListURL: getCWSectionPage,
|
||||||
|
deleteURL: deleteCWSection
|
||||||
|
},
|
||||||
|
tableProps,
|
||||||
|
tableBtn: [
|
||||||
|
this.$auth.hasPermi(`base:core-workshop-section:update`)
|
||||||
|
? {
|
||||||
|
type: 'edit',
|
||||||
|
btnName: '编辑',
|
||||||
|
}
|
||||||
|
: undefined,
|
||||||
|
this.$auth.hasPermi(`base:core-workshop-section:delete`)
|
||||||
|
? {
|
||||||
|
type: 'delete',
|
||||||
|
btnName: '删除',
|
||||||
|
}
|
||||||
|
: undefined,
|
||||||
|
].filter((v)=>v),
|
||||||
|
tableData: [],
|
||||||
|
formConfig: [
|
||||||
|
{
|
||||||
|
type: 'input',
|
||||||
|
label: '工段名称',
|
||||||
|
placeholder: '工段名称',
|
||||||
|
param: 'name'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'button',
|
||||||
|
btnName: '查询',
|
||||||
|
name: 'search',
|
||||||
|
color: 'primary',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'separate',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: this.$auth.hasPermi('base:core-workshop-section:create') ? 'button' : '',
|
||||||
|
btnName: '新增',
|
||||||
|
name: 'add',
|
||||||
|
color: 'success',
|
||||||
|
plain: true
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
AddOrUpdate,
|
||||||
|
},
|
||||||
|
created() {},
|
||||||
|
methods: {
|
||||||
|
// 获取数据列表
|
||||||
|
// getDataList() {
|
||||||
|
// this.dataListLoading = true;
|
||||||
|
// this.urlOptions.getDataListURL(this.listQuery).then(response => {
|
||||||
|
// this.tableData = response.data.list;
|
||||||
|
// this.listQuery.total = response.data.total;
|
||||||
|
// this.dataListLoading = false;
|
||||||
|
// });
|
||||||
|
// },
|
||||||
|
buttonClick(val) {
|
||||||
|
switch (val.btnName) {
|
||||||
|
case 'search':
|
||||||
|
this.listQuery.pageNo = 1;
|
||||||
|
this.listQuery.pageSize = 10;
|
||||||
|
this.listQuery.name = val.name ? val.name : undefined;
|
||||||
|
this.getDataList();
|
||||||
|
break;
|
||||||
|
case 'reset':
|
||||||
|
this.$refs.searchBarForm.resetForm();
|
||||||
|
this.listQuery = {
|
||||||
|
pageSize: 10,
|
||||||
|
pageNo: 1,
|
||||||
|
total: 1,
|
||||||
|
};
|
||||||
|
this.getDataList();
|
||||||
|
break;
|
||||||
|
case 'add':
|
||||||
|
this.addOrEditTitle = '新增';
|
||||||
|
this.addOrUpdateVisible = true;
|
||||||
|
this.addOrUpdateHandle();
|
||||||
|
break;
|
||||||
|
case 'export':
|
||||||
|
this.handleExport();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.log(val);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
@ -2,7 +2,7 @@
|
|||||||
* @Author: zwq
|
* @Author: zwq
|
||||||
* @Date: 2021-11-18 14:16:25
|
* @Date: 2021-11-18 14:16:25
|
||||||
* @LastEditors: DY
|
* @LastEditors: DY
|
||||||
* @LastEditTime: 2023-10-16 11:16:48
|
* @LastEditTime: 2023-11-03 16:32:52
|
||||||
* @Description:
|
* @Description:
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
@ -13,14 +13,6 @@
|
|||||||
@keyup.enter.native="dataFormSubmit()"
|
@keyup.enter.native="dataFormSubmit()"
|
||||||
label-width="80px">
|
label-width="80px">
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="工厂编码" prop="code">
|
|
||||||
<el-input
|
|
||||||
v-model="dataForm.code"
|
|
||||||
clearable
|
|
||||||
placeholder="请输入工厂编码" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="工厂名称" prop="name">
|
<el-form-item label="工厂名称" prop="name">
|
||||||
<el-input
|
<el-input
|
||||||
@ -29,6 +21,14 @@
|
|||||||
placeholder="请输入工厂名称" />
|
placeholder="请输入工厂名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="工厂编码" prop="code">
|
||||||
|
<el-input
|
||||||
|
v-model="dataForm.code"
|
||||||
|
clearable
|
||||||
|
placeholder="请输入工厂编码" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
|
@ -43,19 +43,23 @@ import basicPage from '../../mixins/basic-page';
|
|||||||
import { parseTime } from '../../mixins/code-filter';
|
import { parseTime } from '../../mixins/code-filter';
|
||||||
import {
|
import {
|
||||||
deleteFactory,
|
deleteFactory,
|
||||||
getFactoryPage,
|
getFactoryPage
|
||||||
exportFactoryExcel,
|
|
||||||
} from '@/api/core/base/factory';
|
} from '@/api/core/base/factory';
|
||||||
|
|
||||||
const tableProps = [
|
const tableProps = [
|
||||||
{
|
{
|
||||||
prop: 'code',
|
prop: 'createTime',
|
||||||
label: '工厂编码'
|
label: '添加时间',
|
||||||
},
|
filter: parseTime
|
||||||
|
},
|
||||||
{
|
{
|
||||||
prop: 'name',
|
prop: 'name',
|
||||||
label: '工厂名称'
|
label: '工厂名称'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
prop: 'code',
|
||||||
|
label: '工厂编码'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
prop: 'address',
|
prop: 'address',
|
||||||
label: '地址'
|
label: '地址'
|
||||||
@ -63,12 +67,7 @@ const tableProps = [
|
|||||||
{
|
{
|
||||||
prop: 'remark',
|
prop: 'remark',
|
||||||
label: '备注'
|
label: '备注'
|
||||||
},
|
}
|
||||||
{
|
|
||||||
prop: 'createTime',
|
|
||||||
label: '创建时间',
|
|
||||||
filter: parseTime
|
|
||||||
},
|
|
||||||
];
|
];
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@ -78,17 +77,17 @@ export default {
|
|||||||
urlOptions: {
|
urlOptions: {
|
||||||
getDataListURL: getFactoryPage,
|
getDataListURL: getFactoryPage,
|
||||||
deleteURL: deleteFactory,
|
deleteURL: deleteFactory,
|
||||||
exportURL: exportFactoryExcel,
|
// exportURL: exportFactoryExcel,
|
||||||
},
|
},
|
||||||
tableProps,
|
tableProps,
|
||||||
tableBtn: [
|
tableBtn: [
|
||||||
this.$auth.hasPermi(`base:factory:update`)
|
this.$auth.hasPermi(`base:core-factory:update`)
|
||||||
? {
|
? {
|
||||||
type: 'edit',
|
type: 'edit',
|
||||||
btnName: '编辑',
|
btnName: '编辑',
|
||||||
}
|
}
|
||||||
: undefined,
|
: undefined,
|
||||||
this.$auth.hasPermi(`base:factory:delete`)
|
this.$auth.hasPermi(`base:core-factory:delete`)
|
||||||
? {
|
? {
|
||||||
type: 'delete',
|
type: 'delete',
|
||||||
btnName: '删除',
|
btnName: '删除',
|
||||||
@ -97,18 +96,18 @@ export default {
|
|||||||
].filter((v)=>v),
|
].filter((v)=>v),
|
||||||
tableData: [],
|
tableData: [],
|
||||||
formConfig: [
|
formConfig: [
|
||||||
{
|
|
||||||
type: 'input',
|
|
||||||
label: '工厂编码',
|
|
||||||
placeholder: '工厂编码',
|
|
||||||
param: 'code',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
type: 'input',
|
type: 'input',
|
||||||
label: '工厂名称',
|
label: '工厂名称',
|
||||||
placeholder: '工厂名称',
|
placeholder: '工厂名称',
|
||||||
param: 'name',
|
param: 'name',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
type: 'input',
|
||||||
|
label: '工厂编码',
|
||||||
|
placeholder: '工厂编码',
|
||||||
|
param: 'code',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
type: 'button',
|
type: 'button',
|
||||||
btnName: '搜索',
|
btnName: '搜索',
|
||||||
@ -127,7 +126,7 @@ export default {
|
|||||||
type: 'separate',
|
type: 'separate',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: this.$auth.hasPermi('base:factory:create') ? 'button' : '',
|
type: this.$auth.hasPermi('base:core-factory:create') ? 'button' : '',
|
||||||
btnName: '新增',
|
btnName: '新增',
|
||||||
name: 'add',
|
name: 'add',
|
||||||
color: 'success',
|
color: 'success',
|
||||||
|
Loading…
Reference in New Issue
Block a user