Compare commits

...

71 Commits
main ... master

Author SHA1 Message Date
顾有鑫
a43265816b 功能 2025-02-25 15:00:32 +08:00
顾有鑫
7d9dcd8efd 功能 2025-02-24 17:16:18 +08:00
顾有鑫
c4424f55a0 功能 2025-02-24 15:57:04 +08:00
顾有鑫
08098a0826 功能 2025-02-21 17:31:17 +08:00
顾有鑫
11da57f4af [优化]logo 2025-02-20 14:20:06 +08:00
顾有鑫
73df0f09c1 [优化]名称更改 2025-02-20 14:07:51 +08:00
33d2dd0122 [优化]龙翔商贸 2025-02-17 16:35:29 +08:00
zhangxuanming
1b6c4e3ab9 fix:来料检验和过程检验的单位名称问题解决 2025-02-08 18:10:22 +08:00
zhangxuanming
381250fa3c fix:生产工单的单位名称问题解决 2025-02-08 17:37:33 +08:00
zhangxuanming
4d5ea536e7 fix:销售出库、销售退货、转移调拨、装箱管理、SN码、外协发料、外协入库、工艺流程和检测模板的单位名称问题解决 2025-02-08 16:35:13 +08:00
zhangxuanming
bcbd1ee603 fix:采购入库、供应商退货、生产领料、生产退料和产品入库的单位名称问题解决 2025-02-08 10:56:06 +08:00
zhangxuanming
cda33a6177 fix:物料产品管理(BOM组成)、到货通知单(物料信息)的单位名称问题解决。 2025-02-07 10:54:32 +08:00
zhangxuanming
caac47f68a fix:车间设置中的“负责人”选择框改为系统组件。设备台账添加TAB栏“点检记录”“保养记录”“维修记录”。 2025-02-06 16:45:36 +08:00
yinjinlu-pc\尹金路
6725a90a74 设备状态手工修改 2025-02-06 14:02:53 +08:00
yinjinlu-pc\尹金路
6f5925bfb9 为库位增加“允许产品混放”和“允许批次混放”两个标识;为库区增加批量设置所有库位产品混放和批次混放的功能。 2025-02-06 11:44:43 +08:00
zhangxuanming
600f118b64 fix:车间设置中的负责人改为弹出框选择用户。同步更新物料详情页(form.vue)中的批次信息。部门管理前端支持编辑编码。 2025-02-06 11:35:56 +08:00
yinjinlu-pc\尹金路
583d03b2f8 物料产品批次属性配置功能 2025-02-06 00:05:38 +08:00
zhangxuanming
b01fba286e fix:工作站设备选择中增加“所属车间”过滤条件。设备台账中的“所属车间”名称展示问题修复 2025-02-05 17:38:40 +08:00
zhangxuanming
4995e9bf2f fix:首页表格样式调整(跟随页面大小调整)。客户管理和供应商管理TAB栏里面的编码添加超链接,跳转到详情页 2025-02-05 16:51:02 +08:00
zhangxuanming
8ce9df6eb6 fix:客户管理增加“产品清单”和“销售记录”功能 2025-01-22 16:08:59 +08:00
zhangxuanming
5527834271 fix:供应商管理增加“物料清单”和“采购记录”功能 2025-01-22 11:10:00 +08:00
zhangxuanming
ca940e773b fix:首页生产工单中的工序进度样式优化 2025-01-21 11:42:42 +08:00
zhangxuanming
a4bf5189fb fix:首页生产工单样式优化,增加工序 2025-01-20 18:21:20 +08:00
zhangxuanming
e47de51f09 fix:生产工单-"生成工单“功能优化(二级dialog关闭后,一级dialog不关闭) 2025-01-17 11:16:16 +08:00
zhangxuanming
6e5b8747d8 fix:生产工单TAB栏点击优化 2025-01-17 10:26:29 +08:00
yinjinlu-pc\尹金路
92391ddab2 备料通知相关代码 2025-01-16 17:52:44 +08:00
yinjinlu-pc\尹金路
49ec348948 直接单确认状态从CONFIRMED修改为FINISHED;产品入库添加查看页面。 2025-01-16 17:51:34 +08:00
zhangxuanming
8ec64c8a66 fix:生产工单自动生成物料需求数据 2025-01-16 15:06:09 +08:00
zhangxuanming
29a63f2a6d fix:解决部分遗漏问题 2025-01-14 16:35:51 +08:00
zhangxuanming
ef9e153b46 fix:遗留的数字输入框“字段过长”问题解决 2025-01-13 16:38:51 +08:00
yinjinlu-pc\尹金路
e2918ff9f5 过程检验的类型字符应该为IPQC 2025-01-11 15:44:11 +08:00
zhangxuanming
d1e31dccbd fix:部分页面纠正 2025-01-07 16:50:03 +08:00
zhangxuanming
a1b49bef22 fix:生产排产中数字输入框“字段过长”问题解决 2025-01-07 14:32:54 +08:00
zhangxuanming
47e5b4b9ee fix:dialog回显单选框的值优化 2025-01-03 16:42:36 +08:00
zhangxuanming
54ad1c08df fix:数字输入框字段校验 2024-12-31 16:27:06 +08:00
zhangxuanming
64ad4c692c fix:查看界面只留一个按钮 2024-12-30 15:27:05 +08:00
zhangxuanming
7caafe2651 fix:站内信增加全部已读功能。部门列表页显示部门编码 2024-12-30 11:42:10 +08:00
zhangxuanming
3a4c59645b fix:生产报工中生产任务选择筛选出现已报工审批完成的任务数据。采购入库新增的到货通知单查询不到数据的问题解决 2024-12-27 17:46:48 +08:00
zhangxuanming
74137199c8 fix:生产排产中排产数量过大报错。到货通知单输入框颜色问题。到货通知单为空报错 2024-12-27 17:25:10 +08:00
zhangxuanming
0873930f45 fix:排班日历中增加下拉框,以便快速定位到某个月 2024-12-27 16:00:54 +08:00
zhangxuanming
8028e4a32f fix:字段过长报错问题解决 2024-12-27 15:32:27 +08:00
yinjinlu-pc\尹金路
53bb5a791f 设备保养记录 2024-12-26 19:24:31 +08:00
zhangxuanming
12f289d982 fix:字段过长报错问题解决 2024-12-26 18:40:23 +08:00
yinjinlu-pc\尹金路
bdfe24349b 增加当前登录人自动填充 2024-12-26 17:45:04 +08:00
yinjinlu-pc\尹金路
7516bdbfb8 设备点检记录 2024-12-26 17:22:51 +08:00
zhangxuanming
0c9b02a07a Merge remote-tracking branch 'origin/master' 2024-12-26 14:13:21 +08:00
zhangxuanming
1050affe7c fix:排版日历切换后第一时间没有刷新,需要切换月份后才刷新问题解决。 2024-12-26 14:12:59 +08:00
yanshikui
5364b5a495 Merge remote-tracking branch 'origin/master' 2024-12-26 11:19:07 +08:00
yanshikui
b3d458662e feat:功能优化 2024-12-26 11:18:58 +08:00
zhangxuanming
c7357a12d4 fix:字段过长报错问题解决 2024-12-25 18:25:42 +08:00
zhangxuanming
be787947c6 fix:排版计划中班组添加后默认显示所有人员 2024-12-25 17:44:42 +08:00
zhangxuanming
978d6fb0bc fix:维修单中的维修项目保存报错问题解决 2024-12-25 16:07:34 +08:00
zhangxuanming
afb67bee3d fix:采购入库-到货通知单-单据状态为空问题解决。采购入库新增中提示优化 2024-12-25 15:00:54 +08:00
zhangxuanming
aac0566659 fix:点检包养项目内容添加字段过长校验。点检包养计划编辑选择项目时重置按钮无反应问题解决。来料检验单中接收数量与合格数不合格数校验。 2024-12-25 10:42:31 +08:00
zhangxuanming
c9a4b55b18 fix:仓库管理新增字段过长校验。销售退货删除提示优化 2024-12-24 18:40:57 +08:00
zhangxuanming
0e5eb5aca3 fix:SN码删除提示语优化 2024-12-24 17:00:07 +08:00
zhangxuanming
c294978492 fix:生产报工审核按钮增加过滤。采购入库中修改物料入库未回显问题解决。生产领料新增提示。供应商退货和产品入库删除提示信息优化 2024-12-24 15:10:46 +08:00
zhangxuanming
28a81f95b7 fix:生产报工重置按钮没反应问题。无聊产品分类新增给"物料/产品"增加校验 2024-12-23 18:35:23 +08:00
zhangxuanming
ab4dd91beb fix:部分字段过长报错问题解决 2024-12-23 17:59:40 +08:00
zhangxuanming
3837511fba fix:物料产品管理中SIP和SOP图片预览功能问题解决 2024-12-23 15:08:33 +08:00
zhangxuanming
f434915779 fix:工装夹具新增编码为空报错问题解决,采购入库执行入库中新增报错问题解决。 2024-12-23 09:59:03 +08:00
zhangxuanming
40b688b5c5 fix:组织架构和系统管理的备注过长问题解决 2024-12-20 17:25:42 +08:00
zhangxuanming
a9d255e5fa fix:过程检验导出功能报错问题解决 2024-12-20 17:13:44 +08:00
zhangxuanming
45c2dada3d fix:来料检验导出功能报错问题解决 2024-12-20 17:00:09 +08:00
zhangxuanming
b726af2e5d fix:工装类具类型新增中的保养周期增加校验-必须为数字 2024-12-20 16:54:09 +08:00
zhangxuanming
f09dc5ad83 fix:产品入库为空保存报错问题解决 2024-12-20 15:43:58 +08:00
zhangxuanming
a47f980817 fix:生料领料单新增保存报错问题解决 2024-12-20 15:25:46 +08:00
zhangxuanming
07a19f21da fix:库区编码增加唯一校验 2024-12-20 11:45:18 +08:00
zhangxuanming
40595b5ae7 fix:设备台账的“设备编码”增加唯一校验 2024-12-19 11:22:49 +08:00
zhangxuanming
baf9350d10 fix:系统备注过长BUG修改 2024-12-18 15:57:55 +08:00
yinjinlu-pc\尹金路
d55369f739 质量检验编码规则名称修改 2024-12-11 00:31:58 +08:00
169 changed files with 10829 additions and 1744 deletions

View File

@ -1,5 +1,5 @@
# 页面标题
VUE_APP_TITLE = 苦糖果MES-软件开发记录
VUE_APP_TITLE = 龙翔商贸生产管控系统
# 开发环境配置
ENV = 'development'

View File

@ -1,5 +1,5 @@
# 页面标题
VUE_APP_TITLE = 苦糖果MES-软件开发记录
VUE_APP_TITLE = 龙翔商贸生产管控系统
# 生产环境配置
ENV = 'production'

View File

@ -1,13 +1,13 @@
{
"name": "ktg-mes-ui",
"version": "3.8.2",
"description": "苦糖果MES",
"description": "生产管控系统",
"author": "YinJinLu",
"license": "MIT",
"scripts": {
"dev": "vue-cli-service serve",
"build:prod": "vue-cli-service build",
"build:stage": "vue-cli-service build --mode staging",
"dev": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
"build:prod": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build",
"build:stage": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --mode staging",
"preview": "node build/index.js --preview",
"lint": "eslint --ext .js,.vue src"
},

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 178 KiB

View File

@ -33,3 +33,14 @@ export function delTeammember(memberId) {
method: 'delete'
})
}
// 根据班组IDS查询班组成员列表
export function getListByTeamId(ids) {
return request({
url: '/mes/cal/teammember/getListByTeamId',
method: 'get',
params: {
ids
}
})
}

44
src/api/mes/cg/order.js Normal file
View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询采购订单列表
export function listOrder(query) {
return request({
url: '/md/order/list',
method: 'get',
params: query
})
}
// 查询采购订单详细
export function getOrder(id) {
return request({
url: '/md/order/' + id,
method: 'get'
})
}
// 新增采购订单
export function addOrder(data) {
return request({
url: '/md/order',
method: 'post',
data: data
})
}
// 修改采购订单
export function updateOrder(data) {
return request({
url: '/md/order',
method: 'put',
data: data
})
}
// 删除采购订单
export function delOrder(id) {
return request({
url: '/md/order/' + id,
method: 'delete'
})
}

44
src/api/mes/cg/plan.js Normal file
View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询采购计划列表
export function listPlan(query) {
return request({
url: '/md/plan/list',
method: 'get',
params: query
})
}
// 查询采购计划详细
export function getPlan(id) {
return request({
url: '/md/plan/' + id,
method: 'get'
})
}
// 新增采购计划
export function addPlan(data) {
return request({
url: '/md/plan',
method: 'post',
data: data
})
}
// 修改采购计划
export function updatePlan(data) {
return request({
url: '/md/plan',
method: 'put',
data: data
})
}
// 删除采购计划
export function delPlan(id) {
return request({
url: '/md/plan/' + id,
method: 'delete'
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询询报比价列表
export function listQuotation(query) {
return request({
url: '/md/quotation/list',
method: 'get',
params: query
})
}
// 查询询报比价详细
export function getQuotation(id) {
return request({
url: '/md/quotation/' + id,
method: 'get'
})
}
// 新增询报比价
export function addQuotation(data) {
return request({
url: '/md/quotation',
method: 'post',
data: data
})
}
// 修改询报比价
export function updateQuotation(data) {
return request({
url: '/md/quotation',
method: 'put',
data: data
})
}
// 删除询报比价
export function delQuotation(id) {
return request({
url: '/md/quotation/' + id,
method: 'delete'
})
}

View File

@ -42,3 +42,12 @@ export function delCheckplan(planId) {
method: 'delete'
})
}
// 根据设备编码和计划类型查询设备点检计划头列表
export function getCheckPlan(query) {
return request({
url: '/mes/dv/checkplan/getCheckPlan',
method: 'get',
params: query
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询设备点检记录列表
export function listCheckrecord(query) {
return request({
url: '/mes/dv/checkrecord/list',
method: 'get',
params: query
})
}
// 查询设备点检记录详细
export function getCheckrecord(recordId) {
return request({
url: '/mes/dv/checkrecord/' + recordId,
method: 'get'
})
}
// 新增设备点检记录
export function addCheckrecord(data) {
return request({
url: '/mes/dv/checkrecord',
method: 'post',
data: data
})
}
// 修改设备点检记录
export function updateCheckrecord(data) {
return request({
url: '/mes/dv/checkrecord',
method: 'put',
data: data
})
}
// 删除设备点检记录
export function delCheckrecord(recordId) {
return request({
url: '/mes/dv/checkrecord/' + recordId,
method: 'delete'
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询设备点检记录行列表
export function listCheckrecordline(query) {
return request({
url: '/mes/dv/checkrecordline/list',
method: 'get',
params: query
})
}
// 查询设备点检记录行详细
export function getCheckrecordline(lineId) {
return request({
url: '/mes/dv/checkrecordline/' + lineId,
method: 'get'
})
}
// 新增设备点检记录行
export function addCheckrecordline(data) {
return request({
url: '/mes/dv/checkrecordline',
method: 'post',
data: data
})
}
// 修改设备点检记录行
export function updateCheckrecordline(data) {
return request({
url: '/mes/dv/checkrecordline',
method: 'put',
data: data
})
}
// 删除设备点检记录行
export function delCheckrecordline(lineId) {
return request({
url: '/mes/dv/checkrecordline/' + lineId,
method: 'delete'
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询设备保养记录列表
export function listMaintenrecord(query) {
return request({
url: '/mes/dv/maintenrecord/list',
method: 'get',
params: query
})
}
// 查询设备保养记录详细
export function getMaintenrecord(recordId) {
return request({
url: '/mes/dv/maintenrecord/' + recordId,
method: 'get'
})
}
// 新增设备保养记录
export function addMaintenrecord(data) {
return request({
url: '/mes/dv/maintenrecord',
method: 'post',
data: data
})
}
// 修改设备保养记录
export function updateMaintenrecord(data) {
return request({
url: '/mes/dv/maintenrecord',
method: 'put',
data: data
})
}
// 删除设备保养记录
export function delMaintenrecord(recordId) {
return request({
url: '/mes/dv/maintenrecord/' + recordId,
method: 'delete'
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询设备保养记录行列表
export function listMaintenrecordline(query) {
return request({
url: '/mes/dv/maintenrecordline/list',
method: 'get',
params: query
})
}
// 查询设备保养记录行详细
export function getMaintenrecordline(lineId) {
return request({
url: '/mes/dv/maintenrecordline/' + lineId,
method: 'get'
})
}
// 新增设备保养记录行
export function addMaintenrecordline(data) {
return request({
url: '/mes/dv/maintenrecordline',
method: 'post',
data: data
})
}
// 修改设备保养记录行
export function updateMaintenrecordline(data) {
return request({
url: '/mes/dv/maintenrecordline',
method: 'put',
data: data
})
}
// 删除设备保养记录行
export function delMaintenrecordline(lineId) {
return request({
url: '/mes/dv/maintenrecordline/' + lineId,
method: 'delete'
})
}

View File

@ -42,3 +42,12 @@ export function delRepair(repairId) {
method: 'delete'
})
}
// 根据设备编码查询设备维修单列表
export function getRepairList(query) {
return request({
url: '/mes/dv/repair/getRepairList',
method: 'get',
params: query
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询供应商评估列表
export function listAssessment(query) {
return request({
url: '/md/assessment/list',
method: 'get',
params: query
})
}
// 查询供应商评估详细
export function getAssessment(assessmentId) {
return request({
url: '/md/assessment/' + assessmentId,
method: 'get'
})
}
// 新增供应商评估
export function addAssessment(data) {
return request({
url: '/md/assessment',
method: 'post',
data: data
})
}
// 修改供应商评估
export function updateAssessment(data) {
return request({
url: '/md/assessment',
method: 'put',
data: data
})
}
// 删除供应商评估
export function delAssessment(assessmentId) {
return request({
url: '/md/assessment/' + assessmentId,
method: 'delete'
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询供应商类别列表
export function listCategory(query) {
return request({
url: '/md/category/list',
method: 'get',
params: query
})
}
// 查询供应商类别详细
export function getCategory(categoryId) {
return request({
url: '/md/category/' + categoryId,
method: 'get'
})
}
// 新增供应商类别
export function addCategory(data) {
return request({
url: '/md/category',
method: 'post',
data: data
})
}
// 修改供应商类别
export function updateCategory(data) {
return request({
url: '/md/category',
method: 'put',
data: data
})
}
// 删除供应商类别
export function delCategory(categoryId) {
return request({
url: '/md/category/' + categoryId,
method: 'delete'
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询供应商资质列表
export function listQualification(query) {
return request({
url: '/md/qualification/list',
method: 'get',
params: query
})
}
// 查询供应商资质详细
export function getQualification(qualId) {
return request({
url: '/md/qualification/' + qualId,
method: 'get'
})
}
// 新增供应商资质
export function addQualification(data) {
return request({
url: '/md/qualification',
method: 'post',
data: data
})
}
// 修改供应商资质
export function updateQualification(data) {
return request({
url: '/md/qualification',
method: 'put',
data: data
})
}
// 删除供应商资质
export function delQualification(qualId) {
return request({
url: '/md/qualification/' + qualId,
method: 'delete'
})
}

44
src/api/mes/gys/record.js Normal file
View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询供应商合作记录列表
export function listRecord(query) {
return request({
url: '/md/record/list',
method: 'get',
params: query
})
}
// 查询供应商合作记录详细
export function getRecord(recordId) {
return request({
url: '/md/record/' + recordId,
method: 'get'
})
}
// 新增供应商合作记录
export function addRecord(data) {
return request({
url: '/md/record',
method: 'post',
data: data
})
}
// 修改供应商合作记录
export function updateRecord(data) {
return request({
url: '/md/record',
method: 'put',
data: data
})
}
// 删除供应商合作记录
export function delRecord(recordId) {
return request({
url: '/md/record/' + recordId,
method: 'delete'
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询物料批次属性配置列表
export function listBatchconfig(query) {
return request({
url: '/mes/md/batchconfig/list',
method: 'get',
params: query
})
}
// 查询物料批次属性配置详细
export function getBatchconfig(itemId) {
return request({
url: '/mes/md/batchconfig/' + itemId,
method: 'get'
})
}
// 新增物料批次属性配置
export function addBatchconfig(data) {
return request({
url: '/mes/md/batchconfig',
method: 'post',
data: data
})
}
// 修改物料批次属性配置
export function updateBatchconfig(data) {
return request({
url: '/mes/md/batchconfig',
method: 'put',
data: data
})
}
// 删除物料批次属性配置
export function delBatchconfig(configId) {
return request({
url: '/mes/md/batchconfig/' + configId,
method: 'delete'
})
}

View File

@ -66,4 +66,13 @@ export function dofinish(workorderId){
url: '/mes/pro/workorder/'+workorderId,
method: 'put'
})
}
}
// 首页查询生产工单列表
export function getHomeList(query) {
return request({
url: '/mes/pro/workorder/getHomeList',
method: 'get',
params: query
})
}

View File

@ -60,3 +60,19 @@ export function delItemrecpt(recptId) {
method: 'delete'
})
}
// 根据供应商Id查询物料数据
export function getItem(vendorId) {
return request({
url: '/mes/wm/itemrecpt/getItem/' + vendorId,
method: 'get'
})
}
// 根据供应商Id查询采购记录
export function getProcurementRecord(vendorId) {
return request({
url: '/mes/wm/itemrecpt/getProcurementRecord/' + vendorId,
method: 'get'
})
}

View File

@ -43,6 +43,30 @@ export function delLocation(locationId) {
})
}
// 设置库区下所有库位是否允许产品混放
export function setProductMixing(locationId, flag){
return request({
url: '/mes/wm/location/setProductMixing',
method: 'post',
params: {
'locationId': locationId,
'flag': flag
}
})
}
// 设置库区下所有库位是否允许批次混放
export function setBatchMixing(locationId, flag){
return request({
url: '/mes/wm/location/setBatchMixing',
method: 'post',
params: {
'locationId': locationId,
'flag': flag
}
})
}
//更改库区的冻结状态
export function changeFrozenState(locationId, status) {
const data = {

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询备料通知单列表
export function listMrnotice(query) {
return request({
url: '/mes/wm/mrnotice/list',
method: 'get',
params: query
})
}
// 查询备料通知单详细
export function getMrnotice(noticeId) {
return request({
url: '/mes/wm/mrnotice/' + noticeId,
method: 'get'
})
}
// 新增备料通知单
export function addMrnotice(data) {
return request({
url: '/mes/wm/mrnotice',
method: 'post',
data: data
})
}
// 修改备料通知单
export function updateMrnotice(data) {
return request({
url: '/mes/wm/mrnotice',
method: 'put',
data: data
})
}
// 删除备料通知单
export function delMrnotice(noticeId) {
return request({
url: '/mes/wm/mrnotice/' + noticeId,
method: 'delete'
})
}

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询备料通知单明细列表
export function listMrnoticeline(query) {
return request({
url: '/mes/wm/mrnoticeline/list',
method: 'get',
params: query
})
}
// 查询备料通知单明细详细
export function getMrnoticeline(lineId) {
return request({
url: '/mes/wm/mrnoticeline/' + lineId,
method: 'get'
})
}
// 新增备料通知单明细
export function addMrnoticeline(data) {
return request({
url: '/mes/wm/mrnoticeline',
method: 'post',
data: data
})
}
// 修改备料通知单明细
export function updateMrnoticeline(data) {
return request({
url: '/mes/wm/mrnoticeline',
method: 'put',
data: data
})
}
// 删除备料通知单明细
export function delMrnoticeline(lineId) {
return request({
url: '/mes/wm/mrnoticeline/' + lineId,
method: 'delete'
})
}

View File

@ -50,3 +50,19 @@ export function execute(salseId) {
method: 'put'
})
}
// 根据客户 id 查询销售产品信息
export function getItem(clientId) {
return request({
url: '/mes/wm/productsalse/getItem/' + clientId,
method: 'get'
})
}
// 根据客户 id 查询销售订单信息
export function getSaleRecord(clientId) {
return request({
url: '/mes/wm/productsalse/getSaleRecord/' + clientId,
method: 'get'
})
}

View File

@ -44,9 +44,12 @@ export function updateSn(data) {
}
// 删除SN码
export function delSn(snId) {
export function delSn(ids) {
return request({
url: '/mes/wm/sn/' + snId,
method: 'delete'
url: '/mes/wm/sn/remove',
method: 'get',
params: {
ids
}
})
}

View File

@ -42,3 +42,11 @@ export function delMessage(messageId) {
method: 'delete'
})
}
// 全部已读
export function allRead() {
return request({
url: '/system/message/read',
method: 'get'
})
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 509 KiB

After

Width:  |  Height:  |  Size: 883 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 178 KiB

View File

@ -36,7 +36,7 @@ $base-sub-menu-background:#000c17;
$base-sub-menu-hover:#001528;
*/
$base-sidebar-width: 200px;
$base-sidebar-width: 250px;
// the :export directive is the magic sauce for webpack
// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass

View File

@ -41,7 +41,7 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-row>
<el-col :span="8">
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@ -50,17 +50,17 @@
</el-col>
</el-row>
</el-form>
<el-table v-loading="loading" :data="protaskList" @current-change="handleCurrent" @row-dblclick="handleRowDbClick">
<el-table-column width="55" align="center" >
<template v-slot="scope">
<el-radio v-model="selectedTaskId" :label="scope.row.taskId" @change="handleRowChange(scope.row)">{{""}}</el-radio>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="任务编号" align="center" width="100px" prop="taskCode" :show-overflow-tooltip="true"/>
<el-table-column label="任务名称" align="center" width="120px" prop="taskName" :show-overflow-tooltip="true"/>
<el-table-column label="工作站编号" align="center" width="150px" prop="workstationCode" :show-overflow-tooltip="true"/>
<el-table-column label="工作站名称" align="center" width="150px" prop="workstationName" :show-overflow-tooltip="true"/>
<el-table-column label="工作站名称" align="center" width="150px" prop="workstationName" :show-overflow-tooltip="true"/>
<el-table-column label="排产数量" align="center" prop="quantity" />
<el-table-column label="已生产数量" align="center" width="100px" prop="quantityProduced" />
<el-table-column label="开始生产时间" align="center" prop="startTime" width="180">
@ -111,7 +111,7 @@
</div>
</el-dialog>
</template>
<script>
import { listProtask, getProtask, delProtask, addProtask, updateProtask } from "@/api/mes/pro/protask";
import {listAllProcess} from "@/api/mes/pro/process";
@ -213,6 +213,10 @@
this.getProcess();
},
methods: {
handleOpen(id) {
this.showFlag = true
this.selectedTaskId = id
},
/** 查询生产任务列表 */
getList() {
this.loading = true;
@ -229,7 +233,7 @@
this.processOptions = response.data;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
@ -237,10 +241,12 @@
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.queryParams.processName = ''
this.queryParams.workstationCode = ''
this.queryParams.taskCode = ''
this.handleQuery();
},
handleCurrent(row){
if(row){
this.selectedRow = row;
@ -277,4 +283,3 @@
}
};
</script>

View File

@ -95,7 +95,7 @@
<el-table-column label="联系人" align="center" prop="contact1" />
<el-table-column label="联系人-电话" align="center" prop="contact1Tel" />
</el-table>
<pagination
v-show="total>0"
:total="total"
@ -159,13 +159,17 @@ export default {
contact2Email: null,
creditCode: null,
enableFlag: null,
}
}
};
},
created() {
this.getList();
},
methods: {
handleOpen(id) {
this.showFlag = true
this.selectedClientId = id
},
/** 查询客户列表 */
getList() {
this.loading = true;

View File

@ -0,0 +1,220 @@
<template>
<el-dialog title="设备选择"
v-if="showFlag"
:visible.sync="showFlag"
:modal= false
width="80%"
center
>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="计划编号" prop="planCode">
<el-input
v-model="queryParams.planCode"
placeholder="请输入计划编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="计划名称" prop="planName">
<el-input
v-model="queryParams.planName"
placeholder="请输入计划名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="checkplanList" @current-change="handleCurrent" @row-dblclick="handleRowDbClick">
<el-table-column width="55" align="center" >
<template v-slot="scope">
<el-radio v-model="selectedPlanId" :label="scope.row.planId" @change="handleRowChange(scope.row)">{{""}}</el-radio>
</template>
</el-table-column>
<el-table-column label="计划编码" align="center" prop="planCode" >
<template slot-scope="scope">
<el-button
type="text"
@click="handleView(scope.row)"
v-hasPermi="['mes:dv:checkplan:query']"
>{{scope.row.planCode}}</el-button>
</template>
</el-table-column>
<el-table-column label="计划名称" align="center" width="200px" prop="planName" />
<el-table-column label="计划类型" align="center" width="120px" prop="planType">
<template slot-scope="scope">
<dict-tag :options="dict.type.dv_plan_type" :value="scope.row.planType"/>
</template>
</el-table-column>
<el-table-column label="开始日期" align="center" prop="startDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.startDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="结束日期" align="center" prop="endDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.endDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="频率" align="center" prop="cycleType" width="120px">
<template slot-scope="scope">
{{scope.row.cycleCount}}<dict-tag :options="dict.type.mes_cycle_type" :value="scope.row.cycleType"/>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :options="dict.type.mes_order_status" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="130px" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleUpdate(scope.row)"
>停用</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="confirmSelect"> </el-button>
<el-button @click="showFlag=false"> </el-button>
</div>
</el-dialog>
</template>
<script>
import { listCheckplan } from "@/api/mes/dv/checkplan";
export default {
name: "CheckplanSelect",
dicts: ['mes_cycle_type','mes_order_status','dv_plan_type'],
props: {
planType: {
type: String,
default: 'CHECK'
}
},
data() {
return {
showFlag: false,
//
loading: true,
//
selectedPlanId: undefined,
selectedRow: undefined,
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
checkplanList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
planCode: null,
planName: null,
planType: this.planType,
startDate: null,
endDate: null,
cycleType: null,
cycleCount: null,
status: 'FINISHED'
}
};
},
created() {
this.getList();
},
methods: {
/** 查询设备点检计划头列表 */
getList() {
this.loading = true;
listCheckplan(this.queryParams).then(response => {
this.checkplanList = response.rows;
this.total = response.total;
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
handleCurrent(row){
if(row){
this.selectedRow = row;
}
},
//
handleRowDbClick(row){
if(row){
this.selectedRow = row;
this.$emit('onSelected',this.selectedRow);
this.showFlag = false;
}
},
//
handleRowChange(row) {
if(row){
this.selectedRow = row;
}
},
//
confirmSelect(){
if(this.selectedPlanId ==null || this.selectedPlanId==0){
this.$notify({
title:'提示',
type:'warning',
message: '请至少选择一条数据!'
});
return;
}
this.$emit('onSelected',this.selectedRow);
this.showFlag = false;
}
}
};
</script>

View File

@ -1,5 +1,5 @@
<template>
<el-dialog title="设备选择"
<el-dialog title="项目选择"
v-if="showFlag"
:visible.sync="showFlag"
:modal= false
@ -23,16 +23,6 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="项目类型" prop="subjectType">
<el-select v-model="queryParams.subjectType" placeholder="请选择项目类型" clearable>
<el-option
v-for="dict in dict.type.mes_dvsubject_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@ -56,7 +46,7 @@
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" />
</el-table>
<pagination
v-show="total>0"
:total="total"
@ -68,7 +58,7 @@
<el-button type="primary" @click="confirmSelect"> </el-button>
<el-button @click="showFlag=false"> </el-button>
</div>
</el-dialog>
</el-dialog>
</template>
<script>
@ -81,7 +71,7 @@ export default {
},
data() {
return {
showFlag:false,
showFlag:false,
//
loading: true,
// s
@ -128,9 +118,18 @@ export default {
this.loading = false;
});
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams = {}
this.queryParams.pageNum = 1;
this.queryParams.pageSize = 10;
this.queryParams.subjectType = this.subjectType
this.getList();
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.queryParams.pageSize = 10;
this.getList();
},
//

View File

@ -0,0 +1,168 @@
<template>
<el-dialog title="设备点检保养项目选择"
v-if="showFlag"
:visible.sync="showFlag"
:modal= false
width="80%"
center
>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="项目编码" prop="subjectCode">
<el-input
v-model="queryParams.subjectCode"
placeholder="请输入项目编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="项目名称" prop="subjectName">
<el-input
v-model="queryParams.subjectName"
placeholder="请输入项目名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="dvsubjectList" @current-change="handleCurrent" @row-dblclick="handleRowDbClick">
<el-table-column width="55" align="center" >
<template v-slot="scope">
<el-radio v-model="selectedId" :label="scope.row.subjectId" @change="handleRowChange(scope.row)">{{""}}</el-radio>
</template>
</el-table-column>
<el-table-column label="项目编码" align="center" prop="subjectCode" />
<el-table-column label="项目名称" align="center" prop="subjectName" />
<el-table-column label="项目内容" align="center" prop="subjectContent" :show-overflow-tooltip="true"/>
<el-table-column label="标准" align="center" prop="subjectStandard" :show-overflow-tooltip="true"/>
<el-table-column label="备注" align="center" prop="remark" />
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="confirmSelect"> </el-button>
<el-button @click="showFlag=false"> </el-button>
</div>
</el-dialog>
</template>
<script>
import { listDvsubject} from "@/api/mes/dv/dvsubject";
export default {
name: "DvsubjectSelect",
dicts: ['sys_yes_no', 'mes_dvsubject_type'],
props:{
subjectType: null,
},
data() {
return {
showFlag:false,
//
loading: true,
//
selectedId: undefined,
selectedRow: undefined,
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
dvsubjectList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
subjectCode: null,
subjectName: null,
subjectType: this.subjectType,
subjectContent: null,
subjectStandard: null,
enableFlag: null,
},
//
form: {}
};
},
created() {
this.getList();
},
methods: {
/** 查询设备点检保养项目列表 */
getList() {
this.loading = true;
listDvsubject(this.queryParams).then(response => {
this.dvsubjectList = response.rows;
this.total = response.total;
this.loading = false;
});
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams = {}
this.queryParams.pageNum = 1;
this.queryParams.pageSize = 10;
this.queryParams.subjectType = this.subjectType
this.getList();
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.queryParams.pageSize = 10;
this.getList();
},
handleCurrent(row){
if(row){
this.selectedRow = row;
}
},
//
handleRowDbClick(row){
if(row){
this.selectedRow = row;
this.$emit('onSelected',this.selectedRow);
this.showFlag = false;
}
},
//
handleRowChange(row) {
if(row){
this.selectedRow = row;
}
},
//
confirmSelect(){
if(this.selectedId == null || this.selectedId == 0){
this.$notify({
title:'提示',
type:'warning',
message: '请选择一条数据!'
});
return;
}
this.$emit('onSelected',this.selectedRow);
this.showFlag = false;
}
}
};
</script>

View File

@ -165,6 +165,10 @@ export default {
this.getTreeselect();
},
methods: {
handleOpen(id) {
this.showFlag = true
this.selectedItemId = id
},
/** 查询物料编码列表 */
getList() {
this.loading = true;
@ -235,4 +239,4 @@ export default {
}
}
};
</script>
</script>

View File

@ -52,6 +52,15 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="所属车间" prop="workshopName">
<el-input
v-model="queryParams.workshopName"
placeholder="请输入所属车间"
clearable
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@ -68,7 +77,7 @@
<el-table-column label="设备名称" min-width="120" align="left" key="machineryName" prop="machineryName" :show-overflow-tooltip="true" />
<el-table-column label="品牌" align="left" key="machineryBrand" prop="machineryBrand" :show-overflow-tooltip="true" />
<el-table-column label="规格型号" align="left" key="machinerySpec" prop="machinerySpec" :show-overflow-tooltip="true" />
<el-table-column label="所属车间" align="center" key="machineryTypeName" prop="machineryTypeName" :show-overflow-tooltip="true" />
<el-table-column label="所属车间" align="center" key="workshopName" prop="workshopName" :show-overflow-tooltip="true" />
<el-table-column label="设备状态" align="center" key="status" prop="status" >
<template slot-scope="scope">
<dict-tag :options="dict.type.mes_machinery_status" :value="scope.row.status"/>
@ -102,7 +111,6 @@ import { listMachinery, getMachinery, delMachinery, addMachinery, updateMachiner
import { listMachinerytype } from "@/api/mes/dv/machinerytype";
import { listAllWorkshop } from "@/api/mes/md/workshop";
import { getToken } from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
@ -175,6 +183,10 @@ export default {
this.getTreeselect();
},
methods: {
handleOpen(id) {
this.showFlag = true
this.selectedMachineryId = id
},
/** 查询物料编码列表 */
getList() {
this.loading = true;
@ -187,7 +199,6 @@ export default {
},
getWorkshops(){
listAllWorkshop().then( response => {
debugger;
this.workshopOptions =response.data;
});
},
@ -205,7 +216,6 @@ export default {
/** 查询设备类型下拉树结构 */
getTreeselect() {
listMachinerytype().then(response => {
debugger;
this.machineryTypeOptions = [];
const data = this.handleTree(response.data, "machineryTypeId", "parentTypeId")[0];
this.machineryTypeOptions.push(data);
@ -265,4 +275,4 @@ export default {
}
}
};
</script>
</script>

View File

@ -11,11 +11,11 @@
<template v-slot="scope">
<el-radio v-model="selectedId" :label="scope.row.lineId" @change="handleRowChange(scope.row)">{{""}}</el-radio>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="物料编码" width="120px" align="center" prop="itemCode" />
<el-table-column label="物料名称" width="150px" align="center" prop="itemName" />
<el-table-column label="规格型号" align="center" prop="specification" />
<el-table-column label="单位" align="center" prop="unitOfMeasure" />
<el-table-column label="单位" align="center" prop="unitName" />
<el-table-column label="到货数量" align="center" prop="quantityArrival" />
<el-table-column label="是否检验" align="center" prop="iqcCheck">
<template slot-scope="scope">
@ -26,7 +26,7 @@
<el-table-column label="检验单号" align="center" prop="iqcCode" />
<el-table-column label="备注" align="center" prop="remark" />
</el-table>
<pagination
v-show="total>0"
:total="total"
@ -40,7 +40,7 @@
</div>
</el-dialog>
</template>
<script>
import { listArrivalnoticeline} from "@/api/mes/wm/arrivalnoticeline";
export default {
@ -130,4 +130,3 @@
}
};
</script>

View File

@ -49,7 +49,12 @@
</el-form-item>
<el-form-item label="单据状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择单据状态" clearable>
<el-option label="请选择字典生成" value="" />
<el-option
v-for="dict in orderStatusDict"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item>
@ -63,7 +68,7 @@
<template v-slot="scope">
<el-radio v-model="selectedId" :label="scope.row.noticeId" @change="handleRowChange(scope.row)">{{""}}</el-radio>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="入库单编号" align="center" width="180px" prop="noticeCode" >
<template slot-scope="scope">
<el-button
@ -82,9 +87,9 @@
<template slot-scope="scope">
<span>{{ parseTime(scope.row.arrivalDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
@ -105,6 +110,7 @@ export default {
data() {
return {
showFlag:false,
orderStatusDict: [],
//
loading: true,
//
@ -128,13 +134,29 @@ export default {
queryParams: {
pageNum: 1,
pageSize: 10,
noticeCode: null, noticeName: null, poCode: null, vendorId: null, vendorCode: null, vendorName: null, vendorNick: null, arrivalDate: null, status: 'APPROVED', },
noticeCode: null,
noticeName: null,
poCode: null,
vendorId: null,
vendorCode: null,
vendorName: null,
vendorNick: null,
arrivalDate: null,
status: null,
},
};
},
created() {
this.getList();
this.getDicts("mes_order_status").then(res => {
this.orderStatusDict = res.data
})
},
methods: {
handleOpen(id) {
this.showFlag = true
this.selectedId = id
},
/** 查询到货通知单列表 */
getList() {
this.loading = true;

View File

@ -1,5 +1,5 @@
<template>
<el-dialog title="人员选择"
<el-dialog title="库存选择"
v-if="showFlag"
:visible.sync="showFlag"
:modal= false
@ -95,7 +95,7 @@
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="warning"
@ -129,7 +129,7 @@
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"

View File

@ -94,7 +94,7 @@
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-form-item>
</el-col>
</el-row>
<el-form-item>
@ -103,7 +103,7 @@
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-row :gutter="10" class="mb8">
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
@ -112,7 +112,7 @@
<template v-slot="scope">
<el-radio v-model="selectedId" :label="scope.row.materialStockId" @change="handleRowChange(scope.row)">{{""}}</el-radio>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="产品物料编码" width="120px" align="center" prop="itemCode" />
<el-table-column label="产品物料名称" width="150px" align="center" prop="itemName" :show-overflow-tooltip="true"/>
<el-table-column label="规格型号" align="center" prop="specification" :show-overflow-tooltip="true"/>
@ -132,7 +132,7 @@
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
@ -240,6 +240,11 @@ export default {
this.getTreeselect();
},
methods: {
handleOpen(id) {
this.showFlag = true
this.getList()
this.selectedId = id
},
/** 查询库存记录列表 */
getList() {
this.loading = true;

View File

@ -64,21 +64,21 @@
<el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
<el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />
<el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" />
<el-table-column label="状态" align="center" key="status" v-if="columns[5].visible">
<template slot-scope="scope">
<el-switch
v-model="scope.row.status"
active-value="0"
inactive-value="1"
@change="handleStatusChange(scope.row)"
></el-switch>
</template>
</el-table-column>
<!-- <el-table-column label="状态" align="center" key="status" v-if="columns[5].visible">-->
<!-- <template slot-scope="scope">-->
<!-- <el-switch-->
<!-- v-model="scope.row.status"-->
<!-- active-value="0"-->
<!-- inactive-value="1"-->
<!-- @change="handleStatusChange(scope.row)"-->
<!-- ></el-switch>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="创建时间" align="center" prop="createTime" v-if="columns[6].visible" width="160">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
</el-table-column>
</el-table>
<pagination
@ -239,4 +239,4 @@ export default {
}
}
};
</script>
</script>

View File

@ -62,26 +62,26 @@
<template v-slot="scope">
<el-radio v-model="selectedId" :label="scope.row.userId" @change="handleRowChange(scope.row)">{{""}}</el-radio>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
<el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
<el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />
<el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" />
<el-table-column label="状态" align="center" key="status" v-if="columns[5].visible">
<template slot-scope="scope">
<el-switch
v-model="scope.row.status"
active-value="0"
inactive-value="1"
@change="handleStatusChange(scope.row)"
></el-switch>
</template>
</el-table-column>
<!-- <el-table-column label="状态" align="center" key="status" v-if="columns[5].visible">-->
<!-- <template slot-scope="scope">-->
<!-- <el-switch-->
<!-- v-model="scope.row.status"-->
<!-- active-value="0"-->
<!-- inactive-value="1"-->
<!-- @change="handleStatusChange(scope.row)"-->
<!-- ></el-switch>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="创建时间" align="center" prop="createTime" v-if="columns[6].visible" width="160">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
</el-table-column>
</el-table>
<pagination
@ -255,4 +255,4 @@ export default {
}
}
};
</script>
</script>

View File

@ -100,7 +100,7 @@
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true"/>
</el-table>
<pagination
v-show="total>0"
:total="total"
@ -126,7 +126,7 @@ export default {
selectedVendorId: undefined,
selectedRow: undefined,
//
loading: true,
loading: true,
//
single: true,
//
@ -174,6 +174,10 @@ export default {
this.getList();
},
methods: {
handleOpen(id) {
this.showFlag = true
this.selectedVendorId = id
},
/** 查询供应商列表 */
getList() {
this.loading = true;

View File

@ -49,7 +49,7 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@ -73,8 +73,8 @@
<el-table-column label="产品编号" width="120" align="center" prop="productCode" />
<el-table-column label="产品名称" width="200" align="center" prop="productName" :show-overflow-tooltip="true"/>
<el-table-column label="规格型号" align="center" prop="productSpc" :show-overflow-tooltip="true"/>
<el-table-column label="单位" align="center" prop="unitOfMeasure" />
<el-table-column label="工单数量" align="center" prop="quantity" />
<el-table-column label="单位" align="center" prop="unitName" />
<el-table-column label="工单数量" align="center" prop="quantity" />
<el-table-column label="客户编码" align="center" prop="clientCode" />
<el-table-column label="客户名称" align="center" prop="clientName" :show-overflow-tooltip="true"/>
<el-table-column label="需求日期" align="center" prop="requestDate" width="180">
@ -105,7 +105,7 @@
dicts: ['mes_order_status','mes_workorder_sourcetype'],
props:{
workorder: {
type: Object,
type: Object,
default: function(){
return {'workorderType': 'SELF'}
}} //
@ -163,6 +163,10 @@
this.getList();
},
methods:{
handleOpen(id) {
this.showFlag = true
this.selectedWorkorderId = id
},
/** 查询生产工单列表 */
getList() {
this.loading = true;
@ -214,4 +218,4 @@
}
}
}
</script>
</script>

View File

@ -68,7 +68,7 @@
<el-table-column label="工作站地点" align="center" prop="workstationAddress" />
<el-table-column label="所在车间名称" align="center" prop="workshopName" />
<el-table-column label="所属工序" align="center" prop="processName" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="备注" align="center" prop="remark" />
</el-table>
<pagination
v-show="total>0"
@ -145,6 +145,10 @@ export default {
this.getProcess();
},
methods: {
handleOpen(id) {
this.showFlag = true
this.selectedWorkstationId = id
},
/** 查询工作站列表 */
getList() {
this.loading = true;
@ -156,7 +160,7 @@ export default {
},
//
getWorkshops(){
listAllWorkshop().then( response => {
listAllWorkshop().then( response => {
this.workshopOptions = response.data;
});
},

View File

@ -7,16 +7,7 @@
<div class="right-menu">
<template v-if="device!=='mobile'">
<search id="header-search" class="right-menu-item" />
<el-tooltip content="源码地址" effect="dark" placement="bottom">
<ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />
</el-tooltip>
<el-tooltip content="文档地址" effect="dark" placement="bottom">
<ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />
</el-tooltip>
<screenfull id="screenfull" class="right-menu-item hover-effect" />
<el-tooltip content="布局大小" effect="dark" placement="bottom">

View File

@ -1,45 +1,80 @@
<template>
<div class="sidebar-logo-container" :class="{'collapse':collapse}" :style="{ backgroundColor: sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }">
<div
class="sidebar-logo-container"
:class="{ collapse: collapse }"
:style="{
backgroundColor:
sideTheme === 'theme-dark'
? variables.menuBackground
: variables.menuLightBackground,
}"
>
<transition name="sidebarLogoFade">
<router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
<router-link
v-if="collapse"
key="collapse"
class="sidebar-logo-link"
to="/"
>
<img v-if="logo" :src="logo" class="sidebar-logo" />
<h1 v-else class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }} </h1>
<h1
v-else
class="sidebar-title"
:style="{
color:
sideTheme === 'theme-dark'
? variables.logoTitleColor
: variables.logoLightTitleColor,
}"
>
{{ title }}
</h1>
</router-link>
<router-link v-else key="expand" class="sidebar-logo-link" to="/">
<img v-if="logo" :src="logo" class="sidebar-logo" />
<h1 class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }} </h1>
<h1
class="sidebar-title"
:style="{
color:
sideTheme === 'theme-dark'
? variables.logoTitleColor
: variables.logoLightTitleColor,
}"
>
{{ title }}
</h1>
</router-link>
</transition>
</div>
</template>
<script>
import logoImg from '@/assets/logo/logo.png'
import variables from '@/assets/styles/variables.scss'
import logoImg from "@/assets/logo/logo.png";
import variables from "@/assets/styles/variables.scss";
export default {
name: 'SidebarLogo',
name: "SidebarLogo",
props: {
collapse: {
type: Boolean,
required: true
}
required: true,
},
},
computed: {
variables() {
return variables;
},
sideTheme() {
return this.$store.state.settings.sideTheme
}
return this.$store.state.settings.sideTheme;
},
},
data() {
return {
title: '苦糖果MES',
logo: logoImg
}
}
}
title: "龙翔商贸生产管控系统",
logo: logoImg,
};
},
};
</script>
<style lang="scss" scoped>

View File

@ -260,7 +260,49 @@ export const dynamicRoutes = [
meta: {title: '打印模板编辑',activeMenu: '/print/printtemplate/edit'}
}
]
}
},
{
path: '/mes/md/item',
component: Layout,
hidden: true,
permissions: ['mes:md:mditem:edit'],
children: [
{
path: 'form',
component: () => import('@/views/mes/md/mditem/form.vue'),
name: 'itemForm',
meta: { title: '物料详情', activeMenu: '/mes/md/item/form' }
}
]
},
{
path: '/mes/wm/purchaseInventory',
component: Layout,
hidden: true,
permissions: ['mes:wm:itemrecpt:edit'],
children: [
{
path: 'form',
component: () => import('@/views/mes/wm/itemrecpt/form.vue'),
name: 'itemrecptForm',
meta: { title: '采购入库详情', activeMenu: '/mes/wm/itemrecpt/form' }
}
]
},
{
path: '/mes/wm/saleOutbound',
component: Layout,
hidden: true,
children: [
{
path: 'form',
component: () => import('@/views/mes/wm/productsalse/form.vue'),
name: 'productsalseForm',
meta: { title: '销售出库详情', activeMenu: '/mes/wm/productsalse/form' }
}
]
},
]
// 防止连续点击多次路由报错

View File

@ -6,6 +6,8 @@ const user = {
token: getToken(),
name: '',
avatar: '',
id: '',
nick: '',
roles: [],
permissions: []
},
@ -20,6 +22,12 @@ const user = {
SET_AVATAR: (state, avatar) => {
state.avatar = avatar
},
SET_ID: (state, id) => {
state.id = id
},
SET_NICK: (state, nick) => {
state.nick = nick
},
SET_ROLES: (state, roles) => {
state.roles = roles
},
@ -58,6 +66,8 @@ const user = {
} else {
commit('SET_ROLES', ['ROLE_DEFAULT'])
}
commit('SET_ID', user.userId)
commit('SET_NICK', user.nickName)
commit('SET_NAME', user.userName)
commit('SET_AVATAR', avatar)
resolve(res)

View File

@ -9,7 +9,7 @@
<div class="card-panel-text">
设备总数
</div>
<count-to :start-val="0" :end-val="102400" :duration="2600" class="card-panel-num" />
<count-to :start-val="0" :end-val="37" :duration="2600" class="card-panel-num" />
</div>
</div>
</el-col>
@ -22,7 +22,7 @@
<div class="card-panel-text">
运行中
</div>
<count-to :start-val="0" :end-val="81212" :duration="3000" class="card-panel-num" />
<count-to :start-val="0" :end-val="23" :duration="3000" class="card-panel-num" />
</div>
</div>
</el-col>
@ -35,7 +35,7 @@
<div class="card-panel-text">
待机
</div>
<count-to :start-val="0" :end-val="9280" :duration="3200" class="card-panel-num" />
<count-to :start-val="0" :end-val="14" :duration="3200" class="card-panel-num" />
</div>
</div>
</el-col>
@ -48,7 +48,7 @@
<div class="card-panel-text">
故障
</div>
<count-to :start-val="0" :end-val="13600" :duration="3600" class="card-panel-num" />
<count-to :start-val="0" :end-val="0" :duration="3600" class="card-panel-num" />
</div>
</div>
</el-col>

View File

@ -1,140 +1,145 @@
<template>
<div class="dashboard-editor-container">
<panel-group @handleSetLineChartData="handleSetLineChartData" />
<el-row :gutter="32" style="padding:16px 16px 0;margin-bottom:32px;">
<el-card>
<div slot="header" class="clearfix">
<span>生产进度</span>
</div>
<el-table
v-loading="loading"
:data="workorderList"
row-key="workorderId"
default-expand-all
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
>
<el-table-column label="工单编码" width="180" prop="workorderCode" >
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="handleView(scope.row)"
v-hasPermi="['mes:pro:workorder:query']"
>{{scope.row.workorderCode}}</el-button>
</template>
</el-table-column>
<el-table-column label="订单编号" width="140" align="center" prop="sourceCode" />
<el-table-column label="客户名称" align="center" prop="clientName" :show-overflow-tooltip="true"/>
<el-table-column label="产品编号" width="120" align="center" prop="productCode" />
<el-table-column label="产品名称" width="250px" align="center" prop="productName" :show-overflow-tooltip="true"/>
<el-table-column label="规格型号" align="center" prop="productSpc" :show-overflow-tooltip="true"/>
<el-table-column label="单位" align="center" prop="unitOfMeasure" />
<el-table-column label="生产进度" align="center" width="200px" >
<template slot-scope="scope">
<el-progress :text-inside="true" :stroke-width="20" :percentage="parseFloat(((scope.row.quantityProduced/scope.row.quantity*100).toFixed(2)))>100?100:parseFloat(((scope.row.quantityProduced/scope.row.quantity*100).toFixed(2)))"></el-progress>
</template>
</el-table-column>
<el-table-column label="需求日期" align="center" prop="requestDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.requestDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
</el-table>
</el-card>
</el-row>
<el-row style="background:#fff;padding:16px 16px 0; margin-bottom:32px;">
<line-chart :chart-data="lineChartData" />
</el-row>
<el-row :gutter="32">
<el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper">
<raddar-chart />
<el-row :gutter="32" style="padding: 16px 16px 0; margin-bottom: 32px">
<el-card>
<div slot="header" class="clearfix">
<span>生产进度</span>
</div>
</el-col>
<el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper">
<pie-chart />
</div>
</el-col>
<el-col :xs="24" :sm="24" :lg="8">
<div class="chart-wrapper">
<bar-chart />
</div>
</el-col>
<el-table
v-loading="loading"
:data="workorderList"
row-key="workorderId"
default-expand-all
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
>
<el-table-column label="工单编码" width="180" prop="workorderCode">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="handleView(scope.row)"
v-hasPermi="['mes:pro:workorder:query']"
>{{ scope.row.workorderCode }}</el-button
>
</template>
</el-table-column>
<el-table-column label="订单编号" align="center" prop="sourceCode" />
<el-table-column
label="工单名称"
align="center"
prop="workorderName"
:show-overflow-tooltip="true"
/>
<el-table-column
label="产品编号"
width="120"
align="center"
prop="productCode"
/>
<el-table-column
label="产品名称"
align="center"
prop="productName"
:show-overflow-tooltip="true"
/>
<el-table-column
label="规格型号"
width="140"
align="center"
prop="productSpc"
:show-overflow-tooltip="true"
/>
<el-table-column
label="单位"
width="140"
align="center"
prop="unitOfMeasure"
/>
<el-table-column label="需求日期" align="center" prop="requestDate">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.requestDate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
</el-table>
</el-card>
</el-row>
</div>
</template>
<script>
import { listWorkorder } from "@/api/mes/pro/workorder";
import PanelGroup from './dashboard/PanelGroup'
import LineChart from './dashboard/LineChart'
import RaddarChart from './dashboard/RaddarChart'
import PieChart from './dashboard/PieChart'
import BarChart from './dashboard/BarChart'
import { getHomeList } from "@/api/mes/pro/workorder";
import PanelGroup from "./dashboard/PanelGroup";
import LineChart from "./dashboard/LineChart";
import RaddarChart from "./dashboard/RaddarChart";
import PieChart from "./dashboard/PieChart";
import BarChart from "./dashboard/BarChart";
const lineChartData = {
newVisitis: {
expectedData: [100, 120, 161, 134, 105, 160, 165],
actualData: [120, 82, 91, 154, 162, 140, 145]
actualData: [120, 82, 91, 154, 162, 140, 145],
},
messages: {
expectedData: [200, 192, 120, 144, 160, 130, 140],
actualData: [180, 160, 151, 106, 145, 150, 130]
actualData: [180, 160, 151, 106, 145, 150, 130],
},
purchases: {
expectedData: [80, 100, 121, 104, 105, 90, 100],
actualData: [120, 90, 100, 138, 142, 130, 130]
actualData: [120, 90, 100, 138, 142, 130, 130],
},
shoppings: {
expectedData: [130, 140, 141, 142, 145, 150, 160],
actualData: [120, 82, 91, 154, 162, 140, 130]
}
}
actualData: [120, 82, 91, 154, 162, 140, 130],
},
};
export default {
name: 'Index',
name: "Index",
components: {
PanelGroup,
LineChart,
RaddarChart,
PieChart,
BarChart
BarChart,
},
data() {
return {
loading: true,
queryParams: {status:'CONFIRMED'},
workorderList: [],
lineChartData: lineChartData.newVisitis
}
loading: true,
queryParams: { status: "CONFIRMED" },
workorderList: [],
lineChartData: lineChartData.newVisitis,
colors: [
{ color: "#f56c6c", percentage: 20 },
{ color: "#e6a23c", percentage: 40 },
{ color: "#5cb87a", percentage: 60 },
{ color: "#1989fa", percentage: 80 },
{ color: "#6f7ad3", percentage: 100 },
],
};
},
created(){
this.getList();
created() {
this.getList();
},
methods: {
getList() {
this.loading = true;
listWorkorder(this.queryParams).then(response => {
this.workorderList = response.rows;
getHomeList(this.queryParams).then((response) => {
this.workorderList = response.data;
this.loading = false;
});
},
handleSetLineChartData(type) {
this.lineChartData = lineChartData[type]
}
}
}
this.lineChartData = lineChartData[type];
},
},
};
</script>
<style lang="scss" scoped>
.dashboard-editor-container {
height: calc(100vh - 84px);
padding: 32px;
background-color: rgb(240, 242, 245);
position: relative;
@ -146,7 +151,7 @@ export default {
}
}
@media (max-width:1024px) {
@media (max-width: 1024px) {
.chart-wrapper {
padding: 8px;
}

View File

@ -1,7 +1,13 @@
<template>
<div class="login">
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
<h3 class="title">苦糖果生产执行管理系统</h3>
<label class="title-name">府谷县龙翔商贸有限公司</label>
<el-form
ref="loginForm"
:model="loginForm"
:rules="loginRules"
class="login-form"
>
<h3 class="title">生产管控系统</h3>
<el-form-item prop="username">
<el-input
v-model="loginForm.username"
@ -9,7 +15,11 @@
auto-complete="off"
placeholder="账号"
>
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
<svg-icon
slot="prefix"
icon-class="user"
class="el-input__icon input-icon"
/>
</el-input>
</el-form-item>
<el-form-item prop="password">
@ -20,7 +30,11 @@
placeholder="密码"
@keyup.enter.native="handleLogin"
>
<svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
<svg-icon
slot="prefix"
icon-class="password"
class="el-input__icon input-icon"
/>
</el-input>
</el-form-item>
<el-form-item prop="code" v-if="captchaOnOff">
@ -31,31 +45,41 @@
style="width: 63%"
@keyup.enter.native="handleLogin"
>
<svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
<svg-icon
slot="prefix"
icon-class="validCode"
class="el-input__icon input-icon"
/>
</el-input>
<div class="login-code">
<img :src="codeUrl" @click="getCode" class="login-code-img"/>
<img :src="codeUrl" @click="getCode" class="login-code-img" />
</div>
</el-form-item>
<el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox>
<el-form-item style="width:100%;">
<el-checkbox
v-model="loginForm.rememberMe"
style="margin: 0px 0px 25px 0px"
>记住密码</el-checkbox
>
<el-form-item style="width: 100%">
<el-button
:loading="loading"
size="medium"
type="primary"
style="width:100%;"
style="width: 100%"
@click.native.prevent="handleLogin"
>
<span v-if="!loading"> </span>
<span v-else> 中...</span>
</el-button>
<div style="float: right;" v-if="register">
<router-link class="link-type" :to="'/register'">立即注册</router-link>
<div style="float: right" v-if="register">
<router-link class="link-type" :to="'/register'"
>立即注册</router-link
>
</div>
</el-form-item>
</el-form>
<!-- 底部 -->
<div class="el-login-footer">
<div class="el-login-footer">
<span @click="toIPC">陕ICP备2022002135号-1</span>
</div>
</div>
@ -64,7 +88,7 @@
<script>
import { getCodeImg } from "@/api/login";
import Cookies from "js-cookie";
import { encrypt, decrypt } from '@/utils/jsencrypt'
import { encrypt, decrypt } from "@/utils/jsencrypt";
export default {
name: "Login",
@ -76,44 +100,45 @@ export default {
password: "admin123",
rememberMe: false,
code: "",
uuid: ""
uuid: "",
},
loginRules: {
username: [
{ required: true, trigger: "blur", message: "请输入您的账号" }
{ required: true, trigger: "blur", message: "请输入您的账号" },
],
password: [
{ required: true, trigger: "blur", message: "请输入您的密码" }
{ required: true, trigger: "blur", message: "请输入您的密码" },
],
code: [{ required: true, trigger: "change", message: "请输入验证码" }]
code: [{ required: true, trigger: "change", message: "请输入验证码" }],
},
loading: false,
//
captchaOnOff: true,
//
register: false,
redirect: undefined
redirect: undefined,
};
},
watch: {
$route: {
handler: function(route) {
handler: function (route) {
this.redirect = route.query && route.query.redirect;
},
immediate: true
}
immediate: true,
},
},
created() {
this.getCode();
this.getCookie();
},
methods: {
toIPC(){
window.open("https://beian.miit.gov.cn/","_blank");
toIPC() {
window.open("https://beian.miit.gov.cn/", "_blank");
},
getCode() {
getCodeImg().then(res => {
this.captchaOnOff = res.captchaOnOff === undefined ? true : res.captchaOnOff;
getCodeImg().then((res) => {
this.captchaOnOff =
res.captchaOnOff === undefined ? true : res.captchaOnOff;
if (this.captchaOnOff) {
this.codeUrl = "data:image/gif;base64," + res.img;
this.loginForm.uuid = res.uuid;
@ -123,38 +148,46 @@ export default {
getCookie() {
const username = Cookies.get("username");
const password = Cookies.get("password");
const rememberMe = Cookies.get('rememberMe')
const rememberMe = Cookies.get("rememberMe");
this.loginForm = {
username: username === undefined ? this.loginForm.username : username,
password: password === undefined ? this.loginForm.password : decrypt(password),
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
password:
password === undefined ? this.loginForm.password : decrypt(password),
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
};
},
handleLogin() {
this.$refs.loginForm.validate(valid => {
this.$refs.loginForm.validate((valid) => {
if (valid) {
this.loading = true;
if (this.loginForm.rememberMe) {
Cookies.set("username", this.loginForm.username, { expires: 30 });
Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 });
Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 });
Cookies.set("password", encrypt(this.loginForm.password), {
expires: 30,
});
Cookies.set("rememberMe", this.loginForm.rememberMe, {
expires: 30,
});
} else {
Cookies.remove("username");
Cookies.remove("password");
Cookies.remove('rememberMe');
Cookies.remove("rememberMe");
}
this.$store.dispatch("Login", this.loginForm).then(() => {
this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
}).catch(() => {
this.loading = false;
if (this.captchaOnOff) {
this.getCode();
}
});
this.$store
.dispatch("Login", this.loginForm)
.then(() => {
this.$router.push({ path: this.redirect || "/" }).catch(() => {});
})
.catch(() => {
this.loading = false;
if (this.captchaOnOff) {
this.getCode();
}
});
}
});
}
}
},
},
};
</script>
@ -166,6 +199,13 @@ export default {
height: 100%;
background-image: url("../assets/images/login-background.jpg");
background-size: cover;
flex-direction: column;
}
.title-name {
font-size: 70px;
margin-bottom: 100px;
color: #1c2187;
text-shadow: 5px 5px #777;
}
.title {
margin: 0px auto 30px auto;

View File

@ -2,21 +2,31 @@
<div class="app-container">
<el-container>
<el-aside width="150px">
<el-radio-group v-model="selectedType" class="x-fillitem el-group-list" @change="onSelected">
<el-radio-group v-model="selectedType" class="x-fillitem el-group-list" @change="onSelected">
<el-radio-button
v-for="dict in dict.type.mes_calendar_type"
:key="dict.value"
:label="dict.value"
>{{dict.label}}</el-radio-button>
>{{dict.label}}</el-radio-button>
</el-radio-group>
</el-aside>
<el-main>
<el-form :model="form" size="small" :inline="true" label-width="100px">
<el-form-item label="日期" prop="date">
<el-date-picker
v-model="form.date"
type="date"
@change="changeDate"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-form>
<el-calendar v-loading="loading" v-model="date">
<template slot="dateCell" slot-scope="{date, data }">
<div>
<el-row>
<el-col :span="6">
<div class="solar">
<div class="solar">
{{ data.day.split('-')[2] }}
</div>
</el-col>
@ -35,10 +45,10 @@
<el-button v-if="teamShift.orderNum ==2 && calendarDay.shiftType=='SHIFT_THREE'" type="warning" icon="el-icon-sunny">{{ teamShift.teamName }}</el-button>
<el-button v-if="teamShift.orderNum ==2 && calendarDay.shiftType=='SHIFT_TWO'" type="info" icon="el-icon-moon">{{ teamShift.teamName }}</el-button>
<el-button v-if="teamShift.orderNum ==3 && calendarDay.shiftType=='SHIFT_THREE'" type="info" icon="el-icon-moon">{{ teamShift.teamName }}</el-button>
</div>
</div>
</el-col>
</el-row>
</div>
</el-row>
</div>
</template>
</el-calendar>
</el-main>
@ -50,11 +60,14 @@
import { listCalholiday } from "@/api/mes/cal/calholiday";
import { listCalendars } from "@/api/mes/cal/calendar";
import calendar from '@/utils/calendar';
import UserSingleSelect from "@/components/userSelect/single.vue";
export default {
name: 'CalendarTypeView',
dicts:['mes_calendar_type'],
name: 'CalendarTypeView',
components: {UserSingleSelect},
dicts:['mes_calendar_type'],
data(){
return {
form: {},
//
loading: true,
date: new Date(),
@ -72,15 +85,15 @@ export default {
holidayType: null,
startTime: null,
endTime: null,
},
},
}
},
watch:{
date:{
handler(newVal,oldVal){
console.log(newVal.getFullYear()+'-'+(newVal.getMonth()+1)+'-'+newVal.getDate());
this.teamShiftQueryParams.date = newVal.getFullYear()+'-'+(newVal.getMonth()+1)+'-'+newVal.getDate();
this.loading = true;
this.teamShiftQueryParams.date = newVal.getFullYear()+'-'+(newVal.getMonth()+1)+'-'+newVal.getDate();
this.loading = true;
listCalendars(this.teamShiftQueryParams).then(response =>{
this.calendarDayList = response.data;
this.loading = false;
@ -92,12 +105,15 @@ export default {
this.getList();
},
methods:{
changeDate(val) {
this.date = val
},
/** 查询节假日设置列表 */
getList() {
this.loading = true;
this.loading = true;
this.holidayList =[];
this.workdayList =[];
let that = this;
let that = this;
listCalholiday(this.queryParams).then(response => {
if(response.data !=null){
response.data.forEach(theDay => {
@ -106,16 +122,16 @@ export default {
}else{
that.workdayList.push(theDay.theDay);
}
});
});
this.loading = false;
}
});
},
//
onSelected(calType){
this.loading = true;
this.loading = true;
this.teamShiftQueryParams.calendarType = calType;
this.teamShiftQueryParams.date = this.date;
this.teamShiftQueryParams.date = this.date.getFullYear() + '-' + (this.date.getMonth() + 1) + '-' + this.date.getDate();
listCalendars(this.teamShiftQueryParams).then(response =>{
this.calendarDayList = response.data;
this.loading = false;
@ -124,20 +140,20 @@ export default {
isFestival(slotDate, slotData) {
let solarDayArr = slotData.day.split('-');
let lunarDay = calendar.solar2lunar(solarDayArr[0], solarDayArr[1], solarDayArr[2])
// \\
let festAndTerm = [];
festAndTerm.push(lunarDay.festival == null ? '' : ' ' + lunarDay.festival)
festAndTerm.push(lunarDay.lunarFestival == null ? '' : '' + lunarDay.lunarFestival)
festAndTerm.push(lunarDay.Term == null ? '' : '' + lunarDay.Term)
festAndTerm = festAndTerm.join('')
return festAndTerm != ''
},
solarDate2lunar(solarDate) {
var solar = solarDate.split('-')
var lunar = calendar.solar2lunar(solar[0], solar[1], solar[2])
var lunar = calendar.solar2lunar(solar[0], solar[1], solar[2])
let lunarMD = lunar.IMonthCn + lunar.IDayCn;
// \\
let festAndTerm = [];
@ -145,9 +161,9 @@ export default {
festAndTerm.push(lunar.lunarFestival == null ? '' : '' + lunar.lunarFestival)
festAndTerm.push(lunar.Term == null ? '' : '' + lunar.Term)
festAndTerm = festAndTerm.join('')
return festAndTerm == '' ? lunarMD : festAndTerm
}
}
}
@ -204,4 +220,4 @@ export default {
.el-calendar-table .holiday {
background-color: #88E325;
}
</style>
</style>

View File

@ -14,6 +14,14 @@
</el-input>
<UserSingleSelect ref="userSelect" @onSelected="onUserSelected"></UserSingleSelect>
</el-form-item>
<el-form-item label="日期" prop="date">
<el-date-picker
v-model="form.date"
type="date"
@change="changeDate"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-form>
</el-header>
<el-main>
@ -22,7 +30,7 @@
<div>
<el-row>
<el-col :span="6">
<div class="solar">
<div class="solar">
{{ data.day.split('-')[2] }}
</div>
</el-col>
@ -41,10 +49,10 @@
<el-button v-if="teamShift.orderNum ==2 && calendarDay.shiftType=='SHIFT_THREE'" type="warning" icon="el-icon-sunny">{{ teamShift.teamName }}</el-button>
<el-button v-if="teamShift.orderNum ==2 && calendarDay.shiftType=='SHIFT_TWO'" type="info" icon="el-icon-moon">{{ teamShift.teamName }}</el-button>
<el-button v-if="teamShift.orderNum ==3 && calendarDay.shiftType=='SHIFT_THREE'" type="info" icon="el-icon-moon">{{ teamShift.teamName }}</el-button>
</div>
</div>
</el-col>
</el-row>
</div>
</el-row>
</div>
</template>
</el-calendar>
</el-main>
@ -58,8 +66,8 @@ import { listCalendars } from "@/api/mes/cal/calendar";
import UserSingleSelect from "@/components/userSelect/single.vue"
import calendar from '@/utils/calendar';
export default {
name: 'UserView',
dicts:['mes_calendar_type'],
name: 'UserView',
dicts:['mes_calendar_type'],
components :{UserSingleSelect},
data(){
return {
@ -81,15 +89,14 @@ export default {
holidayType: null,
startTime: null,
endTime: null,
},
},
}
},
watch:{
date:{
handler(newVal,oldVal){
console.log(newVal.getFullYear()+'-'+(newVal.getMonth()+1)+'-'+newVal.getDate());
this.teamShiftQueryParams.date = newVal.getFullYear()+'-'+(newVal.getMonth()+1)+'-'+newVal.getDate();
this.loading = true;
this.teamShiftQueryParams.date = newVal.getFullYear()+'-'+(newVal.getMonth()+1)+'-'+newVal.getDate();
this.loading = true;
listCalendars(this.teamShiftQueryParams).then(response =>{
this.calendarDayList = response.data;
this.loading = false;
@ -101,12 +108,15 @@ export default {
this.getList();
},
methods:{
changeDate(val) {
this.date = val
},
/** 查询节假日设置列表 */
getList() {
this.loading = true;
this.loading = true;
this.holidayList =[];
this.workdayList =[];
let that = this;
let that = this;
listCalholiday(this.queryParams).then(response => {
if(response.data !=null){
response.data.forEach(theDay => {
@ -115,7 +125,7 @@ export default {
}else{
that.workdayList.push(theDay.theDay);
}
});
});
this.loading = false;
}
});
@ -125,9 +135,9 @@ export default {
this.$refs.userSelect.showFlag = true;
},
//
onUserSelected(row){
onUserSelected(row){
this.form.nickName = row.nickName;
this.loading = true;
this.loading = true;
this.teamShiftQueryParams.userId = row.userId;
this.teamShiftQueryParams.date = this.date;
listCalendars(this.teamShiftQueryParams).then(response =>{
@ -138,20 +148,20 @@ export default {
isFestival(slotDate, slotData) {
let solarDayArr = slotData.day.split('-');
let lunarDay = calendar.solar2lunar(solarDayArr[0], solarDayArr[1], solarDayArr[2])
// \\
let festAndTerm = [];
festAndTerm.push(lunarDay.festival == null ? '' : ' ' + lunarDay.festival)
festAndTerm.push(lunarDay.lunarFestival == null ? '' : '' + lunarDay.lunarFestival)
festAndTerm.push(lunarDay.Term == null ? '' : '' + lunarDay.Term)
festAndTerm = festAndTerm.join('')
return festAndTerm != ''
},
solarDate2lunar(solarDate) {
var solar = solarDate.split('-')
var lunar = calendar.solar2lunar(solar[0], solar[1], solar[2])
var lunar = calendar.solar2lunar(solar[0], solar[1], solar[2])
let lunarMD = lunar.IMonthCn + lunar.IDayCn;
// \\
let festAndTerm = [];
@ -159,9 +169,9 @@ export default {
festAndTerm.push(lunar.lunarFestival == null ? '' : '' + lunar.lunarFestival)
festAndTerm.push(lunar.Term == null ? '' : '' + lunar.Term)
festAndTerm = festAndTerm.join('')
return festAndTerm == '' ? lunarMD : festAndTerm
}
}
}
@ -218,4 +228,4 @@ export default {
.el-calendar-table .holiday {
background-color: #88E325;
}
</style>
</style>

View File

@ -2,21 +2,31 @@
<div class="app-container">
<el-container>
<el-aside width="150px">
<el-radio-group v-model="selectedType" class="x-fillitem el-group-list" @change="onSelected">
<el-radio-group v-model="selectedType" class="x-fillitem el-group-list" @change="onSelected">
<el-radio-button
v-for="item in teamList"
:key="item.teamId"
:label="item.teamId"
>{{item.teamName}}</el-radio-button>
>{{item.teamName}}</el-radio-button>
</el-radio-group>
</el-aside>
<el-main>
<el-form :model="form" size="small" :inline="true" label-width="100px">
<el-form-item label="日期" prop="date">
<el-date-picker
v-model="form.date"
type="date"
@change="changeDate"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-form>
<el-calendar v-loading="loading" v-model="date">
<template slot="dateCell" slot-scope="{date, data }">
<div>
<el-row>
<el-col :span="6">
<div class="solar">
<div class="solar">
{{ data.day.split('-')[2] }}
</div>
</el-col>
@ -35,10 +45,10 @@
<el-button v-if="teamShift.orderNum ==2 && calendarDay.shiftType=='SHIFT_THREE'" type="warning" icon="el-icon-sunny">{{ teamShift.teamName }}</el-button>
<el-button v-if="teamShift.orderNum ==2 && calendarDay.shiftType=='SHIFT_TWO'" type="info" icon="el-icon-moon">{{ teamShift.teamName }}</el-button>
<el-button v-if="teamShift.orderNum ==3 && calendarDay.shiftType=='SHIFT_THREE'" type="info" icon="el-icon-moon">{{ teamShift.teamName }}</el-button>
</div>
</div>
</el-col>
</el-row>
</div>
</div>
</template>
</el-calendar>
</el-main>
@ -52,10 +62,11 @@ import { listCalholiday } from "@/api/mes/cal/calholiday";
import { listCalendars } from "@/api/mes/cal/calendar";
import calendar from '@/utils/calendar';
export default {
name: 'TeamView',
dicts:['mes_calendar_type'],
name: 'TeamView',
dicts:['mes_calendar_type'],
data(){
return {
form: {},
//
loading: true,
date: new Date(),
@ -73,15 +84,15 @@ export default {
holidayType: null,
startTime: null,
endTime: null,
},
},
}
},
watch:{
date:{
handler(newVal,oldVal){
console.log(newVal.getFullYear()+'-'+(newVal.getMonth()+1)+'-'+newVal.getDate());
this.teamShiftQueryParams.date = newVal.getFullYear()+'-'+(newVal.getMonth()+1)+'-'+newVal.getDate();
this.loading = true;
this.teamShiftQueryParams.date = newVal.getFullYear()+'-'+(newVal.getMonth()+1)+'-'+newVal.getDate();
this.loading = true;
listCalendars(this.teamShiftQueryParams).then(response =>{
this.calendarDayList = response.data;
this.loading = false;
@ -94,6 +105,9 @@ export default {
this.getTeams();
},
methods:{
changeDate(val) {
this.date = val
},
getTeams(){
listAllTeam().then(response =>{
this.teamList = response.data;
@ -101,10 +115,10 @@ export default {
},
/** 查询节假日设置列表 */
getList() {
this.loading = true;
this.loading = true;
this.holidayList =[];
this.workdayList =[];
let that = this;
let that = this;
listCalholiday(this.queryParams).then(response => {
if(response.data !=null){
response.data.forEach(theDay => {
@ -113,14 +127,14 @@ export default {
}else{
that.workdayList.push(theDay.theDay);
}
});
});
this.loading = false;
}
});
},
//
onSelected(teamId){
this.loading = true;
this.loading = true;
this.teamShiftQueryParams.teamId = teamId;
this.teamShiftQueryParams.date = this.date;
listCalendars(this.teamShiftQueryParams).then(response =>{
@ -131,20 +145,20 @@ export default {
isFestival(slotDate, slotData) {
let solarDayArr = slotData.day.split('-');
let lunarDay = calendar.solar2lunar(solarDayArr[0], solarDayArr[1], solarDayArr[2])
// \\
let festAndTerm = [];
festAndTerm.push(lunarDay.festival == null ? '' : ' ' + lunarDay.festival)
festAndTerm.push(lunarDay.lunarFestival == null ? '' : '' + lunarDay.lunarFestival)
festAndTerm.push(lunarDay.Term == null ? '' : '' + lunarDay.Term)
festAndTerm = festAndTerm.join('')
return festAndTerm != ''
},
solarDate2lunar(solarDate) {
var solar = solarDate.split('-')
var lunar = calendar.solar2lunar(solar[0], solar[1], solar[2])
var lunar = calendar.solar2lunar(solar[0], solar[1], solar[2])
let lunarMD = lunar.IMonthCn + lunar.IDayCn;
// \\
let festAndTerm = [];
@ -152,9 +166,9 @@ export default {
festAndTerm.push(lunar.lunarFestival == null ? '' : '' + lunar.lunarFestival)
festAndTerm.push(lunar.Term == null ? '' : '' + lunar.Term)
festAndTerm = festAndTerm.join('')
return festAndTerm == '' ? lunarMD : festAndTerm
}
}
}
@ -211,4 +225,4 @@ export default {
.el-calendar-table .holiday {
background-color: #88E325;
}
</style>
</style>

View File

@ -85,10 +85,10 @@
</el-row>
<el-table v-loading="loading" :data="calplanList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="计划编号" align="center" prop="planCode" >
<template slot-scope="scope">
<el-button
<el-button
type="text"
@click="handleView(scope.row)"
v-hasPermi="['mes:cal:calplan:query']"
@ -132,22 +132,18 @@
size="mini"
type="text"
icon="el-icon-edit"
v-if="scope.row.status =='PREPARE'"
@click="handleUpdate(scope.row)"
v-hasPermi="['mes:cal:calplan:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
v-if="scope.row.status =='PREPARE'"
@click="handleDelete(scope.row)"
v-hasPermi="['mes:cal:calplan:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
@ -170,7 +166,7 @@
<el-switch v-model="autoGenFlag"
active-color="#13ce66"
active-text="自动生成"
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'" >
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'" >
</el-switch>
</el-form-item>
</el-col>
@ -262,7 +258,6 @@
</el-tab-pane>
</el-tabs>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType =='view' || form.status !='PREPARE'">返回</el-button>
<el-button type="primary" @click="submitForm" v-if="form.status =='PREPARE' && optType !='view' "> </el-button>
<el-button type="success" @click="handleFinish" v-if="form.status =='PREPARE' && optType !='view' && form.planId !=null">完成</el-button>
<el-button @click="cancel"> </el-button>
@ -321,10 +316,12 @@ export default {
//
rules: {
planCode: [
{ required: true, message: "计划编号不能为空", trigger: "blur" }
{ required: true, message: "计划编号不能为空", trigger: "blur" },
{ max: 64, message: "字段过长", trigger: "blur" }
],
planName: [
{ required: true, message: "计划名称不能为空", trigger: "blur" }
{ required: true, message: "计划名称不能为空", trigger: "blur" },
{ max: 100, message: "字段过长", trigger: "blur" }
],
calendarType:[
{ required: true, message: "请选择班组类型", trigger: "blur" }
@ -335,6 +332,9 @@ export default {
endDate: [
{ required: true, message: "结束日期不能为空", trigger: "blur" }
],
remark: [
{ max: 250, message: '长度必须小于250个字符', trigger: 'blur' }
]
}
};
},
@ -427,7 +427,7 @@ export default {
});
},
/** 提交按钮 */
submitForm() {
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.planId != null) {

View File

@ -21,20 +21,20 @@
v-hasPermi="['mes:cal:calplan:edit']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<TeamSelect ref="teamSelect" @onSelected="onTeamSelected"></TeamSelect>
</el-table-column>
</el-table>
<TeamSelect ref="teamSelect" @onSelected="onTeamSelected"></TeamSelect>
</el-card>
</el-col>
<el-col :span="12">
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>成员</span>
<span>成员</span>
</div>
<el-table v-loading="loading" :data="teammemberList">
<el-table-column label="用户名" align="center" prop="userName" />
<el-table-column label="用户昵称" align="center" prop="nickName" />
<el-table-column label="电话" align="center" prop="tel" />
<el-table-column label="电话" align="center" prop="tel" />
</el-table>
</el-card>
</el-col>
@ -44,7 +44,7 @@
<script>
import { listPlanteam, delPlanteam, addPlanteam } from "@/api/mes/cal/planteam";
import { listTeammember } from "@/api/mes/cal/teammember";
import {getListByTeamId, listTeammember} from "@/api/mes/cal/teammember";
import TeamSelect from "@/components/calTeamSelect/multi.vue"
export default {
name:"PlanTeam",
@ -75,23 +75,28 @@ export default {
}
},
created() {
this.getTeamList();
this.getTeamList();
},
methods:{
getTeamList(){
this.loading = true;
listPlanteam(this.queryParams).then(response => {
this.teamList = response.rows;
this.teamList = response.rows;
this.loading = false;
let ids = []
this.teamList.forEach(irem => {
ids.push(irem.teamId)
})
getListByTeamId(ids.join(",")).then(res => {
this.teammemberList = res.data;
this.loading = false;
});
});
},
getMemberList(id){
var param = {
teamId:id
}
this.loading = true;
listTeammember(param).then(response => {
this.teammemberList = response.rows;
getListByTeamId(id).then(res => {
this.teammemberList = res.data;
this.loading = false;
});
},
@ -110,7 +115,7 @@ export default {
this.form.planId = this.planId;
this.form.calendarType = this.calendarType;
addPlanteam(this.form).then(response => {
this.getTeamList();
this.getTeamList();
});
});
},
@ -130,4 +135,4 @@ export default {
<style>
</style>
</style>

View File

@ -83,7 +83,7 @@
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="班组编号" align="center" prop="teamCode" >
<template slot-scope="scope">
<el-button
<el-button
type="text"
@click="handleView(scope.row)"
v-hasPermi="['mes:cal:team:query']"
@ -116,7 +116,7 @@
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
@ -139,7 +139,7 @@
<el-switch v-model="autoGenFlag"
active-color="#13ce66"
active-text="自动生成"
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'" >
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'" >
</el-switch>
</el-form-item>
</el-col>
@ -166,14 +166,13 @@
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-form>
<el-divider v-if="form.teamId !=null" content-position="center">项目组成员</el-divider>
<Teammember v-if="form.teamId !=null" :optType="optType" :teamId="form.teamId"></Teammember>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType =='view'">返回</el-button>
<el-button type="primary" @click="submitForm" v-else> </el-button>
<el-button type="primary" @click="submitForm" v-if="optType !='view'"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
@ -224,13 +223,18 @@ export default {
//
rules: {
teamCode: [
{ required: true, message: "班组编号不能为空", trigger: "blur" }
{ required: true, message: "班组编号不能为空", trigger: "blur" },
{ max: 64, message: "字段过长", trigger: "blur" }
],
teamName: [
{ required: true, message: "班组名称不能为空", trigger: "blur" }
{ required: true, message: "班组名称不能为空", trigger: "blur" },
{ max: 100, message: "字段过长", trigger: "blur" }
],
calendarType:[
{ required: true, message: "清选择班组类型", trigger: "blur" }
],
remark: [
{ max: 250, message: '长度必须小于250个字符', trigger: 'blur' }
]
}
};

View File

@ -0,0 +1,611 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="100px"
>
<el-form-item label="采购订单编号" prop="orderNo">
<el-input
v-model="queryParams.orderNo"
placeholder="请输入采购订单编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="采购订单标题" prop="title">
<el-input
v-model="queryParams.title"
placeholder="请输入采购订单标题"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="供应商名称" prop="vendorName">
<el-input
v-model="queryParams.vendorName"
placeholder="请输入供应商名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="物料名称" prop="materialName">
<el-input
v-model="queryParams.materialName"
placeholder="请输入物料名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="付款方式" prop="paymentTerms">
<el-input
v-model="queryParams.paymentTerms"
placeholder="请输入付款方式"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="预期交货日期" prop="expectedDeliveryDate">
<el-date-picker
clearable
v-model="queryParams.expectedDeliveryDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择预期交货日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="实际交货日期" prop="actualDeliveryDate">
<el-date-picker
clearable
v-model="queryParams.actualDeliveryDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择实际交货日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="发起日期" prop="initiateDate">
<el-date-picker
clearable
v-model="queryParams.initiateDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择发起日期"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['md:order:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['md:order:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['md:order:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['md:order:export']"
>导出</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="orderList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column
label="采购订单编号"
align="center"
width="120"
prop="orderNo"
/>
<el-table-column
label="采购订单标题"
align="center"
width="120"
prop="title"
/>
<el-table-column
label="供应商名称"
align="center"
width="120"
prop="vendorName"
/>
<el-table-column
label="供应商联系人"
align="center"
prop="vendorContact"
width="120"
/>
<el-table-column
label="供应商联系电话"
align="center"
prop="vendorPhone"
width="120"
/>
<el-table-column label="物料名称" align="center" prop="materialName" />
<el-table-column label="物料规格" align="center" prop="specs" />
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="采购数量" align="center" prop="quantity" />
<el-table-column label="单价" align="center" prop="unitPrice" />
<el-table-column label="订货金额" align="center" prop="orderAmount" />
<el-table-column label="税金" align="center" prop="tax" />
<el-table-column label="总金额" align="center" prop="totalAmount" />
<el-table-column label="付款方式" align="center" prop="paymentTerms" />
<el-table-column label="交货地址" align="center" prop="deliveryAddress" />
<el-table-column
label="预期交货日期"
align="center"
prop="expectedDeliveryDate"
width="180"
>
<template slot-scope="scope">
<span>{{
parseTime(scope.row.expectedDeliveryDate, "{y}-{m}-{d}")
}}</span>
</template>
</el-table-column>
<el-table-column
label="实际交货日期"
align="center"
prop="actualDeliveryDate"
width="180"
>
<template slot-scope="scope">
<span>{{
parseTime(scope.row.actualDeliveryDate, "{y}-{m}-{d}")
}}</span>
</template>
</el-table-column>
<el-table-column label="运输方式" align="center" prop="shippingMethod" />
<el-table-column label="运输费用" align="center" prop="shippingCost" />
<el-table-column
label="发起日期"
align="center"
prop="initiateDate"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.initiateDate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column
label="审批日期"
align="center"
prop="approvalDate"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.approvalDate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remarks" />
<el-table-column
label="记录创建时间"
align="center"
prop="createdDate"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createdDate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
width="100px"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['md:order:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['md:order:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改采购订单对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form-item label="采购订单编号" prop="orderNo">
<el-input v-model="form.orderNo" placeholder="请输入采购订单编号" />
</el-form-item>
<el-form-item label="采购订单标题" prop="title">
<el-input v-model="form.title" placeholder="请输入采购订单标题" />
</el-form-item>
<el-form-item label="供应商名称" prop="vendorName">
<el-input v-model="form.vendorName" placeholder="请输入供应商名称" />
</el-form-item>
<el-form-item label="供应商联系人" prop="vendorContact">
<el-input
v-model="form.vendorContact"
placeholder="请输入供应商联系人"
/>
</el-form-item>
<el-form-item label="供应商联系电话" prop="vendorPhone">
<el-input
v-model="form.vendorPhone"
placeholder="请输入供应商联系电话"
/>
</el-form-item>
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="form.materialName" placeholder="请输入物料名称" />
</el-form-item>
<el-form-item label="物料规格" prop="specs">
<el-input v-model="form.specs" placeholder="请输入物料规格" />
</el-form-item>
<el-form-item label="单位" prop="unit">
<el-input v-model="form.unit" placeholder="请输入单位" />
</el-form-item>
<el-form-item label="采购数量" prop="quantity">
<el-input v-model="form.quantity" placeholder="请输入采购数量" />
</el-form-item>
<el-form-item label="单价" prop="unitPrice">
<el-input v-model="form.unitPrice" placeholder="请输入单价" />
</el-form-item>
<el-form-item label="订货金额" prop="orderAmount">
<el-input v-model="form.orderAmount" placeholder="请输入订货金额" />
</el-form-item>
<el-form-item label="税金" prop="tax">
<el-input v-model="form.tax" placeholder="请输入税金" />
</el-form-item>
<el-form-item label="总金额" prop="totalAmount">
<el-input v-model="form.totalAmount" placeholder="请输入总金额" />
</el-form-item>
<el-form-item label="付款方式" prop="paymentTerms">
<el-input v-model="form.paymentTerms" placeholder="请输入付款方式" />
</el-form-item>
<el-form-item label="交货地址" prop="deliveryAddress">
<el-input
v-model="form.deliveryAddress"
placeholder="请输入交货地址"
/>
</el-form-item>
<el-form-item label="预期交货日期" prop="expectedDeliveryDate">
<el-date-picker
clearable
v-model="form.expectedDeliveryDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择预期交货日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="实际交货日期" prop="actualDeliveryDate">
<el-date-picker
clearable
v-model="form.actualDeliveryDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择实际交货日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="运输方式" prop="shippingMethod">
<el-input
v-model="form.shippingMethod"
placeholder="请输入运输方式"
/>
</el-form-item>
<el-form-item label="运输费用" prop="shippingCost">
<el-input v-model="form.shippingCost" placeholder="请输入运输费用" />
</el-form-item>
<el-form-item label="发起日期" prop="initiateDate">
<el-date-picker
clearable
v-model="form.initiateDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择发起日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="审批日期" prop="approvalDate">
<el-date-picker
clearable
v-model="form.approvalDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择审批日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="备注" prop="remarks">
<el-input
v-model="form.remarks"
type="textarea"
placeholder="请输入内容"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listOrder,
getOrder,
delOrder,
addOrder,
updateOrder,
} from "@/api/mes/cg/order";
export default {
name: "Order",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
orderList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
orderNo: null,
title: null,
vendorId: null,
vendorName: null,
vendorContact: null,
vendorPhone: null,
materialId: null,
materialName: null,
specs: null,
unit: null,
quantity: null,
unitPrice: null,
orderAmount: null,
tax: null,
totalAmount: null,
paymentTerms: null,
paymentStatus: null,
deliveryAddress: null,
expectedDeliveryDate: null,
actualDeliveryDate: null,
shippingMethod: null,
shippingCost: null,
status: null,
initiatorId: null,
initiateDate: null,
approverId: null,
approvalDate: null,
remarks: null,
createdDate: null,
},
//
form: {},
//
rules: {},
};
},
created() {
this.getList();
},
methods: {
/** 查询采购订单列表 */
getList() {
this.loading = true;
listOrder(this.queryParams).then((response) => {
this.orderList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
orderNo: null,
title: null,
vendorId: null,
vendorName: null,
vendorContact: null,
vendorPhone: null,
materialId: null,
materialName: null,
specs: null,
unit: null,
quantity: null,
unitPrice: null,
orderAmount: null,
tax: null,
totalAmount: null,
paymentTerms: null,
paymentStatus: "0",
deliveryAddress: null,
expectedDeliveryDate: null,
actualDeliveryDate: null,
shippingMethod: null,
shippingCost: null,
status: "0",
initiatorId: null,
initiateDate: null,
approverId: null,
approvalDate: null,
remarks: null,
createdDate: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加采购订单";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getOrder(id).then((response) => {
this.form = response.data;
this.open = true;
this.title = "修改采购订单";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
updateOrder(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addOrder(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal
.confirm('是否确认删除采购订单编号为"' + ids + '"的数据项?')
.then(function () {
return delOrder(ids);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download(
"md/order/export",
{
...this.queryParams,
},
`order_${new Date().getTime()}.xlsx`
);
},
},
};
</script>

View File

@ -0,0 +1,551 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="100px"
>
<el-form-item label="采购计划编号" prop="planNo">
<el-input
v-model="queryParams.planNo"
placeholder="请输入采购计划编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="采购计划标题" prop="title">
<el-input
v-model="queryParams.title"
placeholder="请输入采购计划标题"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="发起人姓名" prop="initiatorName">
<el-input
v-model="queryParams.initiatorName"
placeholder="请输入发起人姓名"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="发起时间" prop="initiateDate">
<el-date-picker
clearable
v-model="queryParams.initiateDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择发起时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="物料名称" prop="materialName">
<el-input
v-model="queryParams.materialName"
placeholder="请输入物料名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="供应商名称" prop="vendorName">
<el-input
v-model="queryParams.vendorName"
placeholder="请输入供应商名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="交货时间" prop="deliveryTime">
<el-date-picker
clearable
v-model="queryParams.deliveryTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择交货时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="付款方式" prop="paymentTerms">
<el-input
v-model="queryParams.paymentTerms"
placeholder="请输入付款方式"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="审批时间" prop="approvalDate">
<el-date-picker
clearable
v-model="queryParams.approvalDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择审批时间"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['md:plan:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['md:plan:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['md:plan:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['md:plan:export']"
>导出</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="planList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column
label="采购计划编号"
align="center"
width="150"
prop="planNo"
/>
<el-table-column
label="采购计划标题"
align="center"
width="150"
prop="title"
/>
<el-table-column
label="发起人姓名"
align="center"
width="150"
prop="initiatorName"
/>
<el-table-column
label="发起时间"
align="center"
prop="initiateDate"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.initiateDate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="物料名称" align="center" prop="materialName" />
<el-table-column label="采购数量" align="center" prop="quantity" />
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="规格" align="center" prop="specs" />
<el-table-column
label="供应商名称"
align="center"
width="150"
prop="vendorName"
/>
<el-table-column label="单价" align="center" prop="unitPrice" />
<el-table-column label="总价" align="center" prop="totalPrice" />
<el-table-column
label="交货时间"
align="center"
prop="deliveryTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.deliveryTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="付款方式" align="center" prop="paymentTerms" />
<el-table-column label="预算金额" align="center" prop="budgetAmount" />
<el-table-column label="实际金额" align="center" prop="actualAmount" />
<el-table-column
label="审批人姓名"
align="center"
width="150"
prop="approverName"
/>
<el-table-column
label="审批时间"
align="center"
prop="approvalDate"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.approvalDate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remarks" />
<el-table-column
label="操作"
align="center"
width="100px"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['md:plan:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['md:plan:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改采购计划对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="采购计划编号" prop="planNo">
<el-input v-model="form.planNo" placeholder="请输入采购计划编号" />
</el-form-item>
<el-form-item label="采购计划标题" prop="title">
<el-input v-model="form.title" placeholder="请输入采购计划标题" />
</el-form-item>
<el-form-item label="发起人姓名" prop="initiatorName">
<el-input
v-model="form.initiatorName"
placeholder="请输入发起人姓名"
/>
</el-form-item>
<el-form-item label="发起时间" prop="initiateDate">
<el-date-picker
clearable
v-model="form.initiateDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择发起时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="form.materialName" placeholder="请输入物料名称" />
</el-form-item>
<el-form-item label="采购数量" prop="quantity">
<el-input v-model="form.quantity" placeholder="请输入采购数量" />
</el-form-item>
<el-form-item label="单位" prop="unit">
<el-input v-model="form.unit" placeholder="请输入单位" />
</el-form-item>
<el-form-item label="规格" prop="specs">
<el-input v-model="form.specs" placeholder="请输入规格" />
</el-form-item>
<el-form-item label="供应商名称" prop="vendorName">
<el-input v-model="form.vendorName" placeholder="请输入供应商名称" />
</el-form-item>
<el-form-item label="单价" prop="unitPrice">
<el-input v-model="form.unitPrice" placeholder="请输入单价" />
</el-form-item>
<el-form-item label="总价" prop="totalPrice">
<el-input v-model="form.totalPrice" placeholder="请输入总价" />
</el-form-item>
<el-form-item label="交货时间" prop="deliveryTime">
<el-date-picker
clearable
v-model="form.deliveryTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择交货时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="付款方式" prop="paymentTerms">
<el-input v-model="form.paymentTerms" placeholder="请输入付款方式" />
</el-form-item>
<el-form-item label="预算金额" prop="budgetAmount">
<el-input v-model="form.budgetAmount" placeholder="请输入预算金额" />
</el-form-item>
<el-form-item label="实际金额" prop="actualAmount">
<el-input v-model="form.actualAmount" placeholder="请输入实际金额" />
</el-form-item>
<el-form-item label="审批人姓名" prop="approverName">
<el-input
v-model="form.approverName"
placeholder="请输入审批人姓名"
/>
</el-form-item>
<el-form-item label="审批时间" prop="approvalDate">
<el-date-picker
clearable
v-model="form.approvalDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择审批时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="备注" prop="remarks">
<el-input v-model="form.remarks" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listPlan,
getPlan,
delPlan,
addPlan,
updatePlan,
} from "@/api/mes/cg/plan";
export default {
name: "Plan",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
planList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
planNo: null,
title: null,
initiatorId: null,
initiatorName: null,
initiateDate: null,
materialId: null,
materialName: null,
quantity: null,
unit: null,
specs: null,
vendorId: null,
vendorName: null,
unitPrice: null,
totalPrice: null,
deliveryTime: null,
paymentTerms: null,
budgetAmount: null,
actualAmount: null,
approverId: null,
approverName: null,
approvalDate: null,
status: null,
remarks: null,
},
//
form: {},
//
rules: {},
};
},
created() {
this.getList();
},
methods: {
/** 查询采购计划列表 */
getList() {
this.loading = true;
listPlan(this.queryParams).then((response) => {
this.planList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
planNo: null,
title: null,
initiatorId: null,
initiatorName: null,
initiateDate: null,
materialId: null,
materialName: null,
quantity: null,
unit: null,
specs: null,
vendorId: null,
vendorName: null,
unitPrice: null,
totalPrice: null,
deliveryTime: null,
paymentTerms: null,
budgetAmount: null,
actualAmount: null,
approverId: null,
approverName: null,
approvalDate: null,
status: "0",
remarks: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加采购计划";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getPlan(id).then((response) => {
this.form = response.data;
this.open = true;
this.title = "修改采购计划";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
updatePlan(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addPlan(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal
.confirm('是否确认删除采购计划编号为"' + ids + '"的数据项?')
.then(function () {
return delPlan(ids);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download(
"md/plan/export",
{
...this.queryParams,
},
`plan_${new Date().getTime()}.xlsx`
);
},
},
};
</script>

View File

@ -0,0 +1,471 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="100px"
>
<el-form-item label="询报比价编号" prop="inquiryNo">
<el-input
v-model="queryParams.inquiryNo"
placeholder="请输入询报比价编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="询报比价标题" prop="title">
<el-input
v-model="queryParams.title"
placeholder="请输入询报比价标题"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="发起人姓名" prop="initiatorName">
<el-input
v-model="queryParams.initiatorName"
placeholder="请输入发起人姓名"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="发起时间" prop="initiateDate">
<el-date-picker
clearable
v-model="queryParams.initiateDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择发起时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="材料名称" prop="materialName">
<el-input
v-model="queryParams.materialName"
placeholder="请输入材料名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="供应商名称" prop="vendorName">
<el-input
v-model="queryParams.vendorName"
placeholder="请输入供应商名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label=" 交货时间" prop="deliveryTime">
<el-date-picker
clearable
v-model="queryParams.deliveryTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择 交货时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="付款方式" prop="paymentTerms">
<el-input
v-model="queryParams.paymentTerms"
placeholder="请输入付款方式"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['md:quotation:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['md:quotation:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['md:quotation:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['md:quotation:export']"
>导出</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="quotationList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="询报比价编号" align="center" prop="inquiryNo" />
<el-table-column label="询报比价标题" align="center" prop="title" />
<el-table-column label="发起人姓名" align="center" prop="initiatorName" />
<el-table-column
label="发起时间"
align="center"
prop="initiateDate"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.initiateDate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="材料名称" align="center" prop="materialName" />
<el-table-column label=" 需求数量" align="center" prop="quantity" />
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="规格" align="center" prop="specs" />
<el-table-column label="供应商名称" align="center" prop="vendorName" />
<el-table-column label="单价" align="center" prop="unitPrice" />
<el-table-column label="总价" align="center" prop="totalPrice" />
<el-table-column
label=" 交货时间"
align="center"
prop="deliveryTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.deliveryTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="付款方式" align="center" prop="paymentTerms" />
<el-table-column label="备注" align="center" prop="remarks" />
<el-table-column
label="操作"
align="center"
width="100px"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['md:quotation:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['md:quotation:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改询报比价对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="询报比价编号" prop="inquiryNo">
<el-input v-model="form.inquiryNo" placeholder="请输入询报比价编号" />
</el-form-item>
<el-form-item label="询报比价标题" prop="title">
<el-input v-model="form.title" placeholder="请输入询报比价标题" />
</el-form-item>
<el-form-item label="发起人姓名" prop="initiatorName">
<el-input
v-model="form.initiatorName"
placeholder="请输入发起人姓名"
/>
</el-form-item>
<el-form-item label="发起时间" prop="initiateDate">
<el-date-picker
clearable
v-model="form.initiateDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择发起时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="材料名称" prop="materialName">
<el-input v-model="form.materialName" placeholder="请输入材料名称" />
</el-form-item>
<el-form-item label=" 需求数量" prop="quantity">
<el-input v-model="form.quantity" placeholder="请输入 需求数量" />
</el-form-item>
<el-form-item label="单位" prop="unit">
<el-input v-model="form.unit" placeholder="请输入单位" />
</el-form-item>
<el-form-item label="规格" prop="specs">
<el-input v-model="form.specs" placeholder="请输入规格" />
</el-form-item>
<el-form-item label="供应商名称" prop="vendorName">
<el-input v-model="form.vendorName" placeholder="请输入供应商名称" />
</el-form-item>
<el-form-item label="单价" prop="unitPrice">
<el-input v-model="form.unitPrice" placeholder="请输入单价" />
</el-form-item>
<el-form-item label="总价" prop="totalPrice">
<el-input v-model="form.totalPrice" placeholder="请输入总价" />
</el-form-item>
<el-form-item label=" 交货时间" prop="deliveryTime">
<el-date-picker
clearable
v-model="form.deliveryTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择 交货时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="付款方式" prop="paymentTerms">
<el-input v-model="form.paymentTerms" placeholder="请输入付款方式" />
</el-form-item>
<el-form-item label="备注" prop="remarks">
<el-input v-model="form.remarks" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listQuotation,
getQuotation,
delQuotation,
addQuotation,
updateQuotation,
} from "@/api/mes/cg/quotation";
export default {
name: "Quotation",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
quotationList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
inquiryNo: null,
title: null,
initiatorId: null,
initiatorName: null,
initiateDate: null,
materialId: null,
materialName: null,
quantity: null,
unit: null,
specs: null,
vendorId: null,
vendorName: null,
unitPrice: null,
totalPrice: null,
deliveryTime: null,
paymentTerms: null,
status: null,
remarks: null,
},
//
form: {},
//
rules: {},
};
},
created() {
this.getList();
},
methods: {
/** 查询询报比价列表 */
getList() {
this.loading = true;
listQuotation(this.queryParams).then((response) => {
this.quotationList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
inquiryNo: null,
title: null,
initiatorId: null,
initiatorName: null,
initiateDate: null,
materialId: null,
materialName: null,
quantity: null,
unit: null,
specs: null,
vendorId: null,
vendorName: null,
unitPrice: null,
totalPrice: null,
deliveryTime: null,
paymentTerms: null,
status: "0",
remarks: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加询报比价";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getQuotation(id).then((response) => {
this.form = response.data;
this.open = true;
this.title = "修改询报比价";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
updateQuotation(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addQuotation(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal
.confirm('是否确认删除询报比价编号为"' + ids + '"的数据项?')
.then(function () {
return delQuotation(ids);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download(
"md/quotation/export",
{
...this.queryParams,
},
`quotation_${new Date().getTime()}.xlsx`
);
},
},
};
</script>

View File

@ -99,7 +99,7 @@
v-hasPermi="['mes:dv:checkplan:query']"
>{{scope.row.planCode}}</el-button>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="计划名称" align="center" width="200px" prop="planName" />
<el-table-column label="计划类型" align="center" width="120px" prop="planType">
<template slot-scope="scope">
@ -116,12 +116,12 @@
<span>{{ parseTime(scope.row.endDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="频率" align="center" prop="cycleType">
<el-table-column label="频率" align="center" prop="cycleType">
<template slot-scope="scope">
{{scope.row.cycleCount}}
<dict-tag :options="dict.type.mes_cycle_type" :value="scope.row.cycleType"/>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :options="dict.type.mes_order_status" :value="scope.row.status"/>
@ -134,29 +134,23 @@
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-if="scope.row.status =='PREPARE'"
v-hasPermi="['mes:dv:checkplan:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-if="scope.row.status =='PREPARE'"
v-hasPermi="['mes:dv:checkplan:remove']"
>删除</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleUpdate(scope.row)"
v-if="scope.row.status =='FINISHED'"
v-hasPermi="['mes:dv:checkplan:edit']"
>停用</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
@ -179,7 +173,7 @@
<el-switch v-model="autoGenFlag"
active-color="#13ce66"
active-text="自动生成"
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'">
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'">
</el-switch>
</el-form-item>
</el-col>
@ -204,7 +198,7 @@
</el-col>
<el-col :span="8">
<el-form-item label="频率" prop="cycleCount">
<el-input-number :min="1" :step="1" v-model="form.cycleCount" placeholder="请输入次数" />
<el-input-number :min="1" :max="99999999" :step="1" v-model="form.cycleCount" placeholder="请输入次数" />
</el-form-item>
</el-col>
<el-col :span="4" >
@ -262,16 +256,15 @@
</el-col>
</el-row>
</el-form>
<el-tabs type="border-card" v-if="form.planId != null">
<el-tab-pane label="设备清单">
<Checkmachinery ref="machinerylist" :optType="optType" :planId="form.planId" ></Checkmachinery>
<el-tabs type="border-card" v-if="form.planId != null">
<el-tab-pane label="设备清单">
<Checkmachinery ref="machinerylist" :optType="optType" :planId="form.planId" ></Checkmachinery>
</el-tab-pane>
<el-tab-pane :label="form.planType=='CHECK'?'点检项目':'保养项目'">
<Checksubject ref="subjectlist" :optType="optType" :planId="form.planId" ></Checksubject>
</el-tab-pane>
</el-tabs>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType =='view' || form.status !='PREPARE' ">返回</el-button>
<el-button type="primary" @click="submitForm" v-if="form.status =='PREPARE' && optType !='view' ">保存</el-button>
<el-button type="success" @click="handleFinish" v-if="form.status =='PREPARE' && optType !='view' && form.planId !=null">启用</el-button>
<el-button type="success" @click="handleDeFinish" v-if="form.status =='FINISHED' && optType !='view' && form.planId !=null">停用</el-button>
@ -319,7 +312,7 @@ export default {
planCode: null,
planName: null,
startDate: null,
endDate: null,
endDate: null,
cycleType: null,
cycleCount: null,
status: null
@ -329,10 +322,12 @@ export default {
//
rules: {
planCode: [
{ required: true, message: "计划编码不能为空", trigger: "blur" }
{ required: true, message: "计划编码不能为空", trigger: "blur" },
{ max: 64, message: "字段过长", trigger: "blur" }
],
planName: [
{ required: true, message: "计划名称不能为空", trigger: "blur" }
{ required: true, message: "计划名称不能为空", trigger: "blur" },
{ max: 100, message: "字段过长", trigger: "blur" }
],
planType:[
{ required: true, message: "计划类型不能为空", trigger: "blur" }
@ -343,6 +338,9 @@ export default {
cycleCount: [
{ required: true, message: "请输入点检次数", trigger: "blur" }
],
remark: [
{ max: 250, message: '长度必须小于250个字符', trigger: 'blur' }
]
}
};
},
@ -457,7 +455,7 @@ export default {
handleFinish(){
if(this.form.planId != null && this.form.status =='PREPARE'){
this.form.status='FINISHED';
updateCheckplan(this.form).then(response => {
updateCheckplan(this.form).then(response => {
this.$modal.msgSuccess("已启用");
this.open = false;
this.getList();
@ -469,7 +467,7 @@ export default {
handleDeFinish(){
if(this.form.planId != null && this.form.status =='FINISHED'){
this.form.status='PREPARE';
updateCheckplan(this.form).then(response => {
updateCheckplan(this.form).then(response => {
this.$modal.msgSuccess("已停用");
this.open = false;
this.getList();
@ -490,7 +488,7 @@ export default {
},
/** 导出按钮操作 */
handleExport() {
this.download('dv/checkplan/export', {
this.download('mes/dv/checkplan/export', {
...this.queryParams
}, `checkplan_${new Date().getTime()}.xlsx`)
},

View File

@ -29,19 +29,16 @@
<DvsubjectSelect ref="subjectSelect" subjectType="CHECK" @onSelected="onSubjectSelected"></DvsubjectSelect>
<el-table v-loading="loading" :data="checksubjectList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="项目编码" align="center" prop="subjectCode" />
<el-table-column label="项目名称" align="center" prop="subjectName" />
<el-table-column label="项目类型" align="center" prop="subjectType" />
<el-table-column label="项目内容" align="center" width="300px" prop="subjectContent" :show-overflow-tooltip="true"/>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="项目名称" align="center" prop="subjectName" width="150px"/>
<el-table-column label="项目内容" align="center" width="350px" prop="subjectContent" :show-overflow-tooltip="true"/>
<el-table-column label="标准" align="center" width="300px" prop="subjectStandard" :show-overflow-tooltip="true"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column label="操作" align="center" v-if="optType !='view'" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-delete"
v-if="optType !='view'"
@click="handleDelete(scope.row)"
v-hasPermi="['mes:dv:checkplan:remove']"
>删除</el-button>

View File

@ -0,0 +1,430 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="计划编码" prop="planCode">
<el-input
v-model="queryParams.planCode"
placeholder="请输入计划编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="计划名称" prop="planName">
<el-input
v-model="queryParams.planName"
placeholder="请输入计划名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="设备编码" prop="machineryCode">
<el-input
v-model="queryParams.machineryCode"
placeholder="请输入设备编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="设备名称" prop="machineryName">
<el-input
v-model="queryParams.machineryName"
placeholder="请输入设备名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="点检时间" prop="checkTime">
<el-date-picker clearable
v-model="queryParams.checkTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择点检时间">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['mes:dv:checkrecord:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['mes:dv:checkrecord:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['mes:dv:checkrecord:remove']"
>删除</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="checkrecordList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="设备编码" align="center" prop="machineryCode" >
<template slot-scope="scope">
<el-button
type="text"
@click="handleView(scope.row)"
v-hasPermi="['mes:dv:checkrecord:query']"
>{{scope.row.machineryCode}}</el-button>
</template>
</el-table-column>
<el-table-column label="设备名称" align="center" prop="machineryName" />
<el-table-column label="品牌" align="center" prop="machineryBrand" />
<el-table-column label="规格型号" align="center" prop="machinerySpec" />
<el-table-column label="计划编码" align="center" prop="planCode" />
<el-table-column label="计划名称" align="center" prop="planName" />
<el-table-column label="点检人" align="center" prop="nickName" />
<el-table-column label="点检时间" align="center" prop="checkTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.checkTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :options="dict.type.mes_order_status" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改设备点检记录对话框 -->
<el-dialog :title="title" :visible.sync="open" width="960px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="8">
<el-form-item label="设备编码" prop="machineryCode">
<el-input v-model="form.machineryCode" placeholder="请选择设备" >
<el-button slot="append" @click="handleSelectMachinery" icon="el-icon-search"></el-button>
</el-input>
</el-form-item>
<MachinerySelectSingle ref="machinerySelect" @onSelected="onMachineryAdd"></MachinerySelectSingle>
</el-col>
<el-col :span="8">
<el-form-item label="设备名称" prop="machineryName">
<el-input v-model="form.machineryName" readonly="readonly" placeholder="请选择设备" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="品牌" prop="machineryBrand">
<el-input v-model="form.machineryBrand" readonly="readonly" placeholder="请选择设备" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="规格型号" prop="machinerySpec">
<el-input v-model="form.machinerySpec" readonly="readonly" type="textarea" placeholder="请选择设备" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="点检计划" prop="planName">
<el-input v-model="form.planName" placeholder="请选择设备点检计划" >
<el-button slot="append" @click="handleSelectPlan" icon="el-icon-search"></el-button>
</el-input>
</el-form-item>
<CheckplanSelect ref="checkplanSelect" planType="CHECK" @onSelected="onPlanAdd"></CheckplanSelect>
</el-col>
<el-col :span="8">
<el-form-item label="点检人" prop="nickName">
<el-input v-model="form.nickName" placeholder="请选择点检人" >
<el-button slot="append" @click="handleUserSelect" icon="el-icon-search"></el-button>
</el-input>
</el-form-item>
<UserSingleSelect ref="userSelect" @onSelected="onUserSelected"></UserSingleSelect>
</el-col>
<el-col :span="8">
<el-form-item label="点检时间" prop="checkTime">
<el-date-picker clearable
v-model="form.checkTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择点检时间">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-divider v-if="form.recordId !=null" content-position="center">点检项目</el-divider>
<el-card shadow="always" v-if="form.recordId !=null" class="box-card">
<CheckRecordLine ref="checkRecordLine" :optType="optType" :recordId="form.recordId"></CheckRecordLine>
</el-card>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType =='view' || form.status !='PREPARE' "> </el-button>
<el-button type="primary" @click="submitForm" v-if="optType !=='view' && form.status =='PREPARE' " > </el-button>
<el-button type="success" @click="handleFinish" v-if="optType !=='view' && form.status =='PREPARE' " > </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listCheckrecord, getCheckrecord, delCheckrecord, addCheckrecord, updateCheckrecord } from "@/api/mes/dv/checkrecord";
import MachinerySelectSingle from "@/components/machinerySelect/single.vue";
import CheckplanSelect from "@/components/dvplanSelect/index.vue";
import CheckRecordLine from "./line.vue";
import UserSingleSelect from "@/components/userSelect/single.vue"
export default {
name: "Checkrecord",
dicts: ['mes_order_status'],
components:{ MachinerySelectSingle, CheckplanSelect, CheckRecordLine, UserSingleSelect},
data() {
return {
optType: null,
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
checkrecordList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
planId: null, planCode: null, planName: null, planType: null, machineryId: null, machineryCode: null, machineryName: null, machineryBrand: null, machinerySpec: null, checkTime: null, status: null, },
//
form: {},
//
rules: {
machineryId: [
{ required: true, message: "设备ID不能为空", trigger: "blur" }
], machineryCode: [
{ required: true, message: "设备编码不能为空", trigger: "blur" }
],
checkTime: [
{ required: true, message: "点检时间不能为空", trigger: "blur" }
], }
};
},
created() {
this.getList();
},
methods: {
/** 查询设备点检记录列表 */
getList() {
this.loading = true;
listCheckrecord(this.queryParams).then(response => {
this.checkrecordList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
recordId: null, planId: null, planCode: null, planName: null, planType: null, machineryId: null, machineryCode: null, machineryName: null, machineryBrand: null, userId: null, nickName: null, userName: null, machinerySpec: null, checkTime: new Date(), status: "PREPARE", remark: null, attr1: null, attr2: null, attr3: null, attr4: null, createBy: null, createTime: null, updateBy: null, updateTime: null };
this.form.userId= this.$store.state.user.id;
this.form.nickName= this.$store.state.user.nick;
this.form.userName= this.$store.state.user.name;
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.recordId)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加设备点检记录";
this.optType = "add";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const recordId = row.recordId || this.ids
getCheckrecord(recordId).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改设备点检记录";
this.optType = "edit";
});
},
handleView(row) {
this.reset();
const recordId = row.recordId || this.ids
getCheckrecord(recordId).then(response => {
this.form = response.data;
this.open = true;
this.title = "查看设备点检记录";
this.optType = "view";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.recordId != null) {
updateCheckrecord(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addCheckrecord(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
handleFinish(){
if(this.form.recordId != null && this.form.status =='PREPARE'){
this.form.status='FINISHED';
updateCheckrecord(this.form).then(response => {
this.$modal.msgSuccess("已提交");
this.open = false;
this.getList();
},err =>{
this.form.status='PREPARE';
});
}
},
/** 删除按钮操作 */
handleDelete(row) {
const recordIds = row.recordId || this.ids;
this.$modal.confirm('是否确认删除设备点检记录编号为"' + recordIds + '"的数据项?').then(function() {
return delCheckrecord(recordIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
handleSelectMachinery(){
debugger;
this.$refs.machinerySelect.showFlag = true;
},
//
onMachineryAdd(obj){
if(obj !=null && obj != undefined){
this.form.machineryId = obj.machineryId;
this.form.machineryCode = obj.machineryCode;
this.form.machineryName = obj.machineryName;
this.form.machineryBrand = obj.machineryBrand;
this.form.machinerySpec = obj.machinerySpec;
}
},
handleSelectPlan(){
this.$refs.checkplanSelect.showFlag = true;
},
onPlanAdd(obj){
if(obj !=null && obj != undefined){
this.form.planId = obj.planId;
this.form.planCode = obj.planCode;
this.form.planName = obj.planName;
this.form.planType = obj.planType;
}
},
//
handleUserSelect(){
this.$refs.userSelect.showFlag = true;
},
//
onUserSelected(row){
this.form.userId = row.userId;
this.form.nickName = row.nickName;
this.form.userName = row.userName;
},
/** 导出按钮操作 */
handleExport() {
this.download('dv/checkrecord/export', {
...this.queryParams
}, `checkrecord_${new Date().getTime()}.xlsx`)
}
}
};
</script>

View File

@ -0,0 +1,277 @@
<template>
<div class="app-container">
<el-row :gutter="10" v-if="optType !== 'view'" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['dv:checkrecordline:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['dv:checkrecordline:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['dv:checkrecordline:remove']"
>删除</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="checkrecordlineList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="项目名称" align="center" prop="subjectName" />
<el-table-column label="检查内容" align="center" prop="subjectContent" :show-overflow-tooltip="true"/>
<el-table-column label="标准" align="center" prop="subjectStandard" />
<el-table-column label="点检结果" align="center" prop="checkStatus" >
<template slot-scope="scope">
<dict-tag :options="dict.type.dv_cm_result_status" :value="scope.row.checkStatus"/>
</template>
</el-table-column>
<el-table-column label="异常描述" align="center" prop="checkResult" :show-overflow-tooltip="true" />
<el-table-column label="操作" align="center" v-if="optType !== 'view'" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['dv:checkrecordline:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['dv:checkrecordline:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改设备点检记录行对话框 -->
<el-dialog :title="title" :visible.sync="open" width="960px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="24">
<el-form-item label="项目名称" prop="subjectName">
<el-input v-model="form.subjectName" placeholder="请选择检查项目" >
<el-button slot="append" @click="handleSelectSubject" icon="el-icon-search"></el-button>
</el-input>
</el-form-item>
<DvSubjectSelect ref="subjectSelect" subjectType="CHECK" @onSelected="onSubjectSelected"></DvSubjectSelect>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="标准" prop="subjectStandard">
<el-input v-model="form.subjectStandard" placeholder="请输入标准" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="项目内容">
<el-input type="textarea" v-model="form.subjectContent" :min-height="192"/>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="点检结果">
<el-radio-group v-model="form.checkStatus">
<el-radio label="Y">正常</el-radio>
<el-radio label="N">异常</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.checkStatus === 'N'" label="异常描述" prop="checkResult">
<el-input v-model="form.checkResult" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listCheckrecordline, getCheckrecordline, delCheckrecordline, addCheckrecordline, updateCheckrecordline } from "@/api/mes/dv/checkrecordline";
import DvSubjectSelect from "@/components/dvsubjectSelect/single.vue";
export default {
name: "Checkrecordline",
props:{
optType: null,
recordId: null,
},
dicts: ['dv_cm_result_status'],
components:{ DvSubjectSelect },
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
checkrecordlineList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
recordId: this.recordId, subjectId: null, subjectCode: null, subjectName: null, subjectType: null, subjectContent: null, subjectStandard: null, checkStatus: null, checkResult: null, },
//
form: {},
//
rules: {
recordId: [
{ required: true, message: "计划ID不能为空", trigger: "blur" }
], subjectId: [
{ required: true, message: "项目ID不能为空", trigger: "blur" }
], subjectCode: [
{ required: true, message: "项目编码不能为空", trigger: "blur" }
], subjectContent: [
{ required: true, message: "项目内容不能为空", trigger: "blur" }
], checkStatus: [
{ required: true, message: "点检结果不能为空", trigger: "blur" }
], }
};
},
created() {
this.getList();
},
methods: {
/** 查询设备点检记录行列表 */
getList() {
this.loading = true;
listCheckrecordline(this.queryParams).then(response => {
this.checkrecordlineList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
lineId: null, recordId: this.recordId, subjectId: null, subjectCode: null, subjectName: null, subjectType: null, subjectContent: null, subjectStandard: null, checkStatus: "Y", checkResult: null, attr1: null, attr2: null, attr3: null, attr4: null, createBy: null, createTime: null, updateBy: null, updateTime: null };
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.lineId)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加设备点检记录行";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const lineId = row.lineId || this.ids
getCheckrecordline(lineId).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改设备点检记录行";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.lineId != null) {
updateCheckrecordline(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addCheckrecordline(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const lineIds = row.lineId || this.ids;
this.$modal.confirm('是否确认删除设备点检记录行编号为"' + lineIds + '"的数据项?').then(function() {
return delCheckrecordline(lineIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
handleSelectSubject(){
this.$refs.subjectSelect.showFlag = true;
},
onSubjectSelected(obj){
if(obj){
this.form.subjectId = obj.subjectId;
this.form.subjectCode = obj.subjectCode;
this.form.subjectName = obj.subjectName;
this.form.subjectType = obj.subjectType;
this.form.subjectContent = obj.subjectContent;
this.form.subjectStandard = obj.subjectStandard;
}
}
}
};
</script>

View File

@ -0,0 +1,82 @@
<template>
<div class="app-container">
<el-table v-loading="loading" :data="checkplanList">
<el-table-column label="计划编码" align="center" prop="planCode" :show-overflow-tooltip="true"></el-table-column>
<el-table-column label="计划名称" align="center" width="200px" prop="planName" :show-overflow-tooltip="true"/>
<el-table-column label="开始日期" align="center" prop="startDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.startDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="结束日期" align="center" prop="endDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.endDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="频率" align="center" prop="cycleType">
<template slot-scope="scope">
{{scope.row.cycleCount}}
<dict-tag :options="dict.type.mes_cycle_type" :value="scope.row.cycleType"/>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :options="dict.type.mes_order_status" :value="scope.row.status"/>
</template>
</el-table-column>
</el-table>
<!-- <pagination-->
<!-- v-show="total>0"-->
<!-- :total="total"-->
<!-- :page.sync="queryParams.pageNum"-->
<!-- :limit.sync="queryParams.pageSize"-->
<!-- @pagination="getList"-->
<!-- />-->
</div>
</template>
<script>
import {getCheckPlan} from "@/api/mes/dv/checkplan";
export default {
name: "CheckPlan",
dicts: ['mes_cycle_type','mes_order_status','dv_plan_type'],
data() {
return {
//
loading: false,
//
total: 0,
// /
checkplanList: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
},
};
},
created() {
},
methods: {
getOpen(query) {
this.queryParams.planType = query.planType
this.queryParams.machineryCode = query.machineryCode
this.getList()
},
getList() {
this.loading = true;
getCheckPlan(this.queryParams).then(response => {
this.checkplanList = response.data;
// this.checkplanList = response.rows;
// this.total = response.total;
this.loading = false;
});
}
}
};
</script>

View File

@ -0,0 +1,80 @@
<template>
<div class="app-container">
<el-table v-loading="loading" :data="repairList">
<el-table-column label="维修单编号" width="120px" align="center" prop="repairCode" />
<el-table-column label="维修单名称" width="150px" align="center" prop="repairName" :show-overflow-tooltip="true"/>
<el-table-column label="报修日期" align="center" prop="requireDate" width="120">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.requireDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="维修完成日期" align="center" prop="finishDate" width="120">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.finishDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="验收日期" align="center" prop="confirmDate" width="120">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.confirmDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="维修结果" align="center" prop="repairResult">
<template slot-scope="scope">
<dict-tag :options="dict.type.mes_repair_result" :value="scope.row.repairResult"/>
</template>
</el-table-column>
<el-table-column label="维修人员" align="center" prop="acceptedBy" />
<el-table-column label="验收人员" align="center" prop="confirmBy" />
<el-table-column label="单据状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :options="dict.type.mes_order_status" :value="scope.row.status"/>
</template>
</el-table-column>
</el-table>
<!-- <pagination-->
<!-- v-show="total>0"-->
<!-- :total="total"-->
<!-- :page.sync="queryParams.pageNum"-->
<!-- :limit.sync="queryParams.pageSize"-->
<!-- @pagination="getList"-->
<!-- />-->
</div>
</template>
<script>
import {getRepairList} from "@/api/mes/dv/repair";
export default {
name: "Repair",
dicts: ['mes_repair_result', 'mes_order_status'],
data() {
return {
//
loading: false,
//
total: 0,
// /
repairList: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
},
};
},
methods: {
getOpen(query) {
this.queryParams.machineryCode = query.machineryCode
this.getList()
},
getList() {
this.loading = true;
getRepairList(this.queryParams).then(response => {
this.repairList = response.data;
this.loading = false;
});
}
}
};
</script>

View File

@ -123,7 +123,7 @@
<el-table-column label="设备名称" min-width="120" align="left" key="machineryName" prop="machineryName" :show-overflow-tooltip="true" />
<el-table-column label="品牌" align="left" key="machineryBrand" prop="machineryBrand" :show-overflow-tooltip="true" />
<el-table-column label="规格型号" align="left" key="machinerySpec" prop="machinerySpec" :show-overflow-tooltip="true" />
<el-table-column label="所属车间" align="center" key="machineryTypeName" prop="machineryTypeName" :show-overflow-tooltip="true" />
<el-table-column label="所属车间" align="center" key="workshopName" prop="workshopName" :show-overflow-tooltip="true" />
<el-table-column label="设备状态" align="center" key="status" prop="status" >
<template slot-scope="scope">
<dict-tag :options="dict.type.mes_machinery_status" :value="scope.row.status"/>
@ -176,9 +176,9 @@
<el-col :span="14">
<el-row>
<el-col :span="16">
<el-form-item label="设备编码" prop="itemCode">
<el-input v-model="form.machineryCode" readonly="readonly" maxlength="64" v-if="['view','edit'].indexOf(optType)> -1"/>
<el-input v-model="form.machineryCode" placeholder="请输入设备编码" maxlength="64" v-else/>
<el-form-item label="设备编码" prop="machineryCode">
<el-input v-model="form.machineryCode" :disabled="optType != 'add'" readonly="readonly" maxlength="64" v-if="['view','edit'].indexOf(optType)> -1"/>
<el-input v-model="form.machineryCode" :disabled="optType != 'add'" placeholder="请输入设备编码" maxlength="64" v-else/>
</el-form-item>
</el-col>
<el-col :span="8">
@ -193,7 +193,7 @@
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="设备名称" prop="itemName">
<el-form-item label="设备名称" prop="machineryName">
<el-input v-model="form.machineryName" maxlength="255" readonly="readonly" v-if="optType=='view'" />
<el-input v-model="form.machineryName" placeholder="请输入设备名称" maxlength="255" v-else/>
</el-form-item>
@ -216,9 +216,9 @@
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-col :span="12">
<el-form-item label="所属车间" prop="workshopId">
<el-select v-model="form.workshopId" placeholder="请选择车间">
<el-select v-model="form.workshopId" @change="changeWorkshop" placeholder="请选择车间">
<el-option
v-for="item in workshopOptions"
:key="item.workshopId"
@ -228,6 +228,18 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="设备状态" prop="status">
<el-select v-model="form.status" placeholder="请选择设备状态">
<el-option
v-for="item in dict.type.mes_machinery_status"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-col>
<el-col :span="10">
@ -244,16 +256,26 @@
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="备注">
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" readonly v-if="optType=='view'"></el-input>
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" v-else></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-tabs type="border-card" v-model="activeName" v-if="optType != 'add'" @tab-click="handleActive">
<el-tab-pane label="点检记录" name="check">
<CheckPlan ref="checkList" />
</el-tab-pane>
<el-tab-pane label="保养记录" name="maintenance">
<CheckPlan ref="maintenanceList" />
</el-tab-pane>
<el-tab-pane label="维修记录" name="repair">
<Repair ref="repairList" />
</el-tab-pane>
</el-tabs>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType =='view'">返回</el-button>
<el-button type="primary" @click="submitForm" v-else> </el-button>
<el-button type="primary" @click="submitForm" v-if="optType !='view'"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
@ -298,15 +320,19 @@ import {genCode} from "@/api/system/autocode/rule"
import { getToken } from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import BarcodeImg from "@/components/barcodeImg/index.vue"
import BarcodeImg from "@/components/barcodeImg/index.vue";
import CheckPlan from "@/views/mes/dv/machinery/components/Checkplan.vue"
import Repair from "@/views/mes/dv/machinery/components/Repair.vue"
import {getBarcodeUrl} from "@/api/mes/wm/barcode";
import { option } from "runjs";
export default {
name: "Machinery",
dicts: ['sys_yes_no','mes_machinery_status'],
components: { Treeselect,BarcodeImg },
components: { Treeselect,BarcodeImg, CheckPlan, Repair },
data() {
return {
activeName: "check",
//
autoGenFlag:false,
optType: undefined,
@ -334,8 +360,6 @@ export default {
open: false,
//
machineryTypeName: undefined,
//
autoGenFlag: false,
//
form: {},
defaultProps: {
@ -395,6 +419,9 @@ export default {
],
machineryTypeId: [
{ required: true, message: "设备分类不能为空", trigger: "blur" },
],
remark: [
{ max: 250, message: '长度必须小于250个字符', trigger: 'blur' }
]
}
};
@ -410,6 +437,27 @@ export default {
this.getTreeselect();
},
methods: {
handleActive (tab) {
const query = {}
query.machineryCode = this.form.machineryCode
if (tab.name == "check") {
query.planType = "CHECK"
this.$refs.checkList.getOpen(query)
}
if (tab.name == "maintenance") {
query.planType = "MAINTEN"
this.$refs.maintenanceList.getOpen(query)
}
if (tab.name == "repair") {
this.$refs.repairList.getOpen(query)
}
},
changeWorkshop(val) {
const workshop = this.workshopOptions.filter(item => item.workshopId == val)
this.form.workshopId = workshop[0].workshopId
this.form.workshopName = workshop[0].workshopName
this.form.workshopCode = workshop[0].workshopCode
},
/** 查询物料编码列表 */
getList() {
this.loading = true;
@ -511,8 +559,14 @@ export default {
this.open = true;
this.title = "查看设备信息";
this.optType = "view";
this.activeName = "check"
const query = {
machineryCode: this.form.machineryCode,
planType: "CHECK"
}
this.$nextTick(()=>{
this.$refs.barcodeImg.getBarcode();
this.$refs.checkList.getOpen(query)
})
});
},
@ -540,8 +594,14 @@ export default {
this.open = true;
this.title = "修改设备";
this.optType = "edit";
this.activeName = "check"
const query = {
machineryCode: this.form.machineryCode,
planType: "CHECK"
}
this.$nextTick(()=>{
this.$refs.barcodeImg.getBarcode();
this.$refs.checkList.getOpen(query)
})
});
},

View File

@ -54,15 +54,12 @@
type="text"
icon="el-icon-plus"
@click="handleAdd(scope.row)"
v-hasPermi="['mes:dv:machinerytype:add']"
>新增</el-button>
<el-button
v-if="scope.row.parentTypeId != 0"
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['mes:dv:machinerytype:remove']"
>删除</el-button>
</template>
</el-table-column>
@ -161,11 +158,15 @@ export default {
{ required: true, message: "父类型不能为空", trigger: "blur" }
],
machineryTypeName: [
{ required: true, message: "设备类型名称不能为空", trigger: "blur" }
{ required: true, message: "设备类型名称不能为空", trigger: "blur" },
{ max: 100, message: "字段过长", trigger: "blur" }
],
enableFlag: [
{ required: true, message: "是否启用不能为空", trigger: "blur" }
],
remark: [
{ max: 250, message: '长度必须小于250个字符', trigger: 'blur' }
]
}
};
},

View File

@ -0,0 +1,427 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="计划名称" prop="planName">
<el-input
v-model="queryParams.planName"
placeholder="请输入计划名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="设备编码" prop="machineryCode">
<el-input
v-model="queryParams.machineryCode"
placeholder="请输入设备编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="设备名称" prop="machineryName">
<el-input
v-model="queryParams.machineryName"
placeholder="请输入设备名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="保养人" prop="nickName">
<el-input
v-model="queryParams.nickName"
placeholder="请输入名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="保养时间" prop="maintenTime">
<el-date-picker clearable
v-model="queryParams.maintenTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择保养时间">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['mes:dv:maintenrecord:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['mes:dv:maintenrecord:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['mes:dv:maintenrecord:remove']"
>删除</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="maintenrecordList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="设备编码" align="center" prop="machineryCode" >
<template slot-scope="scope">
<el-button
type="text"
@click="handleView(scope.row)"
v-hasPermi="['mes:dv:maintenrecord:query']"
>{{scope.row.machineryCode}}</el-button>
</template>
</el-table-column>
<el-table-column label="设备名称" align="center" prop="machineryName" />
<el-table-column label="品牌" align="center" prop="machineryBrand" />
<el-table-column label="规格型号" align="center" prop="machinerySpec" />
<el-table-column label="计划名称" align="center" prop="planName" />
<el-table-column label="保养时间" align="center" prop="maintenTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.maintenTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="保养人" align="center" prop="nickName" />
<el-table-column label="状态" align="center" prop="status" >
<template slot-scope="scope">
<dict-tag :options="dict.type.mes_order_status" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改设备保养记录对话框 -->
<el-dialog :title="title" :visible.sync="open" width="960px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="8">
<el-form-item label="设备编码" prop="machineryCode">
<el-input v-model="form.machineryCode" placeholder="请选择设备" >
<el-button slot="append" @click="handleSelectMachinery" icon="el-icon-search"></el-button>
</el-input>
</el-form-item>
<MachinerySelectSingle ref="machinerySelect" @onSelected="onMachineryAdd"></MachinerySelectSingle>
</el-col>
<el-col :span="8">
<el-form-item label="设备名称" prop="machineryName">
<el-input v-model="form.machineryName" readonly="readonly" placeholder="请选择设备" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="品牌" prop="machineryBrand">
<el-input v-model="form.machineryBrand" readonly="readonly" placeholder="请选择设备" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="规格型号" prop="machinerySpec">
<el-input v-model="form.machinerySpec" readonly="readonly" type="textarea" placeholder="请选择设备" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="保养计划" prop="planName">
<el-input v-model="form.planName" placeholder="请选择设备保养计划" >
<el-button slot="append" @click="handleSelectPlan" icon="el-icon-search"></el-button>
</el-input>
</el-form-item>
<CheckplanSelect ref="checkplanSelect" planType="MAINTEN" @onSelected="onPlanAdd"></CheckplanSelect>
</el-col>
<el-col :span="8">
<el-form-item label="保养人" prop="nickName">
<el-input v-model="form.nickName" placeholder="请选择保养人" >
<el-button slot="append" @click="handleUserSelect" icon="el-icon-search"></el-button>
</el-input>
</el-form-item>
<UserSingleSelect ref="userSelect" @onSelected="onUserSelected"></UserSingleSelect>
</el-col>
<el-col :span="8">
<el-form-item label="保养时间" prop="maintenTime">
<el-date-picker clearable
v-model="form.maintenTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择保养时间">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-divider v-if="form.recordId !=null" content-position="center">保养项目</el-divider>
<el-card shadow="always" v-if="form.recordId !=null" class="box-card">
<MaintenRecordLine ref="maintenRecordLine" :optType="optType" :recordId="form.recordId"></MaintenRecordLine>
</el-card>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType =='view' || form.status !='PREPARE' "> </el-button>
<el-button type="primary" @click="submitForm" v-if="optType !=='view' && form.status =='PREPARE' " > </el-button>
<el-button type="success" @click="handleFinish" v-if="optType !=='view' && form.status =='PREPARE' " > </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listMaintenrecord, getMaintenrecord, delMaintenrecord, addMaintenrecord, updateMaintenrecord } from "@/api/mes/dv/maintenrecord";
import MachinerySelectSingle from "@/components/machinerySelect/single.vue";
import CheckplanSelect from "@/components/dvplanSelect/index.vue";
import UserSingleSelect from "@/components/userSelect/single.vue"
import MaintenRecordLine from "./line.vue"
export default {
name: "Maintenrecord",
dicts: ['mes_order_status'],
components: {MachinerySelectSingle, CheckplanSelect, UserSingleSelect, MaintenRecordLine},
data() {
return {
optType: null,
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
maintenrecordList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
planId: null, planCode: null, planName: null, planType: null, machineryId: null, machineryCode: null, machineryName: null, machineryBrand: null, machinerySpec: null, maintenTime: null, userId: null, userName: null, nickName: null, status: null, },
//
form: {},
//
rules: {
machineryId: [
{ required: true, message: "设备ID不能为空", trigger: "blur" }
], machineryCode: [
{ required: true, message: "设备编码不能为空", trigger: "blur" }
], machineryName: [
{ required: true, message: "设备名称不能为空", trigger: "blur" }
], maintenTime: [
{ required: true, message: "保养时间不能为空", trigger: "blur" }
], }
};
},
created() {
this.getList();
},
methods: {
/** 查询设备保养记录列表 */
getList() {
this.loading = true;
listMaintenrecord(this.queryParams).then(response => {
this.maintenrecordList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
recordId: null, planId: null, planCode: null, planName: null, planType: null, machineryId: null, machineryCode: null, machineryName: null, machineryBrand: null, machinerySpec: null, maintenTime: null, userId: null, userName: null, nickName: null, status: "PREPARE", remark: null, attr1: null, attr2: null, attr3: null, attr4: null, createBy: null, createTime: null, updateBy: null, updateTime: null };
this.form.userId= this.$store.state.user.id;
this.form.nickName= this.$store.state.user.nick;
this.form.userName= this.$store.state.user.name;
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.recordId)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加设备保养记录";
this.optType = "add";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const recordId = row.recordId || this.ids
getMaintenrecord(recordId).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改设备保养记录";
this.optType = "edit";
});
},
handleView(row) {
this.reset();
const recordId = row.recordId || this.ids
getMaintenrecord(recordId).then(response => {
this.form = response.data;
this.open = true;
this.title = "查看设备保养记录";
this.optType = "view";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.recordId != null) {
updateMaintenrecord(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addMaintenrecord(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
handleFinish(){
if(this.form.recordId != null && this.form.status =='PREPARE'){
this.form.status='FINISHED';
updateMaintenrecord(this.form).then(response => {
this.$modal.msgSuccess("已提交");
this.open = false;
this.getList();
},err =>{
this.form.status='PREPARE';
});
}
},
/** 删除按钮操作 */
handleDelete(row) {
const recordIds = row.recordId || this.ids;
this.$modal.confirm('是否确认删除设备保养记录编号为"' + recordIds + '"的数据项?').then(function() {
return delMaintenrecord(recordIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
handleSelectMachinery(){
this.$refs.machinerySelect.showFlag = true;
},
//
onMachineryAdd(obj){
if(obj !=null && obj != undefined){
this.form.machineryId = obj.machineryId;
this.form.machineryCode = obj.machineryCode;
this.form.machineryName = obj.machineryName;
this.form.machineryBrand = obj.machineryBrand;
this.form.machinerySpec = obj.machinerySpec;
}
},
handleSelectPlan(){
this.$refs.checkplanSelect.showFlag = true;
},
onPlanAdd(obj){
if(obj !=null && obj != undefined){
this.form.planId = obj.planId;
this.form.planCode = obj.planCode;
this.form.planName = obj.planName;
this.form.planType = obj.planType;
}
},
//
handleUserSelect(){
this.$refs.userSelect.showFlag = true;
},
//
onUserSelected(row){
this.form.userId = row.userId;
this.form.nickName = row.nickName;
this.form.userName = row.userName;
},
}
};
</script>

View File

@ -0,0 +1,264 @@
<template>
<div class="app-container">
<el-row :gutter="10" v-if="optType != 'view'" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['dv:maintenrecordline:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['dv:maintenrecordline:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['dv:maintenrecordline:remove']"
>删除</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="maintenrecordlineList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="项目名称" align="center" prop="subjectName" />
<el-table-column label="项目内容" align="center" prop="subjectContent" />
<el-table-column label="标准" align="center" prop="subjectStandard" />
<el-table-column label="保养结果" align="center" prop="maintenStatus" />
<el-table-column label="异常描述" align="center" prop="maintenResult" />
<el-table-column label="操作" align="center" v-if="optType != 'view'" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['dv:maintenrecordline:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['dv:maintenrecordline:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改设备保养记录行对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="计划ID" prop="recordId">
<el-input v-model="form.recordId" placeholder="请输入计划ID" />
</el-form-item>
<el-form-item label="项目ID" prop="subjectId">
<el-input v-model="form.subjectId" placeholder="请输入项目ID" />
</el-form-item>
<el-form-item label="项目编码" prop="subjectCode">
<el-input v-model="form.subjectCode" placeholder="请输入项目编码" />
</el-form-item>
<el-form-item label="项目名称" prop="subjectName">
<el-input v-model="form.subjectName" placeholder="请输入项目名称" />
</el-form-item>
<el-form-item label="项目类型" prop="subjectType">
<el-select v-model="form.subjectType" placeholder="请选择项目类型">
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item label="项目内容">
<editor v-model="form.subjectContent" :min-height="192"/>
</el-form-item>
<el-form-item label="标准" prop="subjectStandard">
<el-input v-model="form.subjectStandard" placeholder="请输入标准" />
</el-form-item>
<el-form-item label="保养结果">
<el-radio-group v-model="form.maintenStatus">
<el-radio label="1">请选择字典生成</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="异常描述" prop="maintenResult">
<el-input v-model="form.maintenResult" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listMaintenrecordline, getMaintenrecordline, delMaintenrecordline, addMaintenrecordline, updateMaintenrecordline } from "@/api/mes/dv/maintenrecordline";
import DvSubjectSelect from "@/components/dvsubjectSelect/single.vue";
export default {
name: "Maintenrecordline",
props:{
optType: null,
recordId: null,
},
dicts: ['dv_cm_result_status'],
components:{ DvSubjectSelect },
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
maintenrecordlineList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
recordId: null, subjectId: null, subjectCode: null, subjectName: null, subjectType: null, subjectContent: null, subjectStandard: null, maintenStatus: null, maintenResult: null, },
//
form: {},
//
rules: {
recordId: [
{ required: true, message: "计划ID不能为空", trigger: "blur" }
], subjectId: [
{ required: true, message: "项目ID不能为空", trigger: "blur" }
], subjectCode: [
{ required: true, message: "项目编码不能为空", trigger: "blur" }
], subjectContent: [
{ required: true, message: "项目内容不能为空", trigger: "blur" }
], maintenStatus: [
{ required: true, message: "保养结果不能为空", trigger: "blur" }
], }
};
},
created() {
this.getList();
},
methods: {
/** 查询设备保养记录行列表 */
getList() {
this.loading = true;
listMaintenrecordline(this.queryParams).then(response => {
this.maintenrecordlineList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
lineId: null, recordId: null, subjectId: null, subjectCode: null, subjectName: null, subjectType: null, subjectContent: null, subjectStandard: null, maintenStatus: "0", maintenResult: null, attr1: null, attr2: null, attr3: null, attr4: null, createBy: null, createTime: null, updateBy: null, updateTime: null };
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.lineId)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加设备保养记录行";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const lineId = row.lineId || this.ids
getMaintenrecordline(lineId).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改设备保养记录行";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.lineId != null) {
updateMaintenrecordline(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addMaintenrecordline(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const lineIds = row.lineId || this.ids;
this.$modal.confirm('是否确认删除设备保养记录行编号为"' + lineIds + '"的数据项?').then(function() {
return delMaintenrecordline(lineIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('dv/maintenrecordline/export', {
...this.queryParams
}, `maintenrecordline_${new Date().getTime()}.xlsx`)
}
}
};
</script>

View File

@ -17,7 +17,7 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="设备编码" prop="machineryCode">
<el-input
v-model="queryParams.machineryCode"
@ -148,7 +148,7 @@
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
@ -171,7 +171,7 @@
<el-switch v-model="autoGenFlag"
active-color="#13ce66"
active-text="自动生成"
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'">
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'">
</el-switch>
</el-form-item>
</el-col>
@ -179,7 +179,7 @@
<el-form-item label="维修单名称" prop="repairName">
<el-input v-model="form.repairName" placeholder="请输入维修单名称" />
</el-form-item>
</el-col>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
@ -207,7 +207,7 @@
<el-date-picker clearable
v-model="form.requireDate"
style="width: 187px"
type="date"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择报修日期">
</el-date-picker>
@ -264,17 +264,17 @@
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-form>
<el-divider v-if="form.repairId !=null" content-position="center">维修内容</el-divider>
<el-card shadow="always" v-if="form.repairId !=null" class="box-card">
<Repairline ref="line" :repairId="form.repairId" :optType="optType"></Repairline>
<Repairline ref="line" :repairId="form.repairId" :optType="optType"></Repairline>
</el-card>
<div slot="footer" class="dialog-footer">
<el-button type="primary" v-if="form.status =='PREPARE' && optType !='view'" @click="submitForm"> </el-button>
<el-button type="primary" v-if="form.status == 'APPROVING' && optType !='view'" @click="finish">完成维修</el-button>
<el-button type="primary" v-if="form.status == 'APPROVING' && optType !='view'" @click="finish">完成维修</el-button>
<el-button type="success" v-if="form.status == 'FINISHED' && optType !='view'" @click="confirm">验收通过</el-button>
<el-button type="danger" v-if="form.status == 'FINISHED' && optType !='view'" @click="unconfirm">不通过</el-button>
<el-button @click="cancel"> </el-button>
@ -339,7 +339,11 @@ export default {
//
rules: {
repairCode: [
{ required: true, message: "维修单编号不能为空", trigger: "blur" }
{ required: true, message: "维修单编号不能为空", trigger: "blur" },
{ max: 64, message: "字段过长", trigger: "blur" }
],
repairName: [
{ max: 100, message: "字段过长", trigger: "blur" }
],
machineryId: [
{ required: true, message: "设备ID不能为空", trigger: "blur" }
@ -353,6 +357,9 @@ export default {
requireDate: [
{ required: true, message: "请选择报修日期", trigger: "blur" }
],
remark: [
{ max: 250, message: '长度必须小于250个字符', trigger: 'blur' }
]
}
};
},
@ -476,7 +483,7 @@ export default {
},
//
handleMachineryAdd(){
this.$refs.machinerySelect.showFlag = true;
this.$refs.machinerySelect.handleOpen(this.form.machineryId)
},
//
onMachineryAdd(row){
@ -487,7 +494,7 @@ export default {
this.form.machineryBrand = row.machineryBrand;
},
//
handleAutoGenChange(autoGenFlag){
handleAutoGenChange(autoGenFlag){
if(autoGenFlag){
genCode('REPAIR_CODE').then(response =>{
this.form.repairCode = response;

View File

@ -1,6 +1,6 @@
<template>
<div class="app-container">
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
@ -30,12 +30,12 @@
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="项目名称" align="center" prop="subjectName" />
<el-table-column label="故障描述" align="center" prop="malfunction" >
<template slot-scope="scope">
<el-input type="textarea">{{scope.row.malfunction}}</el-input>
</template>
<!-- <template slot-scope="scope">-->
<!-- <el-input type="textarea">{{scope.row.malfunction}}</el-input>-->
<!-- </template>-->
</el-table-column>
<el-table-column label="故障描述资源" align="center" prop="malfunctionUrl" >
</el-table-column>
<el-table-column label="维修情况" align="center" prop="repairDes" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
@ -57,7 +57,7 @@
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
@ -68,10 +68,17 @@
<!-- 添加或修改设备维修单行对话框 -->
<el-dialog :title="title" :visible.sync="open" width="960px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="项目名称" prop="subjectName">
<el-input v-model="form.subjectName" placeholder="请输入项目名称" />
</el-form-item>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="项目名称" prop="subjectCode">
<el-select v-model="form.subjectName" @change="changeSubject" filterable placeholder="请输入项目名称" style="width: 100%">
<el-option
v-for="item in dvsubjectList"
:key="item.subjectId"
:label="item.subjectName"
:value="item.subjectCode">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="故障描述" prop="malfunction">
<el-input v-model="form.malfunction" type="textarea" placeholder="请输入内容" />
</el-form-item>
@ -92,6 +99,7 @@
<script>
import { listRepairline, getRepairline, delRepairline, addRepairline, updateRepairline } from "@/api/mes/dv/repairline";
import { listDvsubject } from "@/api/mes/dv/dvsubject";
export default {
name: "Repairline",
@ -103,6 +111,8 @@ export default {
return {
//
loading: true,
//
dvsubjectList: [],
//
ids: [],
//
@ -138,6 +148,9 @@ export default {
form: {},
//
rules: {
subjectCode: [
{ required: true, message: "项目名称不能为空", trigger: "blur" }
],
malfunction: [
{ required: true, message: "故障描述不能为空", trigger: "blur" }
],
@ -146,8 +159,19 @@ export default {
},
created() {
this.getList();
listDvsubject({pageNum: 1, pageSize: 99999}).then(res =>{
this.dvsubjectList = res.rows
})
},
methods: {
//
changeSubject(val) {
let data = (this.dvsubjectList.filter(item => item.subjectCode == val))[0]
this.form.subjectId = data.subjectId
this.form.subjectName = data.subjectName
this.form.subjectCode = data.subjectCode
this.form.subjectContent = data.subjectContent
},
/** 查询设备维修单行列表 */
getList() {
this.loading = true;
@ -243,7 +267,7 @@ export default {
/** 删除按钮操作 */
handleDelete(row) {
const lineIds = row.lineId || this.ids;
this.$modal.confirm('是否确认删除设备维修单行编号为"' + lineIds + '"的数据项?').then(function() {
this.$modal.confirm('是否确认删除当前数据项?').then(function() {
return delRepairline(lineIds);
}).then(() => {
this.getList();

View File

@ -114,7 +114,7 @@
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
@ -137,7 +137,7 @@
<el-switch v-model="autoGenFlag"
active-color="#13ce66"
active-text="自动生成"
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'">
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'">
</el-switch>
</el-form-item>
</el-col>
@ -171,7 +171,7 @@
</el-form-item>
</el-col>
</el-row>
<el-form-item label="项目内容" prop="subjectContent">
<el-form-item label="项目内容" prop="subjectContent">
<el-input type="textarea" v-model="form.subjectContent" placeholder="请输入项目内容" />
</el-form-item>
<el-form-item label="标准" prop="subjectStandard">
@ -229,13 +229,18 @@ export default {
//
rules: {
subjectCode: [
{ required: true, message: "项目编码不能为空", trigger: "blur" }
{ required: true, message: "项目编码不能为空", trigger: "blur" },
{ max: 64, message: "字段过长", trigger: "blur" }
],
subjectType: [
{ required: true, message: "请选择项目类型", trigger: "blur" }
],
subjectName: [
{ max: 100, message: "字段过长", trigger: "blur" }
],
subjectContent: [
{ required: true, message: "项目内容不能为空", trigger: "blur" }
{ required: true, message: "项目内容不能为空", trigger: "blur" },
{ max: 250, message: "字段过长", trigger: "blur" }
],
enableFlag: [
{ required: true, message: "是否启用不能为空", trigger: "blur" }
@ -348,7 +353,7 @@ export default {
},
/** 导出按钮操作 */
handleExport() {
this.download('dv/dvsubject/export', {
this.download('mes/dv/dvsubject/export', {
...this.queryParams
}, `dvsubject_${new Date().getTime()}.xlsx`)
},

View File

@ -0,0 +1,352 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="100px"
>
<el-form-item label="供应商名称" prop="supplierName">
<el-input
v-model="queryParams.supplierName"
placeholder="请输入供应商名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="评估时间" prop="assessmentTime">
<el-date-picker
clearable
v-model="queryParams.assessmentTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择评估时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="评分" prop="score">
<el-input
v-model="queryParams.score"
placeholder="请输入评分"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['md:assessment:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['md:assessment:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['md:assessment:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['md:assessment:export']"
>导出</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="assessmentList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="供应商名称" align="center" prop="supplierName" />
<el-table-column
label="评估时间"
align="center"
prop="assessmentTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.assessmentTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="评分" align="center" prop="score" />
<el-table-column label="评估备注" align="center" prop="remarks" />
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['md:assessment:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['md:assessment:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改供应商评估对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="供应商名称" prop="supplierName">
<el-input
v-model="form.supplierName"
placeholder="请输入供应商名称"
/>
</el-form-item>
<el-form-item label="评估时间" prop="assessmentTime">
<el-date-picker
clearable
v-model="form.assessmentTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择评估时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="评分" prop="score">
<el-input v-model="form.score" placeholder="请输入评分" />
</el-form-item>
<el-form-item label="评估备注" prop="remarks">
<el-input v-model="form.remarks" placeholder="请输入评估备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listAssessment,
getAssessment,
delAssessment,
addAssessment,
updateAssessment,
} from "@/api/mes/gys/assessment";
export default {
name: "Assessment",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
assessmentList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
supplierName: null,
supplierId: null,
assessmentTime: null,
score: null,
remarks: null,
isDeleted: null,
},
//
form: {},
//
rules: {},
};
},
created() {
this.getList();
},
methods: {
/** 查询供应商评估列表 */
getList() {
this.loading = true;
listAssessment(this.queryParams).then((response) => {
this.assessmentList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
assessmentId: null,
supplierName: null,
supplierId: null,
assessmentTime: null,
score: null,
remarks: null,
createTime: null,
updateTime: null,
isDeleted: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.assessmentId);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加供应商评估";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const assessmentId = row.assessmentId || this.ids;
getAssessment(assessmentId).then((response) => {
this.form = response.data;
this.open = true;
this.title = "修改供应商评估";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.assessmentId != null) {
updateAssessment(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addAssessment(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const assessmentIds = row.assessmentId || this.ids;
this.$modal
.confirm(
'是否确认删除供应商评估编号为"' + assessmentIds + '"的数据项?'
)
.then(function () {
return delAssessment(assessmentIds);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download(
"md/assessment/export",
{
...this.queryParams,
},
`assessment_${new Date().getTime()}.xlsx`
);
},
},
};
</script>

View File

@ -0,0 +1,311 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="类别名称" prop="categoryName">
<el-input
v-model="queryParams.categoryName"
placeholder="请输入类别名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="类别描述" prop="description">
<el-input
v-model="queryParams.description"
placeholder="请输入类别描述"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['md:category:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['md:category:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['md:category:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['md:category:export']"
>导出</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="categoryList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="类别名称" align="center" prop="categoryName" />
<el-table-column label="类别描述" align="center" prop="description" />
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['md:category:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['md:category:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改供应商类别对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="类别名称" prop="categoryName">
<el-input v-model="form.categoryName" placeholder="请输入类别名称" />
</el-form-item>
<el-form-item label="类别描述" prop="description">
<el-input v-model="form.description" placeholder="请输入类别描述" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listCategory,
getCategory,
delCategory,
addCategory,
updateCategory,
} from "@/api/mes/gys/category";
export default {
name: "Category",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
categoryList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
categoryName: null,
description: null,
isDeleted: null,
},
//
form: {},
//
rules: {
categoryName: [
{ required: true, message: "类别名称不能为空", trigger: "blur" },
],
},
};
},
created() {
this.getList();
},
methods: {
/** 查询供应商类别列表 */
getList() {
this.loading = true;
listCategory(this.queryParams).then((response) => {
this.categoryList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
categoryId: null,
categoryName: null,
description: null,
createTime: null,
updateTime: null,
isDeleted: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.categoryId);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加供应商类别";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const categoryId = row.categoryId || this.ids;
getCategory(categoryId).then((response) => {
this.form = response.data;
this.open = true;
this.title = "修改供应商类别";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.categoryId != null) {
updateCategory(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addCategory(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const categoryIds = row.categoryId || this.ids;
this.$modal
.confirm('是否确认删除供应商类别编号为"' + categoryIds + '"的数据项?')
.then(function () {
return delCategory(categoryIds);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download(
"md/category/export",
{
...this.queryParams,
},
`category_${new Date().getTime()}.xlsx`
);
},
},
};
</script>

View File

@ -0,0 +1,360 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="资质名称" prop="qualName">
<el-input
v-model="queryParams.qualName"
placeholder="请输入资质名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="资质类型" prop="qualType">
<el-select
v-model="queryParams.qualType"
placeholder="请选择资质类型"
clearable
>
<el-option label="一级资质" value="一级资质" />
<el-option label="二级资质" value="二级资质" />
<el-option label="三级资质" value="三级资质" />
<el-option label="四级资质" value="四级资质" />
</el-select>
</el-form-item>
<el-form-item label="有效期" prop="validDate">
<el-date-picker
clearable
v-model="queryParams.validDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择有效期"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['md:qualification:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['md:qualification:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['md:qualification:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['md:qualification:export']"
>导出</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="qualificationList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="资质名称" align="center" prop="qualName" />
<el-table-column label="资质类型" align="center" prop="qualType" />
<el-table-column
label="有效期"
align="center"
prop="validDate"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.validDate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="附件" align="center" prop="filePath" />
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['md:qualification:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['md:qualification:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改供应商资质对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="资质名称" prop="qualName">
<el-input v-model="form.qualName" placeholder="请输入资质名称" />
</el-form-item>
<el-form-item label="资质类型" prop="qualType">
<el-select v-model="form.qualType" placeholder="请选择资质类型">
<el-option label="一级资质" value="一级资质" />
<el-option label="二级资质" value="二级资质" />
<el-option label="三级资质" value="三级资质" />
<el-option label="四级资质" value="四级资质" />
</el-select>
</el-form-item>
<el-form-item label="有效期" prop="validDate">
<el-date-picker
clearable
v-model="form.validDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择有效期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="附件" prop="filePath">
<el-input
v-model="form.filePath"
type="textarea"
placeholder="请输入内容"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listQualification,
getQualification,
delQualification,
addQualification,
updateQualification,
} from "@/api/mes/gys/qualification";
export default {
name: "Qualification",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
qualificationList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
supplierId: null,
qualName: null,
qualType: null,
validDate: null,
filePath: null,
isDeleted: null,
},
//
form: {},
//
rules: {},
};
},
created() {
this.getList();
},
methods: {
/** 查询供应商资质列表 */
getList() {
this.loading = true;
listQualification(this.queryParams).then((response) => {
this.qualificationList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
qualId: null,
supplierId: null,
qualName: null,
qualType: null,
validDate: null,
filePath: null,
createTime: null,
updateTime: null,
isDeleted: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.qualId);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加供应商资质";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const qualId = row.qualId || this.ids;
getQualification(qualId).then((response) => {
this.form = response.data;
this.open = true;
this.title = "修改供应商资质";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.qualId != null) {
updateQualification(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addQualification(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const qualIds = row.qualId || this.ids;
this.$modal
.confirm('是否确认删除供应商资质编号为"' + qualIds + '"的数据项?')
.then(function () {
return delQualification(qualIds);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download(
"md/qualification/export",
{
...this.queryParams,
},
`qualification_${new Date().getTime()}.xlsx`
);
},
},
};
</script>

View File

@ -0,0 +1,358 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="100px"
>
<el-form-item label="供应商名称" prop="supplierName">
<el-input
v-model="queryParams.supplierName"
placeholder="请输入供应商名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="合作时间" prop="cooperationTime">
<el-date-picker
clearable
v-model="queryParams.cooperationTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择合作时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label=" 合作金额" prop="amount">
<el-input
v-model="queryParams.amount"
placeholder="请输入 合作金额"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['md:record:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['md:record:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['md:record:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['md:record:export']"
>导出</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="recordList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="供应商名称" align="center" prop="supplierName" />
<el-table-column
label="合作时间"
align="center"
prop="cooperationTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.cooperationTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="合作内容" align="center" prop="content" />
<el-table-column label="合作金额" align="center" prop="amount" />
<el-table-column label="备注" align="center" prop="remarks" />
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['md:record:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['md:record:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改供应商合作记录对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="供应商名称" prop="supplierName">
<el-input
v-model="form.supplierName"
placeholder="请输入供应商名称"
/>
</el-form-item>
<el-form-item label="合作时间" prop="cooperationTime">
<el-date-picker
clearable
v-model="form.cooperationTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择合作时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label=" 合作内容">
<el-input v-model="form.content" placeholder="请输入备注" />
</el-form-item>
<el-form-item label=" 合作金额" prop="amount">
<el-input v-model="form.amount" placeholder="请输入 合作金额" />
</el-form-item>
<el-form-item label="备注" prop="remarks">
<el-input v-model="form.remarks" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listRecord,
getRecord,
delRecord,
addRecord,
updateRecord,
} from "@/api/mes/gys/record";
export default {
name: "Record",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
recordList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
supplierName: null,
supplierId: null,
cooperationTime: null,
content: null,
amount: null,
remarks: null,
isDeleted: null,
},
//
form: {},
//
rules: {},
};
},
created() {
this.getList();
},
methods: {
/** 查询供应商合作记录列表 */
getList() {
this.loading = true;
listRecord(this.queryParams).then((response) => {
this.recordList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
recordId: null,
supplierName: null,
supplierId: null,
cooperationTime: null,
content: null,
amount: null,
remarks: null,
createTime: null,
updateTime: null,
isDeleted: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.recordId);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加供应商合作记录";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const recordId = row.recordId || this.ids;
getRecord(recordId).then((response) => {
this.form = response.data;
this.open = true;
this.title = "修改供应商合作记录";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.recordId != null) {
updateRecord(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addRecord(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const recordIds = row.recordId || this.ids;
this.$modal
.confirm(
'是否确认删除供应商合作记录编号为"' + recordIds + '"的数据项?'
)
.then(function () {
return delRecord(recordIds);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download(
"md/record/export",
{
...this.queryParams,
},
`record_${new Date().getTime()}.xlsx`
);
},
},
};
</script>

View File

@ -0,0 +1,80 @@
<template>
<div class="app-container">
<el-table v-loading="loading" :data="itemList">
<el-table-column label="物料编码" align="center" width="120px" prop="itemCode">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="handleView(scope.row)"
>{{scope.row.itemCode}}</el-button>
</template>
</el-table-column>
<el-table-column label="物料名称" align="center" prop="itemName" :show-overflow-tooltip="true"/>
<el-table-column label="规格型号" align="center" prop="specification" :show-overflow-tooltip="true"/>
<el-table-column label="单位" align="center" prop="unitOfMeasure" />
<el-table-column label="入库数量" align="center" prop="quantityRecived" />
<el-table-column label="批次号" align="center" prop="batchCode" />
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<script>
import {getItem} from "@/api/mes/wm/productsalse";
export default {
name: "Bom",
data() {
return {
//
loading: true,
//
total: 0,
// BOM
itemList: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
},
};
},
props: {
optType: undefined,
clientId: undefined
},
created() {
this.getList(this.clientId);
},
methods: {
handleView(row) {
this.$emit('handleSkip', row)
this.$router.push({
path: '/mes/md/item/form',
query: {
id: row.itemId
}
})
},
handleOpen(vendorId) {
this.getList(vendorId)
},
/** 获取表格数据 */
getList(clientId) {
this.loading = true;
getItem(clientId).then(response => {
this.itemList = response.data;
this.loading = false;
});
},
}
};
</script>

View File

@ -0,0 +1,90 @@
<template>
<div class="app-container">
<el-table v-loading="loading" :data="recordList">
<el-table-column label="出库单编号" width="150px" align="center" prop="salseCode" >
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="handleView(scope.row)"
>{{scope.row.salseCode}}</el-button>
</template>
</el-table-column>
<el-table-column label="出库单名称" width="150px" align="center" prop="salseName" />
<el-table-column label="销售订单编号" width="120px" align="center" prop="soCode" />
<el-table-column label="客户编码" align="center" prop="clientCode" />
<el-table-column label="客户名称" align="center" prop="clientName" />
<el-table-column label="出库日期" align="center" prop="salseDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.salseDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="单据状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :options="dict.type.mes_order_status" :value="scope.row.status"/>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<script>
import {getSaleRecord} from "@/api/mes/wm/productsalse";
export default {
name: "productsalseForm",
dicts: ['sys_yes_no','mes_item_product', 'mes_order_status'],
data() {
return {
//
loading: true,
//
total: 0,
// BOM
recordList: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
},
};
},
props: {
optType: undefined,
clientId: undefined
},
created() {
this.getList(this.clientId);
},
methods: {
handleView(row) {
this.$emit('handleSkip', row)
this.$router.push({
path: '/mes/wm/saleOutbound/form',
query: {
id: row.salseId
}
})
},
handleOpen(vendorId) {
this.getList(vendorId)
},
/** 获取表格数据 */
getList(clientId) {
this.loading = true;
getSaleRecord(clientId).then(response => {
this.recordList = response.data;
this.loading = false;
});
},
}
};
</script>

View File

@ -171,7 +171,7 @@
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
@ -181,7 +181,7 @@
/>
<!-- 添加或修改客户对话框 -->
<el-dialog :title="title" :visible.sync="open" width="960px" append-to-body>
<el-dialog :title="title" :visible.sync="open" @close="cancel" width="960px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<el-col :span="8">
@ -194,7 +194,7 @@
<el-switch v-model="autoGenFlag"
active-color="#13ce66"
active-text="自动生成"
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'">
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'">
</el-switch>
</el-form-item>
</el-col>
@ -345,9 +345,16 @@
</el-col>
</el-row>
</el-form>
<el-tabs type="border-card" v-model="activeName" v-if="optType != 'add'" @tab-click="handleClick">
<el-tab-pane label="产品清单" name="item">
<Item ref="itemList" @handleSkip="handleSkip" :optType="optType" :clientId="form.clientId"></Item>
</el-tab-pane>
<el-tab-pane label="销售记录" name="salesRecord">
<SalesRecord ref="salesRecordList" @handleSkip="handleSkip" :optType="optType" :clientId="form.clientId"></SalesRecord>
</el-tab-pane>
</el-tabs>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType =='view'">返回</el-button>
<el-button type="primary" @click="submitForm" v-else> </el-button>
<el-button type="primary" @click="submitForm" v-if="optType !='view'"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
@ -390,11 +397,15 @@
import { listClient, getClient, delClient, addClient, updateClient } from "@/api/mes/md/client";
import {genCode} from "@/api/system/autocode/rule"
import { getToken } from "@/utils/auth";
import SalesRecord from "@/views/mes/md/client/components/salesRecord.vue";
import Item from "@/views/mes/md/client/components/item.vue";
export default {
name: "Client",
components: { Item, SalesRecord },
dicts: ['mes_client_type','sys_yes_no'],
data() {
return {
activeName: "item",
//
autoGenFlag:false,
optType: undefined,
@ -463,7 +474,44 @@ export default {
{ required: true, message: "客户编码不能为空", trigger: "blur" }
],
clientName: [
{ required: true, message: "客户名称不能为空", trigger: "blur" }
{ required: true, message: "客户名称不能为空", trigger: "blur" },
{ max: 100, message: "字段过长", trigger: "blur" }
],
clientNick: [
{ max: 100, message: "字段过长", trigger: "blur" }
],
clientEn: [
{ max: 100, message: "字段过长", trigger: "blur" }
],
address: [
{ max: 250, message: "字段过长", trigger: "blur" }
],
website: [
{ max: 100, message: "字段过长", trigger: "blur" }
],
tel: [
{ max: 64, message: "字段过长", trigger: "blur" }
],
clientLogo: [
{ max: 100, message: "字段过长", trigger: "blur" }
],
contact1: [
{ max: 32, message: "字段过长", trigger: "blur" }
],
contact1Tel: [
{ max: 64, message: "字段过长", trigger: "blur" }
],
contact2: [
{ max: 32, message: "字段过长", trigger: "blur" }
],
contact2Tel: [
{ max: 64, message: "字段过长", trigger: "blur" }
],
creditCode: [
{ max: 64, message: "字段过长", trigger: "blur" }
],
clientDes: [
{ max: 250, message: "字段过长", trigger: "blur" }
],
email:[
{
@ -489,6 +537,9 @@ export default {
enableFlag: [
{ required: true, message: "是否启用不能为空", trigger: "blur" }
],
remark: [
{ max: 250, message: '长度必须小于250个字符', trigger: 'blur' }
]
}
};
},
@ -496,6 +547,17 @@ export default {
this.getList();
},
methods: {
handleSkip() {
this.cancel()
},
handleClick(tab) {
if (tab.name === 'item') {
this.$refs.itemList.handleOpen(this.form.clientId)
}
if (tab.name === 'salesRecord') {
this.$refs.salesRecordList.handleOpen(this.form.clientId)
}
},
/** 查询客户列表 */
getList() {
this.loading = true;
@ -507,6 +569,7 @@ export default {
},
//
cancel() {
this.activeName = "item"
this.open = false;
this.reset();
},
@ -578,6 +641,8 @@ export default {
this.open = true;
this.title = "查看客户";
this.optType = "view";
this.activeName = 'item'
this.$refs.itemList.handleOpen(this.form.clientId)
});
},
/** 修改按钮操作 */
@ -589,6 +654,8 @@ export default {
this.open = true;
this.title = "修改客户";
this.optType = "edit";
this.activeName = 'item'
this.$refs.itemList.handleOpen(this.form.clientId)
});
},
/** 提交按钮 */
@ -623,7 +690,7 @@ export default {
},
/** 导出按钮操作 */
handleExport() {
this.download('md/client/export', {
this.download('/mes/md/client/export', {
...this.queryParams
}, `client_${new Date().getTime()}.xlsx`)
},
@ -663,7 +730,7 @@ export default {
});
}else{
this.form.clientCode = null;
}
}
}
}
};

View File

@ -53,7 +53,7 @@
<dict-tag :options="dict.type.mes_item_product" :value="scope.row.itemOrProduct"/>
</template>
</el-table-column>
<el-table-column prop="enableFlag" label="是否启用" width="100">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_yes_no" :value="scope.row.enableFlag"/>
@ -81,12 +81,10 @@
v-hasPermi="['mes:md:itemtype:add']"
>新增</el-button>
<el-button
v-if="scope.row.parentTypeId != 0"
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['mes:md:itemtype:remove']"
>删除</el-button>
</template>
</el-table-column>
@ -94,7 +92,7 @@
<!-- 添加或修改物料分类对话框 -->
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form ref="form" :model="form" :rules="rules" label-width="90px">
<el-row>
<el-col :span="24" v-if="form.parentTypeId !== 0">
<el-form-item label="父分类" prop="parentTypeId">
@ -114,10 +112,10 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="物料/产品">
<el-form-item label="物料/产品" prop="itemOrProduct">
<el-radio-group v-model="form.itemOrProduct">
<el-radio
v-for="dict in dict.type.mes_item_product"
@ -297,7 +295,7 @@ export default {
this.open = false;
this.getList();
});
} else {
} else {
addItemType(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;

View File

@ -0,0 +1,167 @@
<template>
<div class="app-container">
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-save"
size="mini"
v-if="optType === 'add' || optType === 'edit'"
@click="submitForm"
v-hasPermi="['mes:md:batchconfig:update']"
>保存</el-button>
</el-col>
</el-row>
<el-form ref="form" :model="form" :rules="rules">
<el-form-item prop="selectedAttributes">
<el-row>
<el-col :span="4">
<el-checkbox v-model="form.produceDateFlag" true-label="Y" false-label="N">生产日期</el-checkbox>
</el-col>
<el-col :span="4">
<el-checkbox v-model="form.expireDateFlag" true-label="Y" false-label="N">有效期</el-checkbox>
</el-col>
<el-col :span="4">
<el-checkbox v-model="form.recptDateFlag" true-label="Y" false-label="N">入库日期</el-checkbox>
</el-col>
<el-col :span="4">
<el-checkbox v-model="form.vendorFlag" true-label="Y" false-label="N">供应商</el-checkbox>
</el-col>
<el-col :span="4">
<el-checkbox v-model="form.clientFlag" true-label="Y" false-label="N">客户</el-checkbox>
</el-col>
<el-col :span="4">
<el-checkbox v-model="form.coCodeFlag" true-label="Y" false-label="N">销售订单编号</el-checkbox>
</el-col>
</el-row>
<el-row>
<el-col :span="4">
<el-checkbox v-model="form.poCodeFlag" true-label="Y" false-label="N">采购订单编号</el-checkbox>
</el-col>
<el-col :span="4">
<el-checkbox v-model="form.workorderFlag" true-label="Y" false-label="N">生产工单</el-checkbox>
</el-col>
<el-col :span="4">
<el-checkbox v-model="form.taskFlag" true-label="Y" false-label="N">生产任务</el-checkbox>
</el-col>
<el-col :span="4">
<el-checkbox v-model="form.workstationFlag" true-label="Y" false-label="N">工作站</el-checkbox>
</el-col>
<el-col :span="4">
<el-checkbox v-model="form.toolFlag" true-label="Y" false-label="N">工具</el-checkbox>
</el-col>
<el-col :span="4">
<el-checkbox v-model="form.moldFlag" true-label="Y" false-label="N">模具</el-checkbox>
</el-col>
</el-row>
<el-row>
<el-col :span="4">
<el-checkbox v-model="form.lotNumberFlag" true-label="Y" false-label="N">生产批号</el-checkbox>
</el-col>
<el-col :span="4">
<el-checkbox v-model="form.qualityStatusFlag" true-label="Y" false-label="N">质量状态</el-checkbox>
</el-col>
</el-row>
</el-form-item>
</el-form>
</div>
</template>
<script>
import { getBatchconfig, addBatchconfig, updateBatchconfig } from "@/api/mes/md/batchconfig";
export default {
name: "Batchconfig",
props: {
itemId: null,
optType: null
},
data() {
return {
//
form: {
configId: null,
itemId: this.itemId,
produceDateFlag: 'N',
expireDateFlag: 'N',
recptDateFlag: 'N',
vendorFlag: 'N',
clientFlag: 'N',
coCodeFlag: 'N',
poCodeFlag: 'N',
workorderFlag: 'N',
taskFlag: 'N',
workstationFlag: 'N',
toolFlag: 'N',
moldFlag: 'N',
lotNumberFlag: 'N',
qualityStatusFlag: 'N'
},
//
rules: {
selectedAttributes: [
{ validator: this.checkSelectedAttributes, trigger: 'change' }
]
}
};
},
created() {
this.getBatchconfig();
},
methods: {
checkSelectedAttributes(rule, value, callback) {
if (
this.form.produceDateFlag === 'N' &&
this.form.expireDateFlag === 'N' &&
this.form.recptDateFlag === 'N' &&
this.form.vendorFlag === 'N' &&
this.form.clientFlag === 'N' &&
this.form.coCodeFlag === 'N' &&
this.form.poCodeFlag === 'N' &&
this.form.workorderFlag === 'N' &&
this.form.taskFlag === 'N' &&
this.form.workstationFlag === 'N' &&
this.form.toolFlag === 'N' &&
this.form.moldFlag === 'N' &&
this.form.lotNumberFlag === 'N' &&
this.form.qualityStatusFlag === 'N'
) {
callback(
new Error("至少选择一个属性")
);
} else {
callback();
}
},
/** 获取批次配置 */
getBatchconfig() {
getBatchconfig(this.itemId).then(response => {
if(response.data ){
this.form = response.data;
}
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.configId != null) {
updateBatchconfig(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
});
} else {
addBatchconfig(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
});
}
}
});
}
}
};
</script>

View File

@ -31,9 +31,9 @@
<el-table-column label="物料编码" align="center" prop="bomItemCode" />
<el-table-column label="物料名称" align="center" prop="bomItemName" :show-overflow-tooltip="true" />
<el-table-column label="规格" align="center" prop="bomItemSpec" :show-overflow-tooltip="true" />
<el-table-column label="单位" width="60px" align="center" prop="unitOfMeasure" />
<el-table-column label="使用比例" width="90px" align="center" prop="quantity" />
<el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" />
<el-table-column label="单位" width="60px" align="center" prop="unitName" />
<el-table-column label="使用比例" width="90px" align="center" prop="quantity" />
<el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" v-if="optType !='view'">
<template slot-scope="scope">
<el-button
@ -53,7 +53,7 @@
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
@ -74,8 +74,8 @@
<el-form-item label="BOM物料规格" prop="bomItemSpec">
<el-input v-model="form.bomItemSpec" readonly type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="BOM物料单位" prop="unitOfMeasure">
<el-input v-model="form.unitOfMeasure" readonly placeholder="请输入BOM物料单位" />
<el-form-item label="BOM物料单位" prop="unitName">
<el-input v-model="form.unitName" readonly placeholder="请输入BOM物料单位" />
</el-form-item>
<el-form-item label="物料使用比例" prop="quantity">
<el-input-number :precision="4" :step="0.1" :min="0" v-model="form.quantity" placeholder="请输入物料使用比例" />
@ -143,6 +143,9 @@ components: { ItemSelect },
rules: {
quantity: [
{ required: true, message: "物料使用比例不能为空", trigger: "blur" }
],
remark: [
{ max: 250, message: "字段过长", trigger: "blur" }
]
}
};
@ -232,7 +235,7 @@ components: { ItemSelect },
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
});
}
});
},
@ -248,7 +251,7 @@ components: { ItemSelect },
},
//
onItemSelected(obj){
debugger;
console.log(obj, '-----obj----===')
this.form.itemId = this.itemId;
if(obj != undefined && obj != null){
obj.forEach(element => {
@ -258,6 +261,7 @@ components: { ItemSelect },
this.form.bomItemSpec = element.specification;
this.form.unitOfMeasure = element.unitOfMeasure;
this.form.itemOrProduct = element.itemOrProduct;
this.form.unitName = element.unitName
this.form.quantity = 1;
this.form.enableFlag = 'Y';
var retFlag = false;

View File

@ -36,7 +36,7 @@
</el-form-item>
<el-form-item label="图片">
<ImageUpload :limit="1" :value="form.sipUrl" :fileSize="5" @onUploaded="handleImgUplaoded" @onRemoved="handleImgRemoved" ></ImageUpload>
</el-form-item>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
@ -49,7 +49,7 @@
<el-card shadow="hover" :body-style="{pading: '10px'}">
<el-popover>
<img :src="sipList[index].sipUrl" slot="reference" class="image"/>
<el-image class="imagePreview" :src="sipList[index].sopUrl" :preview-src-list="imageList"></el-image>
<el-image class="imagePreview" :src="sipList[index].sipUrl" :preview-src-list="imageList"></el-image>
</el-popover>
<div style="text-align:center;padding-top:12px">
<span>
@ -78,7 +78,7 @@ export default{
return {
title: "新增SIP信息",
loading: true,
open: false,
open: false,
//
form: {},
//
@ -86,16 +86,16 @@ export default{
itemId: [
{ required: true, message: "物料产品ID不能为空", trigger: "blur" }
],
},
},
// SOP
sipList: [],
sipList: [],
//
imageList: [],
//
processOptions:[],
queryParams: {
itemId: this.itemId
}
}
}
},
created(){
@ -136,7 +136,7 @@ export default{
processName: null,
sopTitle: null,
sopDescription: null,
sopUrl: null
sopUrl: null
};
this.resetForm("form");
},
@ -159,12 +159,12 @@ export default{
});
},
//
handleImgUplaoded(imgUrl){
handleImgUplaoded(imgUrl){
this.form.sipUrl = imgUrl;
},
//
handleImgRemoved(imgUrl){
this.form.sipUrl = null;
handleImgRemoved(imgUrl){
this.form.sipUrl = null;
},
//
submitForm(){
@ -228,4 +228,4 @@ export default{
width: 600px;
height: 500px;
}
</style>
</style>

View File

@ -0,0 +1,275 @@
<template>
<div class="app-container">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<el-col :span="14">
<el-row>
<el-col :span="16">
<el-form-item label="物料编码" prop="itemCode">
<el-input v-model="form.itemCode" readonly="readonly" maxlength="64" v-if="optType == 'view'"/>
<el-input v-model="form.itemCode" placeholder="请输入物料编码" maxlength="64" v-else/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label-width="80">
<el-switch v-model="autoGenFlag"
active-color="#13ce66"
active-text="自动生成"
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'">
</el-switch>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="物料名称" prop="itemName">
<el-input v-model="form.itemName" maxlength="255" readonly="readonly" v-if="optType=='view'" />
<el-input v-model="form.itemName" placeholder="请输入物料名称" maxlength="255" v-else/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="规格型号" prop="specification">
<el-input v-model="form.specification" type="textarea" maxlength="500" readonly="readonly" v-if="optType=='view'" />
<el-input v-model="form.specification" type="textarea" placeholder="请输入规格型号" maxlength="500" v-else/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="单位" prop="unitOfMeasure">
<el-select v-model="form.unitOfMeasure" disabled v-if="optType=='view'">
<el-option
v-for="item in measureOptions"
:key="item.measureCode"
:label="item.measureName"
:value="item.measureCode"
:disabled="item.enableFlag == 'N'"
></el-option>
</el-select>
<el-select v-model="form.unitOfMeasure" placeholder="请选择单位" v-else>
<el-option
v-for="item in measureOptions"
:key="item.measureCode"
:label="item.measureName"
:value="item.measureCode"
:disabled="item.enableFlag == 'N'"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-col>
<el-col :span="10">
<BarcodeImg ref="barcodeImg" :bussinessId="form.itemId" :bussinessCode="form.itemCode" barcodeType="ITEM"></BarcodeImg>
</el-col>
</el-row>
<el-row>
<el-col :span="14">
<el-form-item label="物料/产品分类" prop="itemTypeId">
<treeselect v-model="form.itemTypeId" :options="itemTypeOptions" :show-count="true" disabled v-if="optType=='view'" />
<treeselect v-model="form.itemTypeId" :options="itemTypeOptions" :show-count="true" placeholder="请选择所属分类" v-else :disable-branch-nodes="true"/>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="高价值/易被盗物品" label-width="150px" prop="highValue">
<el-checkbox v-model="form.highValue" :true-label="'Y'" :false-label="'N'"></el-checkbox>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="是否启用">
<el-radio-group v-model="form.enableFlag" disabled v-if="optType=='view'">
<el-radio
v-for="dict in dict.type.sys_yes_no"
:key="dict.value"
:label="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
<el-radio-group v-model="form.enableFlag" v-else>
<el-radio
v-for="dict in dict.type.sys_yes_no"
:key="dict.value"
:label="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="批次管理">
<el-switch
v-model="form.batchFlag"
active-text="是"
inactive-text="否"
active-value="Y"
inactive-value="N"
></el-switch>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="安全库存">
<el-radio-group v-model="form.safeStockFlag" disabled v-if="optType=='view'">
<el-radio
v-for="dict in dict.type.sys_yes_no"
:key="dict.value"
:label="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
<el-radio-group v-model="form.safeStockFlag" v-else>
<el-radio
v-for="dict in dict.type.sys_yes_no"
:key="dict.value"
:label="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="form.safeStockFlag == 'Y'">
<el-col :span="12">
<el-form-item label="最小库存量">
<el-input-number v-model="form.minStock" :percision="2" :step="1" disabled v-if="optType=='view'" />
<el-input-number v-model="form.minStock" :percision="2" :step="1" placeholder="请输入最小安全库存量" v-else />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="最大库存量">
<el-input-number v-model="form.maxStock" :percision="2" :step="1" disabled v-if="optType=='view'" />
<el-input-number v-model="form.maxStock" :percision="2" :step="1" placeholder="请输入最大安全库存量" v-else/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" readonly v-if="optType=='view'"></el-input>
<el-input v-model="form.remark" type="textarea" maxlength="500" placeholder="请输入内容" v-else></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-tabs type="border-card" v-if="form.itemId != null">
<el-tab-pane label="BOM组成">
<ItemBom :optType="optType" :itemId="form.itemId"></ItemBom>
</el-tab-pane>
<el-tab-pane v-if="form.batchFlag =='Y'" label="批次属性">
<BatchConfig :itemId="form.itemId" :optType="optType"></BatchConfig>
</el-tab-pane>
<el-tab-pane label="替代品"></el-tab-pane>
<el-tab-pane label="SIP">
<SIPTab :itemId="form.itemId" :optType="optType"></SIPTab>
</el-tab-pane>
<el-tab-pane label="SOP">
<SOPTab :itemId="form.itemId" :optType="optType"></SOPTab>
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
import SOPTab from "@/views/mes/md/mditem/components/sop.vue";
import BarcodeImg from "@/components/barcodeImg/index.vue";
import SIPTab from "@/views/mes/md/mditem/components/sip.vue";
import ItemBom from "@/views/mes/md/mditem/components/itembom.vue";
import Treeselect from "@riophae/vue-treeselect";
import BatchConfig from "./components/batch.vue";
import {genCode} from "@/api/system/autocode/rule";
import {listAllUnitmeasure} from "@/api/mes/md/unitmeasure";
import {treeselect} from "@/api/mes/md/itemtype";
import {getMdItem} from "@/api/mes/md/mdItem";
export default {
name: "itemForm",
components: {ItemBom, SIPTab, Treeselect, BarcodeImg, SOPTab, BatchConfig},
dicts: ['sys_yes_no','mes_item_product'],
data() {
return {
itemId: '',
//
form: {},
//
itemTypeOptions: undefined,
//
measureOptions: [],
//
autoGenFlag: false,
// view add edit
optType: undefined,
//
rules: {
itemCode: [
{ required: true, message: "物料/产品编码不能为空", trigger: "blur" },
{ max: 64, message: '物料/产品编码长度必须小于64个字符', trigger: 'blur' }
],
itemName: [
{ required: true, message: "物料/产品名称不能为空", trigger: "blur" }
],
unitOfMeasure: [
{ required: true, message: "单位不能为空",trigger: "blur"}
],
itemTypeId: [
{ required: true, message: "物料分类不能为空", trigger: "blur" },
],
remark: [
{ max: 250, message: '长度必须小于250个字符', trigger: 'blur' }
]
}
};
},
created() {
this.itemId = this.$route.query.id
this.getMdItemForm(this.itemId)
this.getUnits()
this.getTreeselect()
},
watch: {
'$route.query.id': {
handler(newVal, oldVal) {
if (newVal != undefined) {
this.itemId = newVal
this.getMdItemForm(this.itemId)
}
},
deep: true
}
},
methods: {
//
getMdItemForm(itemId) {
getMdItem(itemId).then(response => {
this.form = response.data;
this.optType = "view";
this.$nextTick(()=>{
this.$refs.barcodeImg.getBarcode();
})
});
},
/** 查询分类下拉树结构 */
getTreeselect() {
treeselect().then(response => {
this.itemTypeOptions = response.data;
});
},
getUnits(){
listAllUnitmeasure().then(response =>{
this.measureOptions = response.data;
});
},
//
handleAutoGenChange(autoGenFlag){
debugger;
if(autoGenFlag){
genCode('ITEM_CODE').then(response =>{
this.form.itemCode = response;
});
}else{
this.form.itemCode = null;
}
}
}
};
</script>

View File

@ -329,9 +329,9 @@
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="备注">
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" readonly v-if="optType=='view'"></el-input>
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" v-else></el-input>
<el-input v-model="form.remark" type="textarea" maxlength="500" placeholder="请输入内容" v-else></el-input>
</el-form-item>
</el-col>
</el-row>
@ -340,7 +340,9 @@
<el-tab-pane label="BOM组成">
<ItemBom :optType="optType" :itemId="form.itemId"></ItemBom>
</el-tab-pane>
<el-tab-pane v-if="form.batchFlag =='Y'" label="批次属性"></el-tab-pane>
<el-tab-pane v-if="form.batchFlag =='Y'" label="批次属性">
<BatchConfig :itemId="form.itemId" :optType="optType"></BatchConfig>
</el-tab-pane>
<el-tab-pane label="替代品"></el-tab-pane>
<el-tab-pane label="SIP">
<SIPTab :itemId="form.itemId" :optType="optType"></SIPTab>
@ -350,8 +352,7 @@
</el-tab-pane>
</el-tabs>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType =='view'">返回</el-button>
<el-button type="primary" @click="submitForm" v-else> </el-button>
<el-button type="primary" @click="submitForm" v-if="optType !='view'"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
@ -403,10 +404,11 @@ import { getBarcodeUrl } from "@/api/mes/wm/barcode";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import BarcodeImg from "@/components/barcodeImg/index.vue"
import printLabel from "@/components/printerLabel/index.vue"
import BatchConfig from "./components/batch.vue";
export default {
name: "MdItem",
dicts: ['sys_yes_no','mes_item_product'],
components: { Treeselect,ItemBom,SOPTab,SIPTab,BarcodeImg,printLabel },
components: { Treeselect,ItemBom,SOPTab,SIPTab,BarcodeImg,printLabel, BatchConfig },
data() {
return {
//
@ -501,6 +503,9 @@ export default {
],
itemTypeId: [
{ required: true, message: "物料分类不能为空", trigger: "blur" },
],
remark: [
{ max: 250, message: '长度必须小于250个字符', trigger: 'blur' }
]
}
};

View File

@ -104,7 +104,7 @@
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
@ -156,7 +156,7 @@
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
@ -210,10 +210,12 @@ export default {
//
rules: {
measureCode: [
{ required: true, message: "单位编码不能为空", trigger: "blur" }
{ required: true, message: "单位编码不能为空", trigger: "blur" },
{ max: 64, message: "字段过长", trigger: "blur" }
],
measureName: [
{ required: true, message: "单位名称不能为空", trigger: "blur" }
{ required: true, message: "单位名称不能为空", trigger: "blur" },
{ max: 100, message: "字段过长", trigger: "blur" }
],
primaryFlag: [
{ required: true, message: "是否是主单位不能为空", trigger: "blur" }
@ -221,6 +223,9 @@ export default {
enableFlag: [
{ required: true, message: "是否启用不能为空", trigger: "blur" }
],
remark: [
{ max: 250, message: '长度必须小于250个字符', trigger: 'blur' }
]
}
};
},

View File

@ -0,0 +1,85 @@
<template>
<div class="app-container">
<el-table v-loading="loading" :data="itemList">
<el-table-column label="物料编码" align="center" width="120px" prop="itemCode">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="handleView(scope.row)"
v-hasPermi="['mes:md:mditem:edit']"
>{{scope.row.itemCode}}</el-button>
</template>
</el-table-column>
<el-table-column label="物料名称" align="center" prop="itemName" :show-overflow-tooltip="true"/>
<el-table-column label="规格型号" align="center" prop="specification" :show-overflow-tooltip="true"/>
<el-table-column label="单位" align="center" prop="unitOfMeasure" />
<el-table-column label="入库数量" align="center" prop="quantityRecived" />
<el-table-column label="批次号" align="center" prop="batchCode" />
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<script>
import {getItem} from "@/api/mes/wm/itemrecpt";
export default {
name: "Bom",
data() {
return {
//
loading: true,
//
total: 0,
//
itemList: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
},
};
},
props: {
optType: undefined,
vendorId: undefined
},
created() {
this.getList(this.vendorId);
},
methods: {
handleView(row) {
this.$emit('handleSkip', row)
this.$router.push({
path: '/mes/md/item/form',
query: {
id: row.itemId
}
})
},
handleOpen(vendorId) {
this.getList(vendorId)
},
/** 获取表格数据 */
getList(vendorId) {
this.loading = true;
getItem(vendorId).then(response => {
this.itemList = response.data;
this.loading = false;
});
},
/** 点击跳转按钮 */
handleSkip(row) {
this.$emit('handleSkip', row)
},
}
};
</script>

View File

@ -0,0 +1,83 @@
<template>
<div class="app-container">
<el-table v-loading="loading" :data="recordList">
<el-table-column label="入库编号" align="center" prop="recptCode" width="120px" :show-overflow-tooltip="true">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="handleView(scope.row)"
>{{scope.row.recptCode}}</el-button>
</template>
</el-table-column>
<el-table-column label="入库名称" align="center" prop="recptName" />
<el-table-column label="采购订单号" align="center" prop="poCode" />
<el-table-column label="物料编码" align="center" prop="itemCode" width="120px" :show-overflow-tooltip="true" />
<el-table-column label="物料名称" align="center" prop="itemName" />
<el-table-column label="规格型号" align="center" prop="specification" />
<el-table-column label="单位" align="center" prop="unitOfMeasure" :show-overflow-tooltip="true" />
<el-table-column label="入库数量" align="center" prop="quantityRecived" :show-overflow-tooltip="true" />
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
</template>
<script>
import {getProcurementRecord} from "@/api/mes/wm/itemrecpt";
export default {
name: "Bom",
data() {
return {
//
loading: true,
//
total: 0,
// BOM
recordList: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
},
};
},
props: {
optType: undefined,
vendorId: undefined
},
created() {
this.getList(this.vendorId);
},
methods: {
handleView(row) {
this.$emit('handleSkip', row)
this.$router.push({
path: '/mes/wm/purchaseInventory/form',
query: {
id: row.recptId
}
})
},
handleOpen(vendorId) {
this.getList(vendorId)
},
/** 获取表格数据 */
getList(vendorId) {
this.loading = true;
getProcurementRecord(vendorId).then(response => {
this.recordList = response.data;
this.loading = false;
});
},
}
};
</script>

View File

@ -130,7 +130,7 @@
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="供应商编码" align="center" prop="vendorCode" >
<template slot-scope="scope">
<el-button
<el-button
type="text"
@click="handleView(scope.row)"
v-hasPermi="['mes:md:vendor:query']"
@ -171,7 +171,7 @@
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
@ -181,7 +181,7 @@
/>
<!-- 添加或修改供应商对话框 -->
<el-dialog :title="title" :visible.sync="open" width="960px" append-to-body>
<el-dialog :title="title" :visible.sync="open" @close="cancel" width="960px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<el-col :span="14">
@ -196,7 +196,7 @@
<el-switch v-model="autoGenFlag"
active-color="#13ce66"
active-text="自动生成"
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'">
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'">
</el-switch>
</el-form-item>
</el-col>
@ -230,10 +230,10 @@
<i class="el-icon-picture-outline"></i>
</div>
</el-image>
</div>
</el-col>
</div>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="供应商简介" prop="vendorDes">
@ -356,9 +356,16 @@
</el-col>
</el-row>
</el-form>
<el-tabs type="border-card" v-model="activeName" v-if="optType != 'add'" @tab-click="handleClick">
<el-tab-pane label="物料清单" name="item">
<Item ref="itemList" @handleSkip="handleSkip" :optType="optType" :vendorId="form.vendorId"></Item>
</el-tab-pane>
<el-tab-pane label="采购记录" name="purchase">
<Purchase ref="PurchaseList" @handleSkip="handleSkip" :optType="optType" :vendorId="form.vendorId"></Purchase>
</el-tab-pane>
</el-tabs>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType =='view'">返回</el-button>
<el-button type="primary" @click="submitForm" v-else> </el-button>
<el-button type="primary" @click="submitForm" v-if="optType !='view'"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
@ -401,11 +408,15 @@ import { listVendor, getVendor, delVendor, addVendor, updateVendor } from "@/api
import { getBarcodeUrl } from "@/api/mes/wm/barcode";
import { getToken } from "@/utils/auth";
import {genCode} from "@/api/system/autocode/rule"
import Item from "@/views/mes/md/vendor/components/item.vue";
import Purchase from "@/views/mes/md/vendor/components/purchase.vue";
export default {
name: "Vendor",
dicts: ['sys_yes_no','mes_vendor_level'],
components: { Item, Purchase },
data() {
return {
activeName: "item",
//
autoGenFlag:false,
optType: undefined,
@ -479,14 +490,64 @@ export default {
//
rules: {
vendorCode: [
{ required: true, message: "供应商编码不能为空", trigger: "blur" }
{ required: true, message: "供应商编码不能为空", trigger: "blur" },
{ max: 64, message: "字段过长", trigger: "blur" }
],
vendorName: [
{ required: true, message: "供应商名称不能为空", trigger: "blur" }
{ required: true, message: "供应商名称不能为空", trigger: "blur" },
{ max: 100, message: "字段过长", trigger: "blur" }
],
vendorNick: [
{ max: 100, message: "字段过长", trigger: "blur" }
],
vendorEn: [
{ max: 100, message: "字段过长", trigger: "blur" }
],
enableFlag: [
{ required: true, message: "是否启用不能为空", trigger: "blur" }
],
remark: [
{ max: 250, message: '长度必须小于250个字符', trigger: 'blur' }
],
vendorDes: [
{ max: 250, message: "字段过长", trigger: "blur" }
],
address: [
{ max: 250, message: "字段过长", trigger: "blur" }
],
website: [
{ max: 100, message: "字段过长", trigger: "blur" }
],
email: [
{ max: 100, message: "字段过长", trigger: "blur" }
],
tel: [
{ max: 64, message: "字段过长", trigger: "blur" }
],
contact1: [
{ max: 32, message: "字段过长", trigger: "blur" }
],
contact1Tel: [
{ max: 64, message: "字段过长", trigger: "blur" }
],
contact1Email: [
{ max: 100, message: "字段过长", trigger: "blur" }
],
contact2: [
{ max: 32, message: "字段过长", trigger: "blur" }
],
contact2Tel: [
{ max: 64, message: "字段过长", trigger: "blur" }
],
contact2Email: [
{ max: 100, message: "字段过长", trigger: "blur" }
],
creditCode: [
{ max: 64, message: "字段过长", trigger: "blur" }
],
vendorLogo: [
{ max: 100, message: "字段过长", trigger: "blur" }
],
}
};
},
@ -494,6 +555,17 @@ export default {
this.getList();
},
methods: {
handleSkip() {
this.cancel()
},
handleClick(tab) {
if (tab.name == 'item') {
this.$refs.itemList.handleOpen(this.form.vendorId)
}
if (tab.name == 'purchase') {
this.$refs.PurchaseList.handleOpen(this.form.vendorId)
}
},
/** 查询供应商列表 */
getList() {
this.loading = true;
@ -505,12 +577,13 @@ export default {
},
//
cancel() {
this.activeName = "item"
this.open = false;
this.reset();
},
//
reset() {
this.form = {
this.form = {
vendorId: null,
vendorCode: null,
vendorName: null,
@ -579,7 +652,9 @@ export default {
this.open = true;
this.title = "查看供应商";
this.optType = "view";
this.activeName = "item"
this.getBarcodeUrl();
this.$refs.itemList.handleOpen(vendorId)
});
},
/** 修改按钮操作 */
@ -591,7 +666,9 @@ export default {
this.open = true;
this.title = "修改供应商";
this.optType = "edit";
this.activeName = "item"
this.getBarcodeUrl();
this.$refs.itemList.handleOpen(vendorId)
});
},
/** 提交按钮 */
@ -667,10 +744,10 @@ export default {
getBarcodeUrl(){
this.barcodeParams.bussinessId = this.form.vendorId;
this.barcodeParams.bussinessCode = this.form.vendorCode;
getBarcodeUrl(this.barcodeParams).then( response =>{
getBarcodeUrl(this.barcodeParams).then( response =>{
if(response.data != null){
this.$set(this.form,'barcodeUrl',response.data.barcodeUrl);//DOM
}
}
});
},
//
@ -682,7 +759,7 @@ export default {
});
}else{
this.form.vendorCode = null;
}
}
}
}
};
@ -701,4 +778,4 @@ export default {
justify-content: center; /* 水平居中 */
align-items: center; /* 垂直居中 */
}
</style>
</style>

View File

@ -139,15 +139,16 @@
<el-row>
<el-col :span="24">
<el-form-item label="面积" prop="area">
<el-input-number :min="0" :percision="2" :step="1" v-model="form.area" placeholder="请输入面积" />
<el-input-number :min="0" :max="99999999" :percision="2" :step="1" v-model="form.area" placeholder="请输入面积" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="负责人" prop="charge">
<el-input v-model="form.charge" placeholder="请输入负责人" />
<el-input v-model="form.charge" readonly @click.native="handleCharge" placeholder="请输入负责人" />
</el-form-item>
<UserSingleSelect ref="userSelect" @onSelected="onUserSelected"></UserSingleSelect>
</el-col>
</el-row>
<el-row>
@ -184,8 +185,7 @@
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType =='view'">返回</el-button>
<el-button type="primary" @click="submitForm" v-else> </el-button>
<el-button type="primary" @click="submitForm" v-if="optType !='view'"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
@ -197,8 +197,10 @@ import { listWorkshop, getWorkshop, delWorkshop, addWorkshop, updateWorkshop } f
import {genCode} from "@/api/system/autocode/rule"
import BarcodeImg from "@/components/barcodeImg/index.vue"
import {getBarcodeUrl} from "@/api/mes/wm/barcode";
import {listUser} from "@/api/system/user";
import UserSingleSelect from "@/components/userSelect/single.vue";
export default {
components:{BarcodeImg},
components:{UserSingleSelect, BarcodeImg},
name: "Workshop",
dicts: ['sys_yes_no'],
data() {
@ -245,21 +247,40 @@ export default {
//
rules: {
workshopCode: [
{ required: true, message: "车间编码不能为空", trigger: "blur" }
{ required: true, message: "车间编码不能为空", trigger: "blur" },
{ max: 64, message: "字段过长", trigger: "blur" }
],
workshopName: [
{ required: true, message: "车间名称不能为空", trigger: "blur" }
{ required: true, message: "车间名称不能为空", trigger: "blur" },
{ max: 100, message: "字段过长", trigger: "blur" }
],
charge: [
{ max: 32, message: "字段过长", trigger: "blur" }
],
enableFlag: [
{ required: true, message: "是否启用不能为空", trigger: "blur" }
],
}
remark: [
{ max: 250, message: '长度必须小于250个字符', trigger: 'blur' }
]
},
};
},
created() {
this.getList();
},
methods: {
/** 选择用户 */
onUserSelected(val) {
if (val) {
this.form.charge = val.nickName
this.form.chargeId = val.userId
}
},
/** 点击负责人输入框 */
handleCharge() {
this.$refs.userSelect.showFlag = true;
},
/** 查询车间列表 */
getList() {
this.loading = true;

View File

@ -282,8 +282,7 @@
</el-col>
</el-row>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType =='view'">返回</el-button>
<el-button type="primary" @click="submitForm" v-else> </el-button>
<el-button type="primary" @click="submitForm" v-if="optType !='view'"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
@ -396,10 +395,15 @@ export default {
//
rules: {
workstationCode: [
{ required: true, message: "工作站编号不能为空", trigger: "blur" }
{ required: true, message: "工作站编号不能为空", trigger: "blur" },
{ max: 64, message: "字段过长", trigger: "blur" }
],
workstationName: [
{ required: true, message: "工作站名称不能为空", trigger: "blur" }
{ required: true, message: "工作站名称不能为空", trigger: "blur" },
{ max: 100, message: "字段过长", trigger: "blur" }
],
workstationAddress: [
{ max: 100, message: "字段过长", trigger: "blur" }
],
enableFlag: [
{ required: true, message: "是否启用不能为空", trigger: "blur" }
@ -409,6 +413,9 @@ export default {
],
processId: [
{ required: true, message: "请选择所属工序", trigger: "blur" }
],
remark: [
{ max: 250, message: '长度必须小于250个字符', trigger: 'blur' }
]
}
};

View File

@ -121,7 +121,7 @@
<el-table-column label="产品物料编码" width="120px" align="center" prop="itemCode" />
<el-table-column label="产品物料名称" width="150px" align="center" prop="itemName" />
<el-table-column label="规格型号" align="center" prop="specification" />
<el-table-column label="报工数量" align="center" prop="quantityFeedback" />
<el-table-column label="报工数量" align="center" prop="quantityFeedback" />
<el-table-column label="报工人" align="center" prop="nickName" />
<el-table-column label="报工时间" align="center" prop="feedbackTime" width="180">
<template slot-scope="scope">
@ -148,21 +148,17 @@
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['mes:pro:feedback:edit']"
v-if="scope.row.status =='PREPARE'"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['mes:pro:feedback:remove']"
v-if="scope.row.status =='PREPARE'"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
@ -253,7 +249,7 @@
</el-col>
<el-col :span="8">
<el-form-item label="待检测数量" prop="quantityUncheck">
<el-input-number :min="0" @change="handleQuantityChanged" v-model="form.quantityUncheck" placeholder="请输入待检测数量" />
<el-input-number :min="0" :max="99999999" @change="handleQuantityChanged" v-model="form.quantityUncheck" placeholder="请输入待检测数量" />
</el-form-item>
</el-col>
</el-row>
@ -294,11 +290,10 @@
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType =='view' || form.status !='PREPARE' ">返回</el-button>
<el-button type="primary" @click="submitForm" v-if="form.status =='PREPARE' && optType !='view' "> </el-button>
<el-button type="primary" @click="handleSubmit" v-if="form.status =='PREPARE' && optType !='view' && form.recordId !=null ">提交审批</el-button>
<el-button type="success" @click="handleExecute" v-if="form.status =='APPROVING' && form.recordId !=null">审批通过</el-button>
<el-button type="danger" @click="handleReject" v-if="form.status =='APPROVING' && form.recordId !=null">审批不通过</el-button>
<el-button type="success" @click="handleExecute" v-if="form.status =='APPROVING' && form.recordId !=null && form.recordNick == user.nickName">审批通过</el-button>
<el-button type="danger" @click="handleReject" v-if="form.status =='APPROVING' && form.recordId !=null && form.recordNick == user.nickName">审批不通过</el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
@ -311,12 +306,14 @@ import WorkorderSelect from "@/components/workorderSelect/single.vue"
import WorkstationSelect from "@/components/workstationSelect/simpletableSingle.vue"
import UserSingleSelect from "@/components/userSelect/single.vue"
import ProtaskSelect from "@/components/TaskSelect/taskSelectSingle.vue"
import {getUserProfile} from "@/api/system/user";
export default {
name: "Feedback",
components: {WorkorderSelect,WorkstationSelect,UserSingleSelect,ProtaskSelect},
dicts: ['mes_order_status', 'mes_feedback_type'],
data() {
return {
user: {}, //
optType: undefined,
//
loading: true,
@ -384,12 +381,18 @@ export default {
],
feedbackTime: [
{ required: true, message: "请选择报工时间", trigger: "blur"}
],
remark: [
{ max: 250, message: '长度必须小于250个字符', trigger: 'blur' }
]
}
};
},
created() {
this.getList();
getUserProfile().then(response => {
this.user = response.data;
});
},
methods: {
/** 查询生产报工记录列表 */
@ -509,13 +512,13 @@ export default {
this.$modal.msgSuccess("修改成功");
this.open=false;
this.getList();
});
} else {
addFeedback(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open=false;
this.getList();
this.getList();
});
}
}
@ -575,7 +578,7 @@ export default {
},
//
handleWorkorderSelect(){
this.$refs.woSelect.showFlag = true;
this.$refs.woSelect.handleOpen(this.form.workorderId)
},
onWorkorderSelected(row){
if(row != undefined && row != null){
@ -590,8 +593,7 @@ export default {
}
},
handleTaskSelect(){
this.$refs.taskSelect.showFlag = true;
this.$refs.taskSelect.getList();
this.$refs.taskSelect.handleOpen(this.form.taskId)
},
onTaskSelected(row){
debugger;
@ -621,7 +623,7 @@ export default {
this.$refs.userSelect.showFlag = true;
},
//
onUserSelected(row){
onUserSelected(row){
this.form.nickName = row.nickName;
this.form.userName = row.userName;
},
@ -630,7 +632,7 @@ export default {
this.$refs.user2Select.showFlag = true;
},
//
onUser2Selected(row){
onUser2Selected(row){
this.form.recordUser = row.userName;
this.form.recordNick = row.nickName;
},

View File

@ -74,7 +74,7 @@
</el-row>
<el-table v-loading="loading" :data="procardList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="流转卡编号" align="center" prop="cardCode" >
<template slot-scope="scope">
<el-button
@ -89,7 +89,7 @@
<el-table-column label="产品物料编码" align="center" prop="itemCode" />
<el-table-column label="产品物料名称" align="center" prop="itemName" />
<el-table-column label="规格型号" align="center" prop="specification" />
<el-table-column label="单位" align="center" prop="unitOfMeasure" />
<el-table-column label="单位" align="center" prop="unitName" />
<el-table-column label="流转数量" align="center" prop="quantityTransfered" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
@ -97,7 +97,7 @@
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
@ -107,8 +107,8 @@
/>
<!-- 添加或修改工序流转卡对话框 -->
<el-dialog :title="title" :visible.sync="open" width="960px" append-to-body>
<el-form ref="form" :model="form" label-width="100px">
<el-dialog :title="title" :visible.sync="open" width="960px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="16">
<el-row>
@ -129,12 +129,12 @@
<el-row>
<el-col :span="12">
<el-form-item label="产品编码" prop="itemCode">
<el-input v-model="form.itemCode" placeholder="请输入产品物料编码" />
<el-input v-model="form.itemCode" readonly placeholder="请输入产品物料编码" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="产品名称" prop="itemName">
<el-input v-model="form.itemName" placeholder="请输入产品物料名称" />
<el-input v-model="form.itemName" readonly placeholder="请输入产品物料名称" />
</el-form-item>
</el-col>
</el-row>
@ -146,14 +146,14 @@
</el-col>
<el-col :span="12">
<el-form-item label="流转数量" prop="quantityTransfered">
<el-input v-model="form.quantityTransfered" placeholder="请输入流转数量" />
<el-input-number v-model="form.quantityTransfered" :max="99999999" :min="1" placeholder="请输入流转数量" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="单位" prop="unitOfMeasure">
<el-input v-model="form.unitOfMeasure" placeholder="请输入单位" />
<el-input v-model="form.unitOfMeasure" readonly placeholder="请输入单位" />
</el-form-item>
</el-col>
<el-col :span="12">
@ -175,12 +175,12 @@
</el-col>
</el-row>
</el-form>
<el-divider v-if="form.cardId !=null" content-position="center">工序</el-divider>
<el-divider v-if="form.cardId !=null" content-position="center">工序</el-divider>
<el-card shadow="always" v-if="form.cardId !=null" class="box-card">
<Procardprocess :cardId="form.cardId" :optType="optType"></Procardprocess>
</el-card>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button type="primary" @click="submitForm" v-if="optType != 'view'"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
@ -225,6 +225,25 @@ export default {
cardCode: null, workorderId: null, workorderCode: null, workorderName: null, batchCode: null, itemId: null, itemCode: null, itemName: null, specification: null, unitOfMeasure: null, barcodeUrl: null, quantityTransfered: null, status: null, attr1: null, attr2: null, attr3: null, attr4: null, },
//
form: {},
//
rules: {
cardCode: [
{ required: true, message: "请填写流转卡编号", trigger: "blur" },
{ max: 64, message: "字段过长", trigger: "blur" }
],
workorderCode: [
{ required: true, message: "请选择生产工单", trigger: "blur" }
],
specification: [
{ max: 250, message: "字段过长", trigger: "blur" }
],
batchCode: [
{ max: 64, message: "字段过长", trigger: "blur" }
],
remark: [
{ max: 250, message: '长度必须小于250个字符', trigger: 'blur' }
]
}
};
},
created() {
@ -334,10 +353,11 @@ export default {
},
//
handleWorkorderSelect(){
this.$refs.woSelect.showFlag = true;
this.$refs.woSelect.handleOpen(this.form.workorderId)
},
onWorkorderSelected(row){
if(row != undefined && row != null){
console.log(row, '-----------------')
if(row != undefined && row != null){
this.form.workorderId = row.workorderId;
this.form.workorderCode = row.workorderCode;
this.form.workorderName = row.workorderName;
@ -346,6 +366,7 @@ export default {
this.form.itemName = row.productName;
this.form.specification = row.specification;
this.form.unitOfMeasure = row.unitOfMeasure;
this.form.unitName = row.unitName
}
},
}

View File

@ -72,7 +72,7 @@
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
@ -87,7 +87,7 @@
<el-row >
<el-col :span="12">
<el-form-item label="顺序编号" prop="orderNum">
<el-input-number :min="1" v-model="form.orderNum" placeholder="请输入顺序编号" />
<el-input-number :min="1" :max="999999" v-model="form.orderNum" placeholder="请输入顺序编号" />
</el-form-item>
</el-col>
<el-col :span="12">

View File

@ -18,12 +18,19 @@
/>
</el-form-item>
<el-form-item label="是否启用" prop="enableFlag">
<el-input
<el-select
v-model="queryParams.enableFlag"
placeholder="请输入是否启用"
placeholder="是否启用"
clearable
@keyup.enter.native="handleQuery"
/>
style="width: 215px"
>
<el-option
v-for="dict in dict.type.sys_yes_no"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@ -114,7 +121,7 @@
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
@ -137,7 +144,7 @@
<el-switch v-model="autoGenFlag"
active-color="#13ce66"
active-text="自动生成"
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'">
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'">
</el-switch>
</el-form-item>
</el-col>
@ -183,8 +190,7 @@
<el-divider content-position="center" v-if="form.processId !=null">操作步骤</el-divider>
<Processcontent v-if="form.processId !=null" :optType="optType" :processId="form.processId"></Processcontent>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType =='view'">返回</el-button>
<el-button type="primary" @click="submitForm" v-else> </el-button>
<el-button type="primary" @click="submitForm" v-if="optType !='view'"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
@ -235,14 +241,22 @@ export default {
//
rules: {
processCode: [
{ required: true, message: "工序编码不能为空", trigger: "blur" }
{ required: true, message: "工序编码不能为空", trigger: "blur" },
{ max: 64, message: "字段过长", trigger: "blur" }
],
processName: [
{ required: true, message: "工序名称不能为空", trigger: "blur" }
{ required: true, message: "工序名称不能为空", trigger: "blur" },
{ max: 100, message: "字段过长", trigger: "blur" }
],
attention: [
{ max: 500, message: "字段过长", trigger: "blur" }
],
enableFlag: [
{ required: true, message: "是否启用不能为空", trigger: "blur" }
],
remark: [
{ max: 250, message: '长度必须小于250个字符', trigger: 'blur' }
]
}
};
},
@ -270,7 +284,7 @@ export default {
processId: null,
processCode: null,
processName: null,
attention: null,
attention: null,
enableFlag: 'Y',
remark: null,
createBy: null,

View File

@ -115,7 +115,7 @@
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
@ -138,7 +138,7 @@
<el-switch v-model="autoGenFlag"
active-color="#13ce66"
active-text="自动生成"
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'">
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'">
</el-switch>
</el-form-item>
</el-col>
@ -181,17 +181,16 @@
</el-col>
</el-row>
</el-form>
<el-tabs type="border-card" v-if="form.routeId != null">
<el-tabs type="border-card" v-if="form.routeId != null">
<el-tab-pane label="组成工序">
<Routeprocess v-if="form.routeId !=null" :optType="optType" :routeId="form.routeId"></Routeprocess>
<Routeprocess v-if="form.routeId !=null" :optType="optType" :routeId="form.routeId"></Routeprocess>
</el-tab-pane>
<el-tab-pane label="关联产品">
<Routeproduct v-if="form.routeId !=null" :optType="optType" :routeId="form.routeId"></Routeproduct>
</el-tab-pane>
</el-tabs>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType =='view'">返回</el-button>
<el-button type="primary" @click="submitForm" v-else> </el-button>
<el-button type="primary" @click="submitForm" v-if="optType !='view'"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
@ -244,14 +243,22 @@ export default {
//
rules: {
routeCode: [
{ required: true, message: "工艺路线编号不能为空", trigger: "blur" }
{ required: true, message: "工艺路线编号不能为空", trigger: "blur" },
{ max: 64, message: "字段过长", trigger: "blur" }
],
routeName: [
{ required: true, message: "工艺路线名称不能为空", trigger: "blur" }
{ required: true, message: "工艺路线名称不能为空", trigger: "blur" },
{ max: 100, message: "字段过长", trigger: "blur" }
],
enableFlag: [
{ required: true, message: "是否启用不能为空", trigger: "blur" }
],
remark: [
{ max: 250, message: '长度必须小于250个字符', trigger: 'blur' }
],
routeDesc: [
{ max: 250, message: '字段过长', trigger: 'blur' }
]
}
};
},

View File

@ -82,7 +82,7 @@
</el-table-column>
<el-table-column label="产品物料名称" width="150px" align="center" prop="itemName" :show-overflow-tooltip="true"/>
<el-table-column label="规格型号" align="center" prop="specification" :show-overflow-tooltip="true"/>
<el-table-column label="单位" align="center" prop="unitOfMeasure" />
<el-table-column label="单位" align="center" prop="unitName" />
<el-table-column label="操作" align="center" v-if="optType !='view'" width="100px" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
@ -102,7 +102,7 @@
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
@ -122,17 +122,17 @@
</el-input>
<ItemSelect ref="itemSelect" @onSelected="onItemSelected" > </ItemSelect>
</el-form-item>
</el-col>
</el-col>
<el-col :span="8">
<el-form-item label="产品物料名称" prop="itemName">
<el-input v-model="form.itemName" placeholder="请选择产品" disabled/>
</el-form-item>
</el-col>
</el-col>
<el-col :span="8">
<el-form-item label="单位" prop="unitOfMeasure">
<el-input v-model="form.unitOfMeasure" placeholder="请选择产品" disabled/>
<el-form-item label="单位" prop="unitName">
<el-input v-model="form.unitName" placeholder="请选择产品" disabled/>
</el-form-item>
</el-col>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
@ -238,6 +238,9 @@ export default {
rules: {
itemId: [
{ required: true, message: "产品物料不能为空", trigger: "blur" }
],
remark: [
{ max: 250, message: "字段过长", trigger: "blur" }
]
}
};
@ -279,7 +282,8 @@ export default {
this.form.itemCode = obj.itemCode;
this.form.itemName = obj.itemName;
this.form.specification = obj.specification;
this.form.unitOfMeasure = obj.unitOfMeasure;
this.form.unitOfMeasure = obj.unitOfMeasure;
this.form.unitName = obj.unitName
}
},
//
@ -359,7 +363,7 @@ export default {
updateRouteproduct(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
this.getList();
});
} else {
addRouteproduct(this.form).then(response => {
@ -377,14 +381,14 @@ export default {
// moveRouteproduct(this.form).then(response =>{
// this.$modal.msgSuccess("");
// this.open = false;
// this.getList();
// })
// this.getList();
// })
// ).catch(
// () => {
// this.$message({
// type: 'info',
// message: ''
// });
// });
// });
}
}
@ -402,7 +406,7 @@ export default {
},
/** 导出按钮操作 */
handleExport() {
this.download('pro/routeproduct/export', {
this.download('mes/pro/routeproduct/export', {
...this.queryParams
}, `routeproduct_${new Date().getTime()}.xlsx`)
}

Some files were not shown because too many files have changed in this diff Show More