This commit is contained in:
liushuai
2019-06-03 08:28:01 +08:00
55 changed files with 2981 additions and 267 deletions

View File

@@ -18,7 +18,7 @@ export function QualityType() {
method: 'post',
data: {
type: '1',
name: '质管理_质检类型_查询数据'
name: '质管理_质检类型_查询数据'
}
})
}
@@ -35,14 +35,15 @@ export function searchgroup(num) {
})
}
// 组件查询
export function selecttable(check1, value1, check2, value2, check3, value3, check4, value4) {
export function selecttable(check1, value1, check2, value2, check3, value3, check4, value4, pageCurrent, pageSize) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '质管理_质量情况_查询数据',
param: '机床流水号_check=' + check1 + '&机床流水号=' + value1 + '&组件流水号_check=' + check2 + '&组件流水号=' + value2 + '&零件名称_check=' + check3 + '&零件名称=' + value3 + '&质检类型代码_check=' + check4 + '&质检类型代码=' + value4
name: '质管理_质量情况_查询数据',
param: '机床流水号_check=' + check1 + '&机床流水号=' + value1 + '&组件流水号_check=' + check2 + '&组件流水号=' + value2 + '&零件名称_check=' + check3 + '&零件名称=' + value3 + '&质检类型代码_check=' + check4 + '&质检类型代码=' + value4,
Pagination: pageCurrent + '&' + pageSize
}
})
}

View File

@@ -0,0 +1,38 @@
import request from '@/utils/request'
// 初始化机床项目
export function initProject() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: 'PDM_项目名称_查询数据'
}
})
}
// PDM_机床名称_发货状态_查询数据
export function selecttable(check2, machineNumberValue) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: 'PDM_机床名称_发货状态_查询数据',
param: '机床流水号_check=' + check2 + '&机床流水号=' + machineNumberValue
}
})
}
// PDM_机床名称_发货状态_编辑数据
export function updatestate(machineNumberValue, state, attention) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: 'PDM_机床名称_发货审批_编辑数据',
param: '机床流水号=' + machineNumberValue + '&发货状态=' + state + '&注意事项=' + attention
}
})
}

View File

@@ -0,0 +1,39 @@
import request from '@/utils/request'
// 初始化机床项目
export function initProject() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: 'PDM_项目名称_查询数据'
}
})
}
// 组件查询
export function searchgroup(num) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: 'PDM_组件名称_查询数据',
param: '机床流水号=' + num
}
})
}
// 车间生产管理工艺_备料管理_备料出库记录_视图_查询数据
export function selecttable(check1, value1, check2, value2, check3, value3, check4, value4, check5, value5, pageCurrent, pageSize) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '车间生产管理工艺_备料管理_备料出库记录_视图_查询数据',
param: '机床流水号_check=' + check1 + '&机床流水号=' + value1 + '&组件流水号_check=' + check2 + '&组件流水号=' + value2 + '&零件图号_check=' + check3 + '&零件图号=' + value3 + '&开始时间_check=' + check4 + '&开始时间=' + value4 + '&结束时间_check=' + check5 + '&结束时间=' + value5,
Pagination: pageCurrent + '&' + pageSize
}
})
}

View File

@@ -0,0 +1,122 @@
import request from '@/utils/request'
// 初始化人员
export function initPickPerson() {
return request({
url: '',
method: 'post',
data: {
type: '3',
name: 'select 姓名,人员编号 from 人事档案管理_人员名单 where 是否离职 = 0'
}
})
}
// 初始化机床项目
export function initMachineProject() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: 'PDM_项目名称_查询数据'
}
})
}
// 组件查询
export function searchgroup(num) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: 'PDM_组件名称_查询数据',
param: '机床流水号=' + num
}
})
}
// 查询三表
export function searchTable(...params) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '车间装配管理_领料单_三表_查询数据',
param: `机床流水号_check=${params[0]}&机床流水号=${params[1]}&组件流水号_check=${params[2]}&组件流水号=${params[3]}&零件类型=${params[6]}`,
Pagination: params[4] + '&' + params[5]
}
})
}
// 领料单查询
export function searchList(pageCurrent, pageSize, listNumber_check, listNumber) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '车间装配管理_领料单_查询数据',
param: '领料单编号_check=' + listNumber_check + '&领料单编号=' + listNumber,
Pagination: pageCurrent + '&' + pageSize
}
})
}
// 创建领料单
export function createList(num, remark) {
return request({
url: '',
method: 'post',
data: {
type: '2',
name: '车间装配管理_领料单_增加数据',
param: '领料人流水号=' + num + '&领料单备注=' + remark
}
})
}
// 删除领料单
export function dropList(num) {
return request({
url: '',
method: 'post',
data: {
type: '2',
name: '车间装配管理_领料单_删除数据',
param: '领料单流水号=' + num
}
})
}
// 查询领料单明细
export function searchListDetail(...params) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '车间装配管理_领料单明细_查询数据',
param: `领料单流水号=${params[0]}`
}
})
}
// 选入领料单
export function selectIntoList(...params) {
return request({
url: '',
method: 'post',
data: {
type: '2',
name: '车间装配管理_领料单明细_增加数据',
param: `基本件流水号组=${params[0]}&标准件和外购件流水号组=${params[1]}&领料单流水号=${params[2]}`
}
})
}
// 删除领料单
export function dropListDetail(num) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '车间装配管理_领料单明细_删除数据',
param: '领料单明细流水号=' + num
}
})
}

View File

@@ -0,0 +1,39 @@
import request from '@/utils/request'
// 领料单查询
export function searchList(pageCurrent, pageSize, listNumber_check, listNumber) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '车间装配管理_领料单_查询数据',
param: '领料单编号_check=' + listNumber_check + '&领料单编号=' + listNumber,
Pagination: pageCurrent + '&' + pageSize
}
})
}
// 查询领料单明细
export function searchListDetail(...params) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '车间装配管理_领料单明细_查询数据',
param: `领料单流水号=${params[0]}`
}
})
}
// 查看领料单明细相关的物料货位数量
export function searchStockNumber(...params) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '库存管理_物料出库_标准件和外购件_查询数据',
param: `物料流水号=${params[0]}`
}
})
}

View File

@@ -61,6 +61,18 @@ export function production(num, a, b, d, e, f, g, h, i, j, k, l, m, n, o, p, q,
}
})
}
// 合并投产
export function production2(num, a, b, d, e, f, g, h, i, j, k, l, m, n, o, p, q, x, s, t, u, v, w) {
return request({
url: '',
method: 'post',
data: {
type: '2',
name: '设备管理_可安排生产计划零件排序_制定组时间_同时传递_合并投产',
param: '组件零件基本件流水号=' + num + '=int&投产类型流水号=' + a + '=int&数据类型=' + b + '=int&投产批次=1=int&批次数量=' + d + '=string&计划开始时间=' + e + '=string&计划结束时间=' + f + '=string&工艺计划开始时间=' + g + '=string&工艺计划结束时间=' + h + '=string&定额计划开始时间=' + i + '=string&定额计划结束时间=' + j + '=string&计划编制计划开始时间=' + k + '=string&计划编制计划结束时间=' + l + '=string&机加工开始时间=' + m + '=string&机加工结束时间=' + n + '=string&单件外协时间=' + o + '=string&单件是否外协=' + p + '=int&单件是否外协分类=' + q + '=string&计划制定人员编号=' + x + '&材料流水号=' + s + '=int&是否临时件=' + t + '=int&是否难度件=' + u + '=string&是否着急=' + v + '=int&是否白图=' + w + '=int'
}
})
}
// 获取表2的值
export function getTable1(num, pageList, pageSize) {
return request({

View File

@@ -13,6 +13,18 @@ export function searchtable(num1, num2, num3, num4, num5, pageCurrent, pageSize)
}
})
}
// 查询人员总工工时
export function searchtable11(num1, num2, num3, num4, num5) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '车间生产管理工艺_工时统计_查询数据2',
param: '操作者_check=' + num1 + '&姓名=' + num2 + '&时间_check=' + num3 + '&开始时间=' + num4 + '&结束时间=' + num5
}
})
}
// 查询人员具体工序
export function searchtable2(num1, num2, num3, num4, pageCurrent, pageSize) {
return request({
@@ -26,3 +38,76 @@ export function searchtable2(num1, num2, num3, num4, pageCurrent, pageSize) {
}
})
}
// 查询人员具体工序
export function searchtable22(num1, num2, num3, num4) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '车间生产管理工艺_工时统计按人员查询_查询数据2',
param: '工作者编号=' + num1 + '&时间_check=' + num2 + '&开始时间=' + num3 + '&结束时间=' + num4
}
})
}
// 初始化机床项目
export function initProject() {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: 'PDM_项目名称_查询数据'
}
})
}
// 车间生产管理工艺_工时统计_机床查询_查询数据
export function searchtable4(num1, num2, pageCurrent, pageSize) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '车间生产管理工艺_工时统计_机床查询_查询数据',
param: '机床流水号_check=' + num1 + '&机床流水号=' + num2,
Pagination: pageCurrent + '&' + pageSize
}
})
}
// 车间生产管理工艺_工时统计_机床查询_查询数据
export function searchtable44(num1, num2) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '车间生产管理工艺_工时统计_机床查询_查询数据',
param: '机床流水号_check=' + num1 + '&机床流水号=' + num2
}
})
}
// 车间生产管理工艺_工时统计_组号查询_查询数据
export function searchtable5(num1, pageCurrent, pageSize) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '车间生产管理工艺_工时统计_组号查询_查询数据',
param: '机床流水号=' + num1,
Pagination: pageCurrent + '&' + pageSize
}
})
}
// 车间生产管理工艺_工时统计_组号查询_查询数据
export function searchtable55(num1) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '车间生产管理工艺_工时统计_组号查询_查询数据',
param: '机床流水号=' + num1
}
})
}

View File

@@ -55,14 +55,14 @@ export function getExport2(num) {
})
}
// 查询分配后的标准件和外购件
export function searchMaterial(pageCurrent, pageSize, num1, check1, val1, check2, val2, check3, val3, person, check4, val4, check5, val5, check6, val6) {
export function searchMaterial(pageCurrent, pageSize, num1, check1, val1, check2, val2, check3, val3, person, check4, val4, check5, val5, check6, val6, val7) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '采购管理_采购部采购_查询物料_分配后',
param: `物料状态编号=${num1}&物料名称_check=${check1}&物料名称=${val1}&物料规格_check=${check2}&物料规格=${val2}&物料型号_check=${check3}&物料型号=${val3}&人员编号=${person}&项目流水号_check=${check4}&项目流水号=${val4}&机床流水号_check=${check5}&机床流水号=${val5}&组件流水号_check=${check6}&组件流水号=${val6}`,
param: `物料状态编号=${num1}&物料名称_check=${check1}&物料名称=${val1}&物料规格_check=${check2}&物料规格=${val2}&物料型号_check=${check3}&物料型号=${val3}&人员编号=${person}&项目流水号_check=${check4}&项目流水号=${val4}&机床流水号_check=${check5}&机床流水号=${val5}&组件流水号_check=${check6}&组件流水号=${val6}&零件类型=${val7}`,
Pagination: pageCurrent + '&' + pageSize
}
})

View File

@@ -171,14 +171,14 @@ export function setSafeValue(...params) {
})
}
// 查询分配后的标准件和外购件
export function searchMaterial(pageCurrent, pageSize, num1, check1, val1, check2, val2, check3, val3, person) {
export function searchMaterial(pageCurrent, pageSize, num1, check1, val1, check2, val2, check3, val3, person, type) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: '采购管理_采购部采购_查询物料_分配后',
param: `物料状态编号=${num1}&物料名称_check=${check1}&物料名称=${val1}&物料规格_check=${check2}&物料规格=${val2}&物料型号_check=${check3}&物料型号=${val3}&人员编号=${person}`,
param: `物料状态编号=${num1}&物料名称_check=${check1}&物料名称=${val1}&物料规格_check=${check2}&物料规格=${val2}&物料型号_check=${check3}&物料型号=${val3}&人员编号=${person}&零件类型=${type}`,
Pagination: pageCurrent + '&' + pageSize
}
})

View File

@@ -31,7 +31,7 @@ export function searchTable1(...params) {
data: {
type: '1',
name: '采购管理_采购部采购_查询物料_分配后_加供应商',
param: `机床流水号_check=${params[0]}&机床流水号=${params[1]}&组件流水号_check=${params[2]}&组件流水号=${params[3]}`,
param: `机床流水号_check=${params[0]}&机床流水号=${params[1]}&组件流水号_check=${params[2]}&组件流水号=${params[3]}&零件类型=${params[6]}`,
Pagination: params[4] + '&' + params[5]
}
})

View File

@@ -77,7 +77,7 @@ export function searchTable1(...params) {
data: {
type: '1',
name: '采购管理_采购部采购_查询物料_分配后',
param: `物料类别流水号_check=${params[2]}&物料类别流水号=${params[3]}&物料品种流水号_check=${params[4]}&物料品种流水号=${params[5]}&项目流水号_check=${params[6]}&项目流水号=${params[7]}&机床流水号_check=${params[8]}&机床流水号=${params[9]}&组件流水号_check=${params[10]}&组件流水号=${params[11]}&物料名称_check=${params[12]}&物料名称=${params[13]}&物料状态编号=${params[14]}&物料规格_check=${params[15]}&物料规格=${params[16]}&物料型号_check=${params[17]}&物料型号=${params[18]}`,
param: `物料类别流水号_check=${params[2]}&物料类别流水号=${params[3]}&物料品种流水号_check=${params[4]}&物料品种流水号=${params[5]}&项目流水号_check=${params[6]}&项目流水号=${params[7]}&机床流水号_check=${params[8]}&机床流水号=${params[9]}&组件流水号_check=${params[10]}&组件流水号=${params[11]}&物料名称_check=${params[12]}&物料名称=${params[13]}&物料状态编号=${params[14]}&物料规格_check=${params[15]}&物料规格=${params[16]}&物料型号_check=${params[17]}&物料型号=${params[18]}&零件类型=${params[19]}`,
Pagination: params[0] + '&' + params[1]
}
})

View File

@@ -400,3 +400,36 @@ export function getMachineNames(num) {
}
})
}
export function machineSelect(projectValue) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: 'PDM_机床名称_查询数据2',
param: `项目流水号=${projectValue}`
}
})
}
export function getFileData(MachineDrawValue) {
return request({
url: '',
method: 'post',
data: {
type: '1',
name: 'PDM_机床总图_查询数据',
param: `机床流水号=${MachineDrawValue}`
}
})
}
export function deleteFileData(id) {
return request({
url: '',
method: 'post',
data: {
type: '2',
name: 'PDM_机床总图_删除数据',
param: `文件标识=${id}`
}
})
}

View File

@@ -25,6 +25,18 @@ export function addMateriel2(num1, num2) {
}
})
}
// 保存重量和备注
export function saveWeight(num1, num2, num3, num4) {
return request({
url: '',
method: 'post',
data: {
type: '2',
name: '备料管理_采购计划明细_保存重量和备注',
param: `采购计划明细流水号=${num1}&重量=${num2}&备注=${num3}&单价=${num4}`
}
})
}
// ////////////////////////////////////////////////////////////////////////////////0529新加↑
// 查询外购备料列表

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1559288249209" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1672" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M858.286829 415.34439V155.797854c0-48.577561-40.210732-92.135024-92.110049-92.135025h-92.110048V0h-51.949269v63.637854H248.657171V0H196.732878v63.637854H104.597854C56.045268 63.637854 12.487805 103.848585 12.487805 155.772878v634.755122c0 48.577561 40.210732 92.110049 92.110049 92.110049h341.666341c58.642732 72.029659 145.732683 122.280585 249.556293 122.280585 174.204878 0 314.892488-140.68761 314.892488-316.565854 0-117.235512-60.316098-217.71239-152.426147-272.983414zM101.276098 113.88878h92.085073v33.492293h55.271024v-33.467317h375.18361V147.356098h51.924293v-33.467318h90.411707c21.803707 0 40.210732 18.407024 40.210732 40.160781v92.135024H64.437073V152.401171c0-21.753756 15.060293-38.51239 36.839025-38.512391z m0 710.131513c-21.803707 0-40.210732-18.407024-40.210732-40.210732V296.460488h741.950439v92.110049c-33.492293-11.738537-73.678049-21.778732-112.215415-21.778732-174.179902 0-316.540878 140.68761-316.540878 316.540878 0 51.949268 11.738537 97.155122 33.492293 140.68761H101.251122z m592.871024 122.280585c-145.707707 0-262.94322-118.933854-262.94322-262.968195s118.908878-262.94322 262.94322-262.94322 266.314927 118.908878 266.314927 262.94322S839.854829 946.325854 694.147122 946.325854z" fill="#ffffff" p-id="1673"></path><path d="M736.03122 683.332683v-167.486439h-51.949269v219.410732h214.41561V683.332683z" fill="#ffffff" p-id="1674"></path></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1553579626916" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2009" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M65.344 944.64l893.312 0 0 72.064-893.312 0 0-72.064Z" p-id="2010"></path><path d="M838.016 40 185.984 40c-70.656 0-128 57.344-128 128l0 531.968c0 70.656 57.344 128 128 128l652.032 0c70.656 0 128-57.344 128-128L966.016 168C966.016 97.344 908.672 40 838.016 40zM832 486.656l-60.032 0 0 193.344L254.976 680 256 486.656 192 486.656 192 416l325.312-275.968L832 428.032 832 486.656z" p-id="2011"></path><path d="M512 266.304 316.032 436.288 316.032 620.352 446.72 620.352 446.72 494.976 577.344 494.976 577.344 620.352 707.968 620.352 707.968 436.288Z" p-id="2012"></path></svg>

After

Width:  |  Height:  |  Size: 959 B

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1559288417172" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3010" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M958.750415 498.401284 818.891064 330.078671c-2.359744-2.859118-5.887081-4.500501-9.584286-4.500501l-206.881814 0 0-13.379729c0-35.311227-28.731368-64.030315-64.054875-64.030315L336.456427 248.168126c-27.634384-37.529755-72.125691-61.888536-122.30044-61.888536-83.807754 0-151.778822 67.946508-151.778822 151.755286 0 47.081295 21.440311 89.135086 55.082526 116.959805-0.001023-0.001023-0.00307-0.002047-0.004093-0.00307l0 232.80216c0 35.32453 28.730345 64.054875 64.029292 64.054875l6.746658 0c6.138814 48.365544 47.538713 85.875856 97.54564 85.875856 49.985438 0 91.384313-37.510312 97.523127-85.875856l155.070798 0c0.520863 0 1.035586-0.027629 1.554402-0.039909 0.25992 0.016373 0.517793 0.039909 0.781806 0.039909l135.633097 0c6.138814 48.365544 47.536666 85.875856 97.522104 85.875856 50.007951 0 91.407849-37.510312 97.546663-85.875856l26.183336 0c35.299971 0 64.030315-28.730345 64.030315-64.054875L961.622836 506.355443C961.621812 503.449253 960.600553 500.626975 958.750415 498.401284zM129.910257 325.577147l71.790046 0 0-93.149517c0-6.885827 5.570879-12.455683 12.455683-12.455683 6.885827 0 12.456706 5.569856 12.456706 12.455683l0 93.149517 2.140757 0c6.884804 0 12.455683 5.570879 12.455683 12.455683 0 6.885827-5.570879 12.456706-12.455683 12.456706l-2.159176 0c-0.194428 6.714935-5.676279 12.090363-12.438287 12.090363-6.760984 0-12.241812-5.376451-12.437264-12.090363l-71.808466 0c-6.885827 0-12.455683-5.570879-12.455683-12.456706C117.454574 331.149049 123.025453 325.577147 129.910257 325.577147zM285.777187 812.81109c-40.48097 0-73.420173-32.939203-73.420173-73.420173 0-40.46869 32.939203-73.396637 73.420173-73.396637 40.481993 0 73.396637 32.927947 73.396637 73.396637C359.172801 779.871887 326.258157 812.81109 285.777187 812.81109zM577.512574 687.791725c0 21.577434-17.564028 39.143509-39.142485 39.143509l-155.071821 0c-6.14086-48.345078-47.538713-85.851297-97.522104-85.851297-50.005904 0-91.40478 37.506219-97.54564 85.851297l-6.746658 0c-21.578458 0-39.118949-17.566074-39.118949-39.143509L142.364917 471.747227c21.376866 11.491729 45.821605 18.016329 71.790046 18.016329 83.808778 0 151.779845-67.898413 151.779845-151.730727 0-23.246447-5.237281-45.267996-14.583137-64.961524 0.001023 0.002047 0.00307 0.005117 0.004093 0.008186l187.013301 0c21.578458 0 39.142485 17.551748 39.142485 39.118949L577.511551 687.791725zM346.314958 263.377526c0 0 0.001023 0.001023 0.001023 0.001023C346.315982 263.378549 346.315982 263.377526 346.314958 263.377526zM348.068905 266.560008c0.00307 0.007163 0.007163 0.014326 0.011256 0.021489C348.075045 266.574335 348.071975 266.567171 348.068905 266.560008zM349.748151 269.791609c0.005117 0.010233 0.010233 0.021489 0.01535 0.031722C349.758384 269.813099 349.753267 269.801842 349.748151 269.791609zM773.860475 812.81109c-40.48097 0-73.396637-32.939203-73.396637-73.420173 0-40.46869 32.915667-73.396637 73.396637-73.396637 40.481993 0 73.421196 32.927947 73.421196 73.396637C847.281671 779.871887 814.342468 812.81109 773.860475 812.81109zM936.710446 687.791725c0 21.577434-17.540492 39.143509-39.119973 39.143509l-26.183336 0c-6.141884-48.345078-47.540759-85.851297-97.546663-85.851297-49.983391 0-91.38022 37.506219-97.521081 85.851297l-87.316671 0c8.390088-10.834766 13.402241-24.409946 13.402241-39.143509l0-337.302189 201.042829 0 59.041698 71.060429L757.68405 421.549965c-35.32453 0-64.054875 28.730345-64.054875 64.054875l0 40.212864c0 35.31225 28.730345 64.030315 64.054875 64.030315l179.026396 0L936.710446 687.791725zM936.710446 564.937676 757.68405 564.937676c-21.579481 0-39.143509-17.552771-39.143509-39.119973l0-40.212864c0-21.579481 17.564028-39.143509 39.143509-39.143509l124.678604 0c0.274246 0 0.541329-0.023536 0.810459-0.040932l53.537334 64.436568L936.710446 564.937676z" p-id="3011" fill="#ffffff"></path></svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -0,0 +1 @@
<svg class="icon" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="200" height="200"><defs><style/></defs><path d="M365.694 365.688h292.551v46.223h-292.55zm-73.137 219.413h438.826v46.223H292.557z"/><path d="M870.198 1023.927c-28.085 0-54.049-14.481-67.726-37.74a47.54 47.54 0 0 0-82.499 0 78.477 78.477 0 0 1-67.798 37.74h-31.157c-28.085 0-54.122-14.481-67.799-37.74a47.54 47.54 0 0 0-82.499 0 78.55 78.55 0 0 1-67.725 37.74h-31.157c-28.085 0-54.049-14.481-67.799-37.74a47.54 47.54 0 0 0-82.426 0 78.55 78.55 0 0 1-67.798 37.74 81.329 81.329 0 0 1-80.671-81.914V243.987C73.144 109.414 180.876 0 313.182 0h397.576c132.379 0 240.038 109.414 240.038 243.987v698.099c0 45.126-36.13 81.84-80.598 81.84zM761.223 910.783c35.106 0 66.774 18.284 84.84 48.929a27.792 27.792 0 0 0 24.135 12.653 30.06 30.06 0 0 0 29.84-30.28V243.988c0-106.05-84.913-192.352-189.28-192.352H313.182c-104.368-.073-189.28 86.23-189.28 192.279v698.099c0 16.675 13.384 30.279 29.84 30.279a27.792 27.792 0 0 0 24.208-12.726c18.065-30.572 49.734-48.856 84.84-48.856 35.033 0 66.701 18.284 84.693 48.929a27.792 27.792 0 0 0 24.282 12.653h31.157a27.792 27.792 0 0 0 24.281-12.726c17.992-30.572 49.734-48.856 84.767-48.856 35.106 0 66.774 18.284 84.84 48.929a27.792 27.792 0 0 0 24.135 12.653h31.23a27.792 27.792 0 0 0 24.281-12.653c17.992-30.718 49.734-49.002 84.767-49.002z"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1559288344072" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2217" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M399.36 536.84A55 55 0 0 0 460.61 626l70.6 72.72a55 55 0 1 0 34.24-36.52l-73.3-75.51a55.29 55.29 0 0 0 0.38-19.8l69.5-69.5a55 55 0 1 0-1.67-100l-69.34-70a55 55 0 1 0-34.76 36l73.67 74.42a54.91 54.91 0 0 0 0.39 20.64l-67.93 67.93a55 55 0 0 0-63.03 10.46z" p-id="2218" fill="#ffffff"></path><path d="M891 164.57c-12.66-3.71-91.55-26.8-172.69-49.62C536.09 63.73 520.74 63.73 512.5 63.73h-1c-8.25 0-23.6 0-205.77 51.23-81.14 22.82-160 45.91-172.69 49.62a44.07 44.07 0 0 0-35.74 43.21v277.93c0 55.41 11.8 112.58 35.09 169.94a564.11 564.11 0 0 0 91.68 150.94C307 904.26 411.86 960.27 511.81 960.27v-64c-81.13 0-168.22-47.78-238.94-131.09C203 682.89 161.3 578.42 161.3 485.72V223.25c155.16-45.72 324.39-92.69 350.7-95.44 26.31 2.75 195.54 49.72 350.7 95.44v262.47c0 92.7-41.71 197.17-111.57 279.46-70.73 83.31-157.82 131.09-238.94 131.09v64c99.95 0 204.82-56 287.73-153.67a564.12 564.12 0 0 0 91.69-150.94c23.28-57.36 35.09-114.53 35.09-169.94V207.79a44.07 44.07 0 0 0-35.7-43.22z" p-id="2219" fill="#ffffff"></path></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1559440242177" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4969" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M648 288c0-17.7-14.3-32-32-32H232.6c-17.6 0-32 14.3-32 32s14.3 32 32 32H616c17.7 0 32-14.3 32-32zM648 480c0-17.7-14.3-32-32-32H232.6c-17.6 0-32 14.3-32 32s14.3 32 32 32H616c17.7 0 32-14.3 32-32zM232.6 640c-17.6 0-32 14.3-32 32s14.3 32 32 32h191.7c17.6 0 32-14.3 32-32s-14.3-32-32-32H232.6z" p-id="4970" fill="#ffffff"></path><path d="M488.4 864H166.7c-17.6 0-31.9-14.3-31.9-32V192c0-17.7 14.3-32 31.9-32h513.6c17.6 0 31.9 14.3 31.9 32v256c0 17.7 14.3 32 31.9 32 17.6 0 31.9-14.3 31.9-32V160c0-35.3-28.6-64-63.8-64H134.8C99.6 96 71 124.7 71 160v704c0 35.3 28.6 64 63.8 64h353.6c17.6 0 31.9-14.3 31.9-32s-14.3-32-31.9-32z" p-id="4971" fill="#ffffff"></path><path d="M943.6 840.3L830.5 727.2l47.7-47.7c11.1-11.1 11.1-29.1 0-40.3l-95.5-95.5c-11.1-11.1-29.1-11.1-40.3 0L601.8 684.5c-11.1 11.1-11.1 29.1 0 40.3l95.5 95.5c11.1 11.1 29.1 11.1 40.3 0l47.7-47.7 113.1 113.1c12.5 12.5 32.8 12.5 45.2 0 12.5-12.6 12.5-32.9 0-45.4zM785.3 682L740 727.2l-22.6 22.6-45.2-45.2 90.5-90.5 45.2 45.2-22.6 22.7zM707.9 861.8h-128c-17.7 0-32 14.3-32 32s14.3 32 32 32h128c17.7 0 32-14.3 32-32s-14.3-32-32-32z" p-id="4972" fill="#ffffff"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1559288483929" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3811" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M1011.76832 544.0768l-164.16256-435.42016h-176.91648v33.52576h135.02976l110.72 397.6448H678.5024L509.39392 696.2176 329.8816 539.82208H94.5408l110.6944-397.6448H342.8864v-33.52576H168.58112L7.28064 550.28224h0.90624a15.6672 15.6672 0 0 0-0.90624 5.22752v446.83264a15.64672 15.64672 0 0 0 15.60576 15.68256h978.2272a15.64672 15.64672 0 0 0 15.61088-15.68256v-446.83264a15.68256 15.68256 0 0 0-4.95616-11.43296z m-423.63904-341.09952h90.22976L506.79296 0 339.99872 202.97728H430.2336v219.84768h157.9008V202.97728z m-157.9008 270.58176h157.9008v-28.1856h-157.9008v28.1856z m-292.38272 471.22944l-27.27936-36.0704 252.48768-190.96064 109.12256 144.29184 284.16-186.56256-54.54848-72.14592 158.37696 21.98016-21.98016 158.37696-54.56384-72.13568-320.2304 213.83168-109.12256-144.2816-216.4224 163.67616z" fill="#ffffff" p-id="3812"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

1
src/icons/svg/doc.svg Normal file
View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1559456604103" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3611" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M535.119473 0h69.599248v95.247413C729.226717 96.331138 853.614299 93.92286 977.881468 96.331138a40.459078 40.459078 0 0 1 44.914393 45.516463c2.047037 234.566322 0 469.614299 1.204139 703.819379-1.204139 24.082785 2.287865 50.694262-11.318909 72.248354-16.978363 12.041392-38.893697 10.837253-58.761994 12.041392h-349.200376V1023.518344h-72.248354C354.980245 990.886171 177.490122 960.541863 0 928.752587V95.488241C178.33302 63.578551 356.786453 32.511759 535.119473 0z" fill="#2A5699" p-id="3612"></path><path d="M604.718721 131.010348H988.598307v761.979304H604.718721v-95.247413h302.479774v-48.165569H604.718721v-59.002822h302.479774v-48.16557H604.718721v-59.002822h302.479774v-48.165569H604.718721v-60.206961h302.479774V428.673565H604.718721v-60.206961h302.479774v-46.96143H604.718721v-59.604892h302.479774V214.336783H604.718721zM240.827846 341.373471c22.156162-1.324553 44.19191-2.287865 66.348071-3.492003 15.533396 80.4365 31.30762 160.632173 48.165569 240.827845 13.125118-82.724365 27.695202-165.087488 41.783632-247.571025 23.239887-0.842897 46.479774-2.167451 69.719661-3.612418-26.370649 115.356538-49.369708 231.796802-78.148636 346.430856-19.386642 10.355597-48.165569 0-71.52587 1.204139C301.034807 596.169332 283.093133 517.779868 269.245532 438.667921c-13.606773 76.944497-31.30762 153.16651-46.841016 229.508937-22.39699-1.204139-44.793979-2.528692-67.311383-4.094073-19.266228-104.760113-42.024459-208.918156-60.206962-313.919097 19.868297-0.963311 39.857008-1.806209 60.206962-2.528693 12.041392 75.860771 25.648166 151.360301 36.124177 227.341487 16.135466-77.907808 32.873001-155.695202 49.610536-233.603011z" fill="#FFFFFF" p-id="3613"></path></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

1
src/icons/svg/excel.svg Normal file
View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1559456699825" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5265" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M728.345 64.223H224.056V321.34h68.687V133.019h378.844v187.78h186.917v569.777H292.743v-84.271h-0.715v-68.796h0.715v-53.046h-68.687v274.909h703.135V256.486z" fill="#819292" p-id="5266"></path><path d="M660.276 418.403h129.217v67.077H660.276zM660.276 578.386h129.217v67.077H660.276zM660.276 738.369h129.217v67.077H660.276z" fill="#819292" p-id="5267"></path><path d="M586.15 408.784h-68.687v328.725H292.028v68.796H586.15z" fill="#50A135" p-id="5268"></path><path d="M460.55 684.463V321.34H98.004v363.123H460.55z m-234.043-70.305l-85.787 0.722 93.843-110.912-93.843-113.045 81.805 0.225 53.747 63.523 53.747-63.523 81.805-0.225-93.843 113.044 93.843 110.912-85.787-0.722-49.765-59.948-49.765 59.949z" fill="#50A135" p-id="5269"></path><path d="M326.038 614.158l85.787 0.722-93.843-110.913 93.843-113.044-81.805 0.225-53.747 63.524-53.748-63.524-81.805-0.225 93.844 113.044L140.72 614.88l85.787-0.722 49.766-59.948z" fill="#FFFFFF" p-id="5270"></path></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

1
src/icons/svg/file.svg Normal file
View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1559456774760" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7063" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M692.312 956.978c-59.656 0-112.963-25.778-148.221-66.23H214.286V133.034h400.115v187.818h197.413v310.98c42.357 31.932 70.176 80.457 72.544 135.214v-510.52L674.346 64.223H141.742v895.335h742.615V782.244c-4.202 97.174-88.568 174.734-192.045 174.734z" fill="#819292" p-id="7064"></path><path d="M301.326 418.477h437.601v67.091H301.326zM301.326 578.493h219.957v67.091H301.326zM301.326 738.509h138.34V805.6h-138.34z" fill="#819292" p-id="7065"></path><path d="M811.814 631.832c-32.811-24.735-74.334-39.519-119.502-39.519-106.162 0-192.224 81.633-192.224 182.333 0 44.113 16.517 84.567 44.003 116.103 35.258 40.452 88.565 66.23 148.221 66.23 103.477 0 187.843-77.56 192.045-174.734 0.109-2.521 0.179-5.052 0.179-7.599s-0.07-5.078-0.179-7.599c-2.368-54.759-30.186-103.283-72.543-135.215zM660.869 888.809l-38.472-36.492 0.92-0.872-69.159-65.6 38.472-36.492 69.159 65.6 130.205-123.505 38.472 36.492-169.597 160.869z" fill="#50A135" p-id="7066"></path><path d="M791.994 691.447L661.789 814.952l-69.159-65.6-38.472 36.492 69.159 65.6-0.92 0.873 38.472 36.492L830.466 727.94z" fill="#FFFFFF" p-id="7067"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

1
src/icons/svg/pdf.svg Normal file
View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1559456551095" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2809" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M145.6 0C100.8 0 64 36.8 64 81.6v860.8C64 987.2 100.8 1024 145.6 1024h732.8c44.8 0 81.6-36.8 81.6-81.6V324.8L657.6 0h-512z" fill="#8C181A" p-id="2810"></path><path d="M960 326.4v16H755.2s-100.8-20.8-97.6-107.2c0 0 3.2 91.2 96 91.2H960z" fill="#6B0D12" p-id="2811"></path><path d="M657.6 0v233.6c0 27.2 17.6 92.8 97.6 92.8H960L657.6 0z" fill="#FFFFFF" opacity=".5" p-id="2812"></path><path d="M302.4 784h-52.8v65.6c0 6.4-4.8 11.2-12.8 11.2-6.4 0-11.2-4.8-11.2-11.2V686.4c0-9.6 8-17.6 17.6-17.6h59.2c38.4 0 60.8 27.2 60.8 57.6 0 32-22.4 57.6-60.8 57.6z m-1.6-94.4h-51.2v73.6h51.2c22.4 0 38.4-14.4 38.4-36.8s-16-36.8-38.4-36.8z m166.4 171.2h-48c-9.6 0-17.6-8-17.6-17.6v-156.8c0-9.6 8-17.6 17.6-17.6h48c59.2 0 99.2 41.6 99.2 96s-38.4 96-99.2 96z m0-171.2h-41.6v148.8h41.6c46.4 0 73.6-33.6 73.6-75.2 1.6-40-25.6-73.6-73.6-73.6z m260.8 0h-92.8V752h91.2c6.4 0 9.6 4.8 9.6 11.2s-4.8 9.6-9.6 9.6h-91.2v76.8c0 6.4-4.8 11.2-12.8 11.2-6.4 0-11.2-4.8-11.2-11.2V686.4c0-9.6 8-17.6 17.6-17.6h99.2c6.4 0 9.6 4.8 9.6 11.2 1.6 4.8-3.2 9.6-9.6 9.6z" fill="#FFFFFF" p-id="2813"></path></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

1
src/icons/svg/pic.svg Normal file
View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1559456734634" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6070" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M633.222 304.176m-102.92 0a102.92 102.92 0 1 0 205.84 0 102.92 102.92 0 1 0-205.84 0Z" fill="#CEE8FA" p-id="6071"></path><path d="M633.216 435.568c-72.444 0-131.382-58.938-131.382-131.382s58.938-131.382 131.382-131.382 131.382 58.938 131.382 131.382-58.936 131.382-131.382 131.382z m0-205.86c-41.066 0-74.474 33.408-74.474 74.474s33.408 74.474 74.474 74.474 74.474-33.408 74.474-74.474c0-41.062-33.408-74.474-74.474-74.474z" fill="#2D527C" p-id="6072"></path><path d="M638.072 893.886L385.766 428.298 76.548 893.886z" fill="#CEE8FA" p-id="6073"></path><path d="M638.068 922.342H76.548a28.45 28.45 0 0 1-23.704-44.194l309.218-465.59a28.408 28.408 0 0 1 24.978-12.682 28.454 28.454 0 0 1 23.742 14.868l252.302 465.586a28.452 28.452 0 0 1-25.016 42.012zM129.604 865.432h460.682L383.292 483.456 129.604 865.432z" fill="#2D527C" p-id="6074"></path><path d="M947.452 893.886L695.148 585.72 442.844 893.886z" fill="#CEE8FA" p-id="6075"></path><path d="M947.456 922.342H442.846a28.46 28.46 0 0 1-22.016-46.482l252.304-308.166a28.456 28.456 0 0 1 44.032 0L969.47 875.86a28.46 28.46 0 0 1 3.7 30.208 28.46 28.46 0 0 1-25.714 16.274z m-444.54-56.91h384.47l-192.234-234.794-192.236 234.794z" fill="#2D527C" p-id="6076"></path><path d="M945.608 924.26H78.392C35.166 924.26 0 889.092 0 845.868V178.132C0 134.908 35.166 99.74 78.392 99.74h867.216C988.834 99.74 1024 134.908 1024 178.132v667.734c0 43.226-35.164 78.394-78.392 78.394zM78.392 156.65c-11.846 0-21.484 9.638-21.484 21.484v667.734c0 11.846 9.638 21.484 21.484 21.484h867.216c11.846 0 21.482-9.638 21.482-21.484V178.132c0-11.846-9.638-21.484-21.482-21.484H78.392z" fill="#2D527C" p-id="6077"></path><path d="M247.382 274.88H28.454C12.74 274.88 0 262.142 0 246.426s12.74-28.454 28.454-28.454h218.928c15.716 0 28.454 12.738 28.454 28.454s-12.738 28.454-28.454 28.454zM193.314 390.596h-164.86C12.74 390.596 0 377.856 0 362.14s12.74-28.454 28.454-28.454h164.858c15.716 0 28.454 12.738 28.454 28.454 0.002 15.716-12.738 28.456-28.452 28.456z" fill="#2D527C" p-id="6078"></path></svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

1
src/icons/svg/ppt.svg Normal file
View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1559456658409" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4469" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M538.731891 0h65.98683v107.168391c124.387582 0.722484 248.895579-1.324553 373.28316 0a40.699906 40.699906 0 0 1 45.034808 46.118533c2.047037 222.404516 0 444.929445 1.204139 667.454374-1.204139 24.082785 2.287865 50.694262-11.198495 72.248354-16.978363 12.041392-39.014111 10.957667-59.002822 12.041392-116.319849-0.60207-232.639699 0-349.200376 0V1023.518344h-72.248354C355.100659 990.886171 177.490122 960.662277 0 928.752587V95.488241C179.537159 63.698965 359.074318 31.30762 538.731891 0z" fill="#D24625" p-id="4470"></path><path d="M604.718721 142.931326H988.598307v726.216369H604.718721v-95.247413h279.239887v-47.563499H604.718721v-60.206962h279.239887v-46.96143H604.839135v-69.960489c46.118532 14.570085 98.619003 14.208843 139.800564-14.088429 44.553151-27.093133 67.793039-78.630292 71.646284-130.047036H663.119473c0-51.777987 0.60207-103.555974-0.963311-155.213547-19.145814 3.732832-38.171214 7.826905-57.196614 12.041392z" fill="#FFFFFF" p-id="4471"></path><path d="M686.35936 224.69238a165.689558 165.689558 0 0 1 153.16651 156.5381c-51.055503 0.60207-102.111007 0-153.286924 0 0.120414-52.380056 0.120414-104.278457 0.120414-156.5381z" fill="#D24625" p-id="4472"></path><path d="M186.64158 314.521167c63.21731 3.130762 139.680151-25.527752 192.662277 22.878645 50.092192 62.374412 36.84666 176.888053-37.44873 214.095955-26.370649 13.847601-56.714958 12.041392-85.373471 10.957667v139.68015l-69.238006-5.900282c-1.806209-127.157103-2.047037-254.434619-0.60207-381.712135z" fill="#FFFFFF" p-id="4473"></path><path d="M255.759172 378.942615c22.878645-0.963311 51.296331-5.298213 66.709313 16.737536a87.902164 87.902164 0 0 1 1.565381 78.148635c-13.245532 24.082785-43.228598 22.035748-66.468485 24.925682-2.408278-39.857008-2.167451-79.714017-1.806209-119.811853z" fill="#D24625" p-id="4474"></path></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -11,11 +11,14 @@ export const name1 = `OP1000`
export const readFile = `http://192.168.1.231:8411/webpage/file/` // invoice
export const readImg = `http://192.168.1.231:8411/webpage/img/` // delivery/MS/performancebond
export const upload = `http://192.168.1.231:8411/submit/uploadFile.ashx` // ContractInformationManagement
export const uploadFileMachine = `http://192.168.1.231:8411/submit/uploadFileMachine.ashx` // 机床总图 发布时改成0.231
export const upload2 = `http://192.168.1.231:8411/submit/upload2.ashx` // delivery
export const upload3 = `http://192.168.1.231:8411/submit/upload3.ashx` // performancebond
export const uploadInvoiceScan = `http://192.168.1.231:8411/submit/uploadInvoiceScan.ashx` // invoice
export const uploadInvoiceScan1 = `http://192.168.1.231:8411/submit/uploadInvoiceScan1.ashx` // invoice(workshop)
export const download = `http://192.168.1.231:8411/submit/downloadFile.ashx` // ContractInformationManagement
export const downloadFileMachine = `http://192.168.1.231:8411/submit/downloadFileMachine.ashx` // 机床总图 发布时改成0.231
const service = axios.create({
baseURL: `http://192.168.1.231:8411/submit/MESCommonBase.ashx`,
timeout: 1500000 // 请求超时时间

View File

@@ -26,7 +26,7 @@
</el-card>
<el-card>
<h3 style="text-align: center;">总装调试</h3>
<el-table :data="tableData1" border size="mini" highlight-current-row style="width: 100%;margin-top: 15px" height="100px">
<el-table :data="tableData1" border size="mini" highlight-current-row style="width: 100%;margin-top: 15px" height="200px">
<el-table-column label="项目名称" align="center">
<template slot-scope="scope">
{{ scope.row.项目名称 }}
@@ -150,7 +150,7 @@ export default {
},
searchTable1() {
this.tableData1 = []
if (this.machineNumberValue !== '') { this.check2 = 1 } else { this.check2 = 0 }
if (this.machineNumberValue !== '' && this.machineNumberValue !== null) { this.check2 = 1 } else { this.check2 = 0 }
searchTable1(this.machineNumberValue, this.check2).then(response => {
this.tableData1 = response.data
console.log(response.data, 1111)
@@ -158,8 +158,8 @@ export default {
},
searchTable2() {
this.tableData2 = []
if (this.machineNumberValue !== '') { this.check2 = 1 } else { this.check2 = 0 }
if (this.groupNumberValue !== '') { this.check3 = 1 } else { this.check3 = 0 }
if (this.machineNumberValue !== '' && this.machineNumberValue !== null) { this.check2 = 1 } else { this.check2 = 0 }
if (this.groupNumberValue !== '' && this.groupNumberValue !== null) { this.check3 = 1 } else { this.check3 = 0 }
searchTable2(this.machineNumberValue, this.check2).then(response => {
console.log(response.data, 222)
this.tableData2 = response.data

View File

@@ -45,7 +45,7 @@
<el-table-column label="操作" align="center" width="250px" fixed="right">
<template slot-scope="scope">
<el-button v-if="scope.row.发货状态===null || scope.row.发货状态===0" type="success" size="small" @click="handlconfirm(scope.row)">确认发货</el-button>
<el-button v-else-if="scope.row.发货状态===1" type="danger" size="small"> 审批</el-button>
<el-button v-else-if="scope.row.发货状态===1" disabled="true" type="danger" size="small">待审批</el-button>
<el-button v-else type="info" size="small" >已审批</el-button>
</template>
</el-table-column>
@@ -88,7 +88,7 @@ export default {
},
selecttable() {
this.tableData1 = []
if (this.machineNumberValue !== '') { this.check2 = 1 } else { this.check2 = 0 }
if (this.machineNumberValue !== '' && this.machineNumberValue !== null) { this.check2 = 1 } else { this.check2 = 0 }
selecttable(this.check2, this.machineNumberValue).then(response => {
this.tableData1 = response.data
console.log(response.data)

View File

@@ -31,7 +31,7 @@
</el-select>
<span>零件:</span>
<el-input v-model="SpareParts" filterable placeholder="请输入零件名称" style="width: 200px" size="small" clearable/>
<el-button type="success" size="small" icon="el-icon-search" style="margin-left: 15px" @click="selecttable">查询</el-button>
<el-button type="success" size="small" icon="el-icon-search" style="margin-left: 15px" @click="pageSize=10; pageCurrent= 1;selecttable()">查询</el-button>
</el-row>
</el-card>
<el-card>
@@ -56,7 +56,7 @@
{{ scope.row.组号 }}
</template>
</el-table-column>
<el-table-column label="零件号" align="center">
<el-table-column label="零件号" align="center">
<template slot-scope="scope">
{{ scope.row.零件图号 }}
</template>
@@ -66,6 +66,11 @@
{{ scope.row.零件名称 }}
</template>
</el-table-column>
<el-table-column label="规格或材料" align="center">
<template slot-scope="scope">
{{ scope.row.规格或材料 }}
</template>
</el-table-column>
<el-table-column label="质检类型" align="center">
<template slot-scope="scope">
{{ scope.row.质检类型 }}
@@ -83,12 +88,17 @@
</el-table-column>
<el-table-column label="不合格原因" align="center">
<template slot-scope="scope">
{{ scope.row.不合格原因 }}
{{ scope.row.不合格原因文本 }}
</template>
</el-table-column>
<el-table-column label="处理结果" align="center">
<template slot-scope="scope">
{{ scope.row.处理结果 }}
{{ scope.row.不合格处理文本 }}
</template>
</el-table-column>
<el-table-column label="操作时间" align="center">
<template slot-scope="scope">
{{ scope.row.操作时间 }}
</template>
</el-table-column>
<el-table-column label="备注" align="center">
@@ -97,6 +107,17 @@
</template>
</el-table-column>
</el-table>
<div class="block">
<el-pagination
v-if="!loading"
:current-page="pageCurrent"
:page-sizes="[10, 20, 30, 40, 100]"
:page-size="pageSize"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"/>
</div>
</el-card>
</div>
</template>
@@ -114,7 +135,11 @@ export default {
QualityTypeNumber: [],
QualityTypeValue: '',
tableData1: [],
SpareParts: ''
SpareParts: '',
loading: false,
total: null, // 总条数
pageSize: 10, // 每页显示条数
pageCurrent: 1 // 后台获取页
}
},
created() {
@@ -165,10 +190,21 @@ export default {
if (this.groupNumberValue !== '' && this.groupNumberValue !== null) { this.check2 = 1 } else { this.check2 = 0 }
if (this.SpareParts !== '' && this.SpareParts !== null) { this.check3 = 1 } else { this.check3 = 0 }
if (this.QualityTypeValue !== '' && this.QualityTypeValue !== null) { this.check4 = 1 } else { this.check4 = 0 }
selecttable(this.check1, this.machineNumberValue, this.check2, this.groupNumberValue, this.check3, this.SpareParts, this.check4, this.QualityTypeValue).then(response => {
this.tableData1 = response.data
console.log(response.data, 1111)
selecttable(this.check1, this.machineNumberValue, this.check2, this.groupNumberValue, this.check3, this.SpareParts, this.check4, this.QualityTypeValue, this.pageCurrent, this.pageSize).then(response => {
this.tableData1 = response.data.rows
this.loading = false
this.total = response.data.total
})
},
// 分页
handleSizeChange(val) {
this.pageCurrent = 1
this.pageSize = val
this.selecttable()
},
handleCurrentChange(val) {
this.pageCurrent = val
this.selecttable()
}
}
}

View File

@@ -0,0 +1,125 @@
<template>
<div class="app-container">
<el-card>
<el-row>
<span>机床编号:</span>
<el-select v-model="machineNumberValue" filterable placeholder="机床编号" size="small" clearable @change="selecttable()">
<el-option
v-for="item in machineNumber"
:key="item.value"
:label="item.label"
:value="item.value">
<div style="float: left">{{ item.label }}</div>
<div style="float: right; color: #8492a6; font-size: 13px">{{ item.name }}</div>
</el-option>
</el-select>
<!--<el-button type="success" size="small" icon="el-icon-search" style="margin-left: 15px" @click="selecttable">查询</el-button>-->
</el-row>
</el-card>
<el-card>
<el-table :data="tableData1" border size="mini" highlight-current-row style="width: 100%;margin-top: 15px" height="600px">
<el-table-column label="项目名称" align="center">
<template slot-scope="scope">
{{ scope.row.项目名称 }}
</template>
</el-table-column>
<el-table-column label="机床编号" align="center">
<template slot-scope="scope">
{{ scope.row.机床图号 }}
</template>
</el-table-column>
<el-table-column label="机床名称" align="center">
<template slot-scope="scope">
{{ scope.row.机床名称 }}
</template>
</el-table-column>
<el-table-column label="机床数量" align="center">
<template slot-scope="scope">
{{ scope.row.机床数量 }}
</template>
</el-table-column>
<el-table-column label="注意事项" align="center">
<template slot-scope="scope">
<template v-if="scope.row.edit">
<el-input v-model="scope.row.注意事项" style="width:100px;margin-right:3px" size="mini" width="120"/>
</template>
<span v-else>{{ scope.row.注意事项 }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="250px" fixed="right">
<template slot-scope="scope">
<el-button v-if="!scope.row.edit && scope.row.发货状态===1" type="success" size="mini" icon="el-icon-circle-check-outline" @click="scope.row.edit=!scope.row.edit" >确认审批</el-button>
<el-button v-else-if="!scope.row.edit && scope.row.发货状态===2" disabled="true" type="danger" size="mini" icon="el-icon-circle-check-outline" >已审批</el-button>
<el-button v-if="scope.row.edit" class="cancel-btn" size="mini" type="primary" @click="confirmEdit(scope.row)">确认</el-button>
<el-button v-if="scope.row.edit" class="cancel-btn" size="mini" type="danger" @click="cancelEdit(scope.row)">取消</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
</div>
</template>
<script>
import { initProject, selecttable, updatestate } from '@/api/Assembly/ShipmentApproval'
// import { mapGetters } from 'vuex'
export default {
data() {
return {
machineNumberValue: '',
machineNumber: [],
groupNumberValue: '',
groupNumber: [],
tableData1: [],
tableData2: []
}
},
created() {
},
mounted() {
this.initProject()
},
methods: {
initProject() {
initProject().then(response => {
for (let i = 0; i < response.data.length; i++) {
this.machineNumber.push({
label: response.data[i].机床图号,
name: response.data[i].项目名称,
value: response.data[i].机床流水号
})
}
})
},
selecttable() {
this.tableData1 = []
if (this.machineNumberValue !== '' && this.machineNumberValue !== null) { this.check2 = 1 } else { this.check2 = 0 }
selecttable(this.check2, this.machineNumberValue).then(response => {
response.data.map(v => {
this.$set(v, 'edit', false)
v.原注意事项 = v.注意事项
return v
})
this.tableData1 = response.data
this.edit = false
console.log(response.data)
})
},
cancelEdit(row) {
row.注意事项 = row.原注意事项
row.edit = false
this.$message('取消修改')
},
confirmEdit(row) {
updatestate(row.机床流水号, 2, row.注意事项).then(response => {
this.selecttable()
})
}
}
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,170 @@
<template>
<div class="app-container">
<el-card>
<el-row>
<span>机床编号:</span>
<el-select v-model="machineNumberValue" filterable placeholder="机床编号" size="small" clearable @change="machineChange()">
<el-option
v-for="item in machineNumber"
:key="item.value"
:label="item.label"
:value="item.value">
<div style="float: left">{{ item.label }}</div>
<div style="float: right; color: #8492a6; font-size: 13px">{{ item.name }}</div>
</el-option>
</el-select>
<span>组号:</span>
<el-select v-model="groupNumberValue" filterable placeholder="组号" size="small" clearable>
<el-option
v-for="item in groupNumber"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
<span>零件图号:</span>
<el-input v-model="PartDrawingNumber" filterable placeholder="零件图号" style="width: 200px" size="small" clearable/>
<span class="demonstration">时间区间:</span>
<el-date-picker
v-model="startTime"
value-format="yyyy-MM-dd"
size="small"
style="width: 160px"
type="date"
placeholder="选择日期"/>
<span class="demonstration">~</span>
<el-date-picker
v-model="endTime"
value-format="yyyy-MM-dd"
size="small"
style="width: 160px"
type="date"
placeholder="选择日期"/>
<el-button type="success" size="small" icon="el-icon-search" style="margin-left: 15px" @click="total=0;pageSize=10; pageCurrent=1;selecttable()">查询</el-button>
</el-row>
</el-card>
<el-card>
<el-table :data="tableData1" border size="mini" highlight-current-row style="width: 100%;margin-top: 15px" height="600px">
<el-table-column label="项目名称" align="center">
<template slot-scope="scope">
{{ scope.row.项目名称 }}
</template>
</el-table-column>
<el-table-column label="机床图号" align="center">
<template slot-scope="scope">
{{ scope.row.机床图号 }}
</template>
</el-table-column>
<el-table-column label="零件图号" align="center">
<template slot-scope="scope">
{{ scope.row.零件图号 }}
</template>
</el-table-column>
<el-table-column label="零件名称" align="center">
<template slot-scope="scope">
{{ scope.row.零件名称 }}
</template>
</el-table-column>
<el-table-column label="出库时间" align="center">
<template slot-scope="scope">
{{ scope.row.出库时间 }}
</template>
</el-table-column>
</el-table>
<div class="block">
<el-pagination
v-if="!loading"
:current-page="pageCurrent"
:page-sizes="[10, 20, 30, 40, 100]"
:page-size="pageSize"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"/>
</div>
</el-card>
</div>
</template>
<script>
import { initProject, searchgroup, selecttable } from '@/api/Assembly/SparePartsOutStockRecord'
// import { mapGetters } from 'vuex'
export default {
data() {
return {
PartDrawingNumber: '',
startTime: '',
endTime: '',
startTime_check: '',
endTime_check: '',
machineNumberValue: '',
machineNumber: [],
groupNumberValue: '',
groupNumber: [],
tableData1: [],
loading: false,
total: null, // 总条数
pageSize: 10, // 每页显示条数
pageCurrent: 1 // 后台获取页
}
},
created() {
},
mounted() {
this.initProject()
},
methods: {
initProject() {
initProject().then(response => {
for (let i = 0; i < response.data.length; i++) {
this.machineNumber.push({
label: response.data[i].机床图号,
name: response.data[i].项目名称,
value: response.data[i].机床流水号
})
}
})
},
machineChange() {
this.groupNumberValue = ''
this.groupNumber = []
searchgroup(this.machineNumberValue).then(response => {
for (let i = 0; i < response.data.length; i++) {
this.groupNumber.push({
label: response.data[i].组号,
value: response.data[i].组件流水号
})
}
})
},
selecttable() {
this.tableData1 = []
if (this.machineNumberValue !== '' && this.machineNumberValue !== null) { this.check1 = 1 } else { this.check1 = 0 }
if (this.groupNumberValue !== '' && this.groupNumberValue !== null) { this.check2 = 1 } else { this.check2 = 0 }
if (this.PartDrawingNumber !== '' && this.PartDrawingNumber !== null) { this.check3 = 1 } else { this.check3 = 0 }
if (this.startTime === '' || this.startTime === null) { this.startTime_check = 0 } else { this.startTime_check = 1 }
if (this.endTime === '' || this.endTime === null) { this.endTime_check = 0 } else { this.endTime_check = 1 }
selecttable(this.check1, this.machineNumberValue, this.check2, this.groupNumberValue, this.check3, this.PartDrawingNumber, this.startTime_check, this.startTime, this.endTime_check, this.endTime, this.pageCurrent, this.pageSize).then(response => {
this.tableData1 = response.data.rows
this.loading = false
this.total = response.data.total
})
},
// 分页
handleSizeChange(val) {
this.pageCurrent = 1
this.pageSize = val
this.selecttable()
},
handleCurrentChange(val) {
this.pageCurrent = val
this.selecttable()
}
}
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,645 @@
<template>
<div class="app-container">
<el-card>
<div slot="header">
<span>机床编号:</span>
<el-select v-model="machineNumberValue" filterable placeholder="机床编号" size="small" clearable @change="machineChange">
<el-option
v-for="item in machineNumber"
:key="item.value"
:label="item.label"
:value="item.value">
<div style="float: left">{{ item.label }}</div>
<div style="float: right; color: #8492a6; font-size: 13px">{{ item.name }}</div>
</el-option>
</el-select>
<span>组号:</span>
<el-select v-model="groupNumberValue" placeholder="组号" size="small" clearable>
<el-option
v-for="item in groupNumber"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
<el-button size="small" type="success" icon="el-icon-search" style="margin: 0 0 0 10px" @click="pageCurrent0=1;pageSize0=20;pageCurrent1=1;pageSize1=20;pageCurrent2=1;pageSize2=20;searchTable()">查询</el-button>
</div>
<el-tabs v-model="PartType" type="card" @tab-click="searchTable()">
<el-tab-pane label="标准件" name="标准件">
<el-table ref="multipleTable" :data="tableData0" size="mini" style="max-height: 600px" height="600px" border stripe @selection-change="handleSelectionChange">
<el-table-column type="selection" align="center" width="50"/>
<el-table-column align="center" label="机床图号" min-width="100px">
<template slot-scope="scope">
{{ scope.row.机床图号 }}
</template>
</el-table-column>
<el-table-column align="center" label="组号" min-width="80px">
<template slot-scope="scope">
{{ scope.row.组号 }}
</template>
</el-table-column>
<el-table-column align="center" label="名称" min-width="100px">
<template slot-scope="scope">
{{ scope.row.物料名称 }}
</template>
</el-table-column>
<el-table-column align="center" label="型号" min-width="100px">
<template slot-scope="scope">
{{ scope.row.物料型号 || '—' }}
</template>
</el-table-column>
<el-table-column align="center" label="规格" min-width="200px">
<template slot-scope="scope">
{{ scope.row.物料规格 || '—' }}
</template>
</el-table-column>
<el-table-column align="center" label="单台机床数量" min-width="100px">
<template slot-scope="scope">
{{ scope.row.单台机床数量 }}
</template>
</el-table-column>
<el-table-column align="center" label="总数量" min-width="100px">
<template slot-scope="scope">
{{ scope.row.总数量 }}
</template>
</el-table-column>
<el-table-column align="center" label="备件数量" min-width="100px">
<template slot-scope="scope">
{{ scope.row.备件总数量 }}
</template>
</el-table-column>
</el-table>
<div class="block" style="float:right;">
<el-pagination
:current-page="pageCurrent0"
:page-sizes="[10, 20, 30, 40]"
:page-size="pageSize0"
:total="total0"
style="margin-top:10px;display:inline-block;width:50%"
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange0"
@current-change="handleCurrentChange0"/>
</div>
</el-tab-pane>
<el-tab-pane label="外购件" name="外购件">
<el-table ref="multipleTable" :data="tableData1" size="mini" style="max-height: 600px" height="600px" border stripe @selection-change="handleSelectionChange">
<el-table-column type="selection" align="center" width="50"/>
<el-table-column align="center" label="机床图号" min-width="100px">
<template slot-scope="scope">
{{ scope.row.机床图号 }}
</template>
</el-table-column>
<el-table-column align="center" label="组号" min-width="80px">
<template slot-scope="scope">
{{ scope.row.组号 }}
</template>
</el-table-column>
<el-table-column align="center" label="名称" min-width="100px">
<template slot-scope="scope">
{{ scope.row.物料名称 }}
</template>
</el-table-column>
<el-table-column align="center" label="型号" min-width="100px">
<template slot-scope="scope">
{{ scope.row.物料型号 || '—' }}
</template>
</el-table-column>
<el-table-column align="center" label="规格" min-width="200px">
<template slot-scope="scope">
{{ scope.row.物料规格 || '—' }}
</template>
</el-table-column>
<el-table-column align="center" label="总数量" min-width="100px">
<template slot-scope="scope">
{{ scope.row.总数量 }}
</template>
</el-table-column>
<el-table-column align="center" label="备件数量" min-width="100px">
<template slot-scope="scope">
{{ scope.row.备件总数量 }}
</template>
</el-table-column>
</el-table>
<div class="block" style="float:right;">
<el-pagination
:current-page="pageCurrent1"
:page-sizes="[10, 20, 30, 40]"
:page-size="pageSize1"
:total="total1"
style="margin-top:10px;display:inline-block;width:50%"
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange1"
@current-change="handleCurrentChange1"/>
</div>
</el-tab-pane>
<el-tab-pane label="基本件" name="基本件">
<el-table ref="multipleTable" :data="tableData2" size="mini" style="max-height: 600px" height="600px" border stripe @selection-change="handleSelectionChange">
<el-table-column type="selection" align="center" width="50"/>
<el-table-column align="center" label="机床图号" min-width="100px">
<template slot-scope="scope">
{{ scope.row.机床图号 }}
</template>
</el-table-column>
<el-table-column align="center" label="组号" min-width="80px">
<template slot-scope="scope">
{{ scope.row.组号 }}
</template>
</el-table-column>
<el-table-column align="center" label="名称" min-width="100px">
<template slot-scope="scope">
{{ scope.row.零件名称 }}
</template>
</el-table-column>
<el-table-column align="center" label="图号" min-width="100px">
<template slot-scope="scope">
{{ scope.row.零件图号 }}
</template>
</el-table-column>
<el-table-column align="center" label="规格" min-width="100px">
<template slot-scope="scope">
{{ scope.row.规格 || '—' }}
</template>
</el-table-column>
<el-table-column align="center" label="材料" min-width="100px">
<template slot-scope="scope">
{{ scope.row.材料 || '—' }}
</template>
</el-table-column>
<el-table-column align="center" label="总数量" min-width="100px">
<template slot-scope="scope">
{{ scope.row.总数量 }}
</template>
</el-table-column>
<el-table-column align="center" label="备件数量" min-width="100px">
<template slot-scope="scope">
{{ scope.row.备件总数量 }}
</template>
</el-table-column>
</el-table>
<div class="block" style="float:right;">
<el-pagination
:current-page="pageCurrent2"
:page-sizes="[10, 20, 30, 40]"
:page-size="pageSize2"
:total="total2"
style="margin-top:10px;display:inline-block;width:50%"
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange2"
@current-change="handleCurrentChange2"/>
</div>
</el-tab-pane>
</el-tabs>
</el-card>
<el-card>
<div slot="header">
<span style="margin: 5px">领料单编号:</span>
<el-input v-model="pickingListNumber" clearable size="small" style="width:200px" />
<el-button size="small" type="success" icon="el-icon-search" style="margin: 0 0 0 10px" @click="searchList()">查询</el-button>
<el-button size="small" type="primary" icon="el-icon-plus" style="margin: 0 0 0 10px" @click="createList()">创建</el-button>
<el-button size="small" type="primary" icon="el-icon-bottom" style="margin: 0 0 0 10px" @click="selectInto()">选入</el-button>
</div>
<h4 style="margin-top:0">领料单</h4>
<el-table :data="pickListTable1" highlight-current-row border style="width: 100%;" size="mini" height="300" @row-click="clickList">
<el-table-column label="序号" align="center" type="index" width="50"/>
<el-table-column label="领料单编号" align="center" min-width="200">
<template slot-scope="scope">
{{ scope.row.领料单编号 }}
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" min-width="200" >
<template slot-scope="scope">
{{ scope.row.操作日期.split(' ')[0] }}
</template>
</el-table-column>
<el-table-column label="领料人" align="center" min-width="130">
<template slot-scope="scope">
{{ scope.row.姓名 }}
</template>
</el-table-column>
<el-table-column label="领料单备注" align="center" min-width="130">
<template slot-scope="scope">
{{ scope.row.领料单备注 }}
</template>
</el-table-column>
<el-table-column label="领回确认" align="center" min-width="80">
<template slot-scope="scope">
<el-tag v-if="Number(scope.row.是否启用)===1" type="warning">未确认</el-tag>
<el-tag v-else type="success">已确认</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="200px">
<template slot-scope="scope" align="center">
<el-button :disabled="Number(scope.row.是否启用)===0" size="mini" type="primary" icon="el-icon-check" @click="checkList(scope.row)">确认</el-button>
<el-button :disabled="Number(scope.row.是否启用)===0" size="mini" type="danger" icon="el-icon-delete" @click="dropList(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<div class="block" style="float:right;margin: 10px 0;">
<el-pagination
:current-page="pageCurrent3"
:page-sizes="[10, 20, 30, 40]"
:page-size="pageSize3"
:total="total3"
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange3"
@current-change="handleCurrentChange3"/>
</div>
<h4>领料单明细{{ pickingListNumberShow }}</h4>
<el-table :data="pickListTable2" border style="width: 100%;" size="mini" height="300">
<el-table-column label="序号" align="center" type="index" width="50"/>
<el-table-column label="名称" align="center" min-width="100">
<template slot-scope="scope">
{{ scope.row.名称 }}
</template>
</el-table-column>
<el-table-column label="图号或型号" align="center" min-width="100">
<template slot-scope="scope">
{{ scope.row.图号或型号 || '—' }}
</template>
</el-table-column>
<el-table-column label="规格" align="center" min-width="100">
<template slot-scope="scope">
{{ scope.row.规格 || '—' }}
</template>
</el-table-column>
<el-table-column label="机床图号" align="center" min-width="100">
<template slot-scope="scope">
{{ scope.row.机床图号 }}
</template>
</el-table-column>
<el-table-column label="组号" align="center" min-width="70">
<template slot-scope="scope">
{{ scope.row.组号 }}
</template>
</el-table-column>
<el-table-column label="总数量" align="center" min-width="70">
<template slot-scope="scope">
{{ scope.row.总数量 }}
</template>
</el-table-column>
<el-table-column label="备件数量" align="center" min-width="70">
<template slot-scope="scope">
{{ scope.row.备件数量 }}
</template>
</el-table-column>
<el-table-column v-if="true" label="操作" align="center" width="100">
<template slot-scope="scope">
<el-button :disabled="!!scope.row.是否出库" size="mini" type="danger" icon="el-icon-delete" @click="dropListDetail(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
<el-dialog :visible.sync="dialogFormVisible1" title="创建领料单" center width="380px">
<el-form ref="form1" :model="form1" :rules="rules1" label-position="left">
<el-form-item label="领料人" prop="领料人流水号" label-width="100px" size="small">
<el-select v-model="form1.领料人流水号" placeholder="请选择" size="small" clearable filterable>
<el-option
v-for="item in pickPerson"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
</el-form-item>
<el-form-item label="领料单备注" prop="领料单备注" label-width="100px">
<el-input v-model="form1.领料单备注" size="small" placeholder="备注" style="width: 200px"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible1=false">取消</el-button>
<el-button type="primary" @click="submitCreateList()"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { initPickPerson, initMachineProject, searchgroup, searchTable, searchList, createList, dropList, selectIntoList, searchListDetail, dropListDetail } from '@/api/Inventory/CreatePickingList'
import request from '@/utils/request'
export default {
name: 'CreatePickingList',
data() {
return {
PartType: '基本件',
machineNumberValue: '',
machineNumber: [],
groupNumberValue: '',
groupNumber: [],
tableData0: [],
tableData1: [],
tableData2: [],
pageCurrent0: 1,
pageSize0: 20,
total0: 0,
pageCurrent1: 1,
pageSize1: 20,
total1: 0,
pageCurrent2: 1,
pageSize2: 20,
total2: 0,
pickListTable1: [],
pageCurrent3: 1,
pageSize3: 20,
total3: 0,
pickListTable2: [],
dialogFormVisible1: false,
form1: {
领料人流水号: '',
领料单备注: ''
},
rules1: {
领料人流水号: [{ required: true, message: '请选择领料人' }]
},
pickPerson: [],
pickingListNumber: '', // 领料单编号
pickingListNumberShow: '', // 领料单编号
pickingListNum: '', // 领料单流水号
multipleSelection: []
}
},
mounted() {
this.fetchData()
this.searchTable()
this.searchList()
},
methods: {
// 初始化数据
fetchData() {
initPickPerson().then(response => {
for (let i = 0; i < response.data.length; i++) {
this.pickPerson.push({
label: response.data[i].姓名,
value: response.data[i].人员编号
})
}
})
initMachineProject().then(response => {
for (let i = 0; i < response.data.length; i++) {
this.machineNumber.push({
label: response.data[i].机床图号,
name: response.data[i].项目名称,
value: response.data[i].机床流水号
})
}
})
},
// 根据机床查分组
machineChange() {
this.groupNumberValue = ''
this.groupNumber = []
searchgroup(this.machineNumberValue).then(response => {
for (let i = 0; i < response.data.length; i++) {
this.groupNumber.push({
label: response.data[i].组号,
value: response.data[i].组件流水号
})
}
})
},
// 查三表
searchTable() {
this.multipleSelection = []
if (this.PartType === '标准件') {
this.searchTable0()
} else if (this.PartType === '外购件') {
this.searchTable1()
} else if (this.PartType === '基本件') {
this.searchTable2()
}
},
// 标准件
searchTable0() {
let check1, check2
this.machineNumberValue ? check1 = 1 : check1 = 0
this.groupNumberValue ? check2 = 1 : check2 = 0
searchTable(check1, this.machineNumberValue, check2, this.groupNumberValue, this.pageCurrent0, this.pageSize0, 1).then(response => {
this.tableData0 = response.data.rows
this.total0 = response.data.total
})
},
// 外购件
searchTable1() {
let check1, check2
this.machineNumberValue ? check1 = 1 : check1 = 0
this.groupNumberValue ? check2 = 1 : check2 = 0
searchTable(check1, this.machineNumberValue, check2, this.groupNumberValue, this.pageCurrent1, this.pageSize1, 2).then(response => {
this.tableData1 = response.data.rows
this.total1 = response.data.total
})
},
// 基本件
searchTable2() {
let check1, check2
this.machineNumberValue ? check1 = 1 : check1 = 0
this.groupNumberValue ? check2 = 1 : check2 = 0
searchTable(check1, this.machineNumberValue, check2, this.groupNumberValue, this.pageCurrent2, this.pageSize2, 3).then(response => {
this.tableData2 = response.data.rows
this.total2 = response.data.total
})
},
handleSizeChange0(val) {
this.pageSize0 = val
this.pageCurrent0 = 1
this.searchTable0()
},
handleCurrentChange0(val) {
this.pageCurrent0 = val
this.searchTable0()
},
handleSizeChange1(val) {
this.pageSize1 = val
this.pageCurrent1 = 1
this.searchTable1()
},
handleCurrentChange1(val) {
this.pageCurrent1 = val
this.searchTable1()
},
handleSizeChange2(val) {
this.pageSize2 = val
this.pageCurrent2 = 1
this.searchTable2()
},
handleCurrentChange2(val) {
this.pageCurrent2 = val
this.searchTable2()
},
// 查询领料单列表
searchList() {
let check
this.pickingListNumber ? check = 1 : check = 0
searchList(this.pageCurrent3, this.pageSize3, check, this.pickingListNumber).then(response => {
this.pickListTable1 = response.data.rows
this.total3 = response.data.total
})
},
handleSizeChange3(val) {
this.pageSize3 = val
this.pageCurrent3 = 1
this.searchList()
},
handleCurrentChange3(val) {
this.pageCurrent3 = val
this.searchList()
},
// 创建领料单
createList() {
if (this.$refs['form1'] !== undefined) {
this.$refs['form1'].resetFields()
}
this.form1.领料人流水号 = ''
this.form1.领料单备注 = ''
this.dialogFormVisible1 = true
},
// 提交创建领料单
submitCreateList() {
createList(this.form1.领料人流水号, this.form1.领料单备注).then(response => {
if (response.data[0].result === '1') {
this.$message.success('创建成功')
this.dialogFormVisible1 = false
this.searchList()
} else { this.$message.error('操作失败') }
})
},
// 确认领料单
checkList(row) {
this.$confirm('是否确认领回?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const param = {
url: '',
method: 'post',
data: {
type: '4',
name: `update 车间装配管理_领料单 set 是否启用 = 0 where 领料单流水号 = ${row.领料单流水号}`
}
}
request(param).then(res => {
if (res.data[0].result === '1') {
this.$message.success('操作成功')
this.pickingListNumber = ''
this.searchList()
} else {
this.$message.error('操作失败')
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消操作'
})
})
},
// 删除领料单
dropList(row) {
this.$confirm('此操作将永久删除该行, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
dropList(row.领料单流水号).then(response => {
if (Number(response.data[0].result) === 1) {
this.$message.success('删除成功')
this.searchList()
} else {
this.$message.error('数据占用')
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
},
// 多选
handleSelectionChange(val) {
this.multipleSelection = val
},
// 选入
selectInto() {
const basePartGroup = []
const purchasePartGroup = []
this.multipleSelection.map(v => {
v.基本件流水号 ? basePartGroup.push(v.基本件流水号) : purchasePartGroup.push(v.标准件和外购件流水号)
})
if (basePartGroup.length === 0 && purchasePartGroup.length === 0) {
this.$message.warning('请勾选零件')
return
}
if (!this.pickingListNum || !this.pickingListNumberShow) {
this.$message.warning('请选择领料单')
return
}
if (basePartGroup.length) { // 基本件
selectIntoList(basePartGroup, null, this.pickingListNum).then(response => {
if (response.data[0].result === '1') {
this.$message.success('操作成功')
this.searchTable()
this.clickList()
} else { this.$message.error('操作失败') }
})
} else { // 标准件外购件
selectIntoList(null, purchasePartGroup, this.pickingListNum).then(response => {
if (response.data[0].result === '1') {
this.$message.success('操作成功')
this.searchTable()
this.clickList()
} else { this.$message.error('操作失败') }
})
}
},
// 查看领料单明细
clickList(row) {
row ? this.pickingListNum = row.领料单流水号 : this.pickingListNum
row ? this.pickingListNumberShow = row.领料单编号 : this.pickingListNumberShow
searchListDetail(this.pickingListNum).then(res => {
this.pickListTable2 = res.data
})
},
// 删除领料单明细
dropListDetail(row) {
console.log(row)
this.$confirm('此操作将永久删除该行, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
dropListDetail(row.领料单明细流水号).then(response => {
if (Number(response.data[0].result) === 1) {
this.$message.success('删除成功')
this.clickList()
} else {
this.$message.error('已确认领回,不可删除')
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
}
}
}
</script>
<style scoped>
.el-card{
margin-bottom: 15px;
}
.el-select{
width:200px
}
.el-input{
width:200px
}
span{
margin: 10px 0 10px 10px;
}
.el-tag{
margin: 0
}
</style>

View File

@@ -75,7 +75,7 @@
<el-table-column label="货位存量" align="center" width="180" prop="货位存量">
<template slot-scope="scope">
<template v-if="scope.row.changeValue">
<el-input-number v-model="scope.row.货位存量" controls-position="right" size="mini" style="width: 90px"/>
<el-input-number v-model="scope.row.货位存量" :min="0" :precision="2" controls-position="right" size="mini" style="width: 90px"/>
<el-button class="cancel-btn" size="mini" type="warning" @click="cancelEdit(scope.row)">取消</el-button>
</template>
<span v-else>{{ scope.row.货位存量 }}</span>
@@ -173,7 +173,7 @@
</el-col>
<el-col style="width: 210px">
<span>货位存量:</span>
<el-input-number v-model="localNumber" :min="0" placeholder="物料名称" size="small" clearable style="margin-bottom: 10px;"/>
<el-input-number v-model="localNumber" :min="0" :precision="2" placeholder="物料名称" size="small" clearable style="margin-bottom: 10px;"/>
</el-col>
<el-col style="width: 180px">
<span>是否为滞货:</span>

View File

@@ -0,0 +1,235 @@
<template>
<div class="app-container">
<el-card>
<div slot="header">
<span style="margin: 5px">领料单编号:</span>
<el-input v-model="pickingListNumber" clearable size="small" style="width:200px" />
<el-button size="small" type="success" icon="el-icon-search" style="margin: 0 0 0 10px" @click="searchList()">查询</el-button>
</div>
<h4 style="margin-top:0">领料单</h4>
<el-table :data="pickListTable1" highlight-current-row border style="width: 100%;" size="mini" height="300" @row-click="clickList">
<el-table-column label="序号" align="center" type="index" width="50"/>
<el-table-column label="领料单编号" align="center" min-width="200">
<template slot-scope="scope">
{{ scope.row.领料单编号 }}
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" min-width="200" >
<template slot-scope="scope">
{{ scope.row.操作日期.split(' ')[0] }}
</template>
</el-table-column>
<el-table-column label="领料人" align="center" min-width="130">
<template slot-scope="scope">
{{ scope.row.姓名 }}
</template>
</el-table-column>
<el-table-column label="领料单备注" align="center" min-width="130">
<template slot-scope="scope">
{{ scope.row.领料单备注 }}
</template>
</el-table-column>
<el-table-column label="领回确认" align="center" min-width="80">
<template slot-scope="scope">
<el-tag v-if="Number(scope.row.是否启用)===1" type="warning">未确认</el-tag>
<el-tag v-else type="success">已确认</el-tag>
</template>
</el-table-column>
</el-table>
<div class="block" style="float:right;margin: 10px 0;">
<el-pagination
:current-page="pageCurrent3"
:page-sizes="[10, 20, 30, 40]"
:page-size="pageSize3"
:total="total3"
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange3"
@current-change="handleCurrentChange3"/>
</div>
<h4>领料单明细{{ pickingListNumberShow }}</h4>
<el-table :data="pickListTable2" highlight-current-row border style="width: 100%;" size="mini" height="300" @row-click="clickListDetail">
<el-table-column label="序号" align="center" type="index" width="50"/>
<el-table-column label="名称" align="center" min-width="100">
<template slot-scope="scope">
{{ scope.row.名称 }}
</template>
</el-table-column>
<el-table-column label="图号或型号" align="center" min-width="100">
<template slot-scope="scope">
{{ scope.row.图号或型号 || '—' }}
</template>
</el-table-column>
<el-table-column label="规格" align="center" min-width="100">
<template slot-scope="scope">
{{ scope.row.规格 || '—' }}
</template>
</el-table-column>
<el-table-column label="机床图号" align="center" min-width="100">
<template slot-scope="scope">
{{ scope.row.机床图号 }}
</template>
</el-table-column>
<el-table-column label="组号" align="center" min-width="70">
<template slot-scope="scope">
{{ scope.row.组号 }}
</template>
</el-table-column>
<el-table-column label="总数量" align="center" min-width="70">
<template slot-scope="scope">
{{ scope.row.总数量 }}
</template>
</el-table-column>
<el-table-column label="备件数量" align="center" min-width="70">
<template slot-scope="scope">
{{ scope.row.备件数量 }}
</template>
</el-table-column>
<el-table-column label="已领数量" align="center" min-width="70">
<template slot-scope="scope">
{{ scope.row.备件数量 }}
</template>
</el-table-column>
</el-table>
</el-card>
<el-card>
<h4 style="margin-top:0">物料货位数量信息</h4>
<el-table :data="StockNumberTable" border style="width: 100%;" size="mini" height="300">
<el-table-column label="序号" align="center" type="index" width="50"/>
<el-table-column label="名称" align="center" min-width="100">
<template slot-scope="scope">
{{ scope.row.物料名称 || scope.row.零件名称 }}
</template>
</el-table-column>
<el-table-column label="图号或型号" align="center" min-width="100">
<template slot-scope="scope">
{{ scope.row.物料型号 || scope.row.零件图号 || '—' }}
</template>
</el-table-column>
<el-table-column label="规格" align="center" min-width="100">
<template slot-scope="scope">
{{ scope.row.物料规格 || scope.row.规格 || '—' }}
</template>
</el-table-column>
<el-table-column label="仓库名称" align="center" min-width="70">
<template slot-scope="scope">
{{ scope.row.仓库名称 }}
</template>
</el-table-column>
<el-table-column label="货位名称" align="center" min-width="70">
<template slot-scope="scope">
{{ scope.row.货位名称 }}
</template>
</el-table-column>
<el-table-column label="货位存量" align="center" min-width="70">
<template slot-scope="scope">
{{ scope.row.货位存量 }}
</template>
</el-table-column>
<el-table-column label="机床图号" align="center" min-width="100">
<template slot-scope="scope">
{{ scope.row.机床图号 || '—' }}
</template>
</el-table-column>
<el-table-column label="组号" align="center" min-width="70">
<template slot-scope="scope">
{{ scope.row.组号 || '—' }}
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="200px">
<template slot-scope="scope" align="center">
<el-button size="mini" type="primary" @click="outStore(scope.row)">出库</el-button>
<el-button size="mini" type="warning" @click="errorRecord(scope.row)">异常记录</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
</div>
</template>
<script>
import { searchList, searchListDetail, searchStockNumber } from '@/api/Inventory/MaterialOut'
export default {
name: 'MaterialOut',
data() {
return {
pickingListNumber: '',
pickingListNumberShow: '',
pickListTable1: [],
pageCurrent3: 1,
pageSize3: 20,
total3: 0,
pickListTable2: [],
StockNumberTable: []
}
},
mounted() {
this.searchList()
},
methods: {
// 查询领料单列表
searchList() {
let check
this.pickingListNumber ? check = 1 : check = 0
searchList(this.pageCurrent3, this.pageSize3, check, this.pickingListNumber).then(response => {
this.pickListTable1 = response.data.rows
this.total3 = response.data.total
})
},
handleSizeChange3(val) {
this.pageSize3 = val
this.pageCurrent3 = 1
this.searchList()
},
handleCurrentChange3(val) {
this.pageCurrent3 = val
this.searchList()
},
// 查看领料单明细
clickList(row) {
row ? this.pickingListNum = row.领料单流水号 : this.pickingListNum
row ? this.pickingListNumberShow = row.领料单编号 : this.pickingListNumberShow
searchListDetail(this.pickingListNum).then(res => {
this.pickListTable2 = res.data
})
},
// 查看领料单明细相关的物料货位数量
clickListDetail(row) {
console.log(row)
if (row.物料流水号) {
searchStockNumber(row.物料流水号).then(res => {
this.StockNumberTable = res.data
})
} else if (row.基本件流水号) {
console.log(row.基本件流水号)
}
},
// 出库
outStore(row) {
console.log(row)
},
// 异常记录
errorRecord(row) {
console.log(row)
}
}
}
</script>
<style scoped>
.el-card{
margin-bottom: 15px;
}
.el-select{
width:200px
}
.el-input{
width:200px
}
span{
margin: 10px 0 10px 10px;
}
.el-tag{
margin: 0
}
</style>

View File

@@ -164,6 +164,7 @@
<el-table-column label="操作" width="200px" fixed="right" align="center">
<template slot-scope="scope">
<el-button
:disabled="checked_hebing"
size="mini"
type="primary"
@click="handleEdit(scope.$index, scope.row, 'form')">分批投产</el-button>
@@ -185,8 +186,8 @@
@size-change="handleSizeChange"
@current-change="handleCurrentChange"/>
<!--<el-checkbox v-model="checked_baitu" style="margin-top:0px">是否白图</el-checkbox>-->
<!--<el-checkbox v-model="checked_gaonandu">是否高难度</el-checkbox>-->
<el-button :loading="listLoading3" type="primary" size="small" style="float:right;margin-top:10px" @click="production"></el-button>
<el-button :loading="listLoading3" type="primary" size="small" style="float:right;" @click="production">投产</el-button>
<el-checkbox v-model="checked_hebing" style="float:right;margin-top:10px;margin-right:10px">合并生</el-checkbox>
</div>
</div>
</el-card>
@@ -331,12 +332,13 @@
</template>
<script>
import { getEntryNameValue, getToolNum, getNum, getTable, production, getTable1, revisionBatch, editList, dele } from '@/api/ManufacturingCenter/InitialProduction'
import { getEntryNameValue, getToolNum, getNum, getTable, production, getTable1, revisionBatch, editList, dele, production2 } from '@/api/ManufacturingCenter/InitialProduction'
import { mapGetters } from 'vuex'
export default {
data() {
return {
checked_hebing: true,
maxmax: '',
clearTable: 0,
readonly: true,
@@ -801,52 +803,102 @@ export default {
if (this.multipleSelection.length === 0) {
this.$message.error('请至少选择一个零件')
} else {
this.listLoading3 = true
for (let i = 0; i < this.multipleSelection.length; i++) {
if (this.multipleSelection[i].checked_waixie === false) {
this.multipleSelection[i].checked_waixie = 1
} else {
this.multipleSelection[i].checked_waixie = 2
}
if (this.multipleSelection[i].checked_zhaoji === false) {
this.multipleSelection[i].checked_zhaoji = 0
} else {
this.multipleSelection[i].checked_zhaoji = 1
}
if (this.multipleSelection[i].checked_dailiao === true) {
this.multipleSelection[i].checked_dailiao = 2
} else {
this.multipleSelection[i].checked_dailiao = 1
}
if (this.checked_gaonandu === false) {
this.checked_gaonandu = 0
} else {
this.checked_gaonandu = 1
}
if (this.checked_baitu === false) {
this.checked_baitu = 0
} else {
this.checked_baitu = 1
}
production(this.multipleSelection[i].组件零件基本件流水号, this.multipleSelection[i].投产类型流水号, this.multipleSelection[i].数据类型, this.multipleSelection[i].投产总数量, this.time_planStart, this.time_planFinish, this.time_gongyiStart, this.time_gongyiFinish, this.time_dingeStart, this.time_dingeFinish, this.time_planpinghengStart, this.time_planpinghengFinish, this.time_machiningStart, this.time_machiningFinish, this.time_planStart, this.multipleSelection[i].checked_waixie, this.multipleSelection[i].checked_dailiao, this.id, this.multipleSelection[i].材料流水号, this.radio, this.checked_gaonandu, this.multipleSelection[i].checked_zhaoji, this.checked_baitu).then(response => {
this.result += parseInt(response.data[0].result)
if (this.result === this.multipleSelection.length) {
this.$message.success('投产成功')
this.total = 0
this.pageList = 1
this.getTable()
this.checked_baitu = false
this.checked_gaonandu = false
this.tableData1 = []
this.listLoading3 = false
} else if (response.data[0].result === '0') {
this.listLoading3 = false
this.$message.error('投产失败')
if (this.checked_hebing === true) {
this.listLoading3 = true
for (let i = 0; i < this.multipleSelection.length; i++) {
if (this.multipleSelection[i].checked_waixie === false) {
this.multipleSelection[i].checked_waixie = 1
} else {
this.multipleSelection[i].checked_waixie = 2
}
})
this.shijiancuo1 = 0
this.shijiancuo = 0
this.jieguo = 0
if (this.multipleSelection[i].checked_zhaoji === false) {
this.multipleSelection[i].checked_zhaoji = 0
} else {
this.multipleSelection[i].checked_zhaoji = 1
}
if (this.multipleSelection[i].checked_dailiao === true) {
this.multipleSelection[i].checked_dailiao = 2
} else {
this.multipleSelection[i].checked_dailiao = 1
}
if (this.checked_gaonandu === false) {
this.checked_gaonandu = 0
} else {
this.checked_gaonandu = 1
}
if (this.checked_baitu === false) {
this.checked_baitu = 0
} else {
this.checked_baitu = 1
}
production2(this.multipleSelection[i].组件零件基本件流水号, this.multipleSelection[i].投产类型流水号, this.multipleSelection[i].数据类型, this.multipleSelection[i].投产总数量, this.time_planStart, this.time_planFinish, this.time_gongyiStart, this.time_gongyiFinish, this.time_dingeStart, this.time_dingeFinish, this.time_planpinghengStart, this.time_planpinghengFinish, this.time_machiningStart, this.time_machiningFinish, this.time_planStart, this.multipleSelection[i].checked_waixie, this.multipleSelection[i].checked_dailiao, this.id, this.multipleSelection[i].材料流水号, this.radio, this.checked_gaonandu, this.multipleSelection[i].checked_zhaoji, this.checked_baitu).then(response => {
this.result += parseInt(response.data[0].result)
if (this.result === this.multipleSelection.length) {
this.$message.success('投产成功')
this.total = 0
this.pageList = 1
this.getTable()
this.checked_baitu = false
this.checked_gaonandu = false
this.tableData1 = []
this.listLoading3 = false
} else if (response.data[0].result === '0') {
this.listLoading3 = false
this.$message.error('投产失败')
}
})
this.shijiancuo1 = 0
this.shijiancuo = 0
this.jieguo = 0
}
} else {
this.listLoading3 = true
for (let i = 0; i < this.multipleSelection.length; i++) {
if (this.multipleSelection[i].checked_waixie === false) {
this.multipleSelection[i].checked_waixie = 1
} else {
this.multipleSelection[i].checked_waixie = 2
}
if (this.multipleSelection[i].checked_zhaoji === false) {
this.multipleSelection[i].checked_zhaoji = 0
} else {
this.multipleSelection[i].checked_zhaoji = 1
}
if (this.multipleSelection[i].checked_dailiao === true) {
this.multipleSelection[i].checked_dailiao = 2
} else {
this.multipleSelection[i].checked_dailiao = 1
}
if (this.checked_gaonandu === false) {
this.checked_gaonandu = 0
} else {
this.checked_gaonandu = 1
}
if (this.checked_baitu === false) {
this.checked_baitu = 0
} else {
this.checked_baitu = 1
}
production(this.multipleSelection[i].组件零件基本件流水号, this.multipleSelection[i].投产类型流水号, this.multipleSelection[i].数据类型, this.multipleSelection[i].投产总数量, this.time_planStart, this.time_planFinish, this.time_gongyiStart, this.time_gongyiFinish, this.time_dingeStart, this.time_dingeFinish, this.time_planpinghengStart, this.time_planpinghengFinish, this.time_machiningStart, this.time_machiningFinish, this.time_planStart, this.multipleSelection[i].checked_waixie, this.multipleSelection[i].checked_dailiao, this.id, this.multipleSelection[i].材料流水号, this.radio, this.checked_gaonandu, this.multipleSelection[i].checked_zhaoji, this.checked_baitu).then(response => {
this.result += parseInt(response.data[0].result)
if (this.result === this.multipleSelection.length) {
this.$message.success('投产成功')
this.total = 0
this.pageList = 1
this.getTable()
this.checked_baitu = false
this.checked_gaonandu = false
this.tableData1 = []
this.listLoading3 = false
} else if (response.data[0].result === '0') {
this.listLoading3 = false
this.$message.error('投产失败')
}
})
this.shijiancuo1 = 0
this.shijiancuo = 0
this.jieguo = 0
}
}
}
}

View File

@@ -1,14 +1,11 @@
<template>
<div>
<el-card>
<el-row>
<span>零件图号:</span>
<el-input v-model="partName" placeholder="零件图号" size="small" clearable style="width:200px"/>
<el-button size="small" icon="el-icon-search" type="success" style="margin-left: 10px" @click="pageSize=10; pageCurrent=1;searchTable()">查询</el-button>
<el-button size="small" icon="el-icon-success" type="primary" style="margin-left: 10px" @click="edit2()">自家备料确认</el-button>
</el-row>
<span>零件图号:</span>
<el-input v-model="partName" placeholder="零件图号" size="small" clearable style="width:200px"/>
<el-button size="small" icon="el-icon-search" type="success" style="margin-left: 10px" @click="pageSize=10; pageCurrent=1;searchTable()">查询</el-button>
<el-button size="small" icon="el-icon-success" type="primary" style="margin-left: 10px" @click="edit2()">自家备料确认</el-button>
</el-card>
<el-card>
<el-table v-loading="loading" :data="tableData" height="580" style="width: 100%;" border element-loading-text="拼命加载中" @selection-change="handleSelectionChange2">
<el-table-column type="selection" width="55" align="center"/>
@@ -17,7 +14,7 @@
{{ scope.row.零件名称 }}
</template>
</el-table-column>
<el-table-column label="零件图号" align="center" width="240px">
<el-table-column label="零件图号" align="center" width="280px">
<template slot-scope="scope">
{{ scope.row.零件图号 }}
</template>
@@ -40,6 +37,7 @@
@current-change="handleCurrentChange"/>
</div>
</el-card>
<el-card>
<span>零件图号:</span>
<el-input v-model="partName2" placeholder="零件图号" size="small" clearable style="width:200px"/>
@@ -149,7 +147,6 @@ export default {
})
}
},
// ////////////////////////////////////////////////////////////////////////////0530新↑
// 查询表格数据
searchTable() {
this.loading = true
@@ -160,7 +157,7 @@ export default {
} else {
this.partNamecheck = false
}
searchtable(this.partNamecheck, this.partName, !this.all, this.pageCurrent, this.pageSize).then(response => {
searchtable(this.partNamecheck, this.partName, 0, this.pageCurrent, this.pageSize).then(response => {
if (response.data.total === 0) {
this.loading = false
} else {
@@ -200,10 +197,10 @@ export default {
this.editTime = date.getFullYear() + '-' + month + '-' + day
change(row.工艺计划流水号, row.重量, row.单价).then(() => {
handlechange(row.工序流水号, '0000').then(response => {
handlechange2(row.工序流水号, this.form.完成时间)
handlechange2(row.工序流水号, this.editTime).then(response => {
this.searchTable()
})
})
}).then(response => {
this.searchTable()
})
},
handleSelectionChange(val) {

View File

@@ -93,75 +93,77 @@
@current-change="handleCurrentChange"/>
</div>
</el-card>
<el-card v-if="tableData2.length">
<el-card>
<div slot="header">
<el-button v-show="true" type="danger" icon="el-icon-edit" size="small" @click="returnEdit">在制零件工艺调整</el-button>
</div>
<table class="tg">
<tr>
<td class="tg-x61c" colspan="4" rowspan="2">江苏高精</td>
<td class="tg-c3ow" colspan="2" rowspan="2">零件条码</td>
<td class="tg-c3ow" colspan="3">零件图号</td>
<td class="tg-c3ow" colspan="2">{{ tableData2[0] ? tableData2[0].零件图号 : '' }}</td>
<td class="tg-c3ow">数量</td>
</tr>
<tr>
<td class="tg-c3ow" colspan="3">零件名称</td>
<td class="tg-c3ow" colspan="2">{{ tableData2[0] ? tableData2[0].零件名称 : '' }}</td>
<td class="tg-c3ow" rowspan="3">{{ tableData2[0] ? tableData2[0].投产数量 : '' }}</td>
</tr>
<tr>
<td class="tg-c3ow" colspan="2">项目名称</td>
<td class="tg-c3ow" colspan="2">{{ tableData2[0] ? tableData2[0].项目名称 : '' }}</td>
<td class="tg-c3ow" colspan="2" rowspan="2">{{ tableData2[0] ? 'P' + tableData2[0].工艺计划流水号 : '' }}</td>
<td class="tg-c3ow" colspan="3">机床</td>
<td class="tg-c3ow" colspan="2">{{ tableData2[0] ? tableData2[0].机床图号 : '' }}</td>
</tr>
<tr>
<td class="tg-c3ow">材质</td>
<td class="tg-c3ow">{{ tableData2[0] ? tableData2[0].材料 : '' }}</td>
<td class="tg-c3ow">规格</td>
<td class="tg-c3ow">{{ tableData2[0] ? tableData2[0].原材料规格 : '' }}</td>
<td class="tg-c3ow" colspan="3">组号</td>
<td class="tg-c3ow" colspan="2">{{ tableData2[0] ? tableData2[0].组号 : '' }}</td>
</tr>
<tr>
<td class="tg-c3ow">序次</td>
<td class="tg-c3ow">工艺名称</td>
<td class="tg-c3ow" colspan="3">工艺要求</td>
<td class="tg-c3ow">难度系数</td>
<td class="tg-c3ow">工作者</td>
<td class="tg-c3ow">单件</td>
<td class="tg-c3ow">准结</td>
<td class="tg-c3ow">检查结果</td>
<td class="tg-c3ow">计划完成日期</td>
<td class="tg-c3ow">工序条码</td>
</tr>
<tr v-for="(value,key) in tableData2" :id="key" :key="key">
<td class="tg-c3ow">{{ key + 1 }}</td>
<td class="tg-c3ow">{{ value.工艺名称 }}</td>
<td class="tg-c3ow" colspan="3">{{ value.工艺要求 }}</td>
<td class="tg-c3ow">{{ value.工艺难度等级 }}</td>
<td class="tg-c3ow"/>
<td class="tg-c3ow">{{ value.单件定额工时 }}</td>
<td class="tg-c3ow">{{ value.准结定额工时 }}</td>
<td class="tg-c3ow"/>
<td class="tg-c3ow">{{ value.计划日期 }}</td>
<td class="tg-c3ow">{{ value.工序流水号 }}</td>
</tr>
<tr>
<td class="tg-c3ow">工艺员</td>
<td class="tg-c3ow">{{ tableData2[0] ? tableData2[0].工艺员 : '' }}</td>
<td class="tg-c3ow">定额员</td>
<td class="tg-c3ow">{{ tableData2[0] ? tableData2[0].定额员 : '' }}</td>
<td class="tg-c3ow">工艺完成</td>
<td class="tg-c3ow">{{ tableData2[0] ? tableData2[0].工艺实际完成时间.split(' ')[0] : '' }}</td>
<td class="tg-c3ow">加工开始</td>
<td class="tg-c3ow" colspan="2">{{ tableData2[0] ? tableData2[0].机加工开始时间 : '' }}</td>
<td class="tg-c3ow">加工结束</td>
<td class="tg-c3ow" colspan="2">{{ tableData2[0] ? tableData2[0].机加工结束时间 : '' }}</td>
</tr>
</table>
<div v-if="tableData2.length">
<table class="tg">
<tr>
<td class="tg-x61c" colspan="4" rowspan="2">江苏高精</td>
<td class="tg-c3ow" colspan="2" rowspan="2">零件条码</td>
<td class="tg-c3ow" colspan="3">零件图号</td>
<td class="tg-c3ow" colspan="2">{{ tableData2[0] ? tableData2[0].零件图号 : '' }}</td>
<td class="tg-c3ow">数量</td>
</tr>
<tr>
<td class="tg-c3ow" colspan="3">零件名称</td>
<td class="tg-c3ow" colspan="2">{{ tableData2[0] ? tableData2[0].零件名称 : '' }}</td>
<td class="tg-c3ow" rowspan="3">{{ tableData2[0] ? tableData2[0].投产数量 : '' }}</td>
</tr>
<tr>
<td class="tg-c3ow" colspan="2">项目名称</td>
<td class="tg-c3ow" colspan="2">{{ tableData2[0] ? tableData2[0].项目名称 : '' }}</td>
<td class="tg-c3ow" colspan="2" rowspan="2">{{ tableData2[0] ? 'P' + tableData2[0].工艺计划流水号 : '' }}</td>
<td class="tg-c3ow" colspan="3">机床</td>
<td class="tg-c3ow" colspan="2">{{ tableData2[0] ? tableData2[0].机床图号 : '' }}</td>
</tr>
<tr>
<td class="tg-c3ow">材质</td>
<td class="tg-c3ow">{{ tableData2[0] ? tableData2[0].材料 : '' }}</td>
<td class="tg-c3ow">规格</td>
<td class="tg-c3ow">{{ tableData2[0] ? tableData2[0].原材料规格 : '' }}</td>
<td class="tg-c3ow" colspan="3">组号</td>
<td class="tg-c3ow" colspan="2">{{ tableData2[0] ? tableData2[0].组号 : '' }}</td>
</tr>
<tr>
<td class="tg-c3ow">序次</td>
<td class="tg-c3ow">工艺名称</td>
<td class="tg-c3ow" colspan="3">工艺要求</td>
<td class="tg-c3ow">难度系数</td>
<td class="tg-c3ow">工作者</td>
<td class="tg-c3ow">单件</td>
<td class="tg-c3ow">准结</td>
<td class="tg-c3ow">检查结果</td>
<td class="tg-c3ow">计划完成日期</td>
<td class="tg-c3ow">工序条码</td>
</tr>
<tr v-for="(value,key) in tableData2" :id="key" :key="key">
<td class="tg-c3ow">{{ key + 1 }}</td>
<td class="tg-c3ow">{{ value.工艺名称 }}</td>
<td class="tg-c3ow" colspan="3">{{ value.工艺要求 }}</td>
<td class="tg-c3ow">{{ value.工艺难度等级 }}</td>
<td class="tg-c3ow"/>
<td class="tg-c3ow">{{ value.单件定额工时 }}</td>
<td class="tg-c3ow">{{ value.准结定额工时 }}</td>
<td class="tg-c3ow"/>
<td class="tg-c3ow">{{ value.计划日期 }}</td>
<td class="tg-c3ow">{{ value.工序流水号 }}</td>
</tr>
<tr>
<td class="tg-c3ow">工艺员</td>
<td class="tg-c3ow">{{ tableData2[0] ? tableData2[0].工艺员 : '' }}</td>
<td class="tg-c3ow">定额员</td>
<td class="tg-c3ow">{{ tableData2[0] ? tableData2[0].定额员 : '' }}</td>
<td class="tg-c3ow">工艺完成</td>
<td class="tg-c3ow">{{ tableData2[0].工艺实际完成时间 ? tableData2[0].工艺实际完成时间.split(' ')[0] : '' }}</td>
<td class="tg-c3ow">加工开始</td>
<td class="tg-c3ow" colspan="2">{{ tableData2[0] ? tableData2[0].机加工开始时间 : '' }}</td>
<td class="tg-c3ow">加工结束</td>
<td class="tg-c3ow" colspan="2">{{ tableData2[0] ? tableData2[0].机加工结束时间 : '' }}</td>
</tr>
</table>
</div>
</el-card>
</div>
</template>
@@ -173,6 +175,7 @@ import { initMachineProject, searchgroup, initPerson, search, searchtable1,
export default {
data() {
return {
partNumValue: '',
machineNumberValue: '',
machineNumber: [],
groupNumberValue: '',

View File

@@ -63,18 +63,17 @@
</el-select>
</el-col>
<el-col v-show="materielValue==='1'||materielValue==='6'||materielValue==='7'||materielValue==='8'" :span="20">
<el-col v-show="materielValue==='1'||materielValue==='6'||materielValue==='7'||materielValue==='8'" :span="15">
<span>直径:</span>
<el-input-number v-model="diameter" size="small" controls-position="right" style="width:100px;margin-top:20px;"/>
<span>长度:</span>
<el-input-number v-model="height2" size="small" controls-position="right" style="width:100px;margin-top:20px;"/>
<el-button style="margin-top: 20px;margin-left: 10px;" type="primary" size="small" @click="Calculation1()">计算重量
</el-button>
<el-button style="margin-top: 20px;margin-left: 10px;" type="primary" size="small" @click="Calculation1()">计算重量</el-button>
<span>重量:</span>
<el-input v-model="weight" style="width:150px" size="small" placeholder="重量">
<el-button slot="append" icon="el-icon-cjn-09" @click="saveWeight"/>
</el-input>
<!--<el-button style="margin-top: 20px;margin-left: 10px;" type="primary" size="small" @click="insertThestring()">计算重量</el-button>-->
<el-button style="margin-left: 10px;" type="primary" size="small" @click="insertThestring()">合并生产</el-button>
</el-col>
<el-col v-show="materielValue==='2'||materielValue==='9'||materielValue==='10'||materielValue==='11'" :span="20">

View File

@@ -5,9 +5,6 @@
<span>零件图号:</span>
<el-input v-model="partName" placeholder="零件图号" size="small" clearable style="width:200px"/>
<el-button size="small" icon="el-icon-search" type="success" style="margin-left: 10px" @click="pageSize=10; pageCurrent=1;searchTable()">查询</el-button>
<!--<el-checkbox v-model="all" size="mini" @change="searchTable">查询全部</el-checkbox>-->
<!--<el-button :disabled="all" size="small" icon="el-icon-success" type="primary" style="margin-left: 10px" @click="edit()">自家备料确认</el-button>-->
<!--<el-button size="small" icon="el-icon-refresh" type="success" style="margin-left: 10px" @click="pageSize=10; pageCurrent=1;searchTable()">刷新</el-button>-->
</el-row>
</el-card>
@@ -44,7 +41,7 @@
size="mini"
type="primary"
class="el-icon-edit"
@click="handleChange1(scope.row)">备料确认</el-button>
@click="handleChange1(scope.row)">出库</el-button>
</template>
</el-table-column>
</el-table>
@@ -64,7 +61,7 @@
<span>零件图号:</span>
<el-input v-model="partName2" placeholder="零件图号" size="small" clearable style="width:200px"/>
<el-button size="small" icon="el-icon-search" type="success" style="margin-left: 10px" @click="total2=0;pageSize2=10; pageCurrent2=1;searchTable2()">查询</el-button>
<el-button size="small" icon="el-icon-success" type="primary" style="margin-left: 10px" @click="edit()">外购备料确认</el-button>
<el-button size="small" icon="el-icon-success" type="primary" style="margin-left: 10px" @click="edit()">外购备料出库</el-button>
</el-card>
<el-card>
<el-table v-loading="loading2" :data="tableData2" height="580" style="width: 100%;" border element-loading-text="拼命加载中" @selection-change="handleSelectionChange">
@@ -115,7 +112,7 @@
</template>
<script>
import { searchtable, searchtable2, change, handlechange, searchtable3, change2, handlechange2 } from '@/api/ManufacturingCenter/MaterialArrivalManagement'
import { searchtable, searchtable2, change, handlechange, searchtable3, change2, handlechange2 } from '@/api/ManufacturingCenter/SparePartsOut'
import { mapGetters } from 'vuex'
export default {
data() {

View File

@@ -50,28 +50,28 @@
<el-table
v-loading="loading0"
:data="tableData"
style="width: 100%;max-height: 610px"
height="610"
style="width: 100%;max-height: 600px"
height="600"
size="mini"
highlight-current-row
border>
<el-table-column align="center" label="序号" type="index" width="50px"/>
<el-table-column align="center" label="机床图号" width="100px">
<el-table-column align="center" label="序号" type="index" width="60px"/>
<el-table-column align="center" label="机床图号" width="170px">
<template slot-scope="scope">
{{ scope.row.机床图号 }}
</template>
</el-table-column>
<el-table-column align="center" label="组号" width="60px">
<el-table-column align="center" label="组号" width="140px">
<template slot-scope="scope">
{{ scope.row.组号 }}
</template>
</el-table-column>
<el-table-column align="center" label="零件图号" width="150px">
<el-table-column align="center" label="零件图号" width="200px">
<template slot-scope="scope">
{{ scope.row.零件图号 }}
</template>
</el-table-column>
<el-table-column align="center" label="零件名称" width="100px">
<el-table-column align="center" label="零件名称" width="180px">
<template slot-scope="scope">
{{ scope.row.零件名称 }}
</template>
@@ -81,17 +81,17 @@
{{ scope.row.批次数量 }}
</template>
</el-table-column>
<el-table-column align="center" label="投产时间" width="100px">
<el-table-column align="center" label="投产时间" width="130px">
<template slot-scope="scope">
{{ scope.row.传递时间 }}
</template>
</el-table-column>
<el-table-column align="center" label="零件状态" min-width="960px">
<el-table-column align="center" label="零件状态" width="750px">
<template slot-scope="scope">
<el-steps id="StatusQuery" :active="scope.row.考核状态" finish-status="success" simple>
<el-steps :active="scope.row.考核状态" finish-status="success" simple>
<el-step title="投产" />
<el-step title="工艺定额" />
<!--<el-step title="定额" />-->
<el-step title="工艺" />
<el-step title="定额" />
<el-step title="平衡" />
<el-step title="完成" />
<el-step title="入库" />
@@ -491,8 +491,3 @@ export default {
margin: 10px 0 10px 10px;
}
</style>
<style>
#StatusQuery {
padding: 8px 30px;
}
</style>

View File

@@ -0,0 +1,224 @@
/* eslint-disable */
require('script-loader!file-saver');
// import XLSX from 'xlsx'
import XLSX from 'xlsx-style'
function generateArray(table) {
var out = [];
var rows = table.querySelectorAll('tr');
var ranges = [];
for (var R = 0; R < rows.length; ++R) {
var outRow = [];
var row = rows[R];
var columns = row.querySelectorAll('td');
for (var C = 0; C < columns.length; ++C) {
var cell = columns[C];
var colspan = cell.getAttribute('colspan');
var rowspan = cell.getAttribute('rowspan');
var cellValue = cell.innerText;
if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue;
//Skip ranges
ranges.forEach(function (range) {
if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) {
for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null);
}
});
//Handle Row Span
if (rowspan || colspan) {
rowspan = rowspan || 1;
colspan = colspan || 1;
ranges.push({
s: {
r: R,
c: outRow.length
},
e: {
r: R + rowspan - 1,
c: outRow.length + colspan - 1
}
});
};
//Handle Value
outRow.push(cellValue !== "" ? cellValue : null);
//Handle Colspan
if (colspan)
for (var k = 0; k < colspan - 1; ++k) outRow.push(null);
}
out.push(outRow);
}
return [out, ranges];
};
function datenum(v, date1904) {
if (date1904) v += 1462;
var epoch = Date.parse(v);
return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);
}
function sheet_from_array_of_arrays(data, opts) {
var ws = {};
var range = {
s: {
c: 10000000,
r: 10000000
},
e: {
c: 0,
r: 0
}
};
for (var R = 0; R != data.length; ++R) {
for (var C = 0; C != data[R].length; ++C) {
if (range.s.r > R) range.s.r = R;
if (range.s.c > C) range.s.c = C;
if (range.e.r < R) range.e.r = R;
if (range.e.c < C) range.e.c = C;
var cell = {
v: data[R][C]
};
if (cell.v == null) continue;
var cell_ref = XLSX.utils.encode_cell({
c: C,
r: R
});
if (typeof cell.v === 'number') cell.t = 'n';
else if (typeof cell.v === 'boolean') cell.t = 'b';
else if (cell.v instanceof Date) {
cell.t = 'n';
cell.z = XLSX.SSF._table[14];
cell.v = datenum(cell.v);
} else cell.t = 's';
ws[cell_ref] = cell;
}
}
if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range);
return ws;
}
function Workbook() {
if (!(this instanceof Workbook)) return new Workbook();
this.SheetNames = [];
this.Sheets = {};
}
function s2ab(s) {
var buf = new ArrayBuffer(s.length);
var view = new Uint8Array(buf);
for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
return buf;
}
export function export_table_to_excel(id) {
var theTable = document.getElementById(id);
var oo = generateArray(theTable);
var ranges = oo[1];
/* original data */
var data = oo[0];
var ws_name = "SheetJS";
var wb = new Workbook(),
ws = sheet_from_array_of_arrays(data);
/* add ranges to worksheet */
// ws['!cols'] = ['apple', 'banan'];
ws['!merges'] = ranges;
/* add worksheet to workbook */
wb.SheetNames.push(ws_name);
wb.Sheets[ws_name] = ws;
var wbout = XLSX.write(wb, {
bookType: 'xlsx',
bookSST: false,
type: 'binary'
});
saveAs(new Blob([s2ab(wbout)], {
type: "application/octet-stream"
}), "test.xlsx")
}
export function export_json_to_excel({
headerGroup,
dataGroup,
sheetGroup,
filename,
autoWidth = true,
bookType= 'xlsx'
} = {}) {
var wb = new Workbook()
for (let i = 0; i < dataGroup.length; i++) {
/* original data */
let data = dataGroup[i]
filename = filename || 'excel-list'
data = [...data]
data.unshift(headerGroup[i]);
var ws_name = sheetGroup[i];
var ws = sheet_from_array_of_arrays(data);
if (autoWidth) {
/*设置worksheet每列的最大宽度*/
const colWidth = data.map(row => row.map(val => {
/*先判断是否为null/undefined*/
if (val == null) {
return {
'wch': 10
};
}
/*再判断是否为中文*/
else if (val.toString().charCodeAt(0) > 255) {
return {
'wch': val.toString().length * 2
};
} else {
return {
'wch': val.toString().length
};
}
}))
/*以第一行为初始值*/
let result = colWidth[0];
for (let i = 1; i < colWidth.length; i++) {
for (let j = 0; j < colWidth[i].length; j++) {
if (result[j]['wch'] < colWidth[i][j]['wch']) {
result[j]['wch'] = colWidth[i][j]['wch'];
}
}
}
ws['!cols'] = result;
}
let R = 0;
data.map(item => {
let C = 0;
item.map(itm => {
var cell_ref = XLSX.utils.encode_cell({c:C,r:R});
var cell = {v: itm }
cell.s= {
alignment: {
horizontal: "center"
}
}
ws[cell_ref] = cell;
C++;
})
R++;
})
/* add worksheet to workbook */
wb.SheetNames.push(ws_name);
wb.Sheets[ws_name] = ws;
}
var wbout = XLSX.write(wb, {
bookType: bookType,
bookSST: false,
type: 'binary'
});
saveAs(new Blob([s2ab(wbout)], {
type: "application/octet-stream"
}), `${filename}.${bookType}`);
}

View File

@@ -0,0 +1,24 @@
// 导出Excel方法表格id不加扩展名的文件名sheet名
export function exportExcelMethod(tableId, fileName, sheetName) {
tableToExcel(tableId, fileName, sheetName)
}
const tableToExcel = (function() {
const uri = 'data:application/vnd.ms-excel;base64,'
// 设置导出表格的单元格默认高度/宽度/边框样式/字体颜色/背景颜色/居中网页显示表格宽度建议1240tr/td视情况而定
const template = `<html xmlns:x="urn:schemas-microsoft-com:office:excel"><head><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><meta charset="UTF-8"><style type="text/css">table td {border: 1px solid #000000;height:40px;text-align: center;color: #000000;}</style></head><body><table>{table}</table></body></html>`
const base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) }
const format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p] }) }
return function(table, filename, sheetname) {
if (!table.nodeType) table = document.getElementById(table)
const ctx = { worksheet: sheetname || 'Worksheet', table: table.innerHTML }
const blob = new Blob([format(template, ctx)])
if ('msSaveOrOpenBlob' in navigator) {
window.navigator.msSaveOrOpenBlob(blob, filename + '.xls')
return
}
const aTag = document.createElement('a')
aTag.href = uri + base64(format(template, ctx))
aTag.download = filename
aTag.click()
}
})()

View File

@@ -22,11 +22,12 @@
type="date"
placeholder="选择日期"/>
<el-button type="success" class="el-icon-search" size="small" style="margin: 10px 0 0 10px" @click="pageCurrent=1;total = 0;searchTable();">查询</el-button>
<el-button type="primary" size="small" icon="el-icon-download" style="margin-left:10px" @click="exportUninquirySheet1()">导出</el-button>
</el-row>
</el-card>
<el-card>
<el-col :span="6">
<el-table v-loading="loading" :data="tableData" highlight-current-row height="580" style="width: 100%;" border element-loading-text="拼命加载中" @row-click="searchTable2">
<el-table v-loading="loading" :data="tableData" highlight-current-row height="500" style="width: 100%;" border element-loading-text="拼命加载中" @row-click="searchTable2">
<el-table-column label="操作者" align="center" width="110px">
<template slot-scope="scope">
{{ scope.row.姓名 }}
@@ -55,7 +56,7 @@
</div>
</el-col>
<el-col :span="17" style="margin-left: 30px;">
<el-table v-loading="loading2" :data="tableData2" height="580" style="width: 100%;" border element-loading-text="拼命加载中">
<el-table v-loading="loading2" :data="tableData2" height="500" style="width: 100%;" border element-loading-text="拼命加载中">
<el-table-column label="零件图号" align="center" width="150px">
<template slot-scope="scope">
{{ scope.row.零件图号 }}
@@ -104,10 +105,90 @@
</div>
</el-col>
</el-card>
<el-card>
<span>机床编号:</span>
<el-select v-model="machineNumberValue" filterable placeholder="机床编号" size="small" clearable @change="searchTable4();searchTable6()">
<el-option
v-for="item in machineNumber"
:key="item.value"
:label="item.label"
:value="item.value">
<div style="float: left">{{ item.label }}</div>
<div style="float: right; color: #8492a6; font-size: 13px">{{ item.name }}</div>
</el-option>
</el-select>
<el-button type="primary" size="small" icon="el-icon-download" style="margin-left:10px" @click="exportUninquirySheet2()">机床导出</el-button>
<el-button type="primary" size="small" icon="el-icon-download" style="margin-left:10px" @click="exportUninquirySheet3()">组件导出</el-button>
</el-card>
<el-card>
<el-col :span="6">
<el-table v-loading="loading3" :data="tableData3" highlight-current-row height="580" style="width: 100%;" border element-loading-text="拼命加载中" @row-click="searchTable5">
<el-table-column label="机床编号" align="center" width="110px">
<template slot-scope="scope">
{{ scope.row.机床图号 }}
</template>
</el-table-column>
<el-table-column label="理论工时" align="center">
<template slot-scope="scope">
{{ scope.row.理论加工时间段 }}
</template>
</el-table-column>
<el-table-column label="实际工时" align="center">
<template slot-scope="scope">
{{ scope.row.实际加工时间段 }}
</template>
</el-table-column>
</el-table>
<div style="margin: 10px">
<el-pagination
v-if="!loading3"
:current-page="pageCurrent3"
:page-size="pageSize3"
:total="total3"
layout="total, prev, pager, next"
@size-change="handleSizeChange3"
@current-change="handleCurrentChange3"/>
</div>
</el-col>
<el-col :span="17" style="margin-left: 30px;">
<el-table v-loading="loading4" :data="tableData4" height="580" style="width: 100%;" border element-loading-text="拼命加载中">
<el-table-column label="机床编号" align="center">
<template slot-scope="scope">
{{ scope.row.机床图号 }}
</template>
</el-table-column>
<el-table-column label="组号" align="center">
<template slot-scope="scope">
{{ scope.row.组号 }}
</template>
</el-table-column>
<el-table-column label="理论工时" align="center">
<template slot-scope="scope">
{{ scope.row.理论加工时间段 }}
</template>
</el-table-column>
<el-table-column label="实际工时" align="center" width="120px">
<template slot-scope="scope">
{{ scope.row.实际加工时间段 }}
</template>
</el-table-column>
</el-table>
<div style="margin: 10px">
<el-pagination
v-if="!loading4"
:current-page="pageCurrent4"
:page-size="pageSize4"
:total="total4"
layout="total, prev, pager, next, jumper"
@size-change="handleSizeChange4"
@current-change="handleCurrentChange4"/>
</div>
</el-col>
</el-card>
</div>
</template>
<script>
import { searchtable, searchtable2 } from '@/api/ManufacturingCenter/machiningHoursStatistics'
import { searchtable, searchtable2, searchtable4, searchtable5, initProject, searchtable55, searchtable11, searchtable44 } from '@/api/ManufacturingCenter/machiningHoursStatistics'
export default {
data() {
@@ -118,20 +199,139 @@ export default {
loading: false,
tableData: [], // 表格数据
total: null, // 总条数
pageSize: 20, // 每页显示条数
pageSize: 10, // 每页显示条数
pageCurrent: 1, // 后台获取页
gongzuozhebianhao: '',
machinenumber: '',
personname: '',
machineNumberValue: '',
machineNumber: [],
loading2: false,
tableData2: [], // 表格数据
total2: null, // 总条数
pageSize2: 20, // 每页显示条数
pageCurrent2: 1 // 后台获取页
pageSize2: 10, // 每页显示条数
pageCurrent2: 1, // 后台获取页
loading3: false,
tableData3: [], // 表格数据
total3: null, // 总条数
pageSize3: 10, // 每页显示条数
pageCurrent3: 1, // 后台获取页
loading4: false,
tableData4: [], // 表格数据
total4: null, // 总条数
pageSize4: 10, // 每页显示条数
pageCurrent4: 1 // 后台获取页
}
},
created() {
this.initProject()
this.searchTable()
this.searchTable4()
},
methods: {
// 导出
exportUninquirySheet3() {
if (this.machineNumberValue === null) {
this.machineNumberValue = ''
}
searchtable55(this.machineNumberValue).then(res1 => {
console.log(res1.data)
if (res1.data.length === 0) {
this.$message.error('请选择机床')
return
}
import('./Export2Excel').then(excel => {
const filterVal1 = ['机床图号', '组号', '理论加工时间段', '实际加工时间段'] // tableData1里的属性名
const data1 = res1.data.map(v => filterVal1.map(j => v[j]))
const dataGroup = []
dataGroup.push(data1)
const headerGroup = [['机床编号', '组号', '理论工时', '实际工时']]
const sheetGroup = ['工时明细表']
excel.export_json_to_excel({
headerGroup: headerGroup,
dataGroup: dataGroup,
sheetGroup: sheetGroup,
filename: res1.data[0]['机床图号'] + '_工时明细表',
autoWidth: true,
bookType: 'xlsx'
})
})
})
},
// 导出
exportUninquirySheet2() {
if (this.machineNumberValue !== '' && this.machineNumberValue !== null) { this.check1 = 1 } else { this.check1 = 0 }
searchtable44(0, this.machineNumberValue).then(res1 => {
if (res1.data.length === 0) {
this.$message.error('请选择机床')
return
}
import('./Export2Excel').then(excel => {
const filterVal1 = ['机床图号', '理论加工时间段', '实际加工时间段'] // tableData1里的属性名
const data1 = res1.data.map(v => filterVal1.map(j => v[j]))
const dataGroup = []
dataGroup.push(data1)
const headerGroup = [['机床编号', '理论工时', '实际工时']]
const sheetGroup = ['工时明细表']
excel.export_json_to_excel({
headerGroup: headerGroup,
dataGroup: dataGroup,
sheetGroup: sheetGroup,
filename: '机床工时明细表',
autoWidth: true,
bookType: 'xlsx'
})
})
})
},
// 导出
exportUninquirySheet1() {
if (this.startTime !== '' && this.startTime !== null && this.endTime !== null && this.endTime !== null) {
this.timeCheck = 1
} else {
this.startTime = ''
this.endTime = ''
this.timeCheck = 0
}
if (this.workerName !== '' && this.workerName !== null) {
this.workerName_ckeck = 1
} else {
this.workerName_ckeck = 0
}
searchtable11(this.workerName_ckeck, this.workerName, this.timeCheck, this.startTime, this.endTime).then(res1 => {
if (res1.data.length === 0) {
this.$message.error('请选择人员')
return
}
import('./Export2Excel').then(excel => {
const filterVal1 = ['姓名', '理论加工时间段', '实际加工时间段'] // tableData1里的属性名
const data1 = res1.data.map(v => filterVal1.map(j => v[j]))
const dataGroup = []
dataGroup.push(data1)
const headerGroup = [['操作者', '理论工时', '实际工时']]
const sheetGroup = ['人员工时明细表']
excel.export_json_to_excel({
headerGroup: headerGroup,
dataGroup: dataGroup,
sheetGroup: sheetGroup,
filename: '工时明细表',
autoWidth: true,
bookType: 'xlsx'
})
})
})
},
initProject() {
initProject().then(response => {
for (let i = 0; i < response.data.length; i++) {
this.machineNumber.push({
label: response.data[i].机床图号,
name: response.data[i].项目名称,
value: response.data[i].机床流水号
})
}
})
},
// 查询表格数据
searchTable() {
this.loading = true
@@ -166,11 +366,11 @@ export default {
this.tableData2 = []
this.pageCurrent2 = 1
this.gongzuozhebianhao = row.人员编号
this.personname = row.姓名
searchtable2(row.人员编号, this.timeCheck, this.startTime, this.endTime, this.pageCurrent2, this.pageSize2).then(response => {
if (response.data.total === 0) {
this.loading2 = false
} else {
console.log(response.data)
this.total2 = response.data.total
this.tableData2 = response.data.rows
}
@@ -192,6 +392,54 @@ export default {
this.loading2 = false
})
},
// 查询表格数据
searchTable4() {
this.loading3 = true
this.tableData3 = []
this.tableData4 = []
this.total3 = 0
if (this.machineNumberValue !== '' && this.machineNumberValue !== null) { this.check1 = 1 } else { this.check1 = 0 }
searchtable4(this.check1, this.machineNumberValue, this.pageCurrent, this.pageSize).then(response => {
if (response.data.total === 0) {
this.loading3 = false
} else {
this.total3 = response.data.total
this.tableData3 = response.data.rows
}
}).then(() => {
this.loading3 = false
})
},
searchTable5(row) {
this.loading4 = true
this.tableData4 = []
this.pageCurrent4 = 1
this.machineNumberValue = parseInt(row.机床流水号)
searchtable5(this.machineNumberValue, this.pageCurrent4, this.pageSize4).then(response => {
if (response.data.total === 0) {
this.loading4 = false
} else {
this.total4 = response.data.total
this.tableData4 = response.data.rows
}
}).then(() => {
this.loading4 = false
})
},
searchTable6(row) {
this.loading4 = true
this.tableData4 = []
searchtable5(this.machineNumberValue, this.pageCurrent4, this.pageSize4).then(response => {
if (response.data.total === 0) {
this.loading4 = false
} else {
this.total4 = response.data.total
this.tableData4 = response.data.rows
}
}).then(() => {
this.loading4 = false
})
},
// 分页
handleSizeChange(val) {
this.pageCurrent = 1
@@ -210,6 +458,25 @@ export default {
handleCurrentChange2(val) {
this.pageCurrent2 = val
this.searchTable3()
},
// 分页
handleSizeChange3(val) {
this.pageCurrent3 = 1
this.pageSize3 = val
this.searchTable4()
},
handleCurrentChange3(val) {
this.pageCurrent3 = val
this.searchTable4()
},
handleSizeChange4(val) {
this.pageCurrent4 = 1
this.pageSize4 = val
this.searchTable6()
},
handleCurrentChange4(val) {
this.pageCurrent4 = val
this.searchTable6()
}
}
}

View File

@@ -476,7 +476,7 @@ export default {
return Number(prev)
}
}, 0)
sums[index] += ' 元(含税)'
sums[index] += ' 元(含税)'
} else {
sums[index] = 'N/A'
}
@@ -484,10 +484,10 @@ export default {
sums[index] = this.taxRate * 100 + '% (税率)'
return
} else if (index === 9) {
sums[index] = (parseInt(sums[7]) * 100 * this.taxRate) / 100 + ' 万元(税额)'
sums[index] = (parseFloat(sums[7]) - (parseFloat(sums[7]) / (1 + parseFloat(sums[8]) / 100)).toFixed(2)).toFixed(2) + ' 万元(税额)'
return
} else if (index === 10) {
sums[index] = parseFloat(sums[7]) - parseFloat(sums[9]) + ' 万元(未税)'
sums[index] = (parseFloat(sums[7]) / (1 + parseFloat(sums[8]) / 100)).toFixed(2) + ' 万元(未税)'
return
}
})

View File

@@ -3,7 +3,7 @@
<el-row>
<el-col :span="24">
<el-tabs v-model="tabName" type="border-card" @tab-click="tabClick">
<el-tab-pane label="标准件和外购件" name="标准件和外购件">
<el-tab-pane label="外购件" name="外购件">
<el-row style="margin-bottom: 5px">
<span>项目名称:</span>
<el-select v-model="projectValue" style="width:200px" placeholder="项目名称" size="small" filterable clearable @change="projectChange">
@@ -457,6 +457,11 @@
<el-input v-model="scope.row.数量" size="mini" style="width:100%"/>
</template>
</el-table-column>
<el-table-column label="单位" align="center" width="60">
<template slot-scope="scope">
{{ scope.row.计量单位 }}
</template>
</el-table-column>
<el-table-column label="询价备注" align="center" min-width="120">
<template slot-scope="scope">
<el-input v-model="scope.row.备注" size="mini" style="width:100%"/>
@@ -503,7 +508,8 @@
<td width="16.6%" colspan="2">图号</td>
<td width="16.6%" colspan="2">名称</td>
<td width="16.6%" colspan="2">规格</td>
<td width="16.6%" colspan="2">数量</td>
<td width="8.3%">数量</td>
<td width="8.3%">单位</td>
<td width="16.6%" colspan="2">单价</td>
<td colspan="3">备注</td>
</tr>
@@ -809,7 +815,7 @@ export default {
value: 2
}
],
tabName: '标准件和外购件',
tabName: '外购件',
baseInfoLoading: false,
dialogVisible5: false,
form3: { // 询价单基础信息表单
@@ -868,7 +874,7 @@ export default {
materialName: '',
materialSpec: '',
materialModel: '',
tableData11: [], // 标准件和外购件列表
tableData11: [], // 外购件列表
total11: 0,
pageCurrent11: 1,
pageSize11: 10,
@@ -996,7 +1002,7 @@ export default {
const data2 = res2.data.map(v => filterVal2.map(j => v[j]))
dataGroup.push(data2)
const headerGroup = [['任务分配时间', '项目名称', '机床图号', '组号', '名称', '图号或型号', '规格', '待询价数量', '备注', '供货商'], ['任务分配时间', '项目名称', '机床图号', '组号', '名称', '图号或型号', '规格', '材料', '待询价数量', '备注', '供货商']]
const sheetGroup = ['标准件和外购件(未询价)', '基本件(未询价)']
const sheetGroup = ['外购件(未询价)', '基本件(未询价)']
excel.export_json_to_excel({
headerGroup: headerGroup,
dataGroup: dataGroup,
@@ -1149,7 +1155,7 @@ export default {
filterHandler(value, row) { // 筛选供货商
return row['供货商'] === value
},
searchTable11() { // 查询标准件和外购件列表
searchTable11() { // 查询外购件列表
let check1, check2, check3, check4, check5, check6
this.materialName ? check1 = 1 : check1 = 0
this.materialSpec ? check2 = 1 : check2 = 0
@@ -1157,7 +1163,7 @@ export default {
this.projectValue ? check4 = 1 : check4 = 0
this.machineValue ? check5 = 1 : check5 = 0
this.groupValue ? check6 = 1 : check6 = 0
searchMaterial(this.pageCurrent11, this.pageSize11, this.materialStatusValue[this.materialStatusValue.length - 1], check1, this.materialName, check2, this.materialSpec, check3, this.materialModel, this.id, check4, this.projectValue, check5, this.machineValue, check6, this.groupValue).then(response => {
searchMaterial(this.pageCurrent11, this.pageSize11, this.materialStatusValue[this.materialStatusValue.length - 1], check1, this.materialName, check2, this.materialSpec, check3, this.materialModel, this.id, check4, this.projectValue, check5, this.machineValue, check6, this.groupValue, 2).then(response => {
this.tableData11 = response.data.rows
this.total11 = response.data.total
const remark = []
@@ -1364,7 +1370,7 @@ export default {
for (let i = 0; i < length; i++) {
tr[i] = document.createElement('tr')
tr[i].setAttribute('class', 'tableData')
tr[i].innerHTML = `<td width="8.3%" height="30px"/><td height="30px" width="16.6%" colspan="2"/><td height="30px" width="16.6%" colspan="2"/><td height="30px" width="16.6%" colspan="2"/><td height="30px" width="16.6%" colspan="2"/><td height="30px" width="16.6%" colspan="2"/><td height="30px" colspan="3"/>`
tr[i].innerHTML = `<td width="8.3%" height="30px"/><td height="30px" width="16.6%" colspan="2"/><td height="30px" width="16.6%" colspan="2"/><td height="30px" width="16.6%" colspan="2"/><td height="30px" width="8.3%"/><td height="30px" width="8.3%"/><td height="30px" width="16.6%" colspan="2"/><td height="30px" colspan="3"/>`
$('#tablehead').after(tr[i])
}
for (let j = 0; j < res.data.length; j++) {
@@ -1373,7 +1379,8 @@ export default {
document.getElementsByClassName('tableData')[j].children[2].innerHTML = res.data[j].物料名称 || res.data[j].零件名称
document.getElementsByClassName('tableData')[j].children[3].innerHTML = res.data[j].物料规格 || res.data[j].规格
document.getElementsByClassName('tableData')[j].children[4].innerHTML = res.data[j].数量
document.getElementsByClassName('tableData')[j].children[6].innerHTML = res.data[j].备注
document.getElementsByClassName('tableData')[j].children[5].innerHTML = res.data[j].计量单位
document.getElementsByClassName('tableData')[j].children[7].innerHTML = res.data[j].备注
}
document.getElementById('inquirySheetNum').innerHTML = this.orderExport
document.getElementById('supplier').innerHTML = ''
@@ -1422,7 +1429,7 @@ export default {
for (let i = 0; i < length; i++) {
tr[i] = document.createElement('tr')
tr[i].setAttribute('class', 'tableData')
tr[i].innerHTML = `<td width="8.3%" height="30px"/><td height="30px" width="16.6%" colspan="2"/><td height="30px" width="16.6%" colspan="2"/><td height="30px" width="16.6%" colspan="2"/><td height="30px" width="16.6%" colspan="2"/><td height="30px" width="16.6%" colspan="2"/><td height="30px" colspan="3"/>`
tr[i].innerHTML = `<td width="8.3%" height="30px"/><td height="30px" width="16.6%" colspan="2"/><td height="30px" width="16.6%" colspan="2"/><td height="30px" width="16.6%" colspan="2"/><td height="30px" width="8.3%"/><td height="30px" width="8.3%"/><td height="30px" width="16.6%" colspan="2"/><td height="30px" colspan="3"/>`
$('#tablehead').after(tr[i])
}
for (let j = 0; j < res.data.length; j++) {
@@ -1431,7 +1438,8 @@ export default {
document.getElementsByClassName('tableData')[j].children[2].innerHTML = res.data[j].物料名称 || res.data[j].零件名称
document.getElementsByClassName('tableData')[j].children[3].innerHTML = res.data[j].物料规格 || res.data[j].规格
document.getElementsByClassName('tableData')[j].children[4].innerHTML = res.data[j].数量
document.getElementsByClassName('tableData')[j].children[6].innerHTML = res.data[j].备注
document.getElementsByClassName('tableData')[j].children[5].innerHTML = res.data[j].计量单位
document.getElementsByClassName('tableData')[j].children[7].innerHTML = res.data[j].备注
}
document.getElementById('inquirySheetNum').innerHTML = this.orderExport
document.getElementById('supplier').innerHTML = ''

View File

@@ -122,6 +122,11 @@
{{ scope.row.数量 }}
</template>
</el-table-column>
<el-table-column label="单位" align="center" width="80">
<template slot-scope="scope">
{{ scope.row.计量单位 }}
</template>
</el-table-column>
<el-table-column v-show="hasTax==='未税'" label="单价(未税)" align="center" width="120">
<template slot-scope="scope">
<el-input v-show="hasTax==='未税'" v-model="scope.row.未税单价" size="mini" style="width:100%"/>
@@ -361,6 +366,7 @@ export default {
名称: response.data[i].组件零件流水号 ? response.data[i].物料名称 : response.data[i].零件名称,
规格: response.data[i].组件零件流水号 ? response.data[i].物料规格 : response.data[i].规格,
数量: response.data[i].数量,
计量单位: response.data[i].计量单位,
未税单价: 0,
未税总额: 0,
含税单价: 0,
@@ -518,7 +524,8 @@ export default {
<td>名称</td>
<td>规格型号</td>
<td>数量</td>
<td >单</td>
<td>单</td>
<td>单价</td>
<td>合计</td>
<td>交货时间</td>
<td>备注</td>
@@ -569,6 +576,7 @@ export default {
名称: v.名称,
规格: v.规格,
数量: Number(v.数量),
计量单位: v.计量单位,
单价: this.hasTax === '含税' ? v.含税单价 : v.未税单价,
合计: (Number(v.数量) * (this.hasTax === '含税' ? Number(v.含税单价) : Number(v.未税单价))).toFixed(2),
交货期: v.交货期 ? v.交货期.split(' ')[0] : '',
@@ -576,7 +584,7 @@ export default {
})
})
let mergeData = []
mergeData = groupBy(merge, ['图号', '名称', '规格', '单价', '合计', '交货期', '备注'], (mergeData, v) => {
mergeData = groupBy(merge, ['图号', '名称', '规格', '计量单位', '单价', '合计', '交货期', '备注'], (mergeData, v) => {
mergeData = mergeData || 0
mergeData += v.数量
return mergeData
@@ -587,7 +595,7 @@ export default {
for (let i = 0; i < mergeData.length; i++) {
tr[i] = document.createElement('tr')
tr[i].setAttribute('class', 'tableData')
tr[i].innerHTML = '<td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>'
tr[i].innerHTML = '<td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>'
const tableHead = $('#tableHead')
tableHead ? tableHead.after(tr[i]) : ''
}
@@ -606,10 +614,11 @@ export default {
document.getElementsByClassName('tableData')[j].children[4].innerHTML = mergeData[j].名称
document.getElementsByClassName('tableData')[j].children[5].innerHTML = mergeData[j].规格
document.getElementsByClassName('tableData')[j].children[6].innerHTML = mergeData[j].数量
document.getElementsByClassName('tableData')[j].children[7].innerHTML = mergeData[j].单价
document.getElementsByClassName('tableData')[j].children[8].innerHTML = (Number(mergeData[j].数量) * Number(mergeData[j].单价)).toFixed(2)
document.getElementsByClassName('tableData')[j].children[9].innerHTML = mergeData[j].交货期
document.getElementsByClassName('tableData')[j].children[10].innerHTML = mergeData[j].备注
document.getElementsByClassName('tableData')[j].children[7].innerHTML = mergeData[j].计量单位
document.getElementsByClassName('tableData')[j].children[8].innerHTML = mergeData[j].单价
document.getElementsByClassName('tableData')[j].children[9].innerHTML = (Number(mergeData[j].数量) * Number(mergeData[j].单价)).toFixed(2)
document.getElementsByClassName('tableData')[j].children[10].innerHTML = mergeData[j].交货期
document.getElementsByClassName('tableData')[j].children[11].innerHTML = mergeData[j].备注
}
}
this.actualTotal = this.actualTotal.toFixed(2)

View File

@@ -371,6 +371,11 @@
<el-input v-model="scope.row.数量" :disabled="disable" size="mini" style="width:70px"/>
</template>
</el-table-column>
<el-table-column label="单位" align="center" min-width="100">
<template slot-scope="scope">
{{ scope.row.计量单位 }}
</template>
</el-table-column>
<el-table-column label="参考价格" align="center" min-width="100">
<template slot-scope="scope">
{{ scope.row.参考价格 }}
@@ -383,7 +388,7 @@
</el-table-column>
<el-table-column label="合计" align="center" min-width="100" prop="合计">
<template slot-scope="scope">
{{ (parseFloat(scope.row.单价||0) * parseInt(scope.row.数量||0)).toFixed(2) }}
{{ (Number(scope.row.单价||0) * Number(scope.row.数量||0)).toFixed(2) }}
</template>
</el-table-column>
<el-table-column label="交货期要求" align="center" min-width="100" prop="交货期要求">
@@ -636,7 +641,8 @@
<td>规格</td>
<td colspan="2">型号</td>
<td>数量</td>
<td colspan="2">单价</td>
<td>单价</td>
<td>单位</td>
<td colspan="2">合计</td>
<td>交货期</td>
<td colspan="2">备注</td>
@@ -1130,7 +1136,7 @@ export default {
if (index === 0) {
sums[index] = '总价'
} else if (index === 7) {
const values = data.map(item => Number(parseFloat(item['单价']) * parseInt(item['数量'])))
const values = data.map(item => Number(Number(item['单价']) * Number(item['数量'])))
if (!values.every(value => isNaN(value))) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr)
@@ -1291,7 +1297,7 @@ export default {
for (let i = 0; i < length; i++) {
tr[i] = document.createElement('tr')
tr[i].setAttribute('class', 'tableData')
tr[i].innerHTML = `<td style="height: 40px"/><td colspan="2" style="height: 40px"/><td style="height: 40px"/><td colspan="2" style="height: 40px"/><td style="height: 40px"/><td colspan="2" style="height: 40px"/><td colspan="2" style="height: 40px"/><td style="height: 40px"/><td colspan="2" style="height: 40px"/>`
tr[i].innerHTML = `<td style="height: 40px"/><td colspan="2" style="height: 40px"/><td style="height: 40px"/><td colspan="2" style="height: 40px"/><td style="height: 40px"/><td style="height: 40px"/><td style="height: 40px"/><td colspan="2" style="height: 40px"/><td style="height: 40px"/><td colspan="2" style="height: 40px"/>`
$('#tablehead').after(tr[i])
}
let total = 0
@@ -1302,9 +1308,10 @@ export default {
document.getElementsByClassName('tableData')[j].children[3].innerHTML = this.tableData3[j].物料型号
document.getElementsByClassName('tableData')[j].children[4].innerHTML = this.tableData3[j].数量
document.getElementsByClassName('tableData')[j].children[5].innerHTML = this.tableData3[j].单价
document.getElementsByClassName('tableData')[j].children[6].innerHTML = (this.tableData3[j].数量 * this.tableData3[j].单价).toFixed(2)
document.getElementsByClassName('tableData')[j].children[7].innerHTML = this.tableData3[j].交货期要求
document.getElementsByClassName('tableData')[j].children[8].innerHTML = this.tableData3[j].备注
document.getElementsByClassName('tableData')[j].children[6].innerHTML = this.tableData3[j].计量单位
document.getElementsByClassName('tableData')[j].children[7].innerHTML = (this.tableData3[j].数量 * this.tableData3[j].单价).toFixed(2)
document.getElementsByClassName('tableData')[j].children[8].innerHTML = this.tableData3[j].交货期要求
document.getElementsByClassName('tableData')[j].children[9].innerHTML = this.tableData3[j].备注
total += Number(this.tableData3[j].数量 * this.tableData3[j].单价)
}
total = total.toFixed(2)
@@ -1360,7 +1367,7 @@ export default {
this.materialName ? check1 = 1 : check1 = 0
this.materialSpec ? check2 = 1 : check2 = 0
this.materialModel ? check3 = 1 : check3 = 0
searchMaterial(this.pageCurrent00, this.pageSize00, this.materialStatusValue[this.materialStatusValue.length - 1], check1, this.materialName, check2, this.materialSpec, check3, this.materialModel, this.id).then(response => {
searchMaterial(this.pageCurrent00, this.pageSize00, this.materialStatusValue[this.materialStatusValue.length - 1], check1, this.materialName, check2, this.materialSpec, check3, this.materialModel, this.id, 1).then(response => {
this.tableData00 = response.data.rows
this.total00 = response.data.total
const remark = []

View File

@@ -24,7 +24,85 @@
</el-card>
<el-tabs v-model="PartType" type="border-card" @tab-click="searchTable()">
<el-tab-pane label="标准件和外购件" name="标准件和外购件">
<el-tab-pane label="标准件" name="标准件">
<el-table :data="tableData0" size="mini" style="max-height: 600px" height="600px" border stripe>
<el-table-column align="center" label="采购情况" width="80px">
<template slot-scope="scope">
<el-tag v-if="!scope.row.人员编号" type="primary" size="small">未分配</el-tag>
<el-tag v-if="parseInt(scope.row.询价状态编号)===1&&scope.row.人员编号!==''" type="warning" size="small">未询价</el-tag>
<el-tag v-if="parseInt(scope.row.询价状态编号)===3&&parseInt(scope.row.采购状态编号)!==3" type="success" size="small">已询价</el-tag>
<el-tag v-if="parseInt(scope.row.询价状态编号)===3&&parseInt(scope.row.采购状态编号)===3" type="info" size="small">已采购</el-tag>
</template>
</el-table-column>
<el-table-column align="center" label="机床图号" width="100px">
<template slot-scope="scope">
{{ scope.row.机床图号 }}
</template>
</el-table-column>
<el-table-column align="center" label="组号" width="80px">
<template slot-scope="scope">
{{ scope.row.组号 }}
</template>
</el-table-column>
<el-table-column align="center" label="名称" width="100px">
<template slot-scope="scope">
{{ scope.row.物料名称 }}
</template>
</el-table-column>
<el-table-column align="center" label="型号" min-width="100px">
<template slot-scope="scope">
{{ scope.row.物料型号 }}
</template>
</el-table-column>
<el-table-column align="center" label="规格" min-width="200px">
<template slot-scope="scope">
{{ scope.row.物料规格 }}
</template>
</el-table-column>
<el-table-column align="center" label="技术下达数量" width="100px">
<template slot-scope="scope">
{{ scope.row.零件数量 || '—' }}
</template>
</el-table-column>
<el-table-column align="center" label="合同采购数量" width="100px">
<template slot-scope="scope">
{{ parseInt(scope.row.询价状态编号)===1&&scope.row.人员编号!=='' ? '—' : scope.row.数量 || scope.row.离线采购数量 || '—' }}
</template>
</el-table-column>
<el-table-column align="center" label="到货数量" width="100px">
<template slot-scope="scope">
{{ parseInt(scope.row.询价状态编号)===1&&scope.row.人员编号!=='' ? '—' : scope.row.已到货数量 || scope.row.离线到货数量 || '—' }}
</template>
</el-table-column>
<el-table-column align="center" label="供应商" min-width="150px">
<template slot-scope="scope">
{{ parseInt(scope.row.询价状态编号)===1&&scope.row.人员编号!=='' ? '—' : scope.row.供应商名称 || scope.row.离线合同供应商名称 || '—' }}
</template>
</el-table-column>
<el-table-column align="center" label="合同编号" min-width="100px">
<template slot-scope="scope">
{{ parseInt(scope.row.询价状态编号)===1&&scope.row.人员编号!=='' ? '—' : scope.row.采购合同编号 || scope.row.离线合同编号 || '—' }}
</template>
</el-table-column>
<el-table-column align="center" label="采购员" width="100px">
<template slot-scope="scope">
{{ scope.row.姓名 || '—' }}
</template>
</el-table-column>
</el-table>
<div class="block">
<el-pagination
:current-page="pageCurrent0"
:page-sizes="[10, 20, 30, 40]"
:page-size="pageSize0"
:total="total0"
style="margin-top:10px;display:inline-block;width:50%"
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange0"
@current-change="handleCurrentChange0"/>
</div>
</el-tab-pane>
<el-tab-pane label="外购件" name="外购件">
<el-table :data="tableData1" size="mini" style="max-height: 600px" height="600px" border stripe>
<el-table-column align="center" label="采购情况" width="80px">
<template slot-scope="scope">
@@ -200,10 +278,14 @@ export default {
machineNumber: [],
groupNumberValue: '',
groupNumber: [],
PartType: '标准件和外购件',
PartType: '标准件',
tableData0: [],
tableData1: [],
tableData2: [],
tableData3: [],
pageCurrent0: 1,
pageSize0: 20,
total0: 0,
pageCurrent1: 1,
pageSize1: 20,
total1: 0,
@@ -247,18 +329,23 @@ export default {
})
},
searchTable() {
if (this.PartType === '标准件和外购件') {
this.pageCurrent1 = 1
this.pageSize1 = 20
this.total1 = 0
if (this.PartType === '标准件') {
this.searchTable0()
} else if (this.PartType === '外购件') {
this.searchTable1()
} else if (this.PartType === '基本件') {
this.pageCurrent2 = 1
this.pageSize2 = 20
this.total2 = 0
this.searchTable2()
}
},
handleSizeChange0(val) {
this.pageSize0 = val
this.pageCurrent0 = 1
this.searchTable0()
},
handleCurrentChange0(val) {
this.pageCurrent0 = val
this.searchTable0()
},
handleSizeChange1(val) {
this.pageSize1 = val
this.pageCurrent1 = 1
@@ -277,11 +364,20 @@ export default {
this.pageCurrent2 = val
this.searchTable2()
},
searchTable1() { // 查询标准件和外购件
searchTable0() { // 查询标准件
let check1, check2
this.machineNumberValue ? check1 = 1 : check1 = 0
this.groupNumberValue ? check2 = 1 : check2 = 0
searchTable1(check1, this.machineNumberValue, check2, this.groupNumberValue, this.pageCurrent1, this.pageSize1).then(response => {
searchTable1(check1, this.machineNumberValue, check2, this.groupNumberValue, this.pageCurrent0, this.pageSize0, 1).then(response => {
this.tableData0 = response.data.rows
this.total0 = response.data.total
})
},
searchTable1() { // 查询外购件
let check1, check2
this.machineNumberValue ? check1 = 1 : check1 = 0
this.groupNumberValue ? check2 = 1 : check2 = 0
searchTable1(check1, this.machineNumberValue, check2, this.groupNumberValue, this.pageCurrent1, this.pageSize1, 2).then(response => {
this.tableData1 = response.data.rows
this.total1 = response.data.total
})

View File

@@ -1,7 +1,221 @@
<template>
<div class="app-container">
<el-tabs v-model="tabName" type="border-card" @tab-click="searchTable1();searchTable2()">
<el-tab-pane label="标准件和外购件" name="标准件和外购件">
<el-tabs v-model="tabName" type="border-card" @tab-click="searchTable0();searchTable1();searchTable2();">
<el-tab-pane label="标准件" name="标准件">
<el-row style="margin-bottom: 5px">
<span style="margin-left: 0">项目名称:</span>
<el-select v-model="projectValue" placeholder="项目名称" size="small" filterable clearable @change="projectChange">
<el-option
v-for="item in project"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
<span>机床图号:</span>
<el-select v-model="machineValue" placeholder="机床图号" size="small" filterable clearable @change="machineChange">
<el-option
v-for="item in machine"
:key="item.value"
:label="item.label"
:value="item.value">
<b style="float: left">{{ item.label }}</b>
<b style="float: right; color: #8492a6; font-size: 13px">{{ item.name }}</b>
</el-option>
</el-select>
<el-button
type="success"
size="small"
icon="el-icon-search"
style="margin-left: 10px"
@click="pageCurrent0=1;pageSize0=20;total0=0;searchTable0()">查询</el-button>
<div style="float:right;">
<span style="margin-left: 0">采购员:</span>
<el-select v-model="personValue" placeholder="采购员" size="small" style="width: 100px">
<el-option
v-for="item in person"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
</div>
</el-row>
<el-row style="margin-bottom: 5px">
<span style="margin-left: 0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</span>
<el-select v-model="groupValue" placeholder="组号" size="small" filterable clearable>
<el-option
v-for="item in group"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
<span style="margin-right: -10px">物料状态:</span>
<el-cascader :options="materialStatus" v-model="materialStatusValue" size="small" change-on-select/>
<div style="float:right;padding-top:10px;">
<el-button
type="primary"
size="small"
icon="el-icon-menu"
style="margin-left: 10px"
@click="allocateTask1">分配</el-button>
<el-button
type="danger"
size="small"
icon="el-icon-back"
style="margin-left: 10px"
@click="executeReturn1">退回</el-button>
</div>
</el-row>
<el-row style="margin-bottom: 15px">
<span style="margin-left: 0">物料类别:</span>
<el-select
v-model="MaterialCategoryValue"
placeholder="请选择"
size="small"
clearable
@change="searchMaterialVariety">
<el-option
v-for="item in MaterialCategory"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
<span>物料品种:</span>
<el-select
v-model="MaterialVarietyValue"
placeholder="请选择"
size="small"
clearable>
<el-option
v-for="item in MaterialVariety"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
</el-row>
<el-row style="margin-bottom: 15px">
<span style="margin-left: 0">物料名称:</span>
<el-input v-model="materialName" placeholder="物料名称" size="small" clearable/>
<span>物料规格:</span>
<el-input v-model="materialSpec" placeholder="物料规格" size="small" clearable/>
<span>物料型号:</span>
<el-input v-model="materialModel" placeholder="物料型号" size="small" clearable/>
</el-row>
<el-row style="margin-bottom: 10px">
<el-table v-loading="" :data="tableData0" size="mini" style="max-height: 600px" height="500px" border stripe @selection-change="handleSelectionChange1">
<el-table-column :selectable="selectable" align="center" type="selection"/>
<el-table-column align="center" label="采购情况" min-width="80px">
<template slot-scope="scope">
<el-tag v-if="scope.row.人员编号===''" type="primary" size="small">未分配</el-tag>
<el-tag v-if="parseInt(scope.row.询价状态编号)===1&&scope.row.人员编号!==''" type="warning" size="small">未询价</el-tag>
<el-tag v-if="parseInt(scope.row.询价状态编号)===3&&parseInt(scope.row.采购状态编号)!==3" type="success" size="small">已询价</el-tag>
<el-tag v-if="parseInt(scope.row.采购状态编号)===3" type="info" size="small">已采购</el-tag>
</template>
</el-table-column>
<el-table-column align="center" label="项目名称" min-width="100px">
<template slot-scope="scope">
{{ scope.row.项目名称 }}
</template>
</el-table-column>
<el-table-column align="center" label="机床图号" min-width="100px">
<template slot-scope="scope">
{{ scope.row.机床图号 }}
</template>
</el-table-column>
<el-table-column align="center" label="组号" min-width="80px">
<template slot-scope="scope">
{{ scope.row.组号 }}
</template>
</el-table-column>
<el-table-column align="center" label="物料类别" min-width="100px">
<template slot-scope="scope">
{{ scope.row.物料类别 }}
</template>
</el-table-column>
<el-table-column align="center" label="物料品种" min-width="100px">
<template slot-scope="scope">
{{ scope.row.物料品种 }}
</template>
</el-table-column>
<el-table-column align="center" label="图号或型号" min-width="100px">
<template slot-scope="scope">
{{ scope.row.物料型号 }}
</template>
</el-table-column>
<el-table-column align="center" label="名称" min-width="100px">
<template slot-scope="scope">
{{ scope.row.物料名称 }}
</template>
</el-table-column>
<el-table-column align="center" label="规格" min-width="100px">
<template slot-scope="scope">
{{ scope.row.物料规格 }}
</template>
</el-table-column>
<el-table-column align="center" label="数量" min-width="80px">
<template slot-scope="scope">
{{ scope.row.零件数量 }}
</template>
</el-table-column>
<el-table-column align="center" label="备注" min-width="100px">
<template slot-scope="scope">
{{ scope.row.备注 }}
</template>
</el-table-column>
<el-table-column align="center" label="供货商" min-width="100px">
<template slot-scope="scope">
{{ scope.row.供货商 }}
</template>
</el-table-column>
<el-table-column :filters="source" :filter-method="filterSource" align="center" label="数据来源" min-width="90px" prop="零件类型">
<template slot-scope="scope">
{{ Number(scope.row.零件类型) === 1 ? 'BZ' : 'WG' }}
</template>
</el-table-column>
<el-table-column align="center" label="计划到货时间" min-width="100px">
<template slot-scope="scope">
{{ scope.row.物料计划到货时间.split(' ')[0] }}
</template>
</el-table-column>
<el-table-column align="center" label="生产分配时间" min-width="100px">
<template slot-scope="scope">
{{ scope.row.操作日期.split(' ')[0] }}
</template>
</el-table-column>
<el-table-column :filters="person" :filter-method="filterHandler" align="center" label="采购员" min-width="80px" prop="姓名">
<template slot-scope="scope">
{{ scope.row.姓名 ? scope.row.姓名 : '—' }}
</template>
</el-table-column>
<el-table-column align="center" label="采购分配时间" min-width="100px">
<template slot-scope="scope">
{{ scope.row.任务分配时间 ? scope.row.任务分配时间.split(' ')[0] : '—' }}
</template>
</el-table-column>
<el-table-column align="center" label="撤回分配" min-width="100px" fixed="right">
<template slot-scope="scope">
<el-button
:disabled="!(parseInt(scope.row.询价状态编号)===1&&scope.row.人员编号!=='')"
type="primary"
size="mini"
icon="el-icon-back"
@click="retract(scope.row)">撤回</el-button>
</template>
</el-table-column>
</el-table>
</el-row>
<div class="block">
<el-pagination
:current-page="pageCurrent0"
:page-sizes="[10, 20, 30, 40]"
:page-size="pageSize0"
:total="total0"
style="display:inline-block;width:50%"
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange0"
@current-change="handleCurrentChange0"/>
</div>
</el-tab-pane>
<el-tab-pane label="外购件" name="外购件">
<el-row style="margin-bottom: 5px">
<span style="margin-left: 0">项目名称:</span>
<el-select v-model="projectValue" placeholder="项目名称" size="small" filterable clearable @change="projectChange">
@@ -419,7 +633,7 @@ export default {
value: 2
}
],
tabName: '标准件和外购件',
tabName: '标准件',
partNum: '',
partName: '',
partSpec: '',
@@ -472,12 +686,16 @@ export default {
check2: 0,
check3: 0,
check4: 0,
tableData0: [],
tableData1: [],
tableData2: [],
standardAndPurchase: [],
basic: [],
groupAndPart: [],
groupAndPartBasic: [],
pageCurrent0: 1,
pageSize0: 20,
total0: 0,
pageCurrent1: 1,
pageSize1: 20,
total1: 0,
@@ -493,7 +711,7 @@ export default {
])
},
created() {
this.searchTable1() // 查表1
this.searchTable0() // 查表1
this.fetchData() // 初始化数据
},
methods: {
@@ -520,6 +738,7 @@ export default {
retract1(row.标准件和外购件流水号).then(res => {
if (Number(res.data[0].result) === 1) {
this.$message.success('撤回成功')
this.searchTable0()
this.searchTable1()
} else {
this.$message.error('撤回失败')
@@ -585,7 +804,7 @@ export default {
this.MaterialVarietyValue = ''
this.getSelect(initMaterialVariety, ['物料品种', '物料品种流水号'], 'MaterialVariety', this.MaterialCategoryValue)
},
searchTable1() { // 查询标准件和外购件
searchTable0() { // 查询标准件
this.MaterialCategoryValue ? this.check1 = 1 : this.check1 = 0
this.MaterialVarietyValue ? this.check2 = 1 : this.check2 = 0
this.projectValue ? this.check3 = 1 : this.check3 = 0
@@ -595,8 +814,22 @@ export default {
this.materialName ? this.check4 = 1 : this.check4 = 0
this.materialSpec ? check2 = 1 : check2 = 0
this.materialModel ? check3 = 1 : check3 = 0
searchTable1(this.pageCurrent1, this.pageSize1, this.check1, this.MaterialCategoryValue, this.check2, this.MaterialVarietyValue, this.check3, this.projectValue, check0, this.machineValue, check1, this.groupValue, this.check4, this.materialName, this.materialStatusValue[this.materialStatusValue.length - 1], check2, this.materialSpec, check3, this.materialModel).then(response => {
console.log(response.data.rows)
searchTable1(this.pageCurrent0, this.pageSize0, this.check1, this.MaterialCategoryValue, this.check2, this.MaterialVarietyValue, this.check3, this.projectValue, check0, this.machineValue, check1, this.groupValue, this.check4, this.materialName, this.materialStatusValue[this.materialStatusValue.length - 1], check2, this.materialSpec, check3, this.materialModel, 1).then(response => {
this.tableData0 = response.data.rows
this.total0 = response.data.total
})
},
searchTable1() { // 查询外购件
this.MaterialCategoryValue ? this.check1 = 1 : this.check1 = 0
this.MaterialVarietyValue ? this.check2 = 1 : this.check2 = 0
this.projectValue ? this.check3 = 1 : this.check3 = 0
let check0, check1, check2, check3
this.machineValue ? check0 = 1 : check0 = 0
this.groupValue ? check1 = 1 : check1 = 0
this.materialName ? this.check4 = 1 : this.check4 = 0
this.materialSpec ? check2 = 1 : check2 = 0
this.materialModel ? check3 = 1 : check3 = 0
searchTable1(this.pageCurrent1, this.pageSize1, this.check1, this.MaterialCategoryValue, this.check2, this.MaterialVarietyValue, this.check3, this.projectValue, check0, this.machineValue, check1, this.groupValue, this.check4, this.materialName, this.materialStatusValue[this.materialStatusValue.length - 1], check2, this.materialSpec, check3, this.materialModel, 2).then(response => {
this.tableData1 = response.data.rows
this.total1 = response.data.total
})
@@ -648,6 +881,7 @@ export default {
allocateTask1(this.standardAndPurchase, this.personValue).then(response => {
if (response.data[0].result === '1') {
this.$message.success('操作成功')
this.searchTable0()
this.searchTable1()
} else { this.$message.error('操作失败') }
})
@@ -687,6 +921,15 @@ export default {
filterHandler(value, row) {
return parseInt(row['人员编号']) === parseInt(value)
},
handleSizeChange0(val) {
this.pageSize0 = val
this.pageCurrent0 = 1
this.searchTable0()
},
handleCurrentChange0(val) {
this.pageCurrent0 = val
this.searchTable0()
},
handleSizeChange1(val) {
this.pageSize1 = val
this.pageCurrent1 = 1
@@ -717,6 +960,7 @@ export default {
executeReturn1(this.standardAndPurchase, this.groupAndPart).then(response => {
if (response.data[0].result === '1') {
this.$message.success('操作成功')
this.searchTable0()
this.searchTable1()
} else { this.$message.error('操作失败') }
})

View File

@@ -20,6 +20,7 @@
:label="item.label"
:value="item.value"/>
</el-select>
<el-button type="primary" size="small" @click="opendialogVisibleMachine()">上传总图</el-button>
</div>
<upload-excel-component @on-selected-file="selected"/>
</div>
@@ -44,6 +45,50 @@
<!--<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>-->
<!--<div slot="tip" class="el-upload__tip">只能上传jpg/png文件且不超过500kb</div>-->
<!--</el-upload>-->
<el-dialog
:visible.sync="dialogVisibleMachine"
width="30%">
<el-card>
<el-select v-model="machineDrawValue" clearable filterable size="small" placeholder="机床名称" @change="changeMachine">
<el-option
v-for="item in machineDraw"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
<div style="float: right;">
<el-upload
:disabled="disabledMachine"
:action="action"
:on-success="uploadSuccess"
:on-error="uploadFailure"
:show-file-list="showFileList"
:file-list="fileList"
class="upload-demo"
multiple>
<el-button :disabled="disabledMachine" size="small" type="primary">点击上传</el-button>
</el-upload>
</div>
</el-card>
<el-card>
<div v-for="(file, key) in hadFile" :key="key">
<div class="wrapper">
<div class="content">
<div class="action">
<a class="delete" @click="deleteFileData(file.id)">删除</a>
</div>
<div v-if="file.suffix==='pdf'" class="icon"><svg-icon icon-class="pdf" /></div>
<div v-else-if="file.suffix==='docx'||file.suffix === 'doc'" class="icon"><svg-icon icon-class="doc" /></div>
<div v-else-if="file.suffix==='xlsx' || file.suffix === 'xls'" class="icon"><svg-icon icon-class="excel" /></div>
<div v-else-if="file.suffix==='pptx' || file.suffix === 'ppt'" class="icon"><svg-icon icon-class="ppt" /></div>
<div v-else-if="file.suffix==='jpg' || file.suffix === 'jpeg'|| file.suffix === 'png'" class="icon"><svg-icon icon-class="pic" /></div>
<div v-else class="icon"><svg-icon icon-class="file" /></div>
<a :href="file.url"><div class="info">{{ file.name }}</div></a>
</div>
</div>
</div>
</el-card>
</el-dialog>
</div>
</template>
@@ -51,13 +96,22 @@
import UploadExcelComponent from './UploadExcel/index.vue'
import specificationData from './specificationData'
import { sleep } from '../../../utils/tool'
import { initProject, isExit, isExit1, importBasics, importPurcharse, searchMachine, searchGroupNum } from '../../../api/TechnologyCenter/ImportParts'
import { initProject, isExit, isExit1, importBasics, importPurcharse, searchMachine, searchGroupNum, machineSelect, getFileData, deleteFileData } from '../../../api/TechnologyCenter/ImportParts'
import { uploadFileMachine, downloadFileMachine } from '@/utils/request'
export default {
name: 'UploadExcel',
components: { UploadExcelComponent, specificationData },
data() {
return {
fileList: [],
hadFile: [],
showFileList: true,
projectId: '',
action: '',
disabledMachine: true,
machineDrawValue: '',
machineDraw: [],
dialogVisibleMachine: false,
project: [],
projectValue: '',
worksheet: [],
@@ -108,6 +162,57 @@ export default {
this.fetchData()
},
methods: {
opendialogVisibleMachine() {
this.machineDraw = []
this.machineDrawValue = ''
this.dialogVisibleMachine = true
this.machineDrawValue === '' ? this.disabledMachine = true : this.disabledMachine = false
this.getSelect(machineSelect, ['机床图号', '机床流水号'], 'machineDraw', this.projectValue)
},
changeMachine() {
this.machineDrawValue === '' ? this.disabledMachine = true : this.disabledMachine = false
this.action = `${uploadFileMachine}?&MachineNum=${this.machineDrawValue}`
this.getFileData(this.machineDrawValue)
console.log(this.action)
},
uploadSuccess(res, file, fileList) {
if (res[0].result === '1') {
const index = fileList.indexOf(file)
fileList.splice(index, 1)
} else {
this.$message.error(`${file.name}文件上传失败,请检查上传文件是否正确!`)
}
if (fileList.length === 0) {
this.$message.success('文件上传成功')
this.getFileData(this.machineDrawValue)
}
},
uploadFailure(a, file, fileList) {
fileList.map(file => {
this.$message.error(`${file.name}文件上传失败,请检查上传文件是否正确!`)
})
},
// 在什么情况下需要查询上传的附件调用this.getFileData()即可根据
getFileData(machineDrawValue) {
console.log(machineDrawValue, 88)
this.hadFile = []
getFileData(machineDrawValue).then(res => {
console.log(res)
if (res.data.length > 0) {
res.data.map(item => {
this.hadFile.push({
url: `${downloadFileMachine}?id=${item.文件标识}.${item.文件后缀}&name=${item.文件名称}.${item.文件后缀}`,
name: `${item.文件名称}.${item.文件后缀}`,
suffix: item.文件后缀,
id: item.文件标识
})
})
}
})
},
deleteFileData(id) {
this.deleteRow(deleteFileData, id, function() { this.getFileData(this.machineDrawValue) })
},
async test() {
await sleep(10000)
console.log(1)
@@ -339,8 +444,52 @@ export default {
}
</script>
<style lang="scss" scoped>
/*.wrapper{*/
/*width: 100%;*/
/*margin: 0 auto;*/
/*}*/
.wrapper{
width: 100%;
margin: 0 auto;
width: 225px;
height: 50px;
overflow: hidden;
border: 1px solid #b8c7d9;
float: left;
margin: 10px;
}
</style>
.content{
position: relative;
padding: 8px 8px 0 8px;
}
.action{
position: absolute;
top: 4px;
right: 8px;
}
.delete{
padding: 0 5px;
border-radius: 3px;
color: #0f84b0;
font-size: 12px;
}
.delete:hover{
background: -webkit-linear-gradient(top,#0ba9e3,#0099d3);
color: #fff;
}
a{
text-decoration: none;
}
.icon{
width: 30px;
height: 30px;
display: inline-block;
margin-right: 7px;
margin-top: 2px;
font-size: 26px;
}
.info{
position: absolute;
left: 44px;
line-height: 30px;
display: inline-block;
color: #999;
}</style>

View File

@@ -1,7 +1,7 @@
<template>
<div class="app-container">
<el-card>
<el-col :span="9">
<el-col v-show="false" :span="9">
<span>原材料名称:</span>
<el-input v-model="RawMaterialName" placeholder="原材料名称" size="mini" clearable style="width: 120px"/>
<el-button type="success" icon="el-icon-search" size="mini" style="margin-left: 10px" @click="pageCurrent=1;searchRawMaterial()">查询</el-button>
@@ -25,11 +25,11 @@
@current-change="handleCurrentChange1"/>
</div>
</el-col>
<el-col :span="14" style="margin-left: 20px">
<el-col :span="22" style="margin-left: 20px">
<span>零件图号:</span>
<el-input v-model="partDrawingNumber" placeholder="零件图号" size="mini" clearable style="width: 120px"/>
<el-button type="success" size="mini" icon="el-icon-search" style="margin-left: 10px" @click="pageCurrent1=1;pageSize1=10;total1=0;searchTable1()">查询</el-button>
<el-button type="primary" size="small" icon="el-icon-download" style="margin-left: 10px" @click="addMateriel">选入物料</el-button>
<el-button type="primary" size="mini" icon="el-icon-download" style="margin-left: 10px" @click="addMateriel">选入物料</el-button>
<el-table v-loading="loading1" :data="tableData1" border style="width: 100%;height: 460px;margin-top: 15px;" height="330" size="mini" @selection-change="handleSelectionChange">
<el-table-column type="selection" align="center" width="55"/>
<el-table-column label="零件图号" min-width="100" align="center">
@@ -42,12 +42,12 @@
{{ scope.row.零件名称 }}
</template>
</el-table-column>
<el-table-column label="数量" width="80" align="center">
<el-table-column label="数量" width="140" align="center">
<template slot-scope="scope">
{{ scope.row.批次数量 }}
</template>
</el-table-column>
<el-table-column label="材料" width="80" align="center">
<el-table-column label="材料" width="140" align="center">
<template slot-scope="scope">
{{ scope.row.材料 }}
</template>
@@ -134,44 +134,49 @@
@current-change="handleCurrentChange2"/>
</div>
<el-table v-loading="" :data="tableData3" border style="max-height: 300px;" height="300px" size="mini">
<el-table-column label="物料编码" align="center" min-width="150">
<el-table-column label="物料编码" align="center" width="200">
<template slot-scope="scope">
{{ scope.row.物料零件编码 }}
</template>
</el-table-column>
<el-table-column label="原材料名称" align="center" min-width="150">
<template slot-scope="scope">
{{ scope.row.原材料名称 }}
</template>
</el-table-column>
<el-table-column label="零件名称" align="center" min-width="150">
<!--<el-table-column label="原材料名称" align="center" min-width="150">-->
<!--<template slot-scope="scope">-->
<!--{{ scope.row.原材料名称 }}-->
<!--</template>-->
<!--</el-table-column>-->
<el-table-column label="零件名称" align="center" width="180">
<template slot-scope="scope">
{{ scope.row.零件名称 }}
</template>
</el-table-column>
<el-table-column label="材料" align="center" min-width="100">
<el-table-column label="材料" align="center" width="100">
<template slot-scope="scope">
{{ scope.row.材料 }}
</template>
</el-table-column>
<el-table-column label="数量" align="center" min-width="100">
<el-table-column label="数量" align="center" width="100">
<template slot-scope="scope">
{{ scope.row.批次数量 }}
</template>
</el-table-column>
<el-table-column label="求购重量" align="center" min-width="100">
<el-table-column label="求购重量" align="center" width="150">
<template slot-scope="scope">
{{ scope.row.重量 }}
<el-input v-model="scope.row.重量1" size="mini" style="width:120px" @change="saveWeight(scope.$index, scope.row)"/>
</template>
</el-table-column>
<el-table-column label="备注" align="center" min-width="100" prop="备注">
<el-table-column label="单价" align="center" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.备注1" :disabled="disable" size="mini" style="width:150px"/>
<el-input v-model="scope.row.单价" size="mini" style="width:120px" @change="saveMoney(scope.$index, scope.row)"/>
</template>
</el-table-column>
<el-table-column label="操作" align="center" min-width="100">
<el-table-column label="备注" align="center" prop="备注">
<template slot-scope="scope">
<el-button :disabled="disable" type="danger" size="mini" icon="el-icon-delete" @click="deleteMateriel(scope.row)">移出</el-button>
<el-input v-model="scope.row.备注1" :disabled="disable" size="mini" style="width:150px" @change="saveRemarks(scope.$index, scope.row)"/>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="150">
<template slot-scope="scope">
<el-button type="danger" size="mini" icon="el-icon-delete" @click="deleteMateriel(scope.row)">移出</el-button>
</template>
</el-table-column>
</el-table>
@@ -389,7 +394,7 @@
<script>
import { initPartDrawing, searchPurchasedMaterials, searchPurchaseOrder, searchSupplier, addPurchaseOrder, editPurchaseOrder, deletePurchaseOrder, searchMateriel,
addMateriel, deleteMateriel, saveMateriel, searchRawMaterial, addMateriel2 } from '@/api/WorkshopProcurement/CreatingPurchasingMaterials'
addMateriel, deleteMateriel, saveMateriel, searchRawMaterial, addMateriel2, saveWeight } from '@/api/WorkshopProcurement/CreatingPurchasingMaterials'
import QRCode from 'qrcode'
import $ from 'jquery'
import { mapGetters } from 'vuex'
@@ -523,6 +528,27 @@ export default {
this.RawMaterialGroup.push(val[i].原材料流水号)
}
},
saveWeight(index, row) {
var reg = /^[0-9]*$/
if (!reg.test(row.重量1)) {
this.$message.error('请输入正确的重量')
row.重量1 = ''
} else {
saveWeight(row.采购计划明细流水号, row.重量1, row.备注1, row.单价)
}
},
saveMoney(index, row) {
var reg = /^[0-9]*$/
if (!reg.test(row.单价)) {
this.$message.error('请输入正确的单价')
row.单价 = ''
} else {
saveWeight(row.采购计划明细流水号, row.重量1, row.备注1, row.单价)
}
},
saveRemarks(index, row) {
saveWeight(row.采购计划明细流水号, row.重量1, row.备注1, row.单价)
},
// ///////////////////////////////////////////////////////////////////////////////////////0529新加↑
useqrcode(contractNum) {
const opts = {
@@ -724,6 +750,7 @@ export default {
this.计划完成日期 = row.计划完成日期.split(' ')[0]
this.下单日期 = row.下单日期.split(' ')[0]
searchMateriel(this.purchasingOrderNumber).then(response => {
console.log(response.data)
this.tableData3 = response.data
})
},

View File

@@ -94,6 +94,11 @@
{{ scope.row.零件名称 }}
</template>
</el-table-column>
<el-table-column label="物料编码" align="center" min-width="150">
<template slot-scope="scope">
{{ scope.row.物料零件编码 }}
</template>
</el-table-column>
<el-table-column label="材料" align="center" min-width="100">
<template slot-scope="scope">
{{ scope.row.材料 }}
@@ -109,11 +114,6 @@
{{ scope.row.批次数量 }}
</template>
</el-table-column>
<el-table-column label="请购重量" align="center" min-width="100">
<template slot-scope="scope">
{{ scope.row.重量 }}
</template>
</el-table-column>
<el-table-column label="备注" align="center" min-width="100">
<template slot-scope="scope">
{{ scope.row.备注1 }}
@@ -197,6 +197,7 @@ export default {
},
created() {
this.fetchData()
this.searchTable()
},
methods: {
fetchData() {

View File

@@ -13,8 +13,8 @@
主页
</el-dropdown-item>
</router-link>
<el-dropdown-item divided>
<span style="display:block;" @click="logout">退出</span>
<el-dropdown-item divided @click.native="logout">
<span style="display:block;">退出</span>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>

View File

@@ -7,6 +7,7 @@
</router-link>
</scroll-pane>
<ul v-show="visible" :style="{left:left+'px',top:top+'px'}" class="contextmenu">
<li @click="refreshSelectedTag(selectedTag)">重新加载</li>
<li @click="closeSelectedTag(selectedTag)">关闭当前</li>
<li @click="closeOthersTags">关闭其他</li>
<li @click="closeAllTags">关闭全部</li>
@@ -20,6 +21,7 @@ import Cookies from 'js-cookie'
export default {
components: { ScrollPane },
inject: ['reload'],
data() {
return {
visible: false,
@@ -78,6 +80,11 @@ export default {
}
})
},
refreshSelectedTag() {
this.$nextTick(() => {
this.reload() // 2019.6.2 cjn
})
},
closeSelectedTag(view) {
this.$store.dispatch('delVisitedViews', view).then((views) => {
if (this.isActive(view)) {