projects/mes-test #133
							
								
								
									
										8
									
								
								.env.dev
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								.env.dev
									
									
									
									
									
								
							@@ -1,8 +1,8 @@
 | 
			
		||||
###
 | 
			
		||||
 # @Author: Do not edit
 | 
			
		||||
 # @Date: 2023-08-29 09:40:39
 | 
			
		||||
 # @LastEditTime: 2023-10-17 09:51:48
 | 
			
		||||
 # @LastEditors: zhp
 | 
			
		||||
 # @LastEditTime: 2023-10-27 16:17:13
 | 
			
		||||
 # @LastEditors: DY
 | 
			
		||||
 # @Description:
 | 
			
		||||
###
 | 
			
		||||
# 开发环境配置
 | 
			
		||||
@@ -13,11 +13,11 @@ VUE_APP_TITLE = MES系统
 | 
			
		||||
 | 
			
		||||
# 芋道管理系统/开发环境
 | 
			
		||||
 | 
			
		||||
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.1.49: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'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -26,12 +26,3 @@ export function autoSet(query) {
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得排班信息分页 建议size 150
 | 
			
		||||
export function groupTeamSchedulingPage(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/group-team-scheduling/page',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										121
									
								
								src/api/base/material.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										121
									
								
								src/api/base/material.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,121 @@
 | 
			
		||||
/*
 | 
			
		||||
 * @Author: Do not edit
 | 
			
		||||
 * @Date: 2023-10-21 11:50:46
 | 
			
		||||
 * @LastEditTime: 2023-10-24 11:22:28
 | 
			
		||||
 * @LastEditors: DY
 | 
			
		||||
 * @Description: 
 | 
			
		||||
 */
 | 
			
		||||
import request from '@/utils/request'
 | 
			
		||||
 | 
			
		||||
// 创建物料
 | 
			
		||||
export function createMaterial(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material/create',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 更新物料
 | 
			
		||||
export function updateMaterial(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material/update',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 删除物料
 | 
			
		||||
export function deleteMaterial(id) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material/delete?id=' + id,
 | 
			
		||||
    method: 'delete'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得物料
 | 
			
		||||
export function getMaterial(id) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material/get?id=' + id,
 | 
			
		||||
    method: 'get'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得物料code
 | 
			
		||||
export function getCode() {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material/getMaterialCode',
 | 
			
		||||
    method: 'get'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得物料分页
 | 
			
		||||
export function getMaterialPage(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material/page',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得物料列表
 | 
			
		||||
export function getMaterialList(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material/listbyfilter',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得供应商所有列表
 | 
			
		||||
export function getSupplierList(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/core-supplier/listAll',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得物料属性列表
 | 
			
		||||
export function getMaterialAttrList(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-attr/page',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 创建物料属性
 | 
			
		||||
export function createMaterialAttr(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-attr/create',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 更新物料属性
 | 
			
		||||
export function updateMaterialAttr(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-attr/update',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 删除物料属性
 | 
			
		||||
export function deleteMaterialAttr(id) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-attr/delete?id=' + id,
 | 
			
		||||
    method: 'delete'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得物料属性
 | 
			
		||||
export function getMaterialAttr(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-attr/get',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										68
									
								
								src/api/base/materialDate.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								src/api/base/materialDate.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,68 @@
 | 
			
		||||
/*
 | 
			
		||||
 * @Author: Do not edit
 | 
			
		||||
 * @Date: 2023-10-21 11:50:46
 | 
			
		||||
 * @LastEditTime: 2023-10-24 17:09:59
 | 
			
		||||
 * @LastEditors: DY
 | 
			
		||||
 * @Description: 
 | 
			
		||||
 */
 | 
			
		||||
import request from '@/utils/request'
 | 
			
		||||
 | 
			
		||||
// 创建物料批次
 | 
			
		||||
export function createMaterialDate(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-date/create',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 更新物料批次
 | 
			
		||||
export function updateMaterialDate(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-date/update',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 删除物料批次
 | 
			
		||||
export function deleteMaterialDate(id) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-date/delete?id=' + id,
 | 
			
		||||
    method: 'delete'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得物料批次
 | 
			
		||||
export function getMaterialDate(id) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-date/getDetail?id=' + id,
 | 
			
		||||
    method: 'get'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得物料批次code
 | 
			
		||||
export function getCode() {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-date/getMaterialDateCode',
 | 
			
		||||
    method: 'get'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得物料批次分页
 | 
			
		||||
export function getMaterDatePage(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-date/page',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得物料批次列表
 | 
			
		||||
export function getMaterDateList(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-date/listbyfilter',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										112
									
								
								src/api/base/materialProductBom.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								src/api/base/materialProductBom.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,112 @@
 | 
			
		||||
/*
 | 
			
		||||
 * @Author: Do not edit
 | 
			
		||||
 * @Date: 2023-10-21 11:50:46
 | 
			
		||||
 * @LastEditTime: 2023-10-26 20:06:29
 | 
			
		||||
 * @LastEditors: DY
 | 
			
		||||
 * @Description: 
 | 
			
		||||
 */
 | 
			
		||||
import request from '@/utils/request'
 | 
			
		||||
 | 
			
		||||
// 创建产品Bom
 | 
			
		||||
export function createMaterialPB(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-product-bom/create',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 更新产品Bom
 | 
			
		||||
export function updateMaterialPB(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-product-bom/update',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 删除产品Bom
 | 
			
		||||
export function deleteMaterialPB(id) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-product-bom/delete?id=' + id,
 | 
			
		||||
    method: 'delete'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得产品Bom
 | 
			
		||||
export function getMaterialPB(id) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-product-bom/get?id=' + id,
 | 
			
		||||
    method: 'get'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得产品Bomcode
 | 
			
		||||
export function getCode() {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-product-bom/getMaterialProductBomCode',
 | 
			
		||||
    method: 'get'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得产品Bom分页
 | 
			
		||||
export function getMaterialPBPage(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-product-bom/page',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得产品Bom列表
 | 
			
		||||
export function getMaterialPBList(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-product-bom/listbyfilter',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得产品列表
 | 
			
		||||
export function getProList(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/core-product/listAll',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得产品Bom详细分页
 | 
			
		||||
export function getProBomList(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-product-bom-det/page',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 创建产品Bom详细
 | 
			
		||||
export function createMaterialPBDet(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-product-bom-det/create',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 更新产品Bom详细
 | 
			
		||||
export function updateMaterialPBDet(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-product-bom-det/update',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 删除产品Bom详细
 | 
			
		||||
export function deleteMaterialPBDet(id) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-product-bom-det/delete?id=' + id,
 | 
			
		||||
    method: 'delete'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										69
									
								
								src/api/base/materialUseLog.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								src/api/base/materialUseLog.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,69 @@
 | 
			
		||||
/*
 | 
			
		||||
 * @Author: Do not edit
 | 
			
		||||
 * @Date: 2023-10-21 11:50:46
 | 
			
		||||
 * @LastEditTime: 2023-10-26 09:32:21
 | 
			
		||||
 * @LastEditors: DY
 | 
			
		||||
 * @Description: 
 | 
			
		||||
 */
 | 
			
		||||
import request from '@/utils/request'
 | 
			
		||||
 | 
			
		||||
// 创建物料使用记录
 | 
			
		||||
export function createMaterialLog(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-use-log/create',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 更新物料使用记录
 | 
			
		||||
export function updateMaterialLog(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-use-log/update',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得物料使用记录
 | 
			
		||||
export function getMaterialLog(id) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-use-log/getDetail?id=' + id,
 | 
			
		||||
    method: 'get'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得物料使用记录分页
 | 
			
		||||
export function getMaterialLogPage(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-use-log/page',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得所有设备列表
 | 
			
		||||
export function getEqListAll(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/core-equipment/listAll',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得所有员工列表
 | 
			
		||||
export function getworkerAll(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/core-worker/listAll',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 删除物料使用记录
 | 
			
		||||
export function deleteMaterialLog(id) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/material-use-log/delete?id=' + id,
 | 
			
		||||
    method: 'delete'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
@@ -34,6 +34,14 @@ export function getOrderCode() {
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获取工单code
 | 
			
		||||
export function getWorkOrderCode() {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/order/getWorkOrderCode',
 | 
			
		||||
    method: 'get'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得订单
 | 
			
		||||
export function getOrderById(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
@@ -41,4 +49,48 @@ export function getOrderById(query) {
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得工艺流程列表
 | 
			
		||||
export function getProcessFlowList() {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/extend/process-flow/listAll',
 | 
			
		||||
    method: 'get'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 创建订单
 | 
			
		||||
export function orderCreate(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/order/create',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 更新订单
 | 
			
		||||
export function orderUpdate(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/order/update',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 删除订单
 | 
			
		||||
export function orderDelete(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/order/delete',
 | 
			
		||||
    method: 'delete',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 下发订单,绑定的穿工单id,新建不传
 | 
			
		||||
export function orderIssue(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/order/issue',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										19
									
								
								src/api/monitoring/teamProduction.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/api/monitoring/teamProduction.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
import request from '@/utils/request'
 | 
			
		||||
 | 
			
		||||
// 获得排班信息分页 建议size 150
 | 
			
		||||
export function groupTeamSchedulingPage(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/group-team-scheduling/page',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 获得不同产线每小时报废数据,用于班组检测 班组生产情况详情(动态结构)
 | 
			
		||||
export function getSchedulingMonitoringRecord(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/quality-inspection-record/getSchedulingMonitoringRecord',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										15
									
								
								src/assets/icons/svg/table_delete.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/assets/icons/svg/table_delete.svg
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<svg width="14px" height="14px" viewBox="0 0 14 14" 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(-1822.000000, -159.000000)" fill="#FF5454" fill-rule="nonzero">
 | 
			
		||||
            <g id="编组-10" transform="translate(1821.000000, 158.000000)">
 | 
			
		||||
                <g id="删除">
 | 
			
		||||
                    <rect id="矩形" opacity="0" x="0" y="0" width="16" height="16"></rect>
 | 
			
		||||
                    <path d="M9.39137788,11.7149165 C9.13431614,11.7149165 8.92716929,11.5077697 8.92716929,11.2507079 L8.92716929,6.14191781 C8.92716929,5.88485607 9.13431613,5.67770922 9.39137788,5.67770922 C9.64843963,5.67770922 9.85558647,5.88485606 9.85558647,6.14191781 L9.85558647,11.2482122 C9.85558647,11.5052739 9.64843961,11.7149165 9.39137788,11.7149165 Z M6.60612639,11.7149165 C6.34906466,11.7149165 6.1419178,11.5077697 6.1419178,11.2507079 L6.1419178,6.14191781 C6.1419178,5.88485607 6.34906466,5.67770922 6.60612641,5.67770922 C6.86318814,5.67770922 7.07033499,5.88485606 7.07033499,6.14191781 L7.07033499,11.2482122 C7.07033499,11.5052739 6.86318814,11.7149165 6.60612639,11.7149165 Z M14.0359594,3.82087491 L11.7149165,3.82087491 L11.7149165,2.89245775 C11.7149165,2.12376827 11.0959718,1.499832 10.3322738,1.499832 L5.67770923,1.499832 C4.90901976,1.499832 4.28508349,2.12376827 4.28508349,2.89245775 L4.28508349,3.82087491 L1.96404059,3.82087491 C1.70697885,3.82087491 1.499832,4.02802174 1.499832,4.28508349 C1.499832,4.54214524 1.70697884,4.74929208 1.96404059,4.74929208 L14.0359594,4.74929208 C14.2930211,4.74929208 14.500168,4.54214524 14.500168,4.28508349 C14.500168,4.02802174 14.2930212,3.82087491 14.0359594,3.82087491 Z M5.21350066,2.89245775 C5.21350066,2.63789175 5.42314324,2.42824916 5.67770925,2.42824916 L10.3322738,2.42824916 C10.5868398,2.42824916 10.7864994,2.63290025 10.7864994,2.89245775 L10.7864994,3.82087491 L5.21350066,3.82087491 L5.21350066,2.89245775 L5.21350066,2.89245775 Z M11.2507079,14.500168 L4.75178782,14.500168 C3.98309834,14.500168 3.35916207,13.8762317 3.35916207,13.1075423 L3.35916207,6.13692631 C3.35916207,5.87986457 3.56630891,5.67271772 3.82337066,5.67271772 C4.08043241,5.67271772 4.28757925,5.87986456 4.28757925,6.13692631 L4.28757925,13.1075423 C4.28757925,13.364604 4.49722183,13.5717508 4.75178783,13.5717508 L11.2532037,13.5717508 C11.5102654,13.5717508 11.7174123,13.364604 11.7174123,13.1075423 L11.7174123,6.15439653 C11.7174123,5.89733479 11.9245591,5.69018794 12.1816209,5.69018794 C12.4386826,5.69018794 12.6458294,5.89733478 12.6458294,6.15439653 L12.6458294,13.1075423 C12.6433337,13.873736 12.0193974,14.500168 11.2507079,14.500168 Z" id="形状"></path>
 | 
			
		||||
                </g>
 | 
			
		||||
            </g>
 | 
			
		||||
        </g>
 | 
			
		||||
    </g>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 2.9 KiB  | 
@@ -89,8 +89,6 @@ export const DICT_TYPE = {
 | 
			
		||||
 | 
			
		||||
  // ============== ENERGY - 能源模块 =============
 | 
			
		||||
  ENERGY_UNIT: 'energy_unit',
 | 
			
		||||
  
 | 
			
		||||
  // ============== ENERGY - 能源模块 =============
 | 
			
		||||
  EQU_ALARM_LEVEL: 'equ_alarm_level',
 | 
			
		||||
  MONITOR_INDEX_TYPE: 'monitor_index_type',
 | 
			
		||||
  OBJECT_TYPE: 'object_type',
 | 
			
		||||
@@ -99,8 +97,9 @@ export const DICT_TYPE = {
 | 
			
		||||
 | 
			
		||||
  // ============== ORDER - 订单模块 =============
 | 
			
		||||
  ORDER_STATUS: 'order_status',
 | 
			
		||||
  ORDER_ORIGIN: 'order_origin',
 | 
			
		||||
  ORDER_PRIORITY: 'order_priority'
 | 
			
		||||
  ORDER_ORIGIN: 'order_Origin',
 | 
			
		||||
  ORDER_PRIORITY: 'order_priority',
 | 
			
		||||
  PACK_SPEC: 'pack_spec'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										65
									
								
								src/views/base/material/SmallTitle.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								src/views/base/material/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>
 | 
			
		||||
							
								
								
									
										421
									
								
								src/views/base/material/add-or-updata.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										421
									
								
								src/views/base/material/add-or-updata.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,421 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2021-11-18 14:16:25
 | 
			
		||||
 * @LastEditors: DY
 | 
			
		||||
 * @LastEditTime: 2023-10-27 15:11:02
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
	<el-drawer
 | 
			
		||||
		:visible.sync="visible"
 | 
			
		||||
		:show-close="false"
 | 
			
		||||
		:wrapper-closable="false"
 | 
			
		||||
		class="drawer"
 | 
			
		||||
		size="60%">
 | 
			
		||||
		<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="code">
 | 
			
		||||
								<el-input
 | 
			
		||||
									v-model="dataForm.code"
 | 
			
		||||
									clearable
 | 
			
		||||
									:disabled="isdetail"
 | 
			
		||||
									placeholder="请输入物料编码" />
 | 
			
		||||
							</el-form-item>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<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-row>
 | 
			
		||||
					<el-row :gutter="20">
 | 
			
		||||
						<el-col :span="12">
 | 
			
		||||
							<el-form-item label="英文名称" prop="engName">
 | 
			
		||||
								<el-input
 | 
			
		||||
									v-model="dataForm.engName"
 | 
			
		||||
									clearable
 | 
			
		||||
									:disabled="isdetail"
 | 
			
		||||
									placeholder="请输入英文名称" />
 | 
			
		||||
							</el-form-item>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="12">
 | 
			
		||||
							<el-form-item label="物料类型" prop="type">
 | 
			
		||||
								<el-select
 | 
			
		||||
									v-model="dataForm.type"
 | 
			
		||||
									filterable
 | 
			
		||||
									:disabled="isdetail"
 | 
			
		||||
									placeholder="请选择物料类型">
 | 
			
		||||
									<el-option
 | 
			
		||||
										v-for="dict in materialList"
 | 
			
		||||
										: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="spec">
 | 
			
		||||
								<el-input
 | 
			
		||||
									v-model="dataForm.spec"
 | 
			
		||||
									clearable
 | 
			
		||||
									:disabled="isdetail"
 | 
			
		||||
									placeholder="请输入规格" />
 | 
			
		||||
							</el-form-item>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="12">
 | 
			
		||||
							<el-form-item label="供应商" prop="supplierId">
 | 
			
		||||
								<el-select
 | 
			
		||||
									v-model="dataForm.supplierId"
 | 
			
		||||
									filterable
 | 
			
		||||
									clearable
 | 
			
		||||
									:disabled="isdetail"
 | 
			
		||||
									placeholder="请选择供应商">
 | 
			
		||||
									<el-option
 | 
			
		||||
										v-for="dict in supplierList"
 | 
			
		||||
										:key="dict.id"
 | 
			
		||||
										:label="dict.name"
 | 
			
		||||
										:value="dict.id" />
 | 
			
		||||
								</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"
 | 
			
		||||
									placeholder="请选择物料单位">
 | 
			
		||||
									<el-option
 | 
			
		||||
										v-for="dict in unitList"
 | 
			
		||||
										: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="remark">
 | 
			
		||||
								<el-input v-model="dataForm.remark" :disabled="isdetail" clearable placeholder="请输入备注" />
 | 
			
		||||
							</el-form-item>
 | 
			
		||||
						</el-col>
 | 
			
		||||
					</el-row>
 | 
			
		||||
				</el-form>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="attr-list" v-if="idAttrShow">
 | 
			
		||||
				<small-title
 | 
			
		||||
					style="margin: 16px 0; padding-left: 8px"
 | 
			
		||||
					:no-padding="true">
 | 
			
		||||
					物料属性
 | 
			
		||||
				</small-title>
 | 
			
		||||
 | 
			
		||||
				<base-table
 | 
			
		||||
					:table-props="tableProps"
 | 
			
		||||
					:page="listQuery.pageNo"
 | 
			
		||||
					:limit="listQuery.pageSize"
 | 
			
		||||
					:add-button-show="isdetail ? null : '添加属性'"
 | 
			
		||||
					@emitButtonClick="addNew()"
 | 
			
		||||
					:table-data="materialAttrList">
 | 
			
		||||
					<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 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>
 | 
			
		||||
 | 
			
		||||
		<attr-add
 | 
			
		||||
			v-if="addOrUpdateVisible"
 | 
			
		||||
			ref="addOrUpdate"
 | 
			
		||||
			:material-id="dataForm.id"
 | 
			
		||||
			@refreshDataList="getList" />
 | 
			
		||||
	</el-drawer>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import basicAdd from '../../core/mixins/basic-add';
 | 
			
		||||
import { createMaterial, updateMaterial, getMaterial, getCode, getSupplierList, getMaterialAttrList, deleteMaterialAttr } from "@/api/base/material";
 | 
			
		||||
import { listData } from "@/api/system/dict/data";
 | 
			
		||||
import SmallTitle from './SmallTitle';
 | 
			
		||||
import { parseTime } from '../../core/mixins/code-filter';
 | 
			
		||||
import attrAdd from './attr-add';
 | 
			
		||||
 | 
			
		||||
const tableBtn = [
 | 
			
		||||
	{
 | 
			
		||||
		type: 'edit',
 | 
			
		||||
		btnName: '编辑',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		type: 'delete',
 | 
			
		||||
		btnName: '删除',
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
const tableProps = [
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'createTime',
 | 
			
		||||
		label: '添加时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'attrName',
 | 
			
		||||
		label: '属性名',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'attrValue',
 | 
			
		||||
		label: '属性值',
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	mixins: [basicAdd],
 | 
			
		||||
	components: { SmallTitle, attrAdd },
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			tableBtn,
 | 
			
		||||
			tableProps,
 | 
			
		||||
			addOrUpdateVisible: false,
 | 
			
		||||
			urlOptions: {
 | 
			
		||||
			  isGetCode: true,
 | 
			
		||||
        codeURL: getCode,
 | 
			
		||||
				createURL: createMaterial,
 | 
			
		||||
				updateURL: updateMaterial,
 | 
			
		||||
				infoURL: getMaterial,
 | 
			
		||||
			},
 | 
			
		||||
			listQuery: {
 | 
			
		||||
				pageSize: 10,
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				total: 0,
 | 
			
		||||
			},
 | 
			
		||||
			dataForm: {
 | 
			
		||||
        id: undefined,
 | 
			
		||||
        code: undefined,
 | 
			
		||||
        name: '',
 | 
			
		||||
				engName: '',
 | 
			
		||||
				type: '',
 | 
			
		||||
        spec: undefined,
 | 
			
		||||
				supplierId: undefined,
 | 
			
		||||
        remark: undefined,
 | 
			
		||||
				unit: ''
 | 
			
		||||
			},
 | 
			
		||||
			materialList: [],
 | 
			
		||||
			supplierList: [],
 | 
			
		||||
			materialAttrList: [],
 | 
			
		||||
			unitList: [],
 | 
			
		||||
			visible: false,
 | 
			
		||||
			isdetail: false,
 | 
			
		||||
			idAttrShow: false,
 | 
			
		||||
			dataRule: {
 | 
			
		||||
        code: [{ required: true, message: "物料编码不能为空", trigger: "blur" }],
 | 
			
		||||
        name: [{ required: true, message: "物料名称不能为空", trigger: "blur" }],
 | 
			
		||||
				type: [{ required: true, message: "物料类型不能为空", trigger: "blur" }]
 | 
			
		||||
      }
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	mounted() {
 | 
			
		||||
		this.getDict()
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		async getDict() {
 | 
			
		||||
			// 物料类型列表
 | 
			
		||||
			const res = await listData({
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
        pageSize: 99,
 | 
			
		||||
        dictType: 'material_type',
 | 
			
		||||
			});
 | 
			
		||||
			this.materialList = res.data.list.map(item => {
 | 
			
		||||
				return {
 | 
			
		||||
					label: item.label,
 | 
			
		||||
					value: Number(item.value)
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
			// 供应商列表
 | 
			
		||||
			const supplierRes = await getSupplierList();
 | 
			
		||||
			this.supplierList = supplierRes.data;
 | 
			
		||||
			// 物料单位列表
 | 
			
		||||
			const unitRes = await listData({
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
        pageSize: 99,
 | 
			
		||||
        dictType: 'goods_unit',
 | 
			
		||||
			});
 | 
			
		||||
			this.unitList = unitRes.data.list.map(item => {
 | 
			
		||||
				return {
 | 
			
		||||
					label: item.label,
 | 
			
		||||
					value: Number(item.value)
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		initData() {
 | 
			
		||||
			this.materialAttrList.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(() => {
 | 
			
		||||
						deleteMaterialAttr(raw.data.id).then(({ data }) => {
 | 
			
		||||
							this.$message({
 | 
			
		||||
								message: '操作成功',
 | 
			
		||||
								type: 'success',
 | 
			
		||||
								duration: 1500,
 | 
			
		||||
								onClose: () => {
 | 
			
		||||
									this.getList();
 | 
			
		||||
								},
 | 
			
		||||
							});
 | 
			
		||||
						});
 | 
			
		||||
					})
 | 
			
		||||
					.catch(() => {});
 | 
			
		||||
			} else {
 | 
			
		||||
				this.addNew(raw.data.id);
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		getList() {
 | 
			
		||||
			// 获取物料的属性列表
 | 
			
		||||
			getMaterialAttrList({
 | 
			
		||||
				...this.listQuery,
 | 
			
		||||
				materialId: this.dataForm.id,
 | 
			
		||||
			}).then((response) => {
 | 
			
		||||
				this.materialAttrList = 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.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;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										141
									
								
								src/views/base/material/attr-add.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										141
									
								
								src/views/base/material/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="attrName">
 | 
			
		||||
				<el-input
 | 
			
		||||
					v-model="dataForm.attrName"
 | 
			
		||||
					placeholder="请输入属性名"
 | 
			
		||||
					clearable />
 | 
			
		||||
			</el-form-item>
 | 
			
		||||
			<el-form-item label="属性值" prop="attrValue">
 | 
			
		||||
				<el-input
 | 
			
		||||
					v-model="dataForm.attrValue"
 | 
			
		||||
					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 {
 | 
			
		||||
	createMaterialAttr,
 | 
			
		||||
	updateMaterialAttr,
 | 
			
		||||
	getMaterialAttr
 | 
			
		||||
} from '@/api/base/material';
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	props: {
 | 
			
		||||
		materialId: {
 | 
			
		||||
			type: String,
 | 
			
		||||
			default: '',
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			visible: false,
 | 
			
		||||
			dataForm: {
 | 
			
		||||
				id: undefined,
 | 
			
		||||
				attrName: '',
 | 
			
		||||
				attrValue: '',
 | 
			
		||||
			},
 | 
			
		||||
			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) {
 | 
			
		||||
					getMaterialAttr({
 | 
			
		||||
						id: this.dataForm.id
 | 
			
		||||
					}).then((res) => {
 | 
			
		||||
						const { attrName, attrValue } = res.data;
 | 
			
		||||
						this.dataForm.attrName = attrName;
 | 
			
		||||
						this.dataForm.attrValue = attrValue;
 | 
			
		||||
					});
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		// 表单提交
 | 
			
		||||
		dataFormSubmit() {
 | 
			
		||||
			this.$refs['dataForm'].validate((valid) => {
 | 
			
		||||
				if (valid) {
 | 
			
		||||
					// 修改的提交
 | 
			
		||||
					if (this.dataForm.id) {
 | 
			
		||||
						updateMaterialAttr({
 | 
			
		||||
							...this.dataForm,
 | 
			
		||||
							materialId: this.materialId,
 | 
			
		||||
						}).then((response) => {
 | 
			
		||||
							this.$modal.msgSuccess('修改成功');
 | 
			
		||||
							this.visible = false;
 | 
			
		||||
							this.$emit('refreshDataList');
 | 
			
		||||
						});
 | 
			
		||||
						return;
 | 
			
		||||
					}
 | 
			
		||||
					// 添加的提交
 | 
			
		||||
					createMaterialAttr({
 | 
			
		||||
						...this.dataForm,
 | 
			
		||||
						materialId: this.materialId,
 | 
			
		||||
					}).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>
 | 
			
		||||
							
								
								
									
										233
									
								
								src/views/base/material/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										233
									
								
								src/views/base/material/index.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,233 @@
 | 
			
		||||
<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="220"
 | 
			
		||||
				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="getDataList" />
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import AddOrUpdate from './add-or-updata';
 | 
			
		||||
import basicPage from '../../core/mixins/basic-page';
 | 
			
		||||
import { parseTime } from '../../core/mixins/code-filter';
 | 
			
		||||
import {
 | 
			
		||||
	getMaterialPage,
 | 
			
		||||
	deleteMaterial
 | 
			
		||||
} from '@/api/base/material';
 | 
			
		||||
import { listData } from "@/api/system/dict/data";
 | 
			
		||||
 | 
			
		||||
const tableProps = [
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'createTime',
 | 
			
		||||
		label: '添加时间',
 | 
			
		||||
		filter: parseTime
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'code',
 | 
			
		||||
		label: '物料编码'
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'name',
 | 
			
		||||
		label: '物料名称'
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'engName',
 | 
			
		||||
		label: '英文名称'
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'abbr',
 | 
			
		||||
		label: '缩写'
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'materialType',
 | 
			
		||||
		label: '物料类型'
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'supplierName',
 | 
			
		||||
		label: '供应商'
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'remark',
 | 
			
		||||
		label: '备注'
 | 
			
		||||
	}
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	mixins: [basicPage],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			urlOptions: {
 | 
			
		||||
				getDataListURL: getMaterialPage,
 | 
			
		||||
				deleteURL: deleteMaterial
 | 
			
		||||
				// exportURL: exportFactoryExcel,
 | 
			
		||||
			},
 | 
			
		||||
			tableProps,
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi(`base:material:update`)
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'edit',
 | 
			
		||||
							btnName: '编辑',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
					this.$auth.hasPermi(`base:material:queryAttr`)
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'search',
 | 
			
		||||
							btnName: '查看属性',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
					this.$auth.hasPermi(`base:material:editAttr`)
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'editAttr',
 | 
			
		||||
							btnName: '编辑属性',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
          this.$auth.hasPermi(`base:material:delete`)
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'delete',
 | 
			
		||||
							btnName: '删除',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
			].filter((v)=>v),
 | 
			
		||||
			tableData: [],
 | 
			
		||||
			typeList: [],
 | 
			
		||||
			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:material:create') ? 'button' : '',
 | 
			
		||||
					btnName: '新增物料',
 | 
			
		||||
					name: 'add',
 | 
			
		||||
					color: 'success',
 | 
			
		||||
					plain: true
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	components: {
 | 
			
		||||
		AddOrUpdate,
 | 
			
		||||
	},
 | 
			
		||||
	created() {
 | 
			
		||||
		this.getDict()
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		async getDict() {
 | 
			
		||||
			// 物料类型列表
 | 
			
		||||
			const res = await listData({
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
        pageSize: 99,
 | 
			
		||||
        dictType: 'material_type',
 | 
			
		||||
			});
 | 
			
		||||
			this.typeList = res.data.list.map(item => {
 | 
			
		||||
				return {
 | 
			
		||||
					label: item.label,
 | 
			
		||||
					value: Number(item.value)
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		otherMethods(val) {
 | 
			
		||||
			if (val.type === 'search') {
 | 
			
		||||
				this.addOrUpdateVisible = true;
 | 
			
		||||
				this.addOrEditTitle = '详情';
 | 
			
		||||
				this.$nextTick(() => {
 | 
			
		||||
					this.$refs.addOrUpdate.init(val.data.id, true);
 | 
			
		||||
				});
 | 
			
		||||
			} else {
 | 
			
		||||
				this.addOrEditTitle = '编辑';
 | 
			
		||||
				this.addOrUpdateVisible = true;
 | 
			
		||||
				this.$nextTick(() => {
 | 
			
		||||
					this.$refs.addOrUpdate.init(val.data.id);
 | 
			
		||||
				});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		// 获取数据列表
 | 
			
		||||
    getDataList() {
 | 
			
		||||
      this.dataListLoading = true;
 | 
			
		||||
      this.urlOptions.getDataListURL(this.listQuery).then(response => {
 | 
			
		||||
        this.tableData = response.data.records.map(item => {
 | 
			
		||||
					this.typeList.filter(t => {
 | 
			
		||||
						if (item.type === t.value) {
 | 
			
		||||
							item.materialType = t.label
 | 
			
		||||
						}
 | 
			
		||||
					})
 | 
			
		||||
					return item
 | 
			
		||||
				});
 | 
			
		||||
        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.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>
 | 
			
		||||
							
								
								
									
										107
									
								
								src/views/base/materialDate/add-or-updata.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								src/views/base/materialDate/add-or-updata.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,107 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2021-11-18 14:16:25
 | 
			
		||||
 * @LastEditors: DY
 | 
			
		||||
 * @LastEditTime: 2023-10-24 18:34:07
 | 
			
		||||
 * @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="materialId">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="dataForm.materialId"
 | 
			
		||||
						placeholder="请选择物料"
 | 
			
		||||
						@change="setMaterialCode">
 | 
			
		||||
						<el-option
 | 
			
		||||
							v-for="dict in materialList"
 | 
			
		||||
							: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="materialCode">
 | 
			
		||||
					<el-input
 | 
			
		||||
						v-model="dataForm.materialCode"
 | 
			
		||||
						disabled
 | 
			
		||||
						placeholder="请输入物料编码" />
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
		</el-row>
 | 
			
		||||
		<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-form-item label="批次名称" prop="name">
 | 
			
		||||
					<el-input v-model="dataForm.name" clearable placeholder="请输入批次名称" />
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
		</el-row>
 | 
			
		||||
		<el-form-item label="备注" prop="remark">
 | 
			
		||||
			<el-input v-model="dataForm.remark" clearable placeholder="请输入备注" />
 | 
			
		||||
		</el-form-item>
 | 
			
		||||
	</el-form>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import basicAdd from '../../core/mixins/basic-add';
 | 
			
		||||
import { createMaterialDate, updateMaterialDate, getMaterialDate, getCode } from "@/api/base/materialDate";
 | 
			
		||||
import { getMaterialList } from "@/api/base/material";
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	mixins: [basicAdd],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			urlOptions: {
 | 
			
		||||
			  isGetCode: true,
 | 
			
		||||
        codeURL: getCode,
 | 
			
		||||
				createURL: createMaterialDate,
 | 
			
		||||
				updateURL: updateMaterialDate,
 | 
			
		||||
				infoURL: getMaterialDate,
 | 
			
		||||
			},
 | 
			
		||||
			dataForm: {
 | 
			
		||||
        id: undefined,
 | 
			
		||||
        code: undefined,
 | 
			
		||||
        name: undefined,
 | 
			
		||||
        materialId: undefined,
 | 
			
		||||
				materialCode: undefined,
 | 
			
		||||
        remark: undefined,
 | 
			
		||||
			},
 | 
			
		||||
			materialList: [],
 | 
			
		||||
			dataRule: {
 | 
			
		||||
				materialId: [{ required: true, message: "物料不能为空", trigger: "blur" }],
 | 
			
		||||
        code: [{ required: true, message: "工厂编码不能为空", trigger: "blur" }],
 | 
			
		||||
        name: [{ required: true, message: "工厂名称不能为空", trigger: "blur" }],
 | 
			
		||||
      }
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	mounted() {
 | 
			
		||||
		this.getDict()
 | 
			
		||||
		console.log('我看看', this.dataForm)
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		async getDict() {
 | 
			
		||||
			// 物料列表
 | 
			
		||||
			const res = await getMaterialList();
 | 
			
		||||
			this.materialList = res.data;
 | 
			
		||||
		},
 | 
			
		||||
		setMaterialCode() {
 | 
			
		||||
			const chooseM = this.materialList.filter(item => {
 | 
			
		||||
				return item.id === this.dataForm.materialId
 | 
			
		||||
			})
 | 
			
		||||
			this.dataForm.materialCode = chooseM[0].code
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
							
								
								
									
										169
									
								
								src/views/base/materialDate/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										169
									
								
								src/views/base/materialDate/index.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,169 @@
 | 
			
		||||
<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 {
 | 
			
		||||
	getMaterDatePage,
 | 
			
		||||
	deleteMaterialDate
 | 
			
		||||
} from '@/api/base/materialDate';
 | 
			
		||||
 | 
			
		||||
const tableProps = [
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'createTime',
 | 
			
		||||
		label: '添加时间',
 | 
			
		||||
		filter: parseTime
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'code',
 | 
			
		||||
		label: '批次号'
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'name',
 | 
			
		||||
		label: '批次名称'
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'materialCode',
 | 
			
		||||
		label: '物料编码'
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'materialName',
 | 
			
		||||
		label: '物料名称'
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	mixins: [basicPage],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			urlOptions: {
 | 
			
		||||
				getDataListURL: getMaterDatePage,
 | 
			
		||||
				deleteURL: deleteMaterialDate,
 | 
			
		||||
				// exportURL: exportFactoryExcel,
 | 
			
		||||
			},
 | 
			
		||||
			tableProps,
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi(`base:material-date:update`)
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'edit',
 | 
			
		||||
							btnName: '编辑',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
          this.$auth.hasPermi(`base:material-date: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:material-date: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.records;
 | 
			
		||||
        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>
 | 
			
		||||
							
								
								
									
										469
									
								
								src/views/base/materialProductBom/add-or-updata.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										469
									
								
								src/views/base/materialProductBom/add-or-updata.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,469 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2021-11-18 14:16:25
 | 
			
		||||
 * @LastEditors: DY
 | 
			
		||||
 * @LastEditTime: 2023-10-27 16:06:44
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
	<el-drawer
 | 
			
		||||
		:visible.sync="visible"
 | 
			
		||||
		:show-close="false"
 | 
			
		||||
		:wrapper-closable="false"
 | 
			
		||||
		class="drawer"
 | 
			
		||||
		size="70%">
 | 
			
		||||
		<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="productId">
 | 
			
		||||
								<el-select
 | 
			
		||||
									v-model="dataForm.productId"
 | 
			
		||||
									filterable
 | 
			
		||||
									:disabled="isdetail"
 | 
			
		||||
									placeholder="请选择产品">
 | 
			
		||||
									<el-option
 | 
			
		||||
										v-for="dict in productList"
 | 
			
		||||
										:key="dict.id"
 | 
			
		||||
										:label="dict.name"
 | 
			
		||||
										:value="dict.id" />
 | 
			
		||||
								</el-select>
 | 
			
		||||
							</el-form-item>
 | 
			
		||||
						</el-col>
 | 
			
		||||
						<el-col :span="12">
 | 
			
		||||
							<el-form-item label="产品BOM编码" prop="code">
 | 
			
		||||
								<el-input v-model="dataForm.code" disabled placeholder="请输入产品Bom编码" />
 | 
			
		||||
							</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="attr-list" v-if="idAttrShow">
 | 
			
		||||
				<small-title
 | 
			
		||||
					style="margin: 16px 0; padding-left: 8px"
 | 
			
		||||
					:no-padding="true">
 | 
			
		||||
					BOM明细
 | 
			
		||||
				</small-title>
 | 
			
		||||
 | 
			
		||||
				<!-- <base-table
 | 
			
		||||
					:table-props="tableProps"
 | 
			
		||||
					:page="listQuery.pageNo"
 | 
			
		||||
					:limit="listQuery.pageSize"
 | 
			
		||||
					:add-button-show="isdetail ? null : '添加属性'"
 | 
			
		||||
					@emitButtonClick="addNew()"
 | 
			
		||||
					:table-data="materialAttrList">
 | 
			
		||||
					<method-btn
 | 
			
		||||
						v-if="!isdetail"
 | 
			
		||||
						slot="handleBtn"
 | 
			
		||||
						:width="120"
 | 
			
		||||
						label="操作"
 | 
			
		||||
						:method-list="tableBtn"
 | 
			
		||||
						@clickBtn="handleClick" />
 | 
			
		||||
				</base-table> -->
 | 
			
		||||
				<el-button v-show="!isdetail" type="success" size="small" style="float: right" @click="addRow()">添加一行</el-button>
 | 
			
		||||
				<el-table
 | 
			
		||||
					:data="tableData"
 | 
			
		||||
      		style="width: 100%">
 | 
			
		||||
					<el-table-column type="index" label="序号" />
 | 
			
		||||
					<el-table-column prop="createTime" label="添加时间">
 | 
			
		||||
						<template slot-scope="scope">
 | 
			
		||||
							<span>{{ parseTime(scope.row.createTime) }}</span>
 | 
			
		||||
						</template>
 | 
			
		||||
					</el-table-column>
 | 
			
		||||
					<el-table-column prop="materialId" label="物料名称">
 | 
			
		||||
						<template slot-scope="scope">
 | 
			
		||||
							<el-select
 | 
			
		||||
									v-model="scope.row.materialId"
 | 
			
		||||
									filterable
 | 
			
		||||
									:disabled="!scope.row.isEdit"
 | 
			
		||||
									placeholder="请选择物料"
 | 
			
		||||
									@change="setCode(scope.row)">
 | 
			
		||||
									<el-option
 | 
			
		||||
										v-for="dict in materialList"
 | 
			
		||||
										:key="dict.id"
 | 
			
		||||
										:label="dict.name"
 | 
			
		||||
										:value="dict.id" />
 | 
			
		||||
								</el-select>
 | 
			
		||||
						</template>
 | 
			
		||||
					</el-table-column>
 | 
			
		||||
					<el-table-column prop="materialCode" label="物料编码" />
 | 
			
		||||
					<el-table-column prop="mUnit" label="单位" />
 | 
			
		||||
					<el-table-column prop="num" label="数量">
 | 
			
		||||
						<template slot-scope="scope">
 | 
			
		||||
							<el-input v-model="scope.row.num" :disabled="!scope.row.isEdit"></el-input>
 | 
			
		||||
						</template>
 | 
			
		||||
					</el-table-column>
 | 
			
		||||
					<el-table-column prop="remark" label="备注">
 | 
			
		||||
						<template slot-scope="scope">
 | 
			
		||||
							<el-input v-model="scope.row.remark" :disabled="!scope.row.isEdit"></el-input>
 | 
			
		||||
						</template>
 | 
			
		||||
					</el-table-column>
 | 
			
		||||
					<el-table-column v-if="!isdetail" label="操作">
 | 
			
		||||
						<template slot-scope="scope">
 | 
			
		||||
							<el-tooltip v-if="!scope.row.isEdit" placement="top" content="编辑">
 | 
			
		||||
								<el-button
 | 
			
		||||
									type="text"
 | 
			
		||||
									:style="{color:'#0B58FF'}"
 | 
			
		||||
									size="mini"
 | 
			
		||||
									@click="edit(scope.row)"
 | 
			
		||||
								>
 | 
			
		||||
									<!-- 此处的icon的名字命名为'table_'加上按钮的type -->
 | 
			
		||||
									<svg-icon style="width: 18px; height: 18px" class="item-icon" icon-class="edit" />
 | 
			
		||||
									<!-- <span>{{ item.btnName | i18nFilter }}</span> -->
 | 
			
		||||
								</el-button>
 | 
			
		||||
							</el-tooltip>
 | 
			
		||||
							<el-button v-else type="primary" size="small" @click="saveData(scope.row)">保存</el-button>
 | 
			
		||||
							<el-tooltip placement="top" content="删除">
 | 
			
		||||
								<el-button
 | 
			
		||||
									type="text"
 | 
			
		||||
									:style="{color:'#FF5454'}"
 | 
			
		||||
									size="mini"
 | 
			
		||||
									@click="deleteDetail(scope.row)"
 | 
			
		||||
								>
 | 
			
		||||
									<!-- 此处的icon的名字命名为'table_'加上按钮的type -->
 | 
			
		||||
									<svg-icon style="width: 18px; height: 18px" class="item-icon" icon-class="table_delete" />
 | 
			
		||||
									<!-- <span>{{ item.btnName | i18nFilter }}</span> -->
 | 
			
		||||
								</el-button>
 | 
			
		||||
							</el-tooltip>
 | 
			
		||||
						</template>
 | 
			
		||||
					</el-table-column>
 | 
			
		||||
				</el-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 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>
 | 
			
		||||
 | 
			
		||||
		<!-- <attr-add
 | 
			
		||||
			v-if="addOrUpdateVisible"
 | 
			
		||||
			ref="addOrUpdate"
 | 
			
		||||
			:material-id="dataForm.id"
 | 
			
		||||
			@refreshDataList="getList" /> -->
 | 
			
		||||
	</el-drawer>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import basicAdd from '../../core/mixins/basic-add';
 | 
			
		||||
import { createMaterialPB, updateMaterialPB, getMaterialPB, getCode, getProList, getProBomList, createMaterialPBDet, updateMaterialPBDet, deleteMaterialPBDet } from "@/api/base/materialProductBom";
 | 
			
		||||
import { getMaterialList } from "@/api/base/material";
 | 
			
		||||
import { listData } from "@/api/system/dict/data";
 | 
			
		||||
import SmallTitle from '../material/SmallTitle';
 | 
			
		||||
import { parseTime } from '../../core/mixins/code-filter';
 | 
			
		||||
// import attrAdd from './attr-add';
 | 
			
		||||
 | 
			
		||||
const tableBtn = [
 | 
			
		||||
	{
 | 
			
		||||
		type: 'edit',
 | 
			
		||||
		btnName: '编辑',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		type: 'delete',
 | 
			
		||||
		btnName: '删除',
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
const tableProps = [
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'createTime',
 | 
			
		||||
		label: '添加时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'attrName',
 | 
			
		||||
		label: '属性名',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'attrValue',
 | 
			
		||||
		label: '属性值',
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	mixins: [basicAdd],
 | 
			
		||||
	components: { SmallTitle },
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			tableBtn,
 | 
			
		||||
			tableProps,
 | 
			
		||||
			addOrUpdateVisible: false,
 | 
			
		||||
			urlOptions: {
 | 
			
		||||
			  isGetCode: true,
 | 
			
		||||
        codeURL: getCode,
 | 
			
		||||
				createURL: createMaterialPB,
 | 
			
		||||
				updateURL: updateMaterialPB,
 | 
			
		||||
				infoURL: getMaterialPB,
 | 
			
		||||
			},
 | 
			
		||||
			listQuery: {
 | 
			
		||||
				pageSize: 10,
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				total: 0,
 | 
			
		||||
			},
 | 
			
		||||
			dataForm: {
 | 
			
		||||
        id: undefined,
 | 
			
		||||
        code: undefined,
 | 
			
		||||
        productId: '',
 | 
			
		||||
        remark: undefined,
 | 
			
		||||
			},
 | 
			
		||||
			productList: [],
 | 
			
		||||
			materialAttrList: [],
 | 
			
		||||
			materialList: [],
 | 
			
		||||
			tableData: [],
 | 
			
		||||
			unitList: [],
 | 
			
		||||
			visible: false,
 | 
			
		||||
			isdetail: false,
 | 
			
		||||
			idAttrShow: false,
 | 
			
		||||
			dataRule: {
 | 
			
		||||
        productId: [{ required: true, message: "产品不能为空", trigger: "blur" }]
 | 
			
		||||
      }
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	mounted() {
 | 
			
		||||
		this.getDict()
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		async getDict() {
 | 
			
		||||
			// 产品列表
 | 
			
		||||
			const proRes = await getProList();
 | 
			
		||||
			this.productList = proRes.data;
 | 
			
		||||
			// 物料列表
 | 
			
		||||
			const res = await getMaterialList();
 | 
			
		||||
			this.materialList = res.data;
 | 
			
		||||
			// 物料单位列表
 | 
			
		||||
			const unitRes = await listData({
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
        pageSize: 99,
 | 
			
		||||
        dictType: 'goods_unit',
 | 
			
		||||
			});
 | 
			
		||||
			this.unitList = unitRes.data.list.map(item => {
 | 
			
		||||
				return {
 | 
			
		||||
					label: item.label,
 | 
			
		||||
					value: Number(item.value)
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		initData() {
 | 
			
		||||
			// this.materialAttrList.splice(0);
 | 
			
		||||
			this.listQuery.total = 0;
 | 
			
		||||
		},
 | 
			
		||||
		deleteDetail(raw) {
 | 
			
		||||
			this.$confirm(
 | 
			
		||||
				`确定删除关于物料编码为${
 | 
			
		||||
					raw.materialCode}的数据?`,
 | 
			
		||||
				'提示',
 | 
			
		||||
				{
 | 
			
		||||
					confirmButtonText: '确定',
 | 
			
		||||
					cancelButtonText: '取消',
 | 
			
		||||
					type: 'warning',
 | 
			
		||||
				}
 | 
			
		||||
			)
 | 
			
		||||
				.then(() => {
 | 
			
		||||
					deleteMaterialPBDet(raw.id).then(({ data }) => {
 | 
			
		||||
						this.$message({
 | 
			
		||||
							message: '操作成功',
 | 
			
		||||
							type: 'success',
 | 
			
		||||
							duration: 1500,
 | 
			
		||||
							onClose: () => {
 | 
			
		||||
								this.getList();
 | 
			
		||||
							},
 | 
			
		||||
						});
 | 
			
		||||
					});
 | 
			
		||||
				})
 | 
			
		||||
				.catch(() => {});
 | 
			
		||||
		},
 | 
			
		||||
		setCode(row) {
 | 
			
		||||
			this.materialList.filter(item => {
 | 
			
		||||
				if (row.materialId === item.id) {
 | 
			
		||||
					row.materialCode = item.code
 | 
			
		||||
				}
 | 
			
		||||
				this.unitList.filter(u => {
 | 
			
		||||
					if (item.unit === u.value) {
 | 
			
		||||
						row.unit = u.value
 | 
			
		||||
						row.mUnit = u.label
 | 
			
		||||
					}
 | 
			
		||||
				})
 | 
			
		||||
				// return row.materialId === item.id
 | 
			
		||||
			})
 | 
			
		||||
			// row.materialCode = tempList[0].code
 | 
			
		||||
			// row.unit = tempList[0].unit
 | 
			
		||||
			console.log('row', row)
 | 
			
		||||
		},
 | 
			
		||||
		edit(row) {
 | 
			
		||||
			row.isEdit = true
 | 
			
		||||
		},
 | 
			
		||||
		saveData(row) {
 | 
			
		||||
			// this.$refs['dataForm'].validate((valid) => {
 | 
			
		||||
				// if (valid) {
 | 
			
		||||
				// 	修改的提交
 | 
			
		||||
				if (row.id) {
 | 
			
		||||
					updateMaterialPBDet({
 | 
			
		||||
						...row
 | 
			
		||||
					}).then((response) => {
 | 
			
		||||
						this.$modal.msgSuccess('修改成功');
 | 
			
		||||
						// this.visible = false;
 | 
			
		||||
						this.getList();
 | 
			
		||||
					});
 | 
			
		||||
					return;
 | 
			
		||||
				}
 | 
			
		||||
					// 添加的提交
 | 
			
		||||
			createMaterialPBDet({
 | 
			
		||||
				...row
 | 
			
		||||
			}).then((response) => {
 | 
			
		||||
				this.$modal.msgSuccess('新增成功');
 | 
			
		||||
				// this.visible = false;
 | 
			
		||||
				this.getList();
 | 
			
		||||
			});
 | 
			
		||||
				// }
 | 
			
		||||
			// });
 | 
			
		||||
		},
 | 
			
		||||
		getList() {
 | 
			
		||||
			// 获取产品Bom详细列表
 | 
			
		||||
			getProBomList({
 | 
			
		||||
				...this.listQuery,
 | 
			
		||||
				bomId: this.dataForm.id,
 | 
			
		||||
				createTime: ['2023-10-26 00:00:00', '2023-10-27 12:00:00']
 | 
			
		||||
			}).then((response) => {
 | 
			
		||||
				this.tableData = response.data.records.map(item => {
 | 
			
		||||
					this.unitList.filter(u => {
 | 
			
		||||
						if (item.unit === u.value) {
 | 
			
		||||
							item.mUnit = u.label
 | 
			
		||||
						}
 | 
			
		||||
					})
 | 
			
		||||
					item.isEdit = false
 | 
			
		||||
					return item
 | 
			
		||||
				});
 | 
			
		||||
				this.listQuery.total = response.data.total;
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		// 构造一行
 | 
			
		||||
		addRow() {
 | 
			
		||||
			const row = {
 | 
			
		||||
				bomId: this.dataForm.id,
 | 
			
		||||
				materialId: '',
 | 
			
		||||
				num: 0,
 | 
			
		||||
				materialCode: undefined,
 | 
			
		||||
				unit: undefined,
 | 
			
		||||
				remark: '',
 | 
			
		||||
				isEdit: true
 | 
			
		||||
			}
 | 
			
		||||
			this.tableData.push(row)
 | 
			
		||||
		},
 | 
			
		||||
		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;
 | 
			
		||||
          });
 | 
			
		||||
					// 获取Bom明细
 | 
			
		||||
					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;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										187
									
								
								src/views/base/materialProductBom/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										187
									
								
								src/views/base/materialProductBom/index.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,187 @@
 | 
			
		||||
<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="220"
 | 
			
		||||
				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="getDataList" />
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import AddOrUpdate from './add-or-updata';
 | 
			
		||||
import basicPage from '../../core/mixins/basic-page';
 | 
			
		||||
// import { parseTime } from '../../core/mixins/code-filter';
 | 
			
		||||
import {
 | 
			
		||||
	getMaterialPBPage,
 | 
			
		||||
	deleteMaterialPB
 | 
			
		||||
} from '@/api/base/materialProductBom';
 | 
			
		||||
 | 
			
		||||
const tableProps = [
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'productName',
 | 
			
		||||
		label: '产品名称'
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'code',
 | 
			
		||||
		label: '产品BOM编码'
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'remark',
 | 
			
		||||
		label: '备注'
 | 
			
		||||
	}
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	mixins: [basicPage],
 | 
			
		||||
	components: {
 | 
			
		||||
		AddOrUpdate,
 | 
			
		||||
	},
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			urlOptions: {
 | 
			
		||||
				getDataListURL: getMaterialPBPage,
 | 
			
		||||
				deleteURL: deleteMaterialPB
 | 
			
		||||
				// exportURL: exportFactoryExcel,
 | 
			
		||||
			},
 | 
			
		||||
			tableProps,
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi(`base:material-product-bom:update`)
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'edit',
 | 
			
		||||
							btnName: '编辑',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
					this.$auth.hasPermi(`base:material-product-bom:queryMaterial`)
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'search',
 | 
			
		||||
							btnName: '查看物料',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
					this.$auth.hasPermi(`base:material-product-bom:editMaterial`)
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'editMaterial',
 | 
			
		||||
							btnName: '编辑物料',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
          this.$auth.hasPermi(`base:material-product-bom: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:material:create') ? 'button' : '',
 | 
			
		||||
					btnName: '新增',
 | 
			
		||||
					name: 'add',
 | 
			
		||||
					color: 'success',
 | 
			
		||||
					plain: true
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	created() {},
 | 
			
		||||
	methods: {
 | 
			
		||||
		otherMethods(val) {
 | 
			
		||||
			if (val.type === 'search') {
 | 
			
		||||
				this.addOrUpdateVisible = true;
 | 
			
		||||
				this.addOrEditTitle = '详情';
 | 
			
		||||
				this.$nextTick(() => {
 | 
			
		||||
					this.$refs.addOrUpdate.init(val.data.id, true);
 | 
			
		||||
				});
 | 
			
		||||
			} else {
 | 
			
		||||
				this.addOrEditTitle = '编辑';
 | 
			
		||||
				this.addOrUpdateVisible = true;
 | 
			
		||||
				this.$nextTick(() => {
 | 
			
		||||
					this.$refs.addOrUpdate.init(val.data.id);
 | 
			
		||||
				});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		// 获取数据列表
 | 
			
		||||
    getDataList() {
 | 
			
		||||
      this.dataListLoading = true;
 | 
			
		||||
      this.urlOptions.getDataListURL(this.listQuery).then(response => {
 | 
			
		||||
        this.tableData = response.data.records;
 | 
			
		||||
        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.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>
 | 
			
		||||
							
								
								
									
										258
									
								
								src/views/base/materialUseLog/add-or-updata.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										258
									
								
								src/views/base/materialUseLog/add-or-updata.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,258 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2021-11-18 14:16:25
 | 
			
		||||
 * @LastEditors: DY
 | 
			
		||||
 * @LastEditTime: 2023-10-26 09:43:51
 | 
			
		||||
 * @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="materialId">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="dataForm.materialId"
 | 
			
		||||
						placeholder="请选择物料"
 | 
			
		||||
						clearable
 | 
			
		||||
						filterable
 | 
			
		||||
						@change="setCode"
 | 
			
		||||
					>
 | 
			
		||||
						<el-option
 | 
			
		||||
							v-for="dict in materialList"
 | 
			
		||||
							: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="materialCode">
 | 
			
		||||
					<el-input
 | 
			
		||||
						v-model="dataForm.materialCode"
 | 
			
		||||
						clearable
 | 
			
		||||
						disabled
 | 
			
		||||
						placeholder="请输入物料编码" />
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
		</el-row>
 | 
			
		||||
		<el-row :gutter="20">
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item label="批次号" prop="materialDateId">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="dataForm.materialDateId"
 | 
			
		||||
						clearable
 | 
			
		||||
						filterable
 | 
			
		||||
						placeholder="请选择物料批次"
 | 
			
		||||
					>
 | 
			
		||||
						<el-option
 | 
			
		||||
							v-for="dict in materialDateList"
 | 
			
		||||
							:key="dict.id"
 | 
			
		||||
							:label="dict.code"
 | 
			
		||||
							:value="dict.id" />
 | 
			
		||||
					</el-select>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item label="使用设备" prop="equipmentId">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="dataForm.equipmentId"
 | 
			
		||||
						clearable
 | 
			
		||||
						filterable
 | 
			
		||||
						placeholder="请选择使用设备">
 | 
			
		||||
						<el-option
 | 
			
		||||
							v-for="dict in eqList"
 | 
			
		||||
							:key="dict.id"
 | 
			
		||||
							:label="dict.name"
 | 
			
		||||
							:value="dict.id" />
 | 
			
		||||
					</el-select>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
		</el-row>
 | 
			
		||||
		<el-row :gutter="20">
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item label="使用时间" prop="useTime">
 | 
			
		||||
					<el-date-picker
 | 
			
		||||
						v-model="dataForm.useTime"
 | 
			
		||||
						type="datetime"
 | 
			
		||||
						format='yyyy-MM-dd HH:mm:ss'
 | 
			
		||||
         		value-format='timestamp'
 | 
			
		||||
						placeholder="选择日期时间" />
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item label="操作员" prop="userNames">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="dataForm.userNames"
 | 
			
		||||
						clearable
 | 
			
		||||
						filterable
 | 
			
		||||
						multiple
 | 
			
		||||
						placeholder="请选择操作员">
 | 
			
		||||
						<el-option
 | 
			
		||||
							v-for="dict in workersList"
 | 
			
		||||
							:key="dict.id"
 | 
			
		||||
							:label="dict.name"
 | 
			
		||||
							:value="dict.name" />
 | 
			
		||||
					</el-select>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
		</el-row>
 | 
			
		||||
		<el-row :gutter="20">
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item label="使用数量" prop="num">
 | 
			
		||||
					<el-input-number v-model="dataForm.num" clearable placeholder="请输入使用数量" />
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item label="数据来源" prop="source">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="dataForm.source"
 | 
			
		||||
						clearable
 | 
			
		||||
						placeholder="请选择数据来源">
 | 
			
		||||
						<el-option
 | 
			
		||||
							v-for="dict in this.dataSourceList"
 | 
			
		||||
							:key="dict.id"
 | 
			
		||||
							:label="dict.name"
 | 
			
		||||
							:value="dict.id" />
 | 
			
		||||
					</el-select>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
		</el-row>
 | 
			
		||||
		<el-form-item label="备注" prop="remark">
 | 
			
		||||
			<el-input v-model="dataForm.remark" clearable placeholder="请输入备注" />
 | 
			
		||||
		</el-form-item>
 | 
			
		||||
	</el-form>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import basicAdd from '../../core/mixins/basic-add';
 | 
			
		||||
import { createMaterialLog, updateMaterialLog, getMaterialLog, getEqListAll, getworkerAll } from "@/api/base/materialUseLog";
 | 
			
		||||
import { getMaterialList } from "@/api/base/material"
 | 
			
		||||
import { getMaterDateList } from "@/api/base/materialDate"
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	mixins: [basicAdd],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			urlOptions: {
 | 
			
		||||
				createURL: createMaterialLog,
 | 
			
		||||
				updateURL: updateMaterialLog,
 | 
			
		||||
				infoURL: getMaterialLog
 | 
			
		||||
			},
 | 
			
		||||
			dataForm: {
 | 
			
		||||
        id: undefined,
 | 
			
		||||
				materialId: undefined,
 | 
			
		||||
        materialCode: undefined,
 | 
			
		||||
				materialDateId: undefined,
 | 
			
		||||
				equipmentId: undefined,
 | 
			
		||||
        userName: undefined,
 | 
			
		||||
				userNames: [],
 | 
			
		||||
				useTime: undefined,
 | 
			
		||||
        address: undefined,
 | 
			
		||||
				num: 0,
 | 
			
		||||
				source: undefined,
 | 
			
		||||
        remark: undefined
 | 
			
		||||
			},
 | 
			
		||||
			dataSourceList: [
 | 
			
		||||
				{
 | 
			
		||||
					id: 1,
 | 
			
		||||
					name: '手动'
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					id: 2,
 | 
			
		||||
					name: '自动'
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
			materialList: [],
 | 
			
		||||
			materialDateList: [],
 | 
			
		||||
			eqList: [],
 | 
			
		||||
			workersList: [],
 | 
			
		||||
			dataRule: {
 | 
			
		||||
        materialId: [{ required: true, message: "物料不能为空", trigger: "blur" }],
 | 
			
		||||
        materialDateId: [{ required: true, message: "批次号不能为空", trigger: "blur" }],
 | 
			
		||||
				useTime: [{ required: true, message: "使用时间不能为空", trigger: "blur" }],
 | 
			
		||||
				userNames: [{ required: true, message: "操作员不能为空", trigger: "blur" }],
 | 
			
		||||
				num: [{ required: true, message: "使用数量不能为空", trigger: "blur" }]
 | 
			
		||||
      }
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	mounted() {
 | 
			
		||||
		this.getDictData()
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		async getDictData() {
 | 
			
		||||
			const materRes = await getMaterialList()
 | 
			
		||||
			this.materialList = materRes.data
 | 
			
		||||
			console.log('你好', this.materialList)
 | 
			
		||||
			const dateRes = await getMaterDateList()
 | 
			
		||||
			this.materialDateList = dateRes.data
 | 
			
		||||
			const eqRes = await getEqListAll()
 | 
			
		||||
			this.eqList = eqRes.data
 | 
			
		||||
			const workerRes = await getworkerAll()
 | 
			
		||||
			this.workersList = workerRes.data
 | 
			
		||||
		},
 | 
			
		||||
		// 表单提交
 | 
			
		||||
    dataFormSubmit() {
 | 
			
		||||
			this.dataForm.userName = this.dataForm.userNames.join(',')
 | 
			
		||||
      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.$emit("refreshDataList");
 | 
			
		||||
        });
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
		init(id) {
 | 
			
		||||
      this.dataForm.id = id || undefined;
 | 
			
		||||
      this.visible = true;
 | 
			
		||||
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs["dataForm"].resetFields();
 | 
			
		||||
        if (this.dataForm.id) {
 | 
			
		||||
          this.urlOptions.infoURL(id).then(response => {
 | 
			
		||||
            this.dataForm.id = response.data.id
 | 
			
		||||
						this.dataForm.materialCode = response.data.materialCode
 | 
			
		||||
						this.dataForm.materialId = response.data.materialId
 | 
			
		||||
						this.dataForm.materialDateId = response.data.materialDateId
 | 
			
		||||
						this.dataForm.equipmentId = response.data.equipmentId
 | 
			
		||||
						this.dataForm.useTime = response.data.useTime
 | 
			
		||||
						// this.dataForm.userName = response.data.userName
 | 
			
		||||
						this.dataForm.num = response.data.num
 | 
			
		||||
						this.dataForm.source = response.data.source
 | 
			
		||||
						this.dataForm.remark = response.data.remark
 | 
			
		||||
						this.dataForm.userNames = response.data.userName.split(',')
 | 
			
		||||
						console.log('打印', this.dataForm)
 | 
			
		||||
          });
 | 
			
		||||
        } else {
 | 
			
		||||
          if (this.urlOptions.isGetCode) {
 | 
			
		||||
            this.getCode()
 | 
			
		||||
          }
 | 
			
		||||
				}
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
		setCode() {
 | 
			
		||||
			const tempMaterial = this.materialList.filter(item =>{
 | 
			
		||||
				return item.id === this.dataForm.materialId
 | 
			
		||||
			})
 | 
			
		||||
			this.dataForm.materialCode = tempMaterial[0].code
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
							
								
								
									
										212
									
								
								src/views/base/materialUseLog/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										212
									
								
								src/views/base/materialUseLog/index.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,212 @@
 | 
			
		||||
<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 {
 | 
			
		||||
	getMaterialLogPage,
 | 
			
		||||
	deleteMaterialLog
 | 
			
		||||
} from '@/api/base/materialUseLog';
 | 
			
		||||
 | 
			
		||||
const tableProps = [
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'materialName',
 | 
			
		||||
		label: '物料名称'
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'materialCode',
 | 
			
		||||
		label: '物料编码'
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'materialDateId',
 | 
			
		||||
		label: '物料批次'
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'equipName',
 | 
			
		||||
		label: '使用设备'
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'num',
 | 
			
		||||
		label: '使用数量'
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'useTime',
 | 
			
		||||
		label: '使用时间',
 | 
			
		||||
		filter: parseTime
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'userName',
 | 
			
		||||
		label: '操作人'
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'source',
 | 
			
		||||
		label: '数据来源',
 | 
			
		||||
		filter: (val) => ['未知', '手动', '自动'][val]
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'remark',
 | 
			
		||||
		label: '备注'
 | 
			
		||||
	}
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	mixins: [basicPage],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			urlOptions: {
 | 
			
		||||
				getDataListURL: getMaterialLogPage,
 | 
			
		||||
				deleteURL: deleteMaterialLog,
 | 
			
		||||
				// exportURL: exportFactoryExcel,
 | 
			
		||||
			},
 | 
			
		||||
			tableProps,
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi(`base:material-use-log:update`)
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'edit',
 | 
			
		||||
							btnName: '编辑',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
          this.$auth.hasPermi(`base:material-use-log:delete`)
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'delete',
 | 
			
		||||
							btnName: '删除',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
			].filter((v)=>v),
 | 
			
		||||
			tableData: [],
 | 
			
		||||
			listQuery: {
 | 
			
		||||
        pageSize: 10,
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        total: 1,
 | 
			
		||||
				materialName: undefined,
 | 
			
		||||
				useTime: []
 | 
			
		||||
      },
 | 
			
		||||
			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: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary'
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'separate',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:material-use-log: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.records;
 | 
			
		||||
        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.materialName = val.name ? val.name : undefined;
 | 
			
		||||
					if (val.time) {
 | 
			
		||||
						this.listQuery.useTime[0] = val.time[0]
 | 
			
		||||
						this.listQuery.useTime[1] = val.time[1]
 | 
			
		||||
					} else {
 | 
			
		||||
						this.listQuery.useTime = []
 | 
			
		||||
					}
 | 
			
		||||
					console.log('222', this.listQuery, val.time)
 | 
			
		||||
					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>
 | 
			
		||||
@@ -96,7 +96,7 @@ const tableProps = [
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
import { getEnergyTypeListAll } from '@/api/base/energyType'
 | 
			
		||||
import { orderList, workOrderList } from '@/api/base/orderManage'
 | 
			
		||||
import { workOrderList } from '@/api/base/orderManage'
 | 
			
		||||
import { getWorkOrderMsg, getOrderEnergyData } from '@/api/monitoring/orderEnergy'
 | 
			
		||||
import BarChart from "./components/barChart"
 | 
			
		||||
export default {
 | 
			
		||||
@@ -104,25 +104,21 @@ export default {
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'select',
 | 
			
		||||
          label: '订单',
 | 
			
		||||
          selectOptions: [],
 | 
			
		||||
          param: 'energyTypeId'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'select',
 | 
			
		||||
          label: '工单',
 | 
			
		||||
          selectOptions: [],
 | 
			
		||||
          param: 'energyTypeId1'
 | 
			
		||||
          param: 'workOrderId',
 | 
			
		||||
          clearable: false
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'select',
 | 
			
		||||
          label: '能源类型',
 | 
			
		||||
          selectOptions: [],
 | 
			
		||||
          param: 'energyTypeId2',
 | 
			
		||||
          param: 'objType',
 | 
			
		||||
          filterable: true,
 | 
			
		||||
          width: 120
 | 
			
		||||
          width: 120,
 | 
			
		||||
          clearable: false
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'select',
 | 
			
		||||
@@ -130,8 +126,9 @@ export default {
 | 
			
		||||
          selectOptions: this.getDictDatas(this.DICT_TYPE.OBJECT_TYPE),
 | 
			
		||||
          labelField: 'label',
 | 
			
		||||
          valueField: 'value',
 | 
			
		||||
          param: 'energyTypeId3',
 | 
			
		||||
          width: 100
 | 
			
		||||
          param: 'energyTypeId',
 | 
			
		||||
          width: 100,
 | 
			
		||||
          clearable: false
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
@@ -145,8 +142,9 @@ export default {
 | 
			
		||||
      tableH: this.tableHeight(400),
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 10000
 | 
			
		||||
        workOrderId: '',
 | 
			
		||||
        objType: '',
 | 
			
		||||
        energyTypeId: ''
 | 
			
		||||
      },
 | 
			
		||||
      orderMsg: {},
 | 
			
		||||
      chartData: [],
 | 
			
		||||
@@ -162,34 +160,38 @@ export default {
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    getListArr() {
 | 
			
		||||
      getEnergyTypeListAll().then(res => {
 | 
			
		||||
        this.formConfig[2].selectOptions = res.data || []
 | 
			
		||||
      })
 | 
			
		||||
      orderList().then(res => {
 | 
			
		||||
        console.log(res)
 | 
			
		||||
      })
 | 
			
		||||
      workOrderList().then(res => {
 | 
			
		||||
        console.log(res)
 | 
			
		||||
        this.formConfig[0].selectOptions = res.data || []
 | 
			
		||||
      })
 | 
			
		||||
      getEnergyTypeListAll().then(res => {
 | 
			
		||||
        this.formConfig[1].selectOptions = res.data || []
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    buttonClick() {
 | 
			
		||||
      getWorkOrderMsg({
 | 
			
		||||
        "workOrderId": 1,
 | 
			
		||||
        "objType": "3",
 | 
			
		||||
        "energyTypeId": '1681183397517406210'
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        console.log(res)
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      if (!val.workOrderId) {
 | 
			
		||||
        this.$modal.msgWarning('工单不能为空')
 | 
			
		||||
        return false
 | 
			
		||||
      }
 | 
			
		||||
      if (!val.objType) {
 | 
			
		||||
        this.$modal.msgWarning('能源类型不能为空')
 | 
			
		||||
        return false
 | 
			
		||||
      }
 | 
			
		||||
      if (!val.energyTypeId) {
 | 
			
		||||
        this.$modal.msgWarning('对象维度不能为空')
 | 
			
		||||
        return false
 | 
			
		||||
      }
 | 
			
		||||
      this.queryParams.workOrderId = val.workOrderId
 | 
			
		||||
      this.queryParams.objType = val.objType
 | 
			
		||||
      this.queryParams.energyTypeId = val.energyTypeId
 | 
			
		||||
      getWorkOrderMsg({ ...this.queryParams }).then(res => {
 | 
			
		||||
        this.orderMsg = res.data || {}
 | 
			
		||||
        getOrderEnergyData({
 | 
			
		||||
          "workOrderId": 1,
 | 
			
		||||
          "objType": "3",
 | 
			
		||||
          "energyTypeId": '1681183397517406210',
 | 
			
		||||
          "startProduceTime": "1694239523000",
 | 
			
		||||
          "finishProduceTime": "1694498723000"
 | 
			
		||||
        }).then(res => {
 | 
			
		||||
          console.log(res)
 | 
			
		||||
          this.tableData = res.data || []
 | 
			
		||||
          this.chartData = res.data || []
 | 
			
		||||
          ...this.queryParams,
 | 
			
		||||
          startProduceTime: res.data.startProduceTime	 || '',
 | 
			
		||||
          finishProduceTime: res.data.finishProduceTime || ''
 | 
			
		||||
        }).then(result => {
 | 
			
		||||
          this.tableData = result.data || []
 | 
			
		||||
          this.chartData = result.data || []
 | 
			
		||||
        })
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
 
 | 
			
		||||
@@ -1,46 +0,0 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div>
 | 
			
		||||
    <el-drawer title="查看详情" :visible.sync="visible" size="70%">
 | 
			
		||||
      <div class="box">
 | 
			
		||||
        <base-table
 | 
			
		||||
          :table-props="tableProps"
 | 
			
		||||
          :table-data="tableData"
 | 
			
		||||
          :max-height="tableH"
 | 
			
		||||
        />
 | 
			
		||||
      </div>
 | 
			
		||||
    </el-drawer>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { getByScheduling } from '@/api/monitoring/groupTeamView'
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'schedulingMonitoringDetail',
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      visible: false,
 | 
			
		||||
      tableProps: [],
 | 
			
		||||
      tableData: [],
 | 
			
		||||
      tableH: this.tableHeight(200)
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  created() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(200)
 | 
			
		||||
    })
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(id) {
 | 
			
		||||
      this.visible = true
 | 
			
		||||
      console.log(id)
 | 
			
		||||
      getByScheduling({id}).then(res => {
 | 
			
		||||
        console.log(res)
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.box {
 | 
			
		||||
  padding: 0 32px;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -64,14 +64,12 @@ export default {
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(params) {
 | 
			
		||||
      console.log(params)
 | 
			
		||||
      this.visible = true
 | 
			
		||||
      this.queryParams = params
 | 
			
		||||
      getByTeam({
 | 
			
		||||
        teamId: this.queryParams.teamId,
 | 
			
		||||
        workOrderId: this.queryParams.workOrderId
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        console.log(res)
 | 
			
		||||
        this.tableData = res.data || []
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -61,10 +61,11 @@ export default {
 | 
			
		||||
    return {
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: '工单名称',
 | 
			
		||||
          placeholder: '工单名称',
 | 
			
		||||
          param: 'cnName'
 | 
			
		||||
          type: 'select',
 | 
			
		||||
          label: '工单',
 | 
			
		||||
          selectOptions: [],
 | 
			
		||||
          param: 'workOrderId',
 | 
			
		||||
          clearable: false
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
@@ -79,7 +80,8 @@ export default {
 | 
			
		||||
        pageSize: 1000,
 | 
			
		||||
        workOrderId: ''
 | 
			
		||||
      },
 | 
			
		||||
      workOrderName: '工单名称ddd',
 | 
			
		||||
      workOrderList: [],
 | 
			
		||||
      workOrderName: '',
 | 
			
		||||
      tableBtn,
 | 
			
		||||
      tableProps,
 | 
			
		||||
      tableH: this.tableHeight(220),
 | 
			
		||||
@@ -92,33 +94,42 @@ export default {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(220)
 | 
			
		||||
    })
 | 
			
		||||
    this.getOrderList()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    // 获取工单list
 | 
			
		||||
    getOrderList() {
 | 
			
		||||
      workOrderList().then(res => {
 | 
			
		||||
        
 | 
			
		||||
        console.log(res)
 | 
			
		||||
        this.formConfig[0].selectOptions = res.data || []
 | 
			
		||||
        this.workOrderList = res.data || []
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    // 查询
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      // this.queryParams.workOrderId = val.id
 | 
			
		||||
      this.queryParams.workOrderId = 1
 | 
			
		||||
      if (!val.workOrderId) {
 | 
			
		||||
        this.$modal.msgWarning('工单不能为空')
 | 
			
		||||
        return false
 | 
			
		||||
      }
 | 
			
		||||
      this.queryParams.workOrderId = val.workOrderId
 | 
			
		||||
      this.getList()
 | 
			
		||||
    },
 | 
			
		||||
    // 获取table数据
 | 
			
		||||
    getList() {
 | 
			
		||||
      getByWorkOrder({ id: this.queryParams.workOrderId }).then(res => {
 | 
			
		||||
        console.log(res)
 | 
			
		||||
        this.list = res.data
 | 
			
		||||
        this.list = res.data || []
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      this.paramVisible = true
 | 
			
		||||
      let params = {}
 | 
			
		||||
      params.teamId = val.data.id
 | 
			
		||||
      params.teamName = val.data.name
 | 
			
		||||
      this.workOrderList.map(item => {
 | 
			
		||||
        if (this.queryParams.workOrderId === item.id) {
 | 
			
		||||
          this.workOrderName = item.name
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
      params.workOrderId = this.queryParams.workOrderId
 | 
			
		||||
      params.workOrderName = this.workOrderName
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,162 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div>
 | 
			
		||||
    <el-drawer title="查看详情" :visible.sync="visible" size="70%" :wrapperClosable='false' @closed="closeDrawer">
 | 
			
		||||
      <div class="box">
 | 
			
		||||
        <base-table
 | 
			
		||||
          :table-props="tableProps"
 | 
			
		||||
          :table-data="tableData"
 | 
			
		||||
          :max-height="tableH"
 | 
			
		||||
        />
 | 
			
		||||
      </div>
 | 
			
		||||
    </el-drawer>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { getByScheduling } from '@/api/monitoring/groupTeamView'
 | 
			
		||||
import { getSchedulingMonitoringRecord } from '@/api/monitoring/teamProduction'
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'TeamProductionDetail',
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      visible: false,
 | 
			
		||||
      tableProps: [
 | 
			
		||||
        {
 | 
			
		||||
          prop: 'lineName',
 | 
			
		||||
          label: '产线',
 | 
			
		||||
          minWidth: 120
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          prop: 'startTime',
 | 
			
		||||
          label: '上班时间',
 | 
			
		||||
          minWidth: 150
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          prop: 'endTime',
 | 
			
		||||
          label: '下班时间',
 | 
			
		||||
          minWidth: 150
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          prop: 'workOrderList',
 | 
			
		||||
          label: '生产工单'
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      tableData: [],
 | 
			
		||||
      tableH: this.tableHeight(200)
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  created() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(200)
 | 
			
		||||
    })
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(params) {
 | 
			
		||||
      this.visible = true
 | 
			
		||||
      // console.log(params)
 | 
			
		||||
      getByScheduling({id:params.id}).then(res => {
 | 
			
		||||
        let dataList1 = []
 | 
			
		||||
        let dataList2 = []
 | 
			
		||||
        if (res.data.nameData && res.data.nameData.length > 0) {
 | 
			
		||||
          dataList1 = res.data
 | 
			
		||||
          // 下一个接口的参数&&表头
 | 
			
		||||
          let timeArr = []
 | 
			
		||||
          res.data.nameData.map(item => {
 | 
			
		||||
            let tablePropsObj = {
 | 
			
		||||
              prop: '',
 | 
			
		||||
              label: '',
 | 
			
		||||
              children: [
 | 
			
		||||
                {
 | 
			
		||||
                  prop: '',
 | 
			
		||||
                  label: '上片数据'
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                  prop: '',
 | 
			
		||||
                  label: '下片数据'
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                  prop: '',
 | 
			
		||||
                  label: '良品面积'
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                  prop: '',
 | 
			
		||||
                  label: '报废数据'
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                  prop: '',
 | 
			
		||||
                  label: '报废比例'
 | 
			
		||||
                }
 | 
			
		||||
              ]
 | 
			
		||||
            }
 | 
			
		||||
            timeArr.push(this.parseTime(item.name))
 | 
			
		||||
            tablePropsObj.prop = item.name
 | 
			
		||||
            tablePropsObj.label = this.parseTime(item.name)
 | 
			
		||||
            tablePropsObj.children[0].prop = item.name+'sumInput'
 | 
			
		||||
            tablePropsObj.children[1].prop = item.name+'sumOutput'
 | 
			
		||||
            tablePropsObj.children[2].prop = item.name+'goodArea'
 | 
			
		||||
            tablePropsObj.children[3].prop = item.name+'dynamicValue'
 | 
			
		||||
            tablePropsObj.children[4].prop = item.name+'dynamicRatio'
 | 
			
		||||
            this.tableProps.push(tablePropsObj)
 | 
			
		||||
          })
 | 
			
		||||
          getSchedulingMonitoringRecord({
 | 
			
		||||
            checkTime: timeArr
 | 
			
		||||
          }).then(result => {
 | 
			
		||||
            dataList2 = result.data
 | 
			
		||||
            // console.log(dataList1)
 | 
			
		||||
            // console.log(dataList2)
 | 
			
		||||
            for (let i = 0; i < dataList1.data.length; i++) {
 | 
			
		||||
              let obj = {}
 | 
			
		||||
              obj.lineName = dataList1.data[i].lineName
 | 
			
		||||
              obj.startTime = this.parseTime(params.startTime)
 | 
			
		||||
              obj.endTime = this.parseTime(params.endTime)
 | 
			
		||||
              obj.workOrderList = dataList1.data[i].workOrderList
 | 
			
		||||
              let subData1 = dataList1.data[i].data
 | 
			
		||||
              for (let ii = 0; ii < subData1.length; ii++) {
 | 
			
		||||
                obj[subData1[ii].dynamicName+'sumInput'] = subData1[ii].dynamicValue.sumInput
 | 
			
		||||
                obj[subData1[ii].dynamicName+'sumOutput'] = subData1[ii].dynamicValue.sumOutput
 | 
			
		||||
                obj[subData1[ii].dynamicName+'goodArea'] = subData1[ii].dynamicValue.goodArea
 | 
			
		||||
              }
 | 
			
		||||
              for (let j = 0; j < dataList2.data.length; j++) {
 | 
			
		||||
                let subData2 = dataList2.data[j].data
 | 
			
		||||
                for (let jj = 0; jj < subData2.length; jj++) {
 | 
			
		||||
                  obj[subData2[jj].dynamicName+'dynamicValue'] = subData2[jj].dynamicValue
 | 
			
		||||
                  obj[subData2[jj].dynamicName+'dynamicRatio'] = obj[subData2[jj].dynamicName+'dynamicValue'] / obj[subData2[jj].dynamicName+'sumOutput']
 | 
			
		||||
                }
 | 
			
		||||
              }
 | 
			
		||||
              this.tableData.push(obj)
 | 
			
		||||
            }
 | 
			
		||||
          })
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    closeDrawer() {
 | 
			
		||||
      this.tableData = []
 | 
			
		||||
      this.tableProps = [
 | 
			
		||||
        {
 | 
			
		||||
          prop: 'lineName',
 | 
			
		||||
          label: '产线',
 | 
			
		||||
          minWidth: 120
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          prop: 'startTime',
 | 
			
		||||
          label: '上班时间',
 | 
			
		||||
          minWidth: 150
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          prop: 'endTime',
 | 
			
		||||
          label: '下班时间',
 | 
			
		||||
          minWidth: 150
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          prop: 'workOrderList',
 | 
			
		||||
          label: '生产工单'
 | 
			
		||||
        }
 | 
			
		||||
      ]
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.box {
 | 
			
		||||
  padding: 0 32px;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -30,13 +30,13 @@
 | 
			
		||||
      @pagination="getList"
 | 
			
		||||
    />
 | 
			
		||||
    <!-- 查看生产情况 -->
 | 
			
		||||
    <scheduling-monitoring-detail v-if='paramVisible' ref='schedulingMonitoringDetail'/>
 | 
			
		||||
    <team-production-detail v-if='paramVisible' ref='schedulingMonitoringDetail'/>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { groupTeamSchedulingPage } from '@/api/base/groupTeamScheduling'
 | 
			
		||||
import { groupTeamSchedulingPage } from '@/api/monitoring/teamProduction'
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi'
 | 
			
		||||
import SchedulingMonitoringDetail from './components/schedulingMonitoringDetail'
 | 
			
		||||
import TeamProductionDetail from './components/teamProductionDetail'
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'createTime',
 | 
			
		||||
@@ -122,7 +122,7 @@ export default {
 | 
			
		||||
      paramVisible: false
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  components: { SchedulingMonitoringDetail },
 | 
			
		||||
  components: { TeamProductionDetail },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(220)
 | 
			
		||||
@@ -141,12 +141,15 @@ export default {
 | 
			
		||||
        this.list = res.data.list || []
 | 
			
		||||
        this.total = res.data.total || 0
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    getGroupClass() {
 | 
			
		||||
      
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      this.paramVisible = true
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs.schedulingMonitoringDetail.init(val.data.id)
 | 
			
		||||
        this.$refs.schedulingMonitoringDetail.init(val.data)
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
							
								
								
									
										289
									
								
								src/views/order/base/orderManage/components/addWorkOrder.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										289
									
								
								src/views/order/base/orderManage/components/addWorkOrder.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,289 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <el-form ref="addWorkOrder" :rules="rules" label-width="130px" :model="form">
 | 
			
		||||
    <el-row>
 | 
			
		||||
      <el-col :span='12'>
 | 
			
		||||
        <el-form-item label="工单名称" prop="name" v-if='!isBind'>
 | 
			
		||||
          <el-input v-model="form.name"></el-input>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
        <el-form-item label="产品名称" prop="orderId"  v-if='isBind'>
 | 
			
		||||
          <el-select v-model="form.orderId" placeholder="请选择" style="width: 100%;">
 | 
			
		||||
            <el-option
 | 
			
		||||
              v-for="item in workOrderList"
 | 
			
		||||
              :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="code">
 | 
			
		||||
          <el-input v-model="form.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="form.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="form.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="form.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="form.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="form.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="form.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="form.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="form.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="productLineId">
 | 
			
		||||
          <el-select v-model="form.productLineId" 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="form.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, getWorkOrderCode, orderIssue, workOrderList } from '@/api/base/orderManage'
 | 
			
		||||
import { getLineAll } from '@/api/base/productionLine'
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'AddWorkOrder',
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      form: {
 | 
			
		||||
        workOrderId: '',
 | 
			
		||||
        orderId: '',
 | 
			
		||||
        name: '',
 | 
			
		||||
        code: '',
 | 
			
		||||
        planProductId: '',
 | 
			
		||||
        productSpec: '',
 | 
			
		||||
        planStartTime: '',
 | 
			
		||||
        planFinishTime: '',
 | 
			
		||||
        planAssignQuantity: 0,
 | 
			
		||||
        planQuantity: 0,
 | 
			
		||||
        processFlowId: '',
 | 
			
		||||
        materialMethod: 1,
 | 
			
		||||
        priority: '',
 | 
			
		||||
        productLineId: [],
 | 
			
		||||
        type: '',
 | 
			
		||||
        workers: '',
 | 
			
		||||
        planAssignmentQuantity: ''
 | 
			
		||||
      },
 | 
			
		||||
      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" }],
 | 
			
		||||
        productLineId: [{ required: true, message: "产品不能为空", trigger: "change" }]
 | 
			
		||||
      },
 | 
			
		||||
      productList: [],
 | 
			
		||||
      processFlowList: [],
 | 
			
		||||
      productLineList: [],
 | 
			
		||||
      workOrderTypeList: [
 | 
			
		||||
        {id: 1,name:'标准工单'},
 | 
			
		||||
        {id: 2, name:'特殊工单'}
 | 
			
		||||
      ],
 | 
			
		||||
      planStartTime: '',
 | 
			
		||||
      planFinishTime: '',
 | 
			
		||||
      isBind: false,
 | 
			
		||||
      workOrderList: []
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(id, param) {
 | 
			
		||||
      console.log(id)
 | 
			
		||||
      this.form.orderId = id
 | 
			
		||||
      this.getList()
 | 
			
		||||
      if (param === 'add') {
 | 
			
		||||
        this.isBind = false
 | 
			
		||||
        getWorkOrderCode().then(res => {
 | 
			
		||||
          this.form.code = res.data || ''
 | 
			
		||||
        })
 | 
			
		||||
      }else{//绑定
 | 
			
		||||
        this.isBind = true
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    getList() {
 | 
			
		||||
      // 产品
 | 
			
		||||
      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.form.productSpec = item.specifications
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
      } else {
 | 
			
		||||
        this.form.productSpec = ''
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    addWorkOrderSubmit() {
 | 
			
		||||
      this.$refs['addWorkOrder'].validate((valid) => {
 | 
			
		||||
        if (valid) {
 | 
			
		||||
          this.form.planStartTime = this.planStartTime ? new Date(this.planStartTime).valueOf() : ''
 | 
			
		||||
          this.form.planFinishTime = this.planFinishTime ? new Date(this.planFinishTime).valueOf() : ''
 | 
			
		||||
          console.log(this.form)
 | 
			
		||||
          orderIssue({ ...this.form }).then(res => {
 | 
			
		||||
            if (res.code === 0) {
 | 
			
		||||
              this.$modal.msgSuccess("操作成功")
 | 
			
		||||
              this.$emit('addWorkOrderSubmit')
 | 
			
		||||
            }
 | 
			
		||||
          })
 | 
			
		||||
          // if (this.isEdit) {
 | 
			
		||||
          //   //编辑
 | 
			
		||||
          //   orderUpdate({ ...this.form }).then((res) => {
 | 
			
		||||
          //     if (res.code === 0) {
 | 
			
		||||
          //       this.$modal.msgSuccess("操作成功");
 | 
			
		||||
          //       this.$emit('successSubmit')
 | 
			
		||||
          //     }
 | 
			
		||||
          //   })
 | 
			
		||||
          // } else {
 | 
			
		||||
          //   this.form.status = 1
 | 
			
		||||
          //   this.form.triggerOrigin = 1
 | 
			
		||||
          //   orderCreate({ ...this.form }).then((res) => {
 | 
			
		||||
          //     if (res.code === 0) {
 | 
			
		||||
          //       this.$modal.msgSuccess("操作成功");
 | 
			
		||||
          //       this.$emit('successSubmit')
 | 
			
		||||
          //     }
 | 
			
		||||
          //   })
 | 
			
		||||
          // }
 | 
			
		||||
        } else {
 | 
			
		||||
          return false
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    formClear() {
 | 
			
		||||
      this.$refs.addWorkOrder.resetFields()
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
@@ -0,0 +1,11 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div>111</div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'BindWorkOrder',
 | 
			
		||||
  data() {
 | 
			
		||||
    return {}
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
@@ -20,7 +20,7 @@
 | 
			
		||||
      </el-col>
 | 
			
		||||
      <el-col :span='12'>
 | 
			
		||||
        <el-form-item label="产品名称" prop="planProductId">
 | 
			
		||||
          <el-select v-model="form.planProductId" placeholder="请选择" style="width: 100%;">
 | 
			
		||||
          <el-select v-model="form.planProductId" placeholder="请选择" style="width: 100%;" @change="selectProduct">
 | 
			
		||||
            <el-option
 | 
			
		||||
              v-for="item in productList"
 | 
			
		||||
              :key="item.id"
 | 
			
		||||
@@ -49,9 +49,9 @@
 | 
			
		||||
          <el-select v-model="form.customerId" placeholder="请选择" style="width: 100%;">
 | 
			
		||||
            <el-option
 | 
			
		||||
              v-for="item in customerList"
 | 
			
		||||
              :key="item.value"
 | 
			
		||||
              :label="item.label"
 | 
			
		||||
              :value="item.value">
 | 
			
		||||
              :key="item.id"
 | 
			
		||||
              :label="item.name"
 | 
			
		||||
              :value="item.id">
 | 
			
		||||
            </el-option>
 | 
			
		||||
          </el-select>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
@@ -72,7 +72,14 @@
 | 
			
		||||
    <el-row>
 | 
			
		||||
      <el-col :span='12'>
 | 
			
		||||
        <el-form-item label="包装规格" prop="packSpec">
 | 
			
		||||
          <el-input v-model="form.packSpec" disabled></el-input>
 | 
			
		||||
          <el-select v-model="form.packSpec" placeholder="请选择" style="width: 100%;">
 | 
			
		||||
            <el-option
 | 
			
		||||
              v-for="item in getDictDatas(DICT_TYPE.PACK_SPEC)"
 | 
			
		||||
              :key="item.value"
 | 
			
		||||
              :label="item.label"
 | 
			
		||||
              :value="item.value">
 | 
			
		||||
            </el-option>
 | 
			
		||||
          </el-select>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
      <el-col :span='12'>
 | 
			
		||||
@@ -86,7 +93,7 @@
 | 
			
		||||
        <el-form-item label="关联工艺" prop="processFlowId">
 | 
			
		||||
          <el-select v-model="form.processFlowId" placeholder="请选择" style="width: 100%;">
 | 
			
		||||
            <el-option
 | 
			
		||||
              v-for="item in customerList"
 | 
			
		||||
              v-for="item in processFlowList"
 | 
			
		||||
              :key="item.id"
 | 
			
		||||
              :label="item.name"
 | 
			
		||||
              :value="item.id">
 | 
			
		||||
@@ -105,20 +112,24 @@
 | 
			
		||||
    </el-row>
 | 
			
		||||
    <el-row>
 | 
			
		||||
      <el-col :span='12'>
 | 
			
		||||
        <el-form-item label="订单计划开始时间" prop="planStartTime">
 | 
			
		||||
        <el-form-item label="订单计划开始时间">
 | 
			
		||||
          <el-date-picker
 | 
			
		||||
            v-model="form.planStartTime"
 | 
			
		||||
            v-model="planStartTime"
 | 
			
		||||
            type="date"
 | 
			
		||||
            format='yyyy-MM-dd'
 | 
			
		||||
            value-format="yyyy-MM-dd"
 | 
			
		||||
            style="width: 100%;"
 | 
			
		||||
            placeholder="选择日期">
 | 
			
		||||
          </el-date-picker>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
      <el-col :span='12'>
 | 
			
		||||
        <el-form-item label="订单计划完成时间" prop="planFinishTime">
 | 
			
		||||
        <el-form-item label="订单计划完成时间">
 | 
			
		||||
          <el-date-picker
 | 
			
		||||
            v-model="form.planFinishTime"
 | 
			
		||||
            v-model="planFinishTime"
 | 
			
		||||
            type="date"
 | 
			
		||||
            format='yyyy-MM-dd'
 | 
			
		||||
            value-format="yyyy-MM-dd"
 | 
			
		||||
            style="width: 100%;"
 | 
			
		||||
            placeholder="选择日期">
 | 
			
		||||
          </el-date-picker>
 | 
			
		||||
@@ -142,9 +153,10 @@
 | 
			
		||||
  </el-form>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { getOrderCode, getOrderById } from '@/api/base/orderManage'
 | 
			
		||||
import { getOrderCode, getOrderById, getProcessFlowList, orderUpdate, orderCreate } from '@/api/base/orderManage'
 | 
			
		||||
import { getProductAll } from '@/api/base/product'
 | 
			
		||||
import { getCustomerList } from '@/api/base/customer'
 | 
			
		||||
import moment from 'moment'
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'OrderAdd',
 | 
			
		||||
  data() {
 | 
			
		||||
@@ -162,12 +174,14 @@ export default {
 | 
			
		||||
        packSpec: '',
 | 
			
		||||
        workers: '',
 | 
			
		||||
        processFlowId: '',
 | 
			
		||||
        materialMethod: '1',
 | 
			
		||||
        planStartTime: '',
 | 
			
		||||
        planFinishTime: '',
 | 
			
		||||
        materialMethod: 1,
 | 
			
		||||
        remark: '',
 | 
			
		||||
        description: ''
 | 
			
		||||
        description: '',
 | 
			
		||||
        planStartTime: '',
 | 
			
		||||
        planFinishTime: ''
 | 
			
		||||
      },
 | 
			
		||||
      planStartTime: '',
 | 
			
		||||
      planFinishTime: '',
 | 
			
		||||
      rules: {
 | 
			
		||||
        name: [{ required: true, message: "订单名称不能为空", trigger: "blur" }],
 | 
			
		||||
        planQuantity: [{ required: true, message: "计划加工数量不能为空", trigger: "blur" }],
 | 
			
		||||
@@ -175,6 +189,7 @@ export default {
 | 
			
		||||
      },
 | 
			
		||||
      productList: [],
 | 
			
		||||
      customerList: [],
 | 
			
		||||
      processFlowList: [],
 | 
			
		||||
      isEdit: false //是否是编辑
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
@@ -184,10 +199,24 @@ export default {
 | 
			
		||||
      if (id) {
 | 
			
		||||
        this.isEdit = true
 | 
			
		||||
        this.form.id = id
 | 
			
		||||
        getOrderById(id).then(res => {
 | 
			
		||||
        getOrderById({id: this.form.id}).then(res => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            this.form = res.data
 | 
			
		||||
            // this.selectLeader()
 | 
			
		||||
            this.form.name = res.data.name
 | 
			
		||||
            this.form.code = res.data.code
 | 
			
		||||
            this.form.planQuantity = res.data.planQuantity
 | 
			
		||||
            this.form.planProductId = res.data.planProductId
 | 
			
		||||
            this.selectProduct(this.form.planProductId)
 | 
			
		||||
            this.form.price = res.data.price
 | 
			
		||||
            this.form.customerId = res.data.customerId
 | 
			
		||||
            this.form.priority = res.data.priority ? res.data.priority + '' : ''
 | 
			
		||||
            this.planStartTime = res.data.planStartTime ? moment(res.data.planStartTime).format('YYYY-MM-DD') : null
 | 
			
		||||
            this.form.packSpec = res.data.packSpec ? res.data.packSpec+'' : ''
 | 
			
		||||
            this.form.workers = res.data.workers
 | 
			
		||||
            this.form.processFlowId = res.data.processFlowId
 | 
			
		||||
            this.form.materialMethod = res.data.materialMethod
 | 
			
		||||
            this.planFinishTime = res.data.planFinishTime ? moment(res.data.planFinishTime).format('YYYY-MM-DD') : null
 | 
			
		||||
            this.form.remark = res.data.remark
 | 
			
		||||
            this.form.description = res.data.description
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
      } else {
 | 
			
		||||
@@ -209,20 +238,40 @@ export default {
 | 
			
		||||
        this.customerList = res.data || []
 | 
			
		||||
      })
 | 
			
		||||
      // 工艺
 | 
			
		||||
      getProcessFlowList().then(res => {
 | 
			
		||||
        this.processFlowList = res.data || []
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    // 选产品带出规格
 | 
			
		||||
    selectProduct(val) {
 | 
			
		||||
      if (val) {
 | 
			
		||||
        this.productList.map(item => {
 | 
			
		||||
          if (val === item.id) {
 | 
			
		||||
            this.form.productSpec = item.specifications
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
      } else {
 | 
			
		||||
        this.form.productSpec = ''
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    submitForm() {
 | 
			
		||||
      this.$refs['orderAddForm'].validate((valid) => {
 | 
			
		||||
        if (valid) {
 | 
			
		||||
          this.form.planStartTime = this.planStartTime ? new Date(this.planStartTime).valueOf() : ''
 | 
			
		||||
          this.form.planFinishTime = this.planFinishTime ? new Date(this.planFinishTime).valueOf() : ''
 | 
			
		||||
          console.log(this.form)
 | 
			
		||||
          if (this.isEdit) {
 | 
			
		||||
            //编辑
 | 
			
		||||
            updateGroupTeam({ ...this.form }).then((res) => {
 | 
			
		||||
            orderUpdate({ ...this.form }).then((res) => {
 | 
			
		||||
              if (res.code === 0) {
 | 
			
		||||
                this.$modal.msgSuccess("操作成功");
 | 
			
		||||
                this.$emit('successSubmit')
 | 
			
		||||
              }
 | 
			
		||||
            })
 | 
			
		||||
          } else {
 | 
			
		||||
            createGroupTeam({ ...this.form }).then((res) => {
 | 
			
		||||
            this.form.status = 1
 | 
			
		||||
            this.form.triggerOrigin = 1
 | 
			
		||||
            orderCreate({ ...this.form }).then((res) => {
 | 
			
		||||
              if (res.code === 0) {
 | 
			
		||||
                this.$modal.msgSuccess("操作成功");
 | 
			
		||||
                this.$emit('successSubmit')
 | 
			
		||||
@@ -236,6 +285,13 @@ export default {
 | 
			
		||||
    },
 | 
			
		||||
    formClear() {
 | 
			
		||||
      this.$refs.orderAddForm.resetFields()
 | 
			
		||||
      this.form.materialMethod = 1
 | 
			
		||||
      this.form.price = 0.00
 | 
			
		||||
      this.form.planQuantity = 0
 | 
			
		||||
      this.planFinishTime = ''
 | 
			
		||||
      this.planStartTime = ''
 | 
			
		||||
      this.form.planFinishTime = ''
 | 
			
		||||
      this.form.planStartTime = ''
 | 
			
		||||
      this.isEdit = false
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
@@ -17,7 +17,7 @@
 | 
			
		||||
      <method-btn
 | 
			
		||||
        v-if="tableBtn.length"
 | 
			
		||||
        slot="handleBtn"
 | 
			
		||||
        :width="80"
 | 
			
		||||
        :width="250"
 | 
			
		||||
        label="操作"
 | 
			
		||||
        :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleClick"
 | 
			
		||||
@@ -41,12 +41,37 @@
 | 
			
		||||
      <order-add ref="orderAdd" @successSubmit="successSubmit" />
 | 
			
		||||
    </base-dialog>
 | 
			
		||||
    <!-- 查看详情 -->
 | 
			
		||||
    <!-- 新增工单 -->
 | 
			
		||||
    <base-dialog
 | 
			
		||||
      :dialogTitle="workIssueTitle"
 | 
			
		||||
      :dialogVisible="addWorkOrdervisible"
 | 
			
		||||
      @cancel="addWorkOrderCancel"
 | 
			
		||||
      @confirm="addWorkOrderConfirm"
 | 
			
		||||
      :before-close="addWorkOrderCancel"
 | 
			
		||||
      width='70%'
 | 
			
		||||
    >
 | 
			
		||||
      <add-work-order ref="addWorkOrder" @successSubmit="addWorkOrderSubmit" />
 | 
			
		||||
    </base-dialog>
 | 
			
		||||
    <!-- 绑定工单 -->
 | 
			
		||||
    <!-- <base-dialog
 | 
			
		||||
      dialogTitle="绑定工单"
 | 
			
		||||
      :dialogVisible="bindWorkOrdervisible"
 | 
			
		||||
      @cancel="bindWorkOrderCancel"
 | 
			
		||||
      @confirm="bindWorkOrderConfirm"
 | 
			
		||||
      :before-close="bindWorkOrderCancel"
 | 
			
		||||
      width='70%'
 | 
			
		||||
    >
 | 
			
		||||
      <bind-work-order ref="bindWorkOrder" @successSubmit="bindWorkOrderSubmit" />
 | 
			
		||||
    </base-dialog> -->
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi'
 | 
			
		||||
import { getOrderPage } from '@/api/base/orderManage'
 | 
			
		||||
import OrderAdd from './components/orderAdd.vue'
 | 
			
		||||
import { getOrderPage, orderDelete } from '@/api/base/orderManage'
 | 
			
		||||
import OrderAdd from './components/orderAdd'
 | 
			
		||||
import AddWorkOrder from './components/addWorkOrder'
 | 
			
		||||
import BindWorkOrder from './components/bindWorkOrder'
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'createTime',
 | 
			
		||||
@@ -61,46 +86,49 @@ const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'code',
 | 
			
		||||
    label: '订单编码',
 | 
			
		||||
    minWidth: 220
 | 
			
		||||
    minWidth: 180
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'num',
 | 
			
		||||
    label: '客户'
 | 
			
		||||
    prop: 'customerId',
 | 
			
		||||
    label: '客户(?)'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'leaderName',
 | 
			
		||||
    label: '来源'
 | 
			
		||||
    prop: 'triggerOrigin',
 | 
			
		||||
    label: '来源',
 | 
			
		||||
    filter: publicFormatter('order_Origin')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'leaderName1',
 | 
			
		||||
    label: '优先级'
 | 
			
		||||
    prop: 'priority',
 | 
			
		||||
    label: '优先级',
 | 
			
		||||
    filter: publicFormatter('order_priority')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'leaderNam1e',
 | 
			
		||||
    label: '订单状态'
 | 
			
		||||
    prop: 'status',
 | 
			
		||||
    label: '订单状态',
 | 
			
		||||
    filter: publicFormatter('order_status')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'leaderName3',
 | 
			
		||||
    prop: 'planQuantity',
 | 
			
		||||
    label: '计划加工量'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'leaderName9',
 | 
			
		||||
    prop: 'actualQuantity',
 | 
			
		||||
    label: '实际加工量'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'leaderN4ame',
 | 
			
		||||
    label: '产品'
 | 
			
		||||
    prop: 'planProductId',
 | 
			
		||||
    label: '产品(?)'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'leade2rName',
 | 
			
		||||
    label: '单位'
 | 
			
		||||
    prop: 'unit',
 | 
			
		||||
    label: '单位(?)'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'leaderN11ame',
 | 
			
		||||
    prop: 'price',
 | 
			
		||||
    label: '单价(元)'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'leaderName22',
 | 
			
		||||
    prop: 'workOrderNum',
 | 
			
		||||
    label: '工单数量'
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
@@ -166,6 +194,24 @@ export default {
 | 
			
		||||
      list: [],
 | 
			
		||||
      tableH: this.tableHeight(260),
 | 
			
		||||
      tableBtn: [
 | 
			
		||||
      this.$auth.hasPermi('base:group-team:update')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'add',
 | 
			
		||||
              btnName: '新增工单'
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
      this.$auth.hasPermi('base:group-team:update')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'bind',
 | 
			
		||||
              btnName: '绑定工单'
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
      this.$auth.hasPermi('base:group-team:update')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'detail',
 | 
			
		||||
              btnName: '详情'
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
        this.$auth.hasPermi('base:group-team:update')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'edit',
 | 
			
		||||
@@ -180,20 +226,29 @@ export default {
 | 
			
		||||
          : undefined
 | 
			
		||||
      ].filter((v) => v),
 | 
			
		||||
      addOrEditTitle: '',
 | 
			
		||||
      centervisible: false
 | 
			
		||||
      centervisible: false,
 | 
			
		||||
      priorityList: this.getDictDatas(this.DICT_TYPE.ORDER_PRIORITY),
 | 
			
		||||
      workIssueTitle: '',
 | 
			
		||||
      addWorkOrdervisible: false
 | 
			
		||||
      // bindWorkOrdervisible: false
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  components: { OrderAdd },
 | 
			
		||||
  components: { OrderAdd, AddWorkOrder, BindWorkOrder },
 | 
			
		||||
  created() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(260)
 | 
			
		||||
    })
 | 
			
		||||
    this.getSelectList()
 | 
			
		||||
    this.getList();
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    getSelectList() {
 | 
			
		||||
      console.log(this.getDictDatas(this.DICT_TYPE.ORDER_PRIORITY))
 | 
			
		||||
    },
 | 
			
		||||
    getList() {
 | 
			
		||||
      getOrderPage({...this.queryParams}).then(res => {
 | 
			
		||||
        console.log(res)
 | 
			
		||||
        this.list = res.data.records || []
 | 
			
		||||
        this.total = res.data.total || 0
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
@@ -211,21 +266,52 @@ export default {
 | 
			
		||||
      } else {
 | 
			
		||||
        this.addOrEditTitle = '新增'
 | 
			
		||||
        this.centervisible = true
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.orderAdd.init()
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      switch (val.type) {
 | 
			
		||||
        case 'edit':
 | 
			
		||||
          this.addOrEditTitle = '编辑'
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.groupList.init(val.data.id)
 | 
			
		||||
          })
 | 
			
		||||
          this.centervisible = true
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.orderAdd.init(val.data.id)
 | 
			
		||||
          })
 | 
			
		||||
          break
 | 
			
		||||
        case 'delete':
 | 
			
		||||
          this.handleDelete(val.data)
 | 
			
		||||
          break
 | 
			
		||||
        case 'detail':
 | 
			
		||||
          break
 | 
			
		||||
        case 'add':
 | 
			
		||||
          this.workIssueTitle = '新增工单'
 | 
			
		||||
          this.addWorkOrdervisible = true
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.addWorkOrder.init(val.data.id, 'add')
 | 
			
		||||
          })
 | 
			
		||||
          break
 | 
			
		||||
        case 'bind':
 | 
			
		||||
          this.workIssueTitle = '绑定工单'
 | 
			
		||||
          this.addWorkOrdervisible = true
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.addWorkOrder.init(val.data.id, 'bind')
 | 
			
		||||
          })
 | 
			
		||||
          break
 | 
			
		||||
        default:
 | 
			
		||||
        this.handleDelete(val.data)
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // 删除
 | 
			
		||||
    handleDelete(val) {
 | 
			
		||||
      this.$modal.confirm('是否确认删除"' + val.name + '"的数据项?').then(function() {
 | 
			
		||||
          return orderDelete({ id: val.id })
 | 
			
		||||
        }).then(() => {
 | 
			
		||||
          this.getList();
 | 
			
		||||
          this.$modal.msgSuccess("操作成功");
 | 
			
		||||
        }).catch(() => {});
 | 
			
		||||
    },
 | 
			
		||||
    // 新增
 | 
			
		||||
    handleCancel() {
 | 
			
		||||
      this.$refs.orderAdd.formClear()
 | 
			
		||||
@@ -239,6 +325,29 @@ export default {
 | 
			
		||||
      this.handleCancel()
 | 
			
		||||
      this.getList()
 | 
			
		||||
    },
 | 
			
		||||
    // 下发新增
 | 
			
		||||
    addWorkOrderCancel() {
 | 
			
		||||
      this.$refs.addWorkOrder.formClear()
 | 
			
		||||
      this.addWorkOrdervisible = false
 | 
			
		||||
    },
 | 
			
		||||
    addWorkOrderConfirm() {
 | 
			
		||||
      this.$refs.addWorkOrder.addWorkOrderSubmit()
 | 
			
		||||
    },
 | 
			
		||||
    addWorkOrderSubmit() {
 | 
			
		||||
      this.addWorkOrderCancel()
 | 
			
		||||
      this.getList()
 | 
			
		||||
    }
 | 
			
		||||
    // bindWorkOrderCancel() {
 | 
			
		||||
    //   this.$refs.bindWorkOrder.formClear()
 | 
			
		||||
    //   this.bindWorkOrdervisible = false
 | 
			
		||||
    // },
 | 
			
		||||
    // bindWorkOrderConfirm() {
 | 
			
		||||
    //   this.$refs.bindWorkOrder.bindWorkOrderSubmit()
 | 
			
		||||
    // },
 | 
			
		||||
    // bindWorkOrderSubmit() {
 | 
			
		||||
    //   this.bindWorkOrderCancel()
 | 
			
		||||
    //   this.getList()
 | 
			
		||||
    // }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
							
								
								
									
										414
									
								
								yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										414
									
								
								yarn.lock
									
									
									
									
									
								
							@@ -2001,15 +2001,20 @@
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-7.2.0.tgz"
 | 
			
		||||
  "version" "7.2.0"
 | 
			
		||||
 | 
			
		||||
"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^7.1.1", "acorn@^7.4.0":
 | 
			
		||||
"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^6.4.1":
 | 
			
		||||
  "integrity" "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/acorn/-/acorn-6.4.2.tgz"
 | 
			
		||||
  "version" "6.4.2"
 | 
			
		||||
 | 
			
		||||
"acorn@^7.1.1":
 | 
			
		||||
  "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz"
 | 
			
		||||
  "version" "7.4.1"
 | 
			
		||||
 | 
			
		||||
"acorn@^6.4.1":
 | 
			
		||||
  "integrity" "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/acorn/-/acorn-6.4.2.tgz"
 | 
			
		||||
  "version" "6.4.2"
 | 
			
		||||
"acorn@^7.4.0":
 | 
			
		||||
  "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz"
 | 
			
		||||
  "version" "7.4.1"
 | 
			
		||||
 | 
			
		||||
"acorn@^8.8.2":
 | 
			
		||||
  "integrity" "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw=="
 | 
			
		||||
@@ -2031,7 +2036,7 @@
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz"
 | 
			
		||||
  "version" "1.3.1"
 | 
			
		||||
 | 
			
		||||
"aes-decrypter@^4.0.1", "aes-decrypter@4.0.1":
 | 
			
		||||
"aes-decrypter@^4.0.1":
 | 
			
		||||
  "integrity" "sha512-H1nh/P9VZXUf17AA5NQfJML88CFjVBDuGkp5zDHa7oEhYN9TTpNLJknRY1ie0iSKWlDf6JRnJKaZVDSQdPy6Cg=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/aes-decrypter/-/aes-decrypter-4.0.1.tgz"
 | 
			
		||||
  "version" "4.0.1"
 | 
			
		||||
@@ -2058,6 +2063,16 @@
 | 
			
		||||
    "global" "^4.4.0"
 | 
			
		||||
    "pkcs7" "^1.0.4"
 | 
			
		||||
 | 
			
		||||
"aes-decrypter@4.0.1":
 | 
			
		||||
  "integrity" "sha512-H1nh/P9VZXUf17AA5NQfJML88CFjVBDuGkp5zDHa7oEhYN9TTpNLJknRY1ie0iSKWlDf6JRnJKaZVDSQdPy6Cg=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/aes-decrypter/-/aes-decrypter-4.0.1.tgz"
 | 
			
		||||
  "version" "4.0.1"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@babel/runtime" "^7.12.5"
 | 
			
		||||
    "@videojs/vhs-utils" "^3.0.5"
 | 
			
		||||
    "global" "^4.4.0"
 | 
			
		||||
    "pkcs7" "^1.0.4"
 | 
			
		||||
 | 
			
		||||
"aggregate-error@^3.0.0":
 | 
			
		||||
  "integrity" "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/aggregate-error/-/aggregate-error-3.1.0.tgz"
 | 
			
		||||
@@ -2096,6 +2111,11 @@
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-3.2.4.tgz"
 | 
			
		||||
  "version" "3.2.4"
 | 
			
		||||
 | 
			
		||||
"ansi-colors@^4.1.1":
 | 
			
		||||
  "integrity" "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.3.tgz"
 | 
			
		||||
  "version" "4.1.3"
 | 
			
		||||
 | 
			
		||||
"ansi-escapes@^4.2.1", "ansi-escapes@^4.3.0":
 | 
			
		||||
  "integrity" "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz"
 | 
			
		||||
@@ -2133,28 +2153,21 @@
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz"
 | 
			
		||||
  "version" "2.2.1"
 | 
			
		||||
 | 
			
		||||
"ansi-styles@^3.1.0":
 | 
			
		||||
"ansi-styles@^3.1.0", "ansi-styles@^3.2.0", "ansi-styles@^3.2.1":
 | 
			
		||||
  "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz"
 | 
			
		||||
  "version" "3.2.1"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "color-convert" "^1.9.0"
 | 
			
		||||
 | 
			
		||||
"ansi-styles@^3.2.0":
 | 
			
		||||
  "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz"
 | 
			
		||||
  "version" "3.2.1"
 | 
			
		||||
"ansi-styles@^4.0.0":
 | 
			
		||||
  "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz"
 | 
			
		||||
  "version" "4.3.0"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "color-convert" "^1.9.0"
 | 
			
		||||
    "color-convert" "^2.0.1"
 | 
			
		||||
 | 
			
		||||
"ansi-styles@^3.2.1":
 | 
			
		||||
  "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz"
 | 
			
		||||
  "version" "3.2.1"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "color-convert" "^1.9.0"
 | 
			
		||||
 | 
			
		||||
"ansi-styles@^4.0.0", "ansi-styles@^4.1.0":
 | 
			
		||||
"ansi-styles@^4.1.0":
 | 
			
		||||
  "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz"
 | 
			
		||||
  "version" "4.3.0"
 | 
			
		||||
@@ -2843,28 +2856,7 @@
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz"
 | 
			
		||||
  "version" "3.1.2"
 | 
			
		||||
 | 
			
		||||
"cacache@^12.0.2":
 | 
			
		||||
  "integrity" "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/cacache/-/cacache-12.0.4.tgz"
 | 
			
		||||
  "version" "12.0.4"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "bluebird" "^3.5.5"
 | 
			
		||||
    "chownr" "^1.1.1"
 | 
			
		||||
    "figgy-pudding" "^3.5.1"
 | 
			
		||||
    "glob" "^7.1.4"
 | 
			
		||||
    "graceful-fs" "^4.1.15"
 | 
			
		||||
    "infer-owner" "^1.0.3"
 | 
			
		||||
    "lru-cache" "^5.1.1"
 | 
			
		||||
    "mississippi" "^3.0.0"
 | 
			
		||||
    "mkdirp" "^0.5.1"
 | 
			
		||||
    "move-concurrently" "^1.0.1"
 | 
			
		||||
    "promise-inflight" "^1.0.1"
 | 
			
		||||
    "rimraf" "^2.6.3"
 | 
			
		||||
    "ssri" "^6.0.1"
 | 
			
		||||
    "unique-filename" "^1.1.1"
 | 
			
		||||
    "y18n" "^4.0.0"
 | 
			
		||||
 | 
			
		||||
"cacache@^12.0.3":
 | 
			
		||||
"cacache@^12.0.2", "cacache@^12.0.3":
 | 
			
		||||
  "integrity" "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/cacache/-/cacache-12.0.4.tgz"
 | 
			
		||||
  "version" "12.0.4"
 | 
			
		||||
@@ -3357,14 +3349,7 @@
 | 
			
		||||
    "map-visit" "^1.0.0"
 | 
			
		||||
    "object-visit" "^1.0.0"
 | 
			
		||||
 | 
			
		||||
"color-convert@^1.9.0":
 | 
			
		||||
  "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz"
 | 
			
		||||
  "version" "1.9.3"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "color-name" "1.1.3"
 | 
			
		||||
 | 
			
		||||
"color-convert@^1.9.3":
 | 
			
		||||
"color-convert@^1.9.0", "color-convert@^1.9.3":
 | 
			
		||||
  "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz"
 | 
			
		||||
  "version" "1.9.3"
 | 
			
		||||
@@ -3378,16 +3363,16 @@
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "color-name" "~1.1.4"
 | 
			
		||||
 | 
			
		||||
"color-name@^1.0.0", "color-name@~1.1.4":
 | 
			
		||||
  "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz"
 | 
			
		||||
  "version" "1.1.4"
 | 
			
		||||
 | 
			
		||||
"color-name@1.1.3":
 | 
			
		||||
"color-name@^1.0.0", "color-name@1.1.3":
 | 
			
		||||
  "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz"
 | 
			
		||||
  "version" "1.1.3"
 | 
			
		||||
 | 
			
		||||
"color-name@~1.1.4":
 | 
			
		||||
  "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz"
 | 
			
		||||
  "version" "1.1.4"
 | 
			
		||||
 | 
			
		||||
"color-string@^1.6.0":
 | 
			
		||||
  "integrity" "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz"
 | 
			
		||||
@@ -3416,22 +3401,7 @@
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "delayed-stream" "~1.0.0"
 | 
			
		||||
 | 
			
		||||
"commander@*", "commander@2.17.x":
 | 
			
		||||
  "integrity" "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/commander/-/commander-2.17.1.tgz"
 | 
			
		||||
  "version" "2.17.1"
 | 
			
		||||
 | 
			
		||||
"commander@^2.18.0":
 | 
			
		||||
  "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz"
 | 
			
		||||
  "version" "2.20.3"
 | 
			
		||||
 | 
			
		||||
"commander@^2.19.0":
 | 
			
		||||
  "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz"
 | 
			
		||||
  "version" "2.20.3"
 | 
			
		||||
 | 
			
		||||
"commander@^2.20.0":
 | 
			
		||||
"commander@*", "commander@^2.18.0", "commander@^2.19.0", "commander@^2.20.0":
 | 
			
		||||
  "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz"
 | 
			
		||||
  "version" "2.20.3"
 | 
			
		||||
@@ -3446,6 +3416,11 @@
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/commander/-/commander-2.19.0.tgz"
 | 
			
		||||
  "version" "2.19.0"
 | 
			
		||||
 | 
			
		||||
"commander@2.17.x":
 | 
			
		||||
  "integrity" "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/commander/-/commander-2.17.1.tgz"
 | 
			
		||||
  "version" "2.17.1"
 | 
			
		||||
 | 
			
		||||
"commondir@^1.0.1":
 | 
			
		||||
  "integrity" "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz"
 | 
			
		||||
@@ -4332,7 +4307,7 @@
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/domready/-/domready-1.0.8.tgz"
 | 
			
		||||
  "version" "1.0.8"
 | 
			
		||||
 | 
			
		||||
"domutils@^1.5.1":
 | 
			
		||||
"domutils@^1.5.1", "domutils@^1.7.0":
 | 
			
		||||
  "integrity" "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz"
 | 
			
		||||
  "version" "1.7.0"
 | 
			
		||||
@@ -4340,15 +4315,16 @@
 | 
			
		||||
    "dom-serializer" "0"
 | 
			
		||||
    "domelementtype" "1"
 | 
			
		||||
 | 
			
		||||
"domutils@^1.7.0":
 | 
			
		||||
  "integrity" "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz"
 | 
			
		||||
  "version" "1.7.0"
 | 
			
		||||
"domutils@^2.5.2":
 | 
			
		||||
  "integrity" "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz"
 | 
			
		||||
  "version" "2.8.0"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "dom-serializer" "0"
 | 
			
		||||
    "domelementtype" "1"
 | 
			
		||||
    "dom-serializer" "^1.0.1"
 | 
			
		||||
    "domelementtype" "^2.2.0"
 | 
			
		||||
    "domhandler" "^4.2.0"
 | 
			
		||||
 | 
			
		||||
"domutils@^2.5.2", "domutils@^2.8.0":
 | 
			
		||||
"domutils@^2.8.0":
 | 
			
		||||
  "integrity" "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz"
 | 
			
		||||
  "version" "2.8.0"
 | 
			
		||||
@@ -4532,6 +4508,14 @@
 | 
			
		||||
    "memory-fs" "^0.5.0"
 | 
			
		||||
    "tapable" "^1.0.0"
 | 
			
		||||
 | 
			
		||||
"enquirer@>= 2.3.0 < 3":
 | 
			
		||||
  "integrity" "sha512-ehu97t6FTYK2I3ZYtnp0BZ9vt0mvEL/cnHBds7Ct6jo9VX1VIkiFhOvVRWh6eblQqd7KOoICIQV+syZ3neXO/Q=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/enquirer/-/enquirer-2.4.0.tgz"
 | 
			
		||||
  "version" "2.4.0"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "ansi-colors" "^4.1.1"
 | 
			
		||||
    "strip-ansi" "^6.0.1"
 | 
			
		||||
 | 
			
		||||
"entities@^1.1.1":
 | 
			
		||||
  "integrity" "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/entities/-/entities-1.1.2.tgz"
 | 
			
		||||
@@ -4563,7 +4547,7 @@
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "stackframe" "^1.3.4"
 | 
			
		||||
 | 
			
		||||
"es-abstract@^1.19.0", "es-abstract@^1.20.4", "es-abstract@^1.21.2":
 | 
			
		||||
"es-abstract@^1.17.2", "es-abstract@^1.19.0", "es-abstract@^1.20.4", "es-abstract@^1.21.2":
 | 
			
		||||
  "integrity" "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.22.1.tgz"
 | 
			
		||||
  "version" "1.22.1"
 | 
			
		||||
@@ -5169,11 +5153,6 @@
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz"
 | 
			
		||||
  "version" "2.0.5"
 | 
			
		||||
 | 
			
		||||
"file-uri-to-path@1.0.0":
 | 
			
		||||
  "integrity" "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz"
 | 
			
		||||
  "version" "1.0.0"
 | 
			
		||||
 | 
			
		||||
"filesize@^3.6.1":
 | 
			
		||||
  "integrity" "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/filesize/-/filesize-3.6.1.tgz"
 | 
			
		||||
@@ -5516,14 +5495,7 @@
 | 
			
		||||
    "is-glob" "^3.1.0"
 | 
			
		||||
    "path-dirname" "^1.0.0"
 | 
			
		||||
 | 
			
		||||
"glob-parent@^5.0.0":
 | 
			
		||||
  "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz"
 | 
			
		||||
  "version" "5.1.2"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "is-glob" "^4.0.1"
 | 
			
		||||
 | 
			
		||||
"glob-parent@~5.1.2":
 | 
			
		||||
"glob-parent@^5.0.0", "glob-parent@~5.1.2":
 | 
			
		||||
  "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz"
 | 
			
		||||
  "version" "5.1.2"
 | 
			
		||||
@@ -5726,7 +5698,7 @@
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz"
 | 
			
		||||
  "version" "1.0.1"
 | 
			
		||||
 | 
			
		||||
"has-symbols@^1.0.2", "has-symbols@^1.0.3":
 | 
			
		||||
"has-symbols@^1.0.1", "has-symbols@^1.0.2", "has-symbols@^1.0.3":
 | 
			
		||||
  "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz"
 | 
			
		||||
  "version" "1.0.3"
 | 
			
		||||
@@ -6365,7 +6337,16 @@
 | 
			
		||||
    "is-data-descriptor" "^0.1.4"
 | 
			
		||||
    "kind-of" "^5.0.0"
 | 
			
		||||
 | 
			
		||||
"is-descriptor@^1.0.0", "is-descriptor@^1.0.2":
 | 
			
		||||
"is-descriptor@^1.0.0":
 | 
			
		||||
  "integrity" "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz"
 | 
			
		||||
  "version" "1.0.2"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "is-accessor-descriptor" "^1.0.0"
 | 
			
		||||
    "is-data-descriptor" "^1.0.0"
 | 
			
		||||
    "kind-of" "^6.0.2"
 | 
			
		||||
 | 
			
		||||
"is-descriptor@^1.0.2":
 | 
			
		||||
  "integrity" "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz"
 | 
			
		||||
  "version" "1.0.2"
 | 
			
		||||
@@ -6389,11 +6370,6 @@
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz"
 | 
			
		||||
  "version" "0.1.1"
 | 
			
		||||
 | 
			
		||||
"is-extendable@^0.1.1":
 | 
			
		||||
  "integrity" "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz"
 | 
			
		||||
  "version" "0.1.1"
 | 
			
		||||
 | 
			
		||||
"is-extendable@^1.0.1":
 | 
			
		||||
  "integrity" "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz"
 | 
			
		||||
@@ -6595,7 +6571,7 @@
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "is-docker" "^2.0.0"
 | 
			
		||||
 | 
			
		||||
"isarray@^1.0.0":
 | 
			
		||||
"isarray@^1.0.0", "isarray@~1.0.0", "isarray@1.0.0":
 | 
			
		||||
  "integrity" "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz"
 | 
			
		||||
  "version" "1.0.0"
 | 
			
		||||
@@ -6605,16 +6581,6 @@
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz"
 | 
			
		||||
  "version" "2.0.5"
 | 
			
		||||
 | 
			
		||||
"isarray@~1.0.0":
 | 
			
		||||
  "integrity" "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz"
 | 
			
		||||
  "version" "1.0.0"
 | 
			
		||||
 | 
			
		||||
"isarray@1.0.0":
 | 
			
		||||
  "integrity" "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz"
 | 
			
		||||
  "version" "1.0.0"
 | 
			
		||||
 | 
			
		||||
"isexe@^2.0.0":
 | 
			
		||||
  "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz"
 | 
			
		||||
@@ -6823,7 +6789,14 @@
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/killable/-/killable-1.0.1.tgz"
 | 
			
		||||
  "version" "1.0.1"
 | 
			
		||||
 | 
			
		||||
"kind-of@^3.0.2", "kind-of@^3.0.3":
 | 
			
		||||
"kind-of@^3.0.2":
 | 
			
		||||
  "integrity" "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz"
 | 
			
		||||
  "version" "3.2.2"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "is-buffer" "^1.1.5"
 | 
			
		||||
 | 
			
		||||
"kind-of@^3.0.3":
 | 
			
		||||
  "integrity" "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz"
 | 
			
		||||
  "version" "3.2.2"
 | 
			
		||||
@@ -7087,23 +7060,7 @@
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/lower-case/-/lower-case-1.1.4.tgz"
 | 
			
		||||
  "version" "1.1.4"
 | 
			
		||||
 | 
			
		||||
"lru-cache@^4.0.1":
 | 
			
		||||
  "integrity" "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz"
 | 
			
		||||
  "version" "4.1.5"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "pseudomap" "^1.0.2"
 | 
			
		||||
    "yallist" "^2.1.2"
 | 
			
		||||
 | 
			
		||||
"lru-cache@^4.1.2":
 | 
			
		||||
  "integrity" "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz"
 | 
			
		||||
  "version" "4.1.5"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "pseudomap" "^1.0.2"
 | 
			
		||||
    "yallist" "^2.1.2"
 | 
			
		||||
 | 
			
		||||
"lru-cache@^4.1.5":
 | 
			
		||||
"lru-cache@^4.0.1", "lru-cache@^4.1.2", "lru-cache@^4.1.5":
 | 
			
		||||
  "integrity" "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz"
 | 
			
		||||
  "version" "4.1.5"
 | 
			
		||||
@@ -7422,7 +7379,18 @@
 | 
			
		||||
    "component-query" "^0.0.3"
 | 
			
		||||
    "domify" "^1.3.1"
 | 
			
		||||
 | 
			
		||||
"min-dom@^3.1.0", "min-dom@^3.1.3":
 | 
			
		||||
"min-dom@^3.1.0":
 | 
			
		||||
  "integrity" "sha512-v6YCmnDzxk4rRJntWTUiwggLupPw/8ZSRqUq0PDaBwVZEO/wYzCH4SKVBV+KkEvf3u0XaWHly5JEosPtqRATZA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/min-dom/-/min-dom-3.2.1.tgz"
 | 
			
		||||
  "version" "3.2.1"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "component-event" "^0.1.4"
 | 
			
		||||
    "domify" "^1.3.1"
 | 
			
		||||
    "indexof" "0.0.1"
 | 
			
		||||
    "matches-selector" "^1.2.0"
 | 
			
		||||
    "min-dash" "^3.8.1"
 | 
			
		||||
 | 
			
		||||
"min-dom@^3.1.3":
 | 
			
		||||
  "integrity" "sha512-v6YCmnDzxk4rRJntWTUiwggLupPw/8ZSRqUq0PDaBwVZEO/wYzCH4SKVBV+KkEvf3u0XaWHly5JEosPtqRATZA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/min-dom/-/min-dom-3.2.1.tgz"
 | 
			
		||||
  "version" "3.2.1"
 | 
			
		||||
@@ -7549,22 +7517,38 @@
 | 
			
		||||
    "for-in" "^1.0.2"
 | 
			
		||||
    "is-extendable" "^1.0.1"
 | 
			
		||||
 | 
			
		||||
"mkdirp@^0.5.1", "mkdirp@^0.5.3", "mkdirp@^0.5.6", "mkdirp@~0.5.1":
 | 
			
		||||
"mkdirp@^0.5.1":
 | 
			
		||||
  "integrity" "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz"
 | 
			
		||||
  "version" "0.5.6"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "minimist" "^1.2.6"
 | 
			
		||||
 | 
			
		||||
"mkdirp@^1.0.3":
 | 
			
		||||
"mkdirp@^0.5.3":
 | 
			
		||||
  "integrity" "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz"
 | 
			
		||||
  "version" "0.5.6"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "minimist" "^1.2.6"
 | 
			
		||||
 | 
			
		||||
"mkdirp@^0.5.6":
 | 
			
		||||
  "integrity" "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz"
 | 
			
		||||
  "version" "0.5.6"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "minimist" "^1.2.6"
 | 
			
		||||
 | 
			
		||||
"mkdirp@^1.0.3", "mkdirp@^1.0.4":
 | 
			
		||||
  "integrity" "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz"
 | 
			
		||||
  "version" "1.0.4"
 | 
			
		||||
 | 
			
		||||
"mkdirp@^1.0.4":
 | 
			
		||||
  "integrity" "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz"
 | 
			
		||||
  "version" "1.0.4"
 | 
			
		||||
"mkdirp@~0.5.1":
 | 
			
		||||
  "integrity" "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz"
 | 
			
		||||
  "version" "0.5.6"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "minimist" "^1.2.6"
 | 
			
		||||
 | 
			
		||||
"mockjs@^1.1.0":
 | 
			
		||||
  "integrity" "sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ=="
 | 
			
		||||
@@ -7967,7 +7951,7 @@
 | 
			
		||||
    "define-properties" "^1.1.4"
 | 
			
		||||
    "es-abstract" "^1.20.4"
 | 
			
		||||
 | 
			
		||||
"object.getownpropertydescriptors@^2.0.3":
 | 
			
		||||
"object.getownpropertydescriptors@^2.0.3", "object.getownpropertydescriptors@^2.1.0":
 | 
			
		||||
  "integrity" "sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz"
 | 
			
		||||
  "version" "2.1.6"
 | 
			
		||||
@@ -8037,7 +8021,14 @@
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "mimic-fn" "^1.0.0"
 | 
			
		||||
 | 
			
		||||
"onetime@^5.1.0", "onetime@^5.1.2":
 | 
			
		||||
"onetime@^5.1.0":
 | 
			
		||||
  "integrity" "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz"
 | 
			
		||||
  "version" "5.1.2"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "mimic-fn" "^2.1.0"
 | 
			
		||||
 | 
			
		||||
"onetime@^5.1.2":
 | 
			
		||||
  "integrity" "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz"
 | 
			
		||||
  "version" "5.1.2"
 | 
			
		||||
@@ -8778,7 +8769,7 @@
 | 
			
		||||
    "source-map" "^0.5.6"
 | 
			
		||||
    "supports-color" "^3.2.3"
 | 
			
		||||
 | 
			
		||||
"postcss@^7.0.0", "postcss@^7.0.1", "postcss@^7.0.14", "postcss@^7.0.27", "postcss@^7.0.32", "postcss@^7.0.36", "postcss@^7.0.5", "postcss@^7.0.6", "postcss@>4 <9":
 | 
			
		||||
"postcss@^7.0.0":
 | 
			
		||||
  "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
 | 
			
		||||
  "version" "7.0.39"
 | 
			
		||||
@@ -8786,16 +8777,63 @@
 | 
			
		||||
    "picocolors" "^0.2.1"
 | 
			
		||||
    "source-map" "^0.6.1"
 | 
			
		||||
 | 
			
		||||
"postcss@^8.1.10":
 | 
			
		||||
  "integrity" "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/postcss/-/postcss-8.4.27.tgz"
 | 
			
		||||
  "version" "8.4.27"
 | 
			
		||||
"postcss@^7.0.1":
 | 
			
		||||
  "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
 | 
			
		||||
  "version" "7.0.39"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "nanoid" "^3.3.6"
 | 
			
		||||
    "picocolors" "^1.0.0"
 | 
			
		||||
    "source-map-js" "^1.0.2"
 | 
			
		||||
    "picocolors" "^0.2.1"
 | 
			
		||||
    "source-map" "^0.6.1"
 | 
			
		||||
 | 
			
		||||
"postcss@^8.4.14":
 | 
			
		||||
"postcss@^7.0.14":
 | 
			
		||||
  "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
 | 
			
		||||
  "version" "7.0.39"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "picocolors" "^0.2.1"
 | 
			
		||||
    "source-map" "^0.6.1"
 | 
			
		||||
 | 
			
		||||
"postcss@^7.0.27":
 | 
			
		||||
  "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
 | 
			
		||||
  "version" "7.0.39"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "picocolors" "^0.2.1"
 | 
			
		||||
    "source-map" "^0.6.1"
 | 
			
		||||
 | 
			
		||||
"postcss@^7.0.32":
 | 
			
		||||
  "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
 | 
			
		||||
  "version" "7.0.39"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "picocolors" "^0.2.1"
 | 
			
		||||
    "source-map" "^0.6.1"
 | 
			
		||||
 | 
			
		||||
"postcss@^7.0.36":
 | 
			
		||||
  "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
 | 
			
		||||
  "version" "7.0.39"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "picocolors" "^0.2.1"
 | 
			
		||||
    "source-map" "^0.6.1"
 | 
			
		||||
 | 
			
		||||
"postcss@^7.0.5":
 | 
			
		||||
  "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
 | 
			
		||||
  "version" "7.0.39"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "picocolors" "^0.2.1"
 | 
			
		||||
    "source-map" "^0.6.1"
 | 
			
		||||
 | 
			
		||||
"postcss@^7.0.6":
 | 
			
		||||
  "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
 | 
			
		||||
  "version" "7.0.39"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "picocolors" "^0.2.1"
 | 
			
		||||
    "source-map" "^0.6.1"
 | 
			
		||||
 | 
			
		||||
"postcss@^8.1.10", "postcss@^8.4.14", "postcss@>4 <9":
 | 
			
		||||
  "integrity" "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/postcss/-/postcss-8.4.27.tgz"
 | 
			
		||||
  "version" "8.4.27"
 | 
			
		||||
@@ -9377,21 +9415,7 @@
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/rgbcolor/-/rgbcolor-1.0.1.tgz"
 | 
			
		||||
  "version" "1.0.1"
 | 
			
		||||
 | 
			
		||||
"rimraf@^2.5.4":
 | 
			
		||||
  "integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz"
 | 
			
		||||
  "version" "2.7.1"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "glob" "^7.1.3"
 | 
			
		||||
 | 
			
		||||
"rimraf@^2.6.1":
 | 
			
		||||
  "integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz"
 | 
			
		||||
  "version" "2.7.1"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "glob" "^7.1.3"
 | 
			
		||||
 | 
			
		||||
"rimraf@^2.6.3":
 | 
			
		||||
"rimraf@^2.5.4", "rimraf@^2.6.1", "rimraf@^2.6.3":
 | 
			
		||||
  "integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz"
 | 
			
		||||
  "version" "2.7.1"
 | 
			
		||||
@@ -9619,17 +9643,32 @@
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "node-forge" "^0.10.0"
 | 
			
		||||
 | 
			
		||||
"semver@^5.5.0":
 | 
			
		||||
"semver@^5.5.0", "semver@^5.6.0", "semver@2 || 3 || 4 || 5":
 | 
			
		||||
  "integrity" "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz"
 | 
			
		||||
  "version" "5.7.2"
 | 
			
		||||
 | 
			
		||||
"semver@^5.6.0":
 | 
			
		||||
  "integrity" "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz"
 | 
			
		||||
  "version" "5.7.2"
 | 
			
		||||
"semver@^6.0.0":
 | 
			
		||||
  "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz"
 | 
			
		||||
  "version" "6.3.1"
 | 
			
		||||
 | 
			
		||||
"semver@^6.0.0", "semver@^6.1.0", "semver@^6.1.2", "semver@^6.3.0", "semver@^6.3.1":
 | 
			
		||||
"semver@^6.1.0":
 | 
			
		||||
  "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz"
 | 
			
		||||
  "version" "6.3.1"
 | 
			
		||||
 | 
			
		||||
"semver@^6.1.2":
 | 
			
		||||
  "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz"
 | 
			
		||||
  "version" "6.3.1"
 | 
			
		||||
 | 
			
		||||
"semver@^6.3.0":
 | 
			
		||||
  "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz"
 | 
			
		||||
  "version" "6.3.1"
 | 
			
		||||
 | 
			
		||||
"semver@^6.3.1":
 | 
			
		||||
  "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz"
 | 
			
		||||
  "version" "6.3.1"
 | 
			
		||||
@@ -9655,11 +9694,6 @@
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "lru-cache" "^6.0.0"
 | 
			
		||||
 | 
			
		||||
"semver@2 || 3 || 4 || 5":
 | 
			
		||||
  "integrity" "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz"
 | 
			
		||||
  "version" "5.7.2"
 | 
			
		||||
 | 
			
		||||
"send@0.18.0":
 | 
			
		||||
  "integrity" "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/send/-/send-0.18.0.tgz"
 | 
			
		||||
@@ -10337,7 +10371,14 @@
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "has-flag" "^3.0.0"
 | 
			
		||||
 | 
			
		||||
"supports-color@^7.0.0", "supports-color@^7.1.0":
 | 
			
		||||
"supports-color@^7.0.0":
 | 
			
		||||
  "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz"
 | 
			
		||||
  "version" "7.2.0"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "has-flag" "^4.0.0"
 | 
			
		||||
 | 
			
		||||
"supports-color@^7.1.0":
 | 
			
		||||
  "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz"
 | 
			
		||||
  "version" "7.2.0"
 | 
			
		||||
@@ -10990,7 +11031,17 @@
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz"
 | 
			
		||||
  "version" "1.0.2"
 | 
			
		||||
 | 
			
		||||
"util.promisify@~1.0.0", "util.promisify@1.0.0":
 | 
			
		||||
"util.promisify@~1.0.0":
 | 
			
		||||
  "integrity" "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/util.promisify/-/util.promisify-1.0.1.tgz"
 | 
			
		||||
  "version" "1.0.1"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "define-properties" "^1.1.3"
 | 
			
		||||
    "es-abstract" "^1.17.2"
 | 
			
		||||
    "has-symbols" "^1.0.1"
 | 
			
		||||
    "object.getownpropertydescriptors" "^2.1.0"
 | 
			
		||||
 | 
			
		||||
"util.promisify@1.0.0":
 | 
			
		||||
  "integrity" "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/util.promisify/-/util.promisify-1.0.0.tgz"
 | 
			
		||||
  "version" "1.0.0"
 | 
			
		||||
@@ -11516,7 +11567,7 @@
 | 
			
		||||
    "source-list-map" "^2.0.0"
 | 
			
		||||
    "source-map" "~0.6.1"
 | 
			
		||||
 | 
			
		||||
"webpack@^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0", "webpack@^2.0.0 || ^3.0.0 || ^4.0.0", "webpack@^3.0.0 || ^4.1.0 || ^5.0.0-0", "webpack@^4.0.0", "webpack@^4.0.0 || ^5.0.0", "webpack@^4.1.0 || ^5.0.0-0", "webpack@^4.36.0 || ^5.0.0", "webpack@^4.4.0", "webpack@>=2", "webpack@>=2.0.0 <5.0.0", "webpack@>=4.0.0":
 | 
			
		||||
"webpack@^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0", "webpack@^2.0.0 || ^3.0.0 || ^4.0.0", "webpack@^3.0.0 || ^4.1.0 || ^5.0.0-0", "webpack@^4.0.0", "webpack@^4.0.0 || ^5.0.0", "webpack@^4.36.0 || ^5.0.0", "webpack@^4.4.0", "webpack@>=2", "webpack@>=2.0.0 <5.0.0", "webpack@>=4.0.0":
 | 
			
		||||
  "integrity" "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/webpack/-/webpack-4.46.0.tgz"
 | 
			
		||||
  "version" "4.46.0"
 | 
			
		||||
@@ -11666,14 +11717,7 @@
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "mkdirp" "^0.5.1"
 | 
			
		||||
 | 
			
		||||
"ws@^6.0.0":
 | 
			
		||||
  "integrity" "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/ws/-/ws-6.2.2.tgz"
 | 
			
		||||
  "version" "6.2.2"
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "async-limiter" "~1.0.0"
 | 
			
		||||
 | 
			
		||||
"ws@^6.2.1":
 | 
			
		||||
"ws@^6.0.0", "ws@^6.2.1":
 | 
			
		||||
  "integrity" "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw=="
 | 
			
		||||
  "resolved" "https://registry.npmmirror.com/ws/-/ws-6.2.2.tgz"
 | 
			
		||||
  "version" "6.2.2"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user