自动化页面ui

feasure
lld 2026-02-27 02:57:45 +08:00
parent c3b30deadb
commit 55da5697d5
3 changed files with 171 additions and 54 deletions

View File

@ -90,7 +90,7 @@
<tn-button :shadow="true" class="message__right" width="150rpx" height="100rpx"
:fontSize="40" shape="icon" margin="10rpx 10rpx" @click="openSlider('vent', index)">
<view class="message__name">风口</view>
<view class="message__content tn-text-ellipsis">{{ formatValueWithUnit(item.vent, '%') }}</view>
<view class="message__content tn-text-ellipsis">{{ formatValueWithUnit(item.vent, 'cm') }}</view>
</tn-button>
<!-- <view class="message__tag">阶段{{index+1}}</view>-->
</view>
@ -98,7 +98,7 @@
</uni-swipe-action>
</view>
<view class="add-term" >
<view class="add-term">
<uni-icons color="var(--cyan)" type="plus" size="40" @click="addTerm"/>
<text @click="addTerm"></text>
</view>
@ -142,27 +142,46 @@
<uni-popup ref="autoParam" mode="center">
<!-- 新增修改运行时间的弹窗 -->
<view class="modal-container">
<view class="modal-container_">
<view class="modal-title">{{ `${selectedText} - ${filmRollerList[current]}】风口校准`}}</view>
<view class="modal-input-wrap">
<text class="modal-label">计算风口总长</text>
<text class="modal-current">{{ currentCardTime > 0 ? `${currentCardTime}` : '未设置' }}</text>
</view>
<view class="modal-input-wrap">
<text class="modal-label">修改后时间</text>
<input
class="modal-input"
type="number"
v-model.number="newLimitTime"
/>
<!-- <uni-number-box v-model="newLimitTime" />-->
<text class="modal-unit"></text>
</view>
<view class="modal-input-wrap">
<text class="modal-label">别名设置</text>
<uni-easyinput style="width: 100px" v-model="remark" placeholder="不填展示默认备注"/>
</view>
<uni-forms :model="rollerParam" ref="form" :labelWidth="130" >
<uni-forms-item label="当前卷膜:" prop="refTemp" v-if="false">
<uni-easyinput type="text" placeholderStyle="font-size: 25rpx;" v-model="rollerParam.roller"
disabled :inputBorder="false" :clearable="false"/>
</uni-forms-item>
<uni-forms-item label="参考温度:" prop="refTemp" v-if="false">
<uni-easyinput type="text" placeholderStyle="font-size: 25rpx;" v-model="rollerParam.refTemp"
disabled :inputBorder="false" :clearable="false"/>
</uni-forms-item>
<uni-forms-item label="计算风口长度:" prop="autoTotalLen" :labelWidth="124">
<uni-easyinput type="number" placeholderStyle="font-size: 25rpx;" v-model="rollerParam.autoTotalLen"
placeholder="风口校准完成自动写入" disabled
:inputBorder="false" :clearable="false">
<template #right>
<view>cm</view>
</template>
</uni-easyinput>
</uni-forms-item>
<uni-forms-item label="手动设置:" prop="manualTotalLen" :labelWidth="95">
<uni-easyinput type="number" placeholderStyle="font-size: 25rpx;" v-model="rollerParam.manualTotalLen"
placeholder="可在此处手动校准风口长度"
:inputBorder="false" :clearable="false">
<template #right>
<view>cm</view>
</template>
</uni-easyinput>
</uni-forms-item>
<uni-forms-item label="预留风口长度:" prop="reservedLen" :required="true" :labelWidth="135">
<uni-easyinput type="number" placeholderStyle="font-size: 25rpx;" v-model="rollerParam.reservedLen"
placeholder="请输入预留风口长度"
:inputBorder="false" :clearable="false">
<template #right>
<view>cm</view>
</template>
</uni-easyinput>
</uni-forms-item>
</uni-forms>
<view class="modal-btn-wrap">
<button class="modal-btn cancel" @click="closeParamDialog"></button>
<button class="modal-btn confirm" @click="setAutoParam"></button>
@ -206,6 +225,7 @@ import store from "../../../store";
import {addRemark, updateRemark} from "../../../api/system/assets/remark";
import {generateUniqueId} from "../../../utils/agri";
import UniSection from "../../../components/uni-section/uni-section.vue";
import UniFormsItem from "../../../uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue";
export default {
dicts: ['sys_data_map'],
@ -282,6 +302,7 @@ export default {
}
},
components: {
UniFormsItem,
UniSection,
UniPopup //
},
@ -313,19 +334,19 @@ export default {
filmRollerList:["卷膜1", "卷膜2", "卷膜3"],
tempList: [
{
value: '1',
value: '201',
label: '温度1'
},
{
value: '2',
value: '202',
label: '温度2'
},
{
value: '3',
value: '203',
label: '温度3'
},
{
value: '4',
value: '204',
label: '温度4'
}
],
@ -335,14 +356,29 @@ export default {
"jm1": [],
"jm1Param":{
refTemp: '请选择',
refTempCode: null,
autoTotalLen: null,
manualTotalLen: null,
reservedLen: null,
roller:'jm1'
},
"jm2": [],
"jm2Param":{
refTemp: '请选择',
refTempCode: null,
autoTotalLen: null,
manualTotalLen: null,
reservedLen: null,
roller:'jm2'
},
"jm3": [],
"jm3Param":{
refTemp: '请选择'
refTemp: '请选择',
refTempCode: null,
autoTotalLen: null,
manualTotalLen: null,
reservedLen: null,
roller:'jm3'
},
},
options: [
@ -365,7 +401,7 @@ export default {
},
selectTime: false,
timeTag: null,
follerIndex: null,
rollerIndex: null,
defaultTime: null,
maxTermLength: 5,
autoParam:false,
@ -377,6 +413,13 @@ export default {
unit:'',
mode: null
},
rollerParam: {
roller: null,
refTemp: '请选择',
autoTotalLen: null,
manualTotalLen: null,
reservedLen: null
},
};
},
@ -392,7 +435,7 @@ export default {
//
confirmTemp(event) {
this.termList[this.term[this.current] + 'Param'].refTemp = event[0]['label']
console.info(`选择温度:${event[0]['label']}`)
this.termList[this.term[this.current] + 'Param'].refTempCode = event[0]['value']
},
//
refresh() {
@ -400,14 +443,17 @@ export default {
"jm1": [],
"jm1Param":{
refTemp: '请选择',
refTempCode: null,
},
"jm2": [],
"jm2Param":{
refTemp: '请选择',
refTempCode: null,
},
"jm3": [],
"jm3Param":{
refTemp: '请选择'
refTemp: '请选择',
refTempCode: null,
},
};
this.showFlag = !((store.getters && store.getters.name !== 'admin') && this.$auth.hasRole("test"))
@ -615,8 +661,8 @@ export default {
},
//
addTerm() {
var tempList = this.termList[this.term[this.current]];
if (tempList.length >= this.maxTermLength) {
var temps = this.termList[this.term[this.current]];
if (temps.length >= this.maxTermLength) {
this.$modal.alert(`您设置的条件数量已超过上限!上限为${this.maxTermLength}条,请删除后重试!`,
"操作提示");
return;
@ -664,16 +710,29 @@ export default {
//
changeTime(timeTag, timeIndex) {
this.timeTag = timeTag;
this.follerIndex = timeIndex;
this.rollerIndex = timeIndex;
this.selectTime = true;
},
openParamDialog() {
this.rollerParam = JSON.parse(JSON.stringify(this.termList[this.term[this.current] + 'Param']));
// this.rollerParam.roller = this.term[this.current];
this.$refs.autoParam.open();
},
//
setAutoParam() {
var jmTerm = this.term[this.current];
// todo
// 2.
const isValid = this.rollerParam.manualTotalLen > 0 || this.rollerParam.autoTotalLen > 0;
if (!isValid) {
this.$modal.alert(`计算风口总长和手动设置风口长度至少填写一个!`,
"操作提示");
return;
}
if (!(this.rollerParam.reservedLen && this.rollerParam.reservedLen > 0)) {
this.$modal.alert(`请填写预留风口!`,
"操作提示");
return;
}
this.termList[this.term[this.current] + 'Param'] = {...this.rollerParam}
this.$refs.autoParam.close();
},
closeParamDialog() {
@ -681,7 +740,7 @@ export default {
},
//
confirmTime(time) {
this.termList[this.term[this.current]][this.follerIndex][this.timeTag] = `${time.hour}:${time.minute}`
this.termList[this.term[this.current]][this.rollerIndex][this.timeTag] = `${time.hour}:${time.minute}`
},
/**
* @param tag 参数
@ -708,7 +767,7 @@ export default {
mode: tag
}
}
this.follerIndex = index;
this.rollerIndex = index;
this.$refs.sliderDialog.open();
},
changeSlider(e) {
@ -721,29 +780,72 @@ export default {
const slideMode = this.slider.mode;
const value = this.slider.value;
if (slideMode === 'temp') {
this.termList[this.term[this.current]][this.follerIndex].temp = value;
this.termList[this.term[this.current]][this.rollerIndex].temp = value;
} else if (slideMode === 'vent') {
this.termList[this.term[this.current]][this.follerIndex].vent = value;
this.termList[this.term[this.current]][this.rollerIndex].vent = value;
}
this.$refs.sliderDialog.close();
},
//
saveAutoTerm() {
var termMap = this.termList;
// todo
const termMap = this.termList;
const rollerList = [];
let showTips = null;
// todo
// uni.showModal({
// title: '',
// content: '',
// cancelText: '',
// confirmText: '',
// success: async (res) => {
//
// }
// })
const checkRules = [
{
tip: '参考温度未设置,请点击相应页签左上角设置后重试!',
validate: (rollerParam, term) => rollerParam.refTemp === '请选择'
},
{
tip: '计算风口总长和手动设置风口长度至少填写一个!请填写后重试!',
validate: (rollerParam, term) => !((rollerParam.manualTotalLen && rollerParam.manualTotalLen > 0) ||
(rollerParam.autoTotalLen && rollerParam.autoTotalLen > 0))
},
{
tip: '预留风口长度未设置,请点击相应页签右上角设置后重试!',
validate: (rollerParam, term) => !(rollerParam.reservedLen && rollerParam.reservedLen > 0)
},
{
tip: '温度控制未设置,请设置后重新尝试!',
validate: (rollerParam, term) => !(term && term.length > 0)
},
{
tip: '温度控制运行时间填写不完整,请检查填写后重新尝试!',
validate: (rollerParam, term) => term.filter(item => !((item.startTime && item.startTime!=='请选择时间') ||
(item.endTime && item.endTime !== '请选择时间')))
},
{
tip: '温度控制适宜温度填写不完整,请填写后重新尝试!',
validate: (rollerParam, term) => term.filter(item => !(item.temp && item.temp!=='选择'))
},
{
tip: '温度控制风口开合大小填写不完整,请填写后重新尝试!',
validate: (rollerParam, term) => term.filter(item => !(item.vent && item.vent!=='选择'))
}
];
// todo
for (const [_, rule] of checkRules.entries()) {
for (const [index, item] of this.term.entries()) {
const term = termMap[item]; //
const rollerParam = termMap[item + 'Param']; //
const filmRoller = this.filmRollerList[index];
if (!rollerParam) {
this.$tn.message.toast('参数设置失败,请下拉刷新后重试!')
return;
} else if (rule.validate(rollerParam, term)) {
rollerList.push(filmRoller);
showTips = rule.tip;
}
}
if (rollerList.length>0) {
this.$tn.message.toast(`${rollerList.join("")}${showTips}`);
return;
}
}
}
},
}
};
</script>
@ -848,13 +950,15 @@ export default {
}
/* 新增:弹窗样式 */
.modal-container {
.modal-container, .modal-container_ {
width: 600rpx;
background: #fff;
border-radius: 16rpx;
padding: 30rpx 20rpx;
}
.modal-container_{
padding: 30rpx 40rpx;
}
.modal-title {
font-size: 30rpx;
font-weight: 500;
@ -1046,4 +1150,15 @@ export default {
/deep/ .uni-slider-handle-wrapper {
height: 10rpx !important;
}
/deep/ .uni-forms-item {
border-bottom: 1rpx solid #E5E5E5;
.uni-forms-item__label {
font-size: 28rpx;
color: #0a0a0a;
}
}
/deep/ .uni-input-input {
text-align: right !important;
font-size: 28rpx;
}
</style>

View File

@ -495,6 +495,9 @@ export default {
if (res.confirm) {
// todo
this.currentMode = mode
if (!mode) {
this.change(this.imei)
}
}
}
})

View File

@ -184,7 +184,6 @@ export default {
//
if (newVal) {
this.imei = this.value
console.info(this.liveData)
}
}
}