修改看板

This commit is contained in:
‘937886381’
2024-01-29 15:55:16 +08:00
parent bd0636b458
commit 1045a5fbb0
11 changed files with 903 additions and 99 deletions

View File

@@ -0,0 +1,280 @@
<!--
filename: dialogForm.vue
author: liubin
date: 2023-09-11 15:55:13
description: DialogForm for equipmentBindSection only
-->
<template>
<el-form ref="dataForm" :model="dataForm" label-width="120px" v-loading="formLoading" label-position="top">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="产线" prop="productionLineId"
:rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-select v-model="dataForm.productionLineId" placeholder="请选择产线" filterable
@change="handleProductlineChange">
<el-option v-for="opt in productionLineList" :key="opt.value" :label="opt.label" :value="opt.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工段" prop="sectionId" :rules="[{ required: true, message: '不能为空', trigger: 'blur' }]">
<el-select v-model="dataForm.sectionId" placeholder="请选择工段" filterable @change="$emit('update', dataForm)">
<el-option v-for="opt in workshopSectionList" :key="opt.value" :label="opt.label" :value="opt.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="检测内容" prop="inspectionDetIdList"
:rules="[{ required: true, message: '不能为空', trigger: 'change' }]">
<div class="itemDet" v-for="item in inspectionDetList" :key="item.typeId" style="padding: 0 20px;">
<div>{{ item.typeName}} </div>
<!-- <div>{{ item.data }} </div> -->
<div class="content">
<el-checkbox-group v-model="dataForm.inspectionDetIdList" @change="handleCheckedCitiesChange">
<el-checkbox v-for="i in item.data" :key="i.content" :label="i.detId">{{ i.content }}
</el-checkbox>
</el-checkbox-group>
</div>
</div>
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="按钮盒识别码" prop="buttonId" :rules="[
{ required: true, message: '不能为空', trigger: 'blur' },
{
type: 'number',
message: '请输入整数',
trigger: 'blur',
transform: (val) => Number.isInteger(Number(val)) && Number(val),
},
]">
<el-input v-model="dataForm.buttonId" @change="$emit('update', dataForm)" placeholder="请输入整数" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="按钮值" prop="keyValue" :rules="[
{ required: true, message: '不能为空', trigger: 'blur' },
{
type: 'number',
message: '请输入100以内的整数',
trigger: 'blur',
transform: (val) =>
Number.isInteger(+val) &&
Number(val) >= 0 &&
Number(val) <= 100 &&
Number(val),
},
]">
<el-input v-model="dataForm.keyValue" type="number" min="0" max="100" @change="$emit('update', dataForm)"
placeholder="请输入按钮盒模式" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="检测内容" prop="inspectionDetContent"
:rules="[{ required: true, message: '不能为空', trigger: 'change' }]">
<el-select v-model="dataForm.inspectionDetContent" placeholder="请选择检测内容" filterable
@change="$emit('update', dataForm)">
<el-option v-for="opt in inspectionDetList" :key="opt.value" :label="opt.label" :value="opt.value" />
</el-select>
</el-form-item>
</el-col> -->
</el-row>
</el-form>
</template>
<script>
import basicAdd from '../../mixins/basic-add';
import {
createQualityInspectionBoxBtn,
updateQualityInspectionBoxBtn,
getQualityInspectionBoxBtn,
getListByLineSection
} from '@/api/base/qualityInspectionBoxBtn';
export default {
mixins: [basicAdd],
data() {
return {
urlOptions: {
// isGetCode: false,
// codeURL: getCode,
createURL: createQualityInspectionBoxBtn,
updateURL: updateQualityInspectionBoxBtn,
infoURL: getQualityInspectionBoxBtn,
},
dataForm: {
// id: null,
sectionId: null,
productionLineId: null,
inspectionDetIdList:[],
},
formLoading: true,
productionLineList: [],
inspectionDetList:[],
workshopSectionList: [],
};
},
mounted() {
this.getProductionLineList()
this.getQualityInspectionDetList()
// this.getList()
// this.getWorksectionList();
// this.getCode('/base/equipment-group-alarm/getCode').then((code) => {
// this.formLoading = false;
// this.$emit('update', {
// ...this.dataForm,
// code,
// });
// });
},
watch: {
'dataForm.productionId': {
handler(id) {
if (id != null) this.getWorksectionList(id)
},
immediate: true
},
},
methods: {
init(obj) {
// console.log(productionLineId);
console.log(obj);
this.visible = true
// if(obj.id)
if (obj) {
this.dataForm.id = obj.id || null;
}
this.$nextTick(() => {
this.$refs["dataForm"].resetFields()
if (obj) {
getListByLineSection({
productionLineId: obj.productionLineId,
sectionId: obj.sectionId,
}).then((res) => {
console.log(res);
this.dataForm.inspectionDetIdList = res.data
this.dataForm.productionLineId = obj.productionLineId
this.getWorksectionList(obj.productionLineId)
this.dataForm.sectionId = obj.sectionId
})
}
if (this.dataForm.id) {
console.log(1111);
this.urlOptions.infoURL(obj.id).then(response => {
this.dataForm.id = response.data.id
// if (this.setData) {
// this.setDataForm()
// }
});
} else {
// if (this.urlOptions.isGetCode) {
// this.getCode()
// }
}
});
},
/** 模拟透传 ref */
handleCheckedCitiesChange(value) {
;console.log(value);
// let checkedCount = value.length;
// this.checkAll = checkedCount === this.cities.length;
// this.isIndeterminate = checkedCount > 0 && checkedCount < this.cities.length;
},
// getList() {
// console.log(this.dataForm.sectionId);
// },
validate(cb) {
return this.$refs.form.validate(cb);
},
resetFields(args) {
return this.$refs.form.resetFields(args);
},
async getProductionLineList() {
this.formLoading = true;
const res = await this.$axios({
url: '/base/core-production-line/listAll',
method: 'get',
});
if (res.code == 0) {
this.productionLineList = res.data.map((item) => ({
label: item.name,
value: item.id,
}));
}
this.formLoading = false;
},
async getQualityInspectionDetList() {
this.formLoading = true;
const res = await this.$axios({
url: '/base/quality-inspection-det/inspectionMap',
method: 'get',
});
if (res.code == 0) {
console.log(res)
let arr = []
for (let i in res.data) {
let obj = {
typeName: res.data[i].length !== 0 ? res.data[i][0].typeName : '',
typeId: res.data[i].length !== 0 ? res.data[i][0].typeId : '',
data:[]
}
let detArr = []
res.data[i].forEach(ele => {
detArr.push({
detId: ele.id,
content: ele.content
})
})
obj.data = detArr
arr.push(obj)
}
this.inspectionDetList = arr
console.log(this.inspectionDetList);
// this.inspectionDetList = res.data.map((item) => ({
// label: item.content,
// value: item.content,
// }));
}
this.formLoading = false;
},
async getWorksectionList(id) {
this.formLoading = true;
const res = await this.$axios({
url: '/base/core-workshop-section/listByParentId',
method: 'get',
params: {
id,
},
});
if (res.code == 0) {
this.workshopSectionList = res.data.map((item) => ({
label: item.name,
value: item.id,
}));
}
this.formLoading = false;
},
async handleProductlineChange(id) {
await this.getWorksectionList(id);
this.dataForm.sectionId = null;
this.$emit('update', this.dataForm);
},
// async getCode(url) {
// const response = await this.$axios(url);
// return response.data;
// },
},
};
</script>
<style scoped lang="scss">
.el-date-editor,
.el-select {
width: 100%;
}
</style>

View File

@@ -0,0 +1,222 @@
<template>
<div class="app-container">
<!-- 搜索工作栏 -->
<SearchBar :formConfigs="searchBarFormConfig" ref="search-bar" @headBtnClick="buttonClick" />
<!-- 列表 -->
<base-table :table-props="tableProps" :page="listQuery.pageNo" :limit="listQuery.pageSize" :table-data="tableData">
<method-btn v-if="tableBtn.length" slot="handleBtn" label="操作" :width="120" fixed="right" :method-list="tableBtn"
@clickBtn="handleClick" />
</base-table>
<!-- 分页组件 -->
<!-- <pagination :limit.sync="listQuery.pageSize" :page.sync="listQuery.pageNo" :total="listQuery.total"
@pagination="getDataList" /> -->
<!-- 对话框(添加 / 修改) -->
<base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="addOrUpdateVisible" width="50%" @cancel="handleCancel"
@confirm="handleConfirm" :before-close="handleCancel">
<add-or-update ref="addOrUpdate" @refreshDataList="successSubmit"></add-or-update>
</base-dialog>
</div>
</template>
<script>
import {
createQualityInspectionBoxBtn,
updateQualityInspectionBoxBtn,
deleteQualityInspectionBoxBtn,
getQualityInspectionBoxBtn,
getQualityInspectionBoxBtnPage,
exportQualityInspectionBoxBtnExcel,
getUserList
} from '@/api/base/qualityInspectionBoxPermissions';
import basicPage from '../../mixins/basic-page';
import moment from 'moment';
import addOrUpdate from './dialogForm.vue';
export default {
name: 'QualityInspectionBoxBtn',
mixins: [basicPage],
components: { addOrUpdate },
data() {
return {
urlOptions: {
getDataListURL: getQualityInspectionBoxBtnPage,
deleteURL: deleteQualityInspectionBoxBtn,
// exportURL: exportFactoryExcel,
},
searchBarFormConfig: [
{
type: 'select',
label: '用户名称',
selectOptions: [],
labelField: 'name',
valueField: 'id',
param: 'userName',
},
{
type: 'button',
btnName: '查询',
name: 'search',
color: 'primary',
},
{
type: 'separate',
},
{
type: this.$auth.hasPermi('base:quality-inspection-box-permissions:create')
? 'button'
: '',
btnName: '新增',
name: 'add',
plain: true,
color: 'success',
},
],
tableBtn: [
this.$auth.hasPermi('base:quality-inspection-box-permissions:update')
? {
type: 'edit',
btnName: '修改',
}
: undefined,
this.$auth.hasPermi('base:quality-inspection-box-permissions:delete')
? {
type: 'delete',
btnName: '删除',
}
: undefined,
].filter((v) => v),
tableData: [],
tableProps: [
// {
// prop: 'createTime',
// label: '添加时间',
// fixed: true,
// width: 180,
// filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
// },
{
prop: 'productionLineName',
label: '用户名',
},
{
prop: 'sectionName',
label: '用户昵称',
},
{
prop: 'inspectionInfoList',
label: '产线及工段',
}
],
// 查询参数
listQuery: {
pageNo: 1,
pageSize: 10,
inspectionDetContent: null,
},
addOrUpdateVisible: false,
addOrEditTitle:'',
// 搜索框需要的 keys, 与上面 listQuery 的除 pageNo, pageSize 之外的 key 一一对应
searchBarKeys: ['inspectionDetContent'],
form: {
id: null,
buttonId: null,
inspectionDetContent: [],
productionLineId: null,
sectionId: null,
model: null,
keyValue: null,
},
};
},
created() {
this.getDict()
},
methods: {
getDict() {
getUserList({
pageNo: 1,
pageSize:999
}).then((res) => {
this.searchBarFormConfig[0].selectOptions = res.data
})
},
getDataList() {
this.dataListLoading = true;
this.urlOptions.getDataListURL(this.listQuery).then(response => {
this.tableData = response.data.map((item) => {
// console.log(item);
return {
inspectionInfoList: item.inspectionInfoList.toString(),
productionLineId:item.productionLineId,
productionLineName:item.productionLineName,
sectionId: item.sectionId,
sectionName: item.sectionName
}
})
this.listQuery.total = response.data.total;
this.dataListLoading = false;
});
},
reset() {
this.form = {
id: null,
buttonId: null,
inspectionDetContent: null,
productionId: null,
sectionId: null,
model: null,
keyValue: null,
};
this.resetForm('form');
},
deleteHandle(id, name, index, data) {
this.$confirm(`确认要删除产线名为${data.productionLineName}的数据项?`, "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.urlOptions.deleteURL(id).then(({ data }) => {
this.$message({
message: "操作成功",
type: "success",
duration: 1500,
onClose: () => {
this.getDataList();
},
});
});
})
.catch(() => { });
},
buttonClick(val) {
switch (val.btnName) {
case 'search':
this.listQuery.pageNo = 1;
this.listQuery.pageSize = 10;
this.listQuery.inspectionDetContent = val.inspectionDetContent ? val.inspectionDetContent : undefined;
// this.listQuery.teamId = val.teamId ? val.teamId : undefined;
this.getDataList()
break;
case 'add':
this.addOrEditTitle = '新增';
this.addOrUpdateVisible = true;
// this.addOrUpdateVisible = true;
this.$nextTick(() => {
this.$refs.addOrUpdate.init();
});
break;
case 'export':
this.handleExport();
break;
default:
console.log(val);
}
},
},
};
</script>

View File

@@ -118,7 +118,7 @@ export default {
{
type: 'datePicker',
label: '时间段',
dateType: 'daterange', // datetimerange
dateType: 'datetimerange', // datetimerange
// format: 'yyyy-MM-dd HH:mm:ss',
format: 'yyyy-MM-dd HH:mm:ss',
valueFormat: 'yyyy-MM-dd HH:mm:ss',