From 9906987f77abf2f0669a44a877ad86ac730fdfdd Mon Sep 17 00:00:00 2001
From: 张磊磊 <201175954@qq.com>
Date: 星期二, 12 十二月 2023 12:08:01 +0800
Subject: [PATCH] 图片转换
---
web/src/views/GoodManage/MixingScreen.vue | 566 ++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 445 insertions(+), 121 deletions(-)
diff --git a/web/src/views/GoodManage/MixingScreen.vue b/web/src/views/GoodManage/MixingScreen.vue
index 5e6d786..38ccb70 100644
--- a/web/src/views/GoodManage/MixingScreen.vue
+++ b/web/src/views/GoodManage/MixingScreen.vue
@@ -1,17 +1,17 @@
-<!-- 设备管理 ==> 拌合站屏管理-->
+<!-- 物资管理 ==> 拌和站屏管理-->
<template>
<div class="main">
<div class="main_header">
<div class="header_item">
- <span class="header_label">拌合站屏:</span>
- <el-select size="mini" v-model="queryInfo.screen" placeholder="请选择拌合站屏">
- <el-option v-for="item in queryInfoScreens" :key="item.value" :label="item.label"
- :value="item.value"></el-option>
+ <span class="header_label">拌和站屏:</span>
+ <el-select size="mini" v-model="queryInfo.types" placeholder="请选择拌和站屏" clearable>
+ <el-option v-for="item in selects.screenNames" :key="item.value" :label="item.label"
+ :value="item.value2"></el-option>
</el-select>
</div>
<div class="header_item">
<span class="header_label">录入方式:</span>
- <el-select size="mini" v-model="queryInfo.inmode" placeholder="请选择录入方式">
+ <el-select size="mini" v-model="queryInfo.stata" placeholder="请选择录入方式" clearable>
<el-option v-for="item in queryInfoInmodes" :key="item.value" :label="item.label"
:value="item.value"></el-option>
</el-select>
@@ -19,40 +19,122 @@
<div class="header_item">
<span class="header_label">创建时间:</span>
<el-date-picker type="daterange" v-model="times" value-format="yyyy-MM-dd" start-placeholder="起始时间"
- end-placeholder="结束时间" @change="changeTime" clear></el-date-picker>
+ end-placeholder="结束时间" @change="changeTime" clearable></el-date-picker>
</div>
<div class="header_item">
- <el-button icon="el-icon-search" v-permission="'search'" @click="queryReset">查询</el-button>
- <el-button icon="el-icon-plus" v-permission="'insert'" @click="addRow">新增</el-button>
+ <el-button v-permission="'search'" @click="queryReset">查询</el-button>
+ <el-button v-permission="'insert'" @click="addRow">新增</el-button>
</div>
</div>
<div class="main_content">
- <div class="main_content_item" v-for="(item, index) in ['', '', '', '', '',]" :key="index">
-
+ <div class="main_content_wrap">
+ <div class="main_content_item" v-for="(list, index) in dataLists" :key="index">
+ <el-row>
+ <el-col :span="24 / list.length" v-for="(item, index) in list" :key="index">
+ <div class="head">
+ <span class="left_title">{{ item.siloName }}</span>
+ <span v-if="index + 1 === list.length" class="right_title">录入方式: <span style="color:#39B5FE">{{
+ queryInfoInmodeMap[item.stata] }}</span></span>
+ </div>
+ <div class="list">
+ <div class="item">
+ <span class="name">屏幕编号:</span>
+ <span class="value">{{ item.types }}</span>
+ </div>
+ <div class="item">
+ <span class="name">规格型号:</span>
+ <span class="value">{{ item.spec }}</span>
+ </div>
+ <div class="item">
+ <span class="name">产地名称:</span>
+ <span class="value">{{ item.producer }}</span>
+ </div>
+ <div class="item">
+ <span class="name">炉(批)号:</span>
+ <span class="value">{{ item.stove }}</span>
+ </div>
+ <div class="item">
+ <span class="name">进场数量:</span>
+ <span class="value">{{ item.inNum }}</span>
+ </div>
+ <div class="item">
+ <span class="name">进场日期:</span>
+ <span class="value">{{ item.inDate }}</span>
+ </div>
+ <div class="item">
+ <span class="name">检验日期:</span>
+ <span class="value">{{ item.inspectDate }}</span>
+ </div>
+ <div class="item">
+ <span class="name">检验状态:</span>
+ <span :class="['value', 'style' + item.inspectState]">{{ ruleFormStatuMap[item.inspectState] }}</span>
+ </div>
+ <div class="item">
+ <span class="name">报告编号:</span>
+ <span class="value">{{ item.reportNumber }}</span>
+ </div>
+ </div>
+ </el-col>
+ </el-row>
+ <el-row class="foot">
+ <el-button size="mini" v-permission="'delete'" @click="deleteRow(index)">删除</el-button>
+ <el-button size="mini" v-permission="'update'" @click="updateRow(index)">修改</el-button>
+ </el-row>
+ </div>
</div>
</div>
-
- <!-- 详情dialog -->
- <el-dialog width="400px" class="prop_dialog" v-if="isRenderDialog" title="详情" :visible.sync="asyncVisible">
-
- <el-form class="rule_form" label-width="auto">
-
- <div class="divider"></div>
-
- <el-form-item label="巡检任务:">{{ info.task }}</el-form-item>
-
- <el-form-item label="巡检标准:">{{ info.standard }}</el-form-item>
-
- <el-form-item label="巡检人员:">{{ info.name }}</el-form-item>
-
- <div class="divider"><span>巡检路线</span></div>
-
- <div class="regions">
- <div class="region" v-for=" item in info.regions " :key="item.regionId">{{
- item.region }}
- </div>
- </div>
+ <!-- dialog -->
+ <el-dialog class="prop_dialog" v-if="isRenderDialog" :title="dialogTitle" :visible.sync="asyncVisible"
+ @close="closeDialog">
+ <el-form ref="ruleForm" class="rule_form" :model="ruleForm" :rules="rules" label-width="auto">
+ <el-form-item label="拌和站屏:" prop="name">
+ <el-select size="mini" v-model="ruleForm.name" :disabled="isUpdate" placeholder="请选择拌和站屏"
+ @change="changeSelectForm($event)">
+ <el-option v-for="item in selects.screenNames" :key="item.value" :label="item.label"
+ :value="item.value"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-row :gutter="100">
+ <el-col :class="'elCol elCol' + index" :span="12" v-for="(item, index) in ruleForm.infos" :key="index">
+ <el-form-item label="屏幕编号:" :prop="`infos.${index}.num`">
+ <el-input v-model="item.num" size="mini" disabled></el-input>
+ </el-form-item>
+ <el-form-item label="规格型号:" :prop="`infos.${index}.spec`">
+ <el-input v-model="item.spec" size="mini" placeholder="请输入规格型号" clearable></el-input>
+ </el-form-item>
+ <el-form-item label="产地名称:" :prop="`infos.${index}.producer`">
+ <el-input v-model="item.producer" size="mini" placeholder="请输入产地名称" clearable></el-input>
+ </el-form-item>
+ <el-form-item label="炉(批)号:" :prop="`infos.${index}.stove`">
+ <el-input v-model="item.stove" size="mini" placeholder="请输入炉(批)号" clearable></el-input>
+ </el-form-item>
+ <el-form-item label="进场数量:" :prop="`infos.${index}.inNum`">
+ <el-input v-model="item.inNum" size="mini" placeholder="请输入进场数量" clearable></el-input>
+ </el-form-item>
+ <el-form-item label="进场日期:" :prop="`infos.${index}.inDate`">
+ <el-date-picker v-model="item.inDate" size="mini" value-format="yyyy-MM-dd" placeholder="请选择检验日期"
+ clearable></el-date-picker>
+ </el-form-item>
+ <el-form-item label="检验日期:" :prop="`infos.${index}.inspectDate`">
+ <el-date-picker v-model="item.inspectDate" size="mini" value-format="yyyy-MM-dd" placeholder="请选择检验日期"
+ clearable></el-date-picker>
+ </el-form-item>
+ <el-form-item label="检验状态:" :prop="`infos.${index}.inspectState`">
+ <el-select v-model="item.inspectState" size="mini" placeholder="请选择检验状态" clearable>
+ <el-option v-for="item in ruleFormStatus" :key="item.value" :label="item.label"
+ :value="item.value"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="报告编号:" :prop="`infos.${index}.reportNumber`">
+ <el-input v-model="item.reportNumber" size="mini" placeholder="请输入报告编号" clearable></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
</el-form>
+ <div slot="footer">
+ <el-button @click="asyncVisible = false">取 消</el-button>
+ <el-button class="submit_btn" @click="onSubmit('ruleForm')">提 交</el-button>
+ </div>
</el-dialog>
</div>
@@ -64,75 +146,270 @@
loading: false,
isRenderDialog: false,
asyncVisible: false,
-
- info: { // 详情信息
- task: '',
- standard: '',
- name: '',
- regions: [],
+ submitMode: '', // add update
+ dataLists: [], // [[],[],[]]
+ selects: {
+ screenNames: [], // 拌和站屏
+ screenNameIds: {}, // 拌和站屏id map
+ }, // 下拉框状态选择汇总
+ ruleForm: {
+ name: '', // 下拉框屏名称
+ mixingIds: '', // 修改id []
+ infos: [{
+ material: '', // 原料名称
+ siloId: '', // 屏幕编号id
+ num: '', // 屏幕编号
+ spec: '',
+ producer: '',
+ stove: '',
+ inNum: '',
+ inDate: '',
+ inspectDate: '',
+ inspectState: '',
+ reportNumber: '',
+ }, {
+ material: '',
+ siloId: '', // 屏幕id
+ num: '', // 屏幕编号
+ spec: '',
+ producer: '',
+ stove: '',
+ inNum: '',
+ inDate: '',
+ inspectDate: '',
+ inspectState: '',
+ reportNumber: '',
+ }]
},
- userId: '', // 存储点击后的用户id
- taskId: '', // 存储点击后的巡检任务id
times: [], // 时间范围
+ total: '',
queryInfo: {
pageNum: 1,
- pageSize: 10,
- inmode: '', // 录入方式
- screen: '', // 拌合站屏
- startTime: '',
+ pageSize: 9999,
+ stata: '', // 录入方式
+ types: '', // 拌和站屏
+ strTime: '',
endTime: '',
},
- regionInfos: { // 巡检路线详情
- isRenderDialog: false,
- asyncVisible: false,
- time: '', // 巡检时间
- region: '', // 巡检区域
- res: '', // 巡检结果
- img: '', // 上传的图片
- location: '', // 位置
- }
}
},
+ computed: {
+ dialogTitle() {
+ return this.submitMode === 'update' ? '修改' : '添加'
+ },
+ isUpdate() {
+ return this.submitMode === 'update'
+ },
+ },
beforeCreate() {
+ this.rules = {
+ name: [{required: true, message: '请选择拌和站屏', trigger: 'change'}],
+ infos: [{
+ num: [{required: true, message: '请输入', trigger: 'blur'}],
+ spec: [{required: true, message: '请输入', trigger: 'blur'}],
+ producer: [{required: true, message: '请输入', trigger: 'blur'}],
+ stove: [{required: true, message: '请输入', trigger: 'blur'}],
+ inNum: [{required: true, message: '请输入', trigger: 'blur'}],
+ inDate: [{required: true, message: '请输入', trigger: 'blur'}],
+ inspectDate: [{required: true, message: '请输入', trigger: 'blur'}],
+ inspectState: [{required: true, message: '请选择', trigger: 'blur'}],
+ reportNumber: [{required: true, message: '请输入', trigger: 'blur'}],
+ }, {
+ spec: [{required: true, message: '请输入', trigger: 'blur'}],
+ producer: [{required: true, message: '请输入', trigger: 'blur'}],
+ stove: [{required: true, message: '请输入', trigger: 'blur'}],
+ inNum: [{required: true, message: '请输入', trigger: 'blur'}],
+ inDate: [{required: true, message: '请输入', trigger: 'blur'}],
+ inspectDate: [{required: true, message: '请输入', trigger: 'blur'}],
+ inspectState: [{required: true, message: '请选择', trigger: 'blur'}],
+ reportNumber: [{required: true, message: '请输入', trigger: 'blur'}],
+ }]
+ }
+
this.queryInfoInmodes = [
- {value: '0', label: '手动'},
- {value: '1', label: '自动'},
+ {value: 1, label: '自动'},
+ {value: 2, label: '手动'},
]
- this.queryInfoScreens = [
- {value: '0', label: '1-1'},
- {value: '1', label: '1-2'},
+ this.queryInfoInmodeMap = {
+ 1: '自动',
+ 2: '手动',
+ }
+ this.ruleFormStatus = [
+ {value: 1, label: '合格'},
+ {value: 2, label: '不合格'},
+ {value: 3, label: '待检测'},
]
- this.$http = this.$api.Safety.RiskGrad.polling
+ this.ruleFormStatuMap = {
+ 1: '合格',
+ 2: '不合格',
+ 3: '待检测',
+ }
+ this.$http = this.$api.Materials.mixingSrcreen
},
created() {
- this.setTableColumn()
this.getLists()
+ this.getScreenNames()
},
methods: {
- // 获取table列表数据
+ // 获取table列表数据 [types相同的放一个数组]
getLists() {
let params = this.queryInfo
this.loading = true
- this.$http.taskcardGetlists(params).then(res => {
- if (res.statusMsg === 'ok') {
- console.log(res)
+ this.$http.getLists(params).then(res => {
+ if (res.statusMsg === 'ok' && res.data) {
+ let tempMap = {}
+ res.data.forEach(item => {
+ if (!tempMap[item.types]) {
+ tempMap[item.types] = []
+ }
+ tempMap[item.types].push({...item})
+ })
+ this.dataLists = Object.values(tempMap)
}
this.loading = false
})
},
- // 初始化 table 配置
- setTableColumn() {
+ // 获取配比屏名称
+ async getScreenNames() {
+ const params = {pageNum: 1, pageSize: 9999}
+ let {data} = await this.$http.getScreenNames(params)
+
+ let tempIds = {}
+ let tempTypes = {}
+ data.forEach(item => {
+ if (!tempIds[item.siloId]) {
+ tempIds[item.siloId] = {...item}
+ }
+
+ if (!tempTypes[item.types]) {
+ tempTypes[item.types] = []
+ }
+ tempTypes[item.types].push({...item})
+ })
+
+ let temps = []
+ Object.values(tempTypes).forEach(list => {
+ let value = ''
+ let label = ''
+ let type = ''
+ list.forEach((item, index) => {
+ value += item.siloId + ((index + 1) === list.length ? '' : ';')
+ label += item.siloName + ((index + 1) === list.length ? '' : ';')
+ type = item.types
+ })
+ temps.push({
+ label: label,
+ value: value,
+ value2: type,
+ })
+ })
+
+ this.selects.screenNames.push(...temps)
+ this.selects.screenNameIds = tempIds
},
- addRow() { },
// 查询按钮列表信息
queryReset() {
- this.queryInfo.pageNum = 1
- this.queryInfo.pageSize = 10
this.getLists()
+ },
+ resetForm(formName) {
+ this.$refs[formName].resetFields()
+ },
+ showDialog() {
+ return new Promise(resolve => {
+ if (!this.isRenderDialog) {
+ this.isRenderDialog = true
+ }
+
+ this.asyncVisible = true
+
+ this.$nextTick(() => {
+ resolve()
+ })
+ })
+ },
+ closeDialog() {
+ this.asyncVisible = false
+ this.resetForm('ruleForm')
+ },
+ addRow() {
+ this.submitMode = 'add'
+ this.showDialog()
+ },
+ updateRow(i) {
+ this.submitMode = 'update'
+ this.showDialog().then(() => {
+ let mixingIds = []
+ let nameIds = ''
+ this.dataLists[i].forEach((item, index) => {
+ nameIds += item.siloId + ((index + 1) === this.dataLists[i].length ? '' : ';')
+ mixingIds.push(item.siloId)
+ this.ruleForm.infos[index] = Object.assign(this.ruleForm.infos[index], this.dataLists[i][index])
+ })
+ this.ruleForm.name = nameIds
+ this.ruleForm.mixingIds = mixingIds
+ this.changeSelectForm(nameIds)
+ })
+ },
+ deleteRow(i) {
+ this.$confirm("该操作将删除该信息,是否继续删除?", "提示", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning"
+ }).then(() => {
+ let mixingIds = []
+ this.dataLists[i].forEach(item => {
+ mixingIds.push(item.mixingId)
+ })
+ this.$http.delete({mixingIds: mixingIds}).then(res => {
+ if (res.statusMsg === 'ok') {
+ this.getLists()
+ this.$message.success("删除成功!")
+ } else {
+ this.$message.warning(res.statusMsg)
+ }
+ })
+ })
+ },
+ onSubmit(formName) {
+ this.$refs[formName].validate((valid) => {
+ if (!valid) return false
+ const params = {mixingList: this.ruleForm.infos}
+ if (this.isUpdate) {
+ // 更新
+ this.$http.update(params).then((res) => {
+ if (res.statusMsg === 'ok') {
+ this.closeDialog()
+ this.getLists()
+ this.$message.success('更新成功!')
+ } else {
+ this.$message.warning(res.statusMsg)
+ }
+ })
+ } else {
+ // 添加
+ this.$http.insert(params).then((res) => {
+ if (res.statusMsg === 'ok') {
+ this.closeDialog()
+ this.getLists()
+ this.$message.success('添加成功!')
+ } else {
+ this.$message.warning(res.statusMsg)
+ }
+ })
+ }
+ })
+ },
+ changeSelectForm(value) {
+ let ids = value && value.split(';')
+ ids.forEach((item, index) => {
+ this.ruleForm.infos[index].siloId = item
+ this.ruleForm.infos[index].material = this.selects.screenNameIds[item].siloName
+ this.ruleForm.infos[index].num = this.selects.screenNameIds[item].types
+ })
},
changeTime(times) {
times = times || ['', '']
- this.queryInfo.startTime = times[0]
+ this.queryInfo.strTime = times[0]
this.queryInfo.endTime = times[1]
},
}
@@ -142,61 +419,108 @@
<style lang="scss" scoped>
@import '@/style/layout-main.scss';
-.rule_form {
- color: #fff;
-
- ::v-deep .el-form-item__content {
- display: block;
- }
-
- .image {
- flex: none;
- width: 91px;
- height: 120px;
- margin-right: 15px;
- border-radius: 5px;
- border: 1px solid #0c5983;
-
- img {
- width: 100%;
- }
- }
+.main_content_wrap {
+ height: 100%;
+ overflow: auto;
}
-.regions {
- text-align: center;
-
- .region {
- line-height: 34px;
- margin-bottom: 16px;
- background: rgba(56, 175, 247, .25);
- cursor: pointer;
- }
-}
-
-.divider {
- position: relative;
- margin-bottom: 30px;
- text-indent: 10px;
- color: #fff;
- border-left: 3px solid #18F6F8;
-
- &::after {
- content: "";
- position: absolute;
- left: 0;
- bottom: -8px;
- width: 100%;
- padding: 20px 0;
- border-bottom: 1px solid #0C4D6F;
- }
-}
-
-.main_content .main_content_item {
+.main_content_item {
+ overflow: hidden;
float: left;
width: 48%;
- height: 200px;
margin: 1%;
- border: 1px solid red;
+ font-size: 15px;
+ color: #ddd;
+ border: 1px solid #39B5FE;
+ border-radius: 5px;
+
+ .el-row {
+ border: 1px solid #39B5FE;
+ margin: -1px;
+
+ .el-col {
+ height: 100%;
+ margin: 0 0 0 -1px;
+ border-left: 1px solid #39B5FE;
+ }
+ }
+
+ .head {
+ height: 40px;
+ margin: -1px;
+ line-height: 40px;
+ text-indent: 30px;
+ background: rgba(30, 95, 147, .6);
+ border: 1px solid #39B5FE;
+
+ .left_title {
+ float: left;
+ }
+
+ .right_title {
+ float: right;
+ margin-right: 10px;
+ }
+ }
+
+ .list {
+ padding: 0 10px 20px 10px;
+
+ .item {
+ display: flex;
+ flex: 1;
+ margin-top: 20px;
+
+ .name {
+ margin-right: 8px;
+ text-indent: 6px;
+ white-space: nowrap;
+ }
+
+ .value {
+ color: #39B5FE;
+
+ &.style1 {
+ font-size: 20px;
+ line-height: 20px;
+ color: #16F849;
+ }
+
+ &.style2 {
+ font-size: 20px;
+ line-height: 20px;
+ color: red;
+ }
+
+ &.style3 {
+ font-size: 20px;
+ line-height: 20px;
+ color: #FF6600;
+ }
+ }
+
+ }
+ }
+
+ .foot {
+ height: 40px;
+ line-height: 40px;
+ text-align: center;
+
+ .el-button {
+ padding: 6px 20px
+ }
+ }
+
+
+
+}
+
+.rule_form {
+ overflow-x: hidden;
+
+ .elCol0 {
+ border-right: 1px solid #39B5FE;
+ }
}
</style>
\ No newline at end of file
--
Gitblit v1.9.3