projects/mes-lb #114

Merged
g7hoo merged 4 commits from projects/mes-lb into projects/mes-test 2023-11-27 08:43:15 +08:00
48 changed files with 430 additions and 208 deletions
Showing only changes of commit d5507ec4c0 - Show all commits

View File

@ -1,7 +1,7 @@
/*
* @Author: Do not edit
* @Date: 2023-11-08 15:56:52
* @LastEditTime: 2023-11-21 10:50:55
* @LastEditTime: 2023-11-23 19:10:07
* @LastEditors: DY
* @Description:
*/
@ -32,3 +32,13 @@ export function exportMaintainMonitorExcel(query) {
responseType: 'blob'
})
}
// 导出设备保养记录
export function exportMaintainLogExcel(query) {
return request({
url: '/base/equipment-maintain-log/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}

View File

@ -1,7 +1,7 @@
/*
* @Author: Do not edit
* @Date: 2023-11-10 16:09:33
* @LastEditTime: 2023-11-16 18:57:08
* @LastEditTime: 2023-11-23 20:29:28
* @LastEditors: DY
* @Description:
*/
@ -31,3 +31,13 @@ export function deleteRepair(id) {
method: 'delete'
})
}
// 导出设备维修
export function exportRepairLogExcel(query) {
return request({
url: '/base/equipment-repair-log/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}

View File

@ -163,7 +163,7 @@ input, textarea{
}
::-webkit-scrollbar-thumb {
background-color: rgba(144,147,153,.5);
background-color: #EDEDED;
background-clip: padding-box;
min-height: 28px;
-webkit-border-radius: 2em;
@ -174,7 +174,7 @@ input, textarea{
}
::-webkit-scrollbar-thumb:hover {
background-color: rgba(144,147,153,.3);
background-color: #D9D9D9;
}
// 抽屉head区域---start

View File

@ -288,10 +288,10 @@ export default {
[
{
input: true,
label: '产品加工时间(s)',
label: '单件产品加工时间(s)',
prop: 'processingTime',
rules: [
{ required: true, message: '产品加工时间不能为空', trigger: 'blur' },
{ required: true, message: '单件产品加工时间不能为空', trigger: 'blur' },
{
type: 'number',
message: '请输入正确的数字值',
@ -319,9 +319,16 @@ export default {
prop: 'description',
},
],
[
{
upload: true,
label: '上传资料',
prop: 'files',
},
],
[
{ input: true, label: '备注', prop: 'remark' }
]
],
// [
// {
// assetUpload: true,

View File

@ -189,6 +189,10 @@ export default {
],
label: '产线统计类型',
prop: 'lineDataType',
bind: {
clearable: true, filterable: true
},
rules: [{ required: true, message: '产线统计类型不能为空', trigger: 'change' }],
},
{
select: true,
@ -199,6 +203,10 @@ export default {
],
label: '工段统计类型',
prop: 'sectionDataType',
bind: {
clearable: true, filterable: true
},
rules: [{ required: true, message: '工段统计类型不能为空', trigger: 'change' }],
},
],
],

View File

@ -144,8 +144,8 @@ export default {
getDataList() {
this.dataListLoading = true;
this.urlOptions.getDataListURL(this.listQuery).then(response => {
this.tableData = response.data.list;
// this.getStatus(response.data.list)
// this.tableData = response.data.list;
this.getStatus(response.data.list)
this.listQuery.total = response.data.total;
this.dataListLoading = false;
});

View File

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-11-18 14:16:25
* @LastEditors: DY
* @LastEditTime: 2023-11-20 16:51:24
* @LastEditTime: 2023-11-24 18:20:26
* @Description:
-->
<template>
@ -29,9 +29,8 @@
<div class="action_btn">
<template>
<span style="display: inline-block;" @click="addNew()">
<svg-icon style="width: 14px; height: 14px" class="item-icon" icon-class="table_add" />
<span class="add">添加</span>
<span style="display: inline-block;">
<el-button type="text" @click="addNew()" icon="el-icon-plus">添加</el-button>
</span>
</template>
</div>
@ -298,7 +297,7 @@ export default {
}
.action_btn {
float: right;
margin: 5px 15px;
margin: -40px 15px;
font-size: 14px;
}
.add {

View File

@ -311,11 +311,11 @@ export default {
if (val) {
this.productList.map(item => {
if (val === item.id) {
this.dataForm.productSpec = item.specifications
this.dataForm.specifications = item.specifications
}
})
} else {
this.dataForm.productSpec = ''
this.dataForm.specifications = ''
}
}
}

View File

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-11-18 14:16:25
* @LastEditors: DY
* @LastEditTime: 2023-11-22 09:47:53
* @LastEditTime: 2023-11-23 18:45:15
* @Description:
-->
<template>
@ -49,7 +49,9 @@
</el-row>
<el-row :gutter="20">
<el-col :span="8">负责人:{{ dataForm.workers }}</el-col>
<el-col :span="8">关联产线:{{ dataForm.productLineNames }}</el-col>
<el-col :span="8">关联产线:
<span v-for="(item, index) in dataForm.productLineNames" :key="index" style="margin-right: 10px">{{ item }}</span>
</el-col>
<el-col :span="8">物料计算方式:{{ dataForm.materialMethod === 1 ? '产品基础' : dataForm.materialMethod === 2 ? '工艺扩展' : '' }}</el-col>
</el-row>
<el-row :gutter="20">

View File

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-11-18 14:16:25
* @LastEditors: DY
* @LastEditTime: 2023-11-22 10:26:58
* @LastEditTime: 2023-11-24 18:13:02
* @Description:
-->
<template>
@ -196,7 +196,7 @@ export default {
workCost: undefined,
remark: undefined,
},
majorIdList: undefined,
majorIdList: [],
departmentlList: [],
menuOptions: [],
bindIds: [],
@ -267,7 +267,7 @@ export default {
workCost: undefined,
remark: undefined
}
this.majorIdList = undefined
this.majorIdList = []
},
//
dataFormSubmit() {
@ -288,24 +288,28 @@ export default {
this.visible = false;
this.$emit("refreshDataList");
});
if (this.majorIdList.length > 0) {
this.majorIdList.forEach(majorId => {
createWoBindMa({
workerId: this.dataForm.id,
majorId: majorId
}).then(res => {})
});
}
return;
}
//
this.urlOptions.createURL(this.dataForm).then(response => {
// response.data = id
this.workerId = response.data
if (this.majorIdList.length > 0) {
this.majorIdList.forEach(majorId => {
createWoBindMa({
workerId: this.workerId,
majorId: majorId
}).then(res => {})
});
}
this.$modal.msgSuccess("新增成功");
this.visible = false;
this.$emit("refreshDataList");
@ -324,6 +328,7 @@ export default {
if (this.dataForm.id) {
this.urlOptions.infoURL(id).then(response => {
this.dataForm = response.data;
this.dataForm.departmentName = undefined
});
// --
getWoBindMaPage({

View File

@ -39,6 +39,7 @@ import {
deleteMaterial
} from '@/api/base/material';
import { listData } from "@/api/system/dict/data";
import { publicFormatter } from '@/utils/dict';
const tableProps = [
{
@ -59,8 +60,9 @@ const tableProps = [
label: '英文名称'
},
{
prop: 'materialType',
label: '物料类型'
prop: 'type',
label: '物料类型',
filter: publicFormatter('material_type')
},
{
prop: 'supplierName',

View File

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-11-18 14:16:25
* @LastEditors: DY
* @LastEditTime: 2023-11-22 11:09:44
* @LastEditTime: 2023-11-23 15:00:00
* @Description:
-->
<template>
@ -311,6 +311,9 @@ export default {
row.mUnit = u.label
}
})
} else {
row.unit = null
row.mUnit = ''
}
// row.materialCode = tempList[0].code
// row.unit = tempList[0].unit

View File

@ -215,12 +215,33 @@ export default {
this.$refs.addOrUpdate.init(val.data.id);
});
} else if (val.type === "delete") {
this.deleteHandle(val.data.id, val.data.materialName, val.data._pageIndex)
this.deleteHandle(val.data.id, val.data.materialName)
} else if (val.type === "change") {
this.changeStatus(val.data.id)
} else {
this.otherMethods(val)
}
},
//
deleteHandle(id, name) {
this.$confirm(`是否确认删除物料名称为${name}的数据项?`, "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.urlOptions.deleteURL(id).then(({ data }) => {
this.$message({
message: "操作成功",
type: "success",
duration: 1500,
onClose: () => {
this.getDataList();
},
});
});
})
.catch(() => { });
}
},
};

View File

@ -2,7 +2,7 @@
<el-drawer
title="发货进度"
:visible.sync="centervisible"
size="80%"
size="50%"
class="deliveryLogDetail"
@close='closeA'
:show-close='false'>
@ -47,7 +47,7 @@
<method-btn
v-if="tableBtn.length"
slot="handleBtn"
:width="150"
:width="80"
label="操作"
:method-list="tableBtn"
@clickBtn="viewDetDetail"
@ -65,7 +65,7 @@
<div v-if="activeName === 'barChart'">
<div
id="logDetPieBar"
style="width: 100%"
style="width: 60%"
:style="{ height: chartHeight + 'px' }"
></div>
</div>
@ -75,7 +75,7 @@
<!-- 详情抽屉 -->
<el-drawer
title="发货详情"
size="60%"
size="50%"
:append-to-body="true"
:visible.sync="innerDrawer"
@close='closeB'
@ -141,7 +141,8 @@ const tableProps = [
},
{
prop: 'rate',
label: '发货比列(%)'
label: '发货比列(%)',
width: 110
},
{
prop: 'principalCost',
@ -173,7 +174,8 @@ const tableProps2 = [
},
{
prop: 'packagingSize',
label: '装箱规格(片/箱)'
label: '装箱规格(片/箱)',
minWidth: 140
},
{
prop: 'packagingNum',
@ -210,8 +212,8 @@ export default {
tableBtn: [
this.$auth.hasPermi('base:group-team:update')
? {
type: 'detDetail',
btnName: '查看发货详情'
type: 'detail',
btnName: '详情'
}
: undefined
].filter((v) => v),
@ -230,7 +232,7 @@ export default {
//
chartDom: '',
chart: '',
chartHeight: this.tableHeight(300)
chartHeight: this.tableHeight(300)*0.6
}
},
// watch: {
@ -270,6 +272,8 @@ export default {
}
},
getBar() {
let color = ['#7164FF','#288AFF','#63BDFF','#8EF0AB','#FFCE6A']
let colorList = []
if (
this.chart !== null &&
this.chart !== '' &&
@ -280,64 +284,90 @@ export default {
this.chartDom = document.getElementById('logDetPieBar')
this.chart = echarts.init(this.chartDom)
let seriesData = []
let sumData = 0
this.tableData && this.tableData.map(item =>{
if (this.tableData.length > 0) {
for (let i = 0; i < this.tableData.length; i++) {
let obj = {}
obj.value = item.rate
obj.name = item.name
obj.value = this.tableData[i].num
obj.name = this.tableData[i].name
seriesData.push(obj)
sumData+=item.rate
})
if (sumData < 100) {
if (i < 5) {
colorList.push(color[i])
} else {
colorList.push(color[i%5])
}
}
}
if (this.orderMsg.num < this.orderMsg.orderNum) {
let obj = {}
obj.value = 100 - sumData
obj.value = this.orderMsg.orderNum - this.orderMsg.num
obj.name = "未发货"
seriesData.push(obj)
colorList.push('#F5F5F5')
}else {
let obj = {}
obj.value = 0
obj.name = "未发货"
seriesData.push(obj)
colorList.push('#F5F5F5')
}
var option = {
color: ['#B0EB42', '#FF9747', '#FF6860', '#7164FF', '#288AFF', '#63BDFF', '#73DE93', '#FFCE6A'],
tooltip: {
trigger: 'item',
formatter: function(params) {
let str = `<span style="display:inline-block;width:8px;height:8px;margin: 0 8px 0 -3px;border-radius:2px;background-color:${params.color};"></span>`
return `<span>
<span style="color:rgba(0,0,0,0.85);">${str}${params.name}</span>
<span style="display:inline-block;margin-left:10px;color:rgba(0,0,0,0.45);">${params.percent}</span>
</span>`
}
},
color: colorList,
legend: {
type: 'scroll',
orient: 'vertical',
right: '10%',
top: 20,
bottom: 20,
icon: 'rect',
itemHeight: 8,
itemWidth: 8
bottom: '5%',
left: 'center',
itemWidth: 8,
itemHeight: 8
},
series: [
{
type: 'pie',
radius: ['60%', '80%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
radius: ['40%', '55%'],
emphasis: {
scale: false
},
label: {
show: true,
fontSize: 40,
fontWeight: 'bold'
alignTo: 'edge',
formatter: '{name|{b}}\n{value|{c}}',
minMargin: 5,
edgeDistance: 10,
lineHeight: 15,
rich: {
name: {
fontSize: 14,
color: 'rgba(0,0,0,0.65)'
},
scale: true ,
scaleSize: 20 ,
},
labelLine: {
show: false
value: {
fontSize: 14,
color: 'rgba(0,0,0,0.65)'
}
}
},
data: seriesData
},
{
type: 'pie',
radius: ['40%', '40%'],
label: {
show: true,
position: 'center',
color: '#000',
formatter: [
'{a|'+this.orderMsg.orderNum+'}',
'{b|总数}'
].join('\n\n'),
rich: {
a: {
fontSize: 26 +'px'
},
b: {
fontSize: 16 +'px'
}
}
},
emphasis: {
scale: false
},
data: [100]
}
]
};
@ -377,11 +407,13 @@ export default {
</script>
<style scoped lang='scss'>
.box1 {
height: 56px;
height: 76px;
border-bottom: 1px solid #E9E9E9;
margin: 0px 8px 20px 30px;
.box_col {
display: inline-block;
width: 20%;
padding: 8px 8px 8px 40px;
padding: 8px 8px 8px 8px;
.blodTip {
height: 16px;
font-size: 14px;
@ -398,7 +430,7 @@ export default {
}
}
.box2 {
padding:32px 32px 30px 30px;
padding:0px 32px 30px 30px;
height: calc(100vh - 150px);
}
.boxTitle {

View File

@ -77,9 +77,9 @@
<el-form-item label="巡检时间" prop="actualTime">
<el-date-picker
v-model="dataForm.actualTime"
type="date"
type="datetime"
:disabled="isdetail"
format='yyyy-MM-dd'
format='yyyy-MM-dd HH:mm:ss'
value-format="timestamp"
placeholder="选择巡检时间" />
</el-form-item>

View File

@ -69,7 +69,7 @@ export default {
data() {
return {
addOrUpdateVisible: false,
searchBarKeys: ['equipmentId', 'createTime'],
searchBarKeys: ['equipmentId', 'actualTime'],
tableBtn: [
this.$auth.hasPermi('equipment:check-record:detail')
? {
@ -113,12 +113,12 @@ export default {
label: '时间段',
dateType: 'daterange', // datetimerange
format: 'yyyy-MM-dd',
valueFormat: 'timestamp',
valueFormat: 'yyyy-MM-dd HH:mm:ss',
rangeSeparator: '-',
startPlaceholder: '开始日期',
endPlaceholder: '结束日期',
defaultTime: ['00:00:00', '23:59:59'],
param: 'startTime',
param: 'actualTime',
// width: 350,
},
{

View File

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-11-18 14:16:25
* @LastEditors: DY
* @LastEditTime: 2023-11-09 11:09:26
* @LastEditTime: 2023-11-24 18:38:22
* @Description:
-->
<template>
@ -52,9 +52,8 @@
<div v-if="!isdetail" class="action_btn">
<template>
<span style="display: inline-block;" @click="addNew()">
<svg-icon style="width: 14px; height: 14px" class="item-icon" icon-class="table_add" />
<span class="add">添加</span>
<span style="display: inline-block;">
<el-button type="text" @click="addNew()" icon="el-icon-plus">添加</el-button>
</span>
</template>
</div>
@ -290,7 +289,7 @@ export default {
.drawer >>> .visual-part {
flex: 1 auto;
max-height: 76vh;
max-height: 16vh;
overflow: hidden;
overflow-y: scroll;
padding-right: 10px; /* 调整滚动条样式 */
@ -308,7 +307,7 @@ export default {
}
.action_btn {
float: right;
margin: 5px 15px;
margin: -40px 15px;
font-size: 14px;
}
.add {

View File

@ -101,7 +101,7 @@ export default {
{ prop: 'sectionName', label: '工段' },
{ prop: 'equipmentName', label: '设备' },
{ prop: 'equipmentCode', label: '设备编码' },
{ prop: 'responsible', label: '负责人' },
// { prop: 'responsible', label: '' },
{ prop: 'checkNumber', label: '巡检条数' }, // TODO:
],
searchBarFormConfig: [
@ -116,6 +116,7 @@ export default {
label: '设备名称',
placeholder: '请选择设备',
param: 'equipmentId',
filterable: true,
},
{
type: 'button',
@ -170,8 +171,12 @@ export default {
label: '设备名称',
prop: 'equipmentId',
url: '/base/core-equipment/listAll',
bind: {
filterable: true,
clearable: true,
},
rules: [
{ required: true, message: '设备名称不能为空', trigger: 'blur' },
{ required: true, message: '设备名称不能为空', trigger: 'change' },
],
},
{

View File

@ -52,6 +52,7 @@ import { publicFormatter } from '@/utils/dict';
import moment from 'moment';
import basicPageMixin from '@/mixins/lb/basicPageMixin';
import { exportMaintainMonitorExcel } from '@/api/equipment/base/maintain/record'
import { parseTime } from '@/utils/ruoyi'
const remainBox = {
name: 'RemainBox',
@ -99,7 +100,7 @@ const btn = {
render: function (h) {
return (
<el-button type="text" onClick={this.handleClick}>
{this.injectData.label}
{this.injectData.name}
</el-button>
);
},
@ -113,16 +114,16 @@ export default {
return {
searchBarKeys: ['planId', 'equipmentId'],
tableProps: [
{
prop: 'createTime',
label: '添加时间',
fixed: true,
width: 180,
filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
},
// {
// prop: 'createTime',
// label: '',
// fixed: true,
// width: 180,
// filter: parseTime(createTime),
// },
{ prop: 'name', label: '保养计划' },
{ prop: 'lineName', label: '产线' },
{ prop: 'sectionName', label: '工段' },
{ prop: 'lineName', label: '产线' },
{ prop: 'sectionName', label: '工段' },
{ prop: 'equipmentName', label: '设备名称' },
{ prop: 'equipmentCode', label: '设备编码' },
{ prop: 'maintenancePeriod', label: '保养频率' },
@ -134,16 +135,16 @@ export default {
{
prop: 'lastMaintainTime',
label: '上次保养时间',
filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
filter: parseTime,
},
{ prop: 'nextMaintainTime', label: '计划下次保养时间' },
{ prop: 'nextMaintainTime', label: '计划下次保养时间', filter: parseTime },
{
prop: 'remainDays',
label: '距离保养时间(天)',
subcomponent: remainBox,
},
{ prop: 'opt1', label: '设备保养', subcomponent: btn },
{ prop: 'opt2', label: '保养记录', subcomponent: btn },
{ prop: 'opt1', label: '设备保养', name: '操作', subcomponent: btn },
{ prop: 'opt2', label: '保养记录', name: '查看详情', subcomponent: btn },
],
searchBarFormConfig: [
{
@ -243,15 +244,16 @@ export default {
switch (action) {
//
case '设备保养':
this.$router.push({ path: '/equipment/base/maintain/plan-config',query: {
equipmentId: value.equipmentId,
equipmentName: value.equipmentName
this.$router.push({ path: '/equipment/base/maintain/record',query: {
addRecord: 1,
row: value
} })
break;
case '保养记录':
const queryData = {
equipmentId: value.equipmentId,
maintainPlanId: value.id
maintainPlanId: value.id,
relatePlan: value.lastMaintainTime ? 1 : 2
}
this.$router.push({ path: '/equipment/base/maintain/record',query: queryData })
break;

View File

@ -51,6 +51,7 @@
import moment from 'moment';
import basicPageMixin from '@/mixins/lb/basicPageMixin';
import { deleteEqMaintainPlan } from '@/api/equipment/base/maintain/record'
import { publicFormatter } from '@/utils/dict';
export default {
name: 'PlanConfig',
@ -95,7 +96,7 @@ export default {
{ prop: 'equipmentName', label: '设备名称' },
{ prop: 'maintainDuration', label: '计划保养用时(h)' },
{ prop: 'maintenancePeriod', label: '保养频率(天/次)' },
{ prop: 'maintainType', label: '保养类型' },
{ prop: 'maintainType', label: '保养类型', filter: publicFormatter('maintain_type') },
{ prop: 'remark', label: '备注' },
],
searchBarFormConfig: [
@ -224,6 +225,17 @@ export default {
rules: [{ required: true, message: '保养频率不能为空', trigger: 'blur' }],
},
],
[
{
switch: true,
label: '启用状态',
prop: 'enabled',
bind: {
'active-value': 1,
'inactive-value': 0,
},
}
],
[{ input: true, label: '备注', prop: 'remark' }],
],
//
@ -300,7 +312,8 @@ export default {
const queryData = {
equipmentId: row.equipmentId,
maintainPlanId: row.id,
relatePlan: row.enabled
isAdd: 1
// relatePlan: row.enabled
}
if (this.queryParams.createTime) {
queryData.createTime = this.queryParams.createTime

View File

@ -45,6 +45,11 @@
:disabled="mode == 'detail'"
:has-files="true"
:rows="rows" />
<el-row v-if="mode === 'detail'" slot="footer" type="flex" justify="end">
<el-col :span="12">
<el-button size="small" class="btnTextStyle" @click="cancel">关闭</el-button>
</el-col>
</el-row>
</base-dialog>
</div>
</template>
@ -53,7 +58,7 @@
import moment from 'moment';
import basicPageMixin from '@/mixins/lb/basicPageMixin';
import Editor from '@/components/Editor';
import { deleteEqMaintainLog } from '@/api/equipment/base/maintain/record';
import { deleteEqMaintainLog, exportMaintainLogExcel } from '@/api/equipment/base/maintain/record';
const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss');
@ -311,13 +316,16 @@ export default {
this.searchBarFormConfig[0].defaultSelect =
this.$route.query.equipmentId ?? undefined;
this.searchBarFormConfig[1].defaultSelect =
Number(this.$route.query.maintainPlanId) ?? undefined;
this.$route.query.maintainPlanId ?? undefined;
this.searchBarFormConfig[2].defaultSelect =
this.$route.query?.createTime ?? undefined;
this.searchBarFormConfig[3].defaultSelect =
Number(this.$route.query.relatePlan) ?? undefined;
}
this.getList();
if (this.$route.query.addRecord) {
this.handleAdd()
}
},
methods: {
initSearchBar() {
@ -398,6 +406,19 @@ export default {
/** 新增按钮操作 */
handleAdd() {
this.reset();
if (this.$route.query.addRecord) {
//
const tempRow = this.$route.query.row
this.form.equipmentId = tempRow.equipmentId
this.form.relatePlan = tempRow.nextMaintainTime ? 1 : 2
this.form.startTime = tempRow.nextMaintainTime
this.form.maintainPlanId = tempRow.id
}
if (this.$route.query.isAdd) {
//
this.form.equipmentId = this.$route.query.equipmentId
this.form.maintainPlanId = this.$route.query.maintainPlanId
}
this.open = true;
this.title = '添加保养记录';
},
@ -440,7 +461,7 @@ export default {
handleDelete(row) {
const id = row.id;
this.$modal
.confirm('是否删除设备名称为"' + row.equipmentName + '"的数据项?')
.confirm('是否确认删除设备名称为"' + row.equipmentName + '"的数据项?')
.then(function () {
return deleteEqMaintainLog(id);
})
@ -456,7 +477,7 @@ export default {
this.info({ id }).then((response) => {
this.form = response.data;
this.open = true;
this.title = '修改保养记录';
this.title = '查看保养记录详情';
});
},
/** 导出按钮操作 */
@ -469,10 +490,10 @@ export default {
.confirm('是否确认导出所有保养记录?')
.then(() => {
this.exportLoading = true;
return exportEquipmentTypeExcel(params);
return exportMaintainLogExcel(params);
})
.then((response) => {
this.$download.excel(response, '保养记录.xls');
this.$download.excel(response, '设备保养记录.xls');
this.exportLoading = false;
})
.catch(() => {});

View File

@ -41,12 +41,12 @@
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="故障发生时间" prop="faultTime">
<span>{{ dataForm.faultTime }}</span>
<span>{{ parseTime(dataForm.faultTime) }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="故障级别" prop="faultLevel">
<span>{{ dataForm.faultLevel }}</span>
<span>{{ getDictDataLabel('fault-level', dataForm.faultLevel) }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
@ -164,11 +164,11 @@
</el-form>
<div class="drawer-body__footer">
<el-button style="" @click="goback()">取消</el-button>
<el-button v-if="disabled" type="primary" @click="goEdit()">
<el-button style="" @click="goback()">{{ disabled ? '返回' : '取消' }}</el-button>
<!-- <el-button v-if="disabled" type="primary" @click="goEdit()">
编辑
</el-button>
<el-button v-else type="primary" @click="dataFormSubmit()">确定</el-button>
</el-button> -->
<el-button v-if="!disabled" type="primary" @click="dataFormSubmit()">确定</el-button>
</div>
</el-drawer>
</template>
@ -179,6 +179,8 @@ import { getEqRepair, updateEqRepair } from '@/api/equipment/base/repair'
import Editor from "@/components/Editor";
import FileUpload from "@/components/FileUpload";
import { getDictDatas } from "@/utils/dict";
import { parseTime } from '@/utils/ruoyi'
import { getDictDataLabel } from '@/utils/dict';
export default {
name: 'DialogForm',

View File

@ -53,12 +53,12 @@
</template>
<script>
import moment from 'moment';
// import moment from 'moment';
import basicPageMixin from '@/mixins/lb/basicPageMixin';
import CustomDialogForm from './CustomDialogForm.vue';
import { deleteRepair } from '@/api/equipment/base/repair'
const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss');
import { deleteRepair, exportRepairLogExcel } from '@/api/equipment/base/repair'
import { parseTime } from '@/utils/ruoyi'
// const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss');
export default {
name: 'EquipmentRepair',
@ -100,14 +100,14 @@ export default {
label: '添加时间',
fixed: true,
width: 180,
filter: timeFilter,
filter: parseTime,
},
{ prop: 'repairOrderNumber', label: '设备维修单号' },
{ prop: 'maintenanceStartTime', label: '开始时间', filter: timeFilter },
{ prop: 'maintenanceStartTime', label: '开始时间', filter: parseTime },
{
prop: 'maintenanceFinishTime',
label: '结束时间',
filter: timeFilter,
filter: parseTime,
},
{
prop: 'maintenanceStatus',
@ -418,10 +418,10 @@ export default {
.confirm('是否确认导出所有维修记录?')
.then(() => {
this.exportLoading = true;
return exportEquipmentTypeExcel(params);
return exportRepairLogExcel(params);
})
.then((response) => {
this.$download.excel(response, '维修记录.xls');
this.$download.excel(response, '设备维修.xls');
this.exportLoading = false;
})
.catch(() => {});

View File

@ -75,9 +75,6 @@
<div class="drawer-body__footer">
<el-button type="primary" @click="goback()">关闭</el-button>
<el-button v-if="disabled" type="primary" @click="goEdit()">
编辑
</el-button>
</div>
<attr-add

View File

@ -35,7 +35,7 @@
</el-form>
<el-row style="text-align: right">
<el-button @click="visible = false">取消</el-button>
<el-button @click="cancel">取消</el-button>
<el-button type="primary" @click="dataFormSubmit()">确定</el-button>
</el-row>
</el-dialog>
@ -79,21 +79,13 @@ export default {
this.partList = res.data.list;
})
},
cancel() {
this.$refs['dataForm'].resetFields()
this.visible = false
},
init(id) {
this.dataForm.id = id || '';
// this.dataForm.id = id || '';
this.visible = true;
// this.$nextTick(() => {
// this.$refs['dataForm'].resetFields();
// if (this.dataForm.id) {
// getCoreProductAttr({
// id: this.dataForm.id
// }).then((res) => {
// const { name, value } = res.data;
// this.dataForm.name = name;
// this.dataForm.value = value;
// });
// }
// });
},
//
dataFormSubmit() {
@ -117,6 +109,7 @@ export default {
configId: this.configId,
}).then((response) => {
this.$modal.msgSuccess('新增成功');
this.$refs['dataForm'].resetFields()
this.visible = false;
this.$emit('refreshDataList');
});

View File

@ -0,0 +1,36 @@
<!--
* @Author: zhp
* @Date: 2023-11-08 14:00:52
* @LastEditTime: 2023-11-24 09:12:36
* @LastEditors: DY
* @Description:
-->
<template>
<div v-html="content" />
</template>
<script>
export default {
props: {
injectData: {
type: Object,
default: () => ({})
}
},
data() {
return {
content: ''
}
},
mounted() {
this.getContent()
console.log('12', this.injectData)
},
methods: {
getContent() {
this.content = this.injectData.description ?? ''
}
}
}
</script>

View File

@ -60,8 +60,9 @@ import { publicFormatter } from '@/utils/dict';
import Editor from '@/components/Editor';
import addSparts from './addSparts.vue';
import { deleteConfig } from '@/api/equipment/base/spare-parts/config'
import htmls from './htmls.vue'
const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss');
// const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss');
export default {
name: 'EquipmentSparePartsConfig',
@ -111,7 +112,7 @@ export default {
{ prop: 'equipmentCode', label: '设备编码' },
{ prop: 'responsible', label: '负责人' },
// { prop: 'unit', label: '', filter: publicFormatter('unit_dict') },
{ prop: 'description', label: '描述' },
{ prop: 'description', label: '描述', subcomponent: htmls },
{ prop: 'sparePartNumber', label: '备品备件数量' },
// { prop: 'remark', label: '' },
],

View File

@ -301,6 +301,12 @@ export default {
const id = row.id;
this.info({ id }).then((response) => {
this.form = response.data;
if (this.form.unit !== undefined) {
this.form.unit = String(this.form.unit)
}
if (this.form.type !== undefined) {
this.form.type = String(this.form.type)
}
this.open = true;
this.title = '修改备品备件';
});

View File

@ -310,7 +310,8 @@ export default {
handleClick(raw) {
if (raw.type === 'change') {
//
this.addNew();
console.log(raw)
this.addNew(raw.data.sparePartId);
} else {}
},
getList() {
@ -320,7 +321,7 @@ export default {
configId: this.dataForm.id,
}).then((response) => {
this.list = response.data;
this.listQuery.total = response.data.total;
this.listQuery.total = response.data.length;
});
},
getList1() {
@ -334,10 +335,10 @@ export default {
});
},
// /
addNew(id) {
addNew(sparePartId) {
this.addOrUpdateVisible = true;
this.$nextTick(() => {
this.$refs.addOrUpdate.init(id);
this.$refs.addOrUpdate.init(sparePartId);
});
},
/** 导出按钮操作 */

View File

@ -25,10 +25,27 @@
clearable
placeholder="请输入操作人" />
</el-form-item>
<el-form-item label="更换耗时(min)" prop="timeUsed">
<el-input-number
v-model="dataForm.timeUsed"
controls-position="right"
clearable
placeholder="请输入更换耗时"
style="width: 100%" />
</el-form-item>
<el-form-item label="更换时间" prop="replacementTime">
<el-date-picker
v-model="dataForm.replacementTime"
type="date"
format='yyyy-MM-dd'
value-format='timestamp'
placeholder="选择入更换时间"
style="width: 100%" />
</el-form-item>
</el-form>
<el-row style="text-align: right">
<el-button @click="visible = false">取消</el-button>
<el-button @click="cancel">取消</el-button>
<el-button type="primary" @click="dataFormSubmit()">确定</el-button>
</el-row>
</el-dialog>
@ -49,11 +66,15 @@ export default {
visible: false,
dataForm: {
id: undefined,
responsible: ''
responsible: '',
timeUsed: 0,
sparePartId: '',
replacementTime: undefined
},
partList: [],
dataRule: {
responsible: [{ required: true, message: '操作人不能为空', trigger: 'blur' }]
responsible: [{ required: true, message: '操作人不能为空', trigger: 'blur' }],
replacementTime: [{ required: true, message: '更换时间不能为空', trigger: 'blur' }]
},
};
},
@ -66,9 +87,13 @@ export default {
// this.partList = res.data
// },
init(id) {
this.dataForm.id = id || '';
this.dataForm.sparePartId = id || undefined;
this.visible = true;
},
cancel() {
this.$refs['dataForm'].resetFields();
this.visible = false;
},
//
dataFormSubmit() {
this.$refs['dataForm'].validate((valid) => {
@ -91,6 +116,7 @@ export default {
configId: this.configId,
}).then((response) => {
this.$modal.msgSuccess('新增成功');
this.$refs['dataForm'].resetFields();
this.visible = false;
this.$emit('refreshDataList');
});

View File

@ -193,7 +193,8 @@ export default {
this.$auth.hasPermi('base:order-manage:addWorkOrder')
? {
type: 'add',
btnName: '新增工单',
btnName: '新增',
showTip: '新增工单',
showParam: {
type: '|',
data: [
@ -219,7 +220,8 @@ export default {
this.$auth.hasPermi('base:order-manage:bindWorkOrder')
? {
type: 'bind',
btnName: '绑定工单',
btnName: '绑定',
showTip: '绑定工单',
showParam: {
type: '|',
data: [
@ -245,7 +247,8 @@ export default {
this.$auth.hasPermi('base:order-manage:bindWorkOrder')
? {
type: 'complete',
btnName: '完成订单',
btnName: '完成',
showTip: '完成订单',
showParam: {
type: '|',
data: [

View File

@ -22,7 +22,7 @@
<method-btn
v-if="tableBtn.length"
slot="handleBtn"
:width="250"
:width="140"
label="操作"
:method-list="tableBtn"
@clickBtn="handleClick"
@ -160,19 +160,52 @@ export default {
this.$auth.hasPermi('base:order-completion-monitoring:orderDet')
? {
type: 'orderDetail',
btnName: '工单详情'
btnName: '工单',
showTip: '工单详情',
showParam: {
type: '&',
data: [
{
type: 'more',
name: 'workOrderNum',
value: 1
}
]
}
}
: undefined,
this.$auth.hasPermi('base:order-completion-monitoring:qualityDet')
? {
type: 'qualityDetail',
btnName: '质量详情'
btnName: '质量',
showTip: '质量详情',
showParam: {
type: '&',
data: [
{
type: 'more',
name: 'workOrderNum',
value: 1
}
]
}
}
: undefined,
this.$auth.hasPermi('base:order-completion-monitoring:sendOut')
? {
type: 'sendOutDetail',
btnName: '发货详情'
btnName: '发货',
showTip: '发货详情',
showParam: {
type: '&',
data: [
{
type: 'more',
name: 'workOrderNum',
value: 1
}
]
}
}
: undefined
].filter((v) => v),

View File

@ -1,5 +1,5 @@
<template>
<div :class="className" :style="{ height: height, width: width }" />
<div :class="className" :style="{ height: height, width: width,marginLeft: '10px' }" />
</template>
<script>
@ -97,7 +97,7 @@ export default {
{
containLabel: true,
top: 40,
left: '2%',
left: '4%',
right: '2%',
bottom: '3%',
bottom: '55%',
@ -105,7 +105,7 @@ export default {
{
containLabel: true,
top: 40,
left: '2%',
left: '4%',
right: '2%',
bottom: '3%',
top: '55%',

View File

@ -2,7 +2,6 @@
<div class="app-container">
<!-- 搜索工作栏 -->
<search-bar
:isFold="true"
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick" />

View File

@ -2,13 +2,12 @@
* @Author: zwq
* @Date: 2023-11-03 16:37:06
* @LastEditors: zwq
* @LastEditTime: 2023-11-23 15:54:31
* @LastEditTime: 2023-11-24 14:35:01
* @Description:
-->
<template>
<div class="app-container">
<search-bar
:isFold="true"
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick" />

View File

@ -2,7 +2,6 @@
<div class="app-container">
<!-- 搜索工作栏 -->
<search-bar
:isFold="true"
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick" />

View File

@ -2,7 +2,6 @@
<div class="app-container">
<!-- 搜索工作栏 -->
<search-bar
:isFold="true"
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick" />

View File

@ -2,13 +2,12 @@
* @Author: zwq
* @Date: 2023-11-03 16:37:06
* @LastEditors: zwq
* @LastEditTime: 2023-11-23 15:54:14
* @LastEditTime: 2023-11-24 14:36:24
* @Description:
-->
<template>
<div class="app-container">
<search-bar
:isFold="true"
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick" />

View File

@ -2,7 +2,6 @@
<div class="app-container">
<!-- 搜索工作栏 -->
<search-bar
:isFold="true"
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick" />

View File

@ -2,7 +2,6 @@
<div class="app-container">
<!-- 搜索工作栏 -->
<search-bar
:isFold="true"
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick" />

View File

@ -2,13 +2,12 @@
* @Author: zwq
* @Date: 2023-11-03 16:37:06
* @LastEditors: zwq
* @LastEditTime: 2023-11-23 15:53:54
* @LastEditTime: 2023-11-24 14:36:08
* @Description:
-->
<template>
<div class="app-container">
<search-bar
:isFold="true"
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick" />

View File

@ -2,7 +2,6 @@
<div class="app-container">
<!-- 搜索工作栏 -->
<search-bar
:isFold="true"
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick" />

View File

@ -2,7 +2,6 @@
<div class="app-container">
<!-- 搜索工作栏 -->
<search-bar
:isFold="true"
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick" />

View File

@ -2,13 +2,12 @@
* @Author: zwq
* @Date: 2023-11-03 16:37:06
* @LastEditors: zwq
* @LastEditTime: 2023-11-23 15:53:28
* @LastEditTime: 2023-11-24 14:35:51
* @Description:
-->
<template>
<div class="app-container">
<search-bar
:isFold="true"
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick" />

View File

@ -2,7 +2,6 @@
<div class="app-container">
<!-- 搜索工作栏 -->
<search-bar
:isFold="true"
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick" />

View File

@ -2,7 +2,6 @@
<div class="app-container">
<!-- 搜索工作栏 -->
<search-bar
:isFold="true"
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick" />

View File

@ -2,13 +2,12 @@
* @Author: zwq
* @Date: 2023-11-03 16:37:06
* @LastEditors: zwq
* @LastEditTime: 2023-11-23 15:52:53
* @LastEditTime: 2023-11-24 14:35:29
* @Description:
-->
<template>
<div class="app-container">
<search-bar
:isFold="true"
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick" />

View File

@ -2,7 +2,6 @@
<div class="app-container">
<!-- 搜索工作栏 -->
<search-bar
:isFold="true"
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick" />