feat:符号选择

This commit is contained in:
houjunxiang
2025-12-22 15:36:59 +08:00
parent 4d1e709be9
commit 164e305442
2 changed files with 78 additions and 15 deletions

View File

@@ -1,6 +1,15 @@
<template>
<view class="y-f" style="height: 55vh">
<view class="weight">
<view class="symbol">
<uni-data-select
v-if="showSymbol"
v-model="symbol"
:localdata="range"
placeholder="请选择符号"
:clear="false"
></uni-data-select>
</view>
<view class="weight-data">{{ nums }}</view>
</view>
@@ -35,6 +44,10 @@ const props = defineProps({
numKeyboardParam: {
type: Object,
default: () => null
},
showSymbol: {
type: Boolean,
default: false
}
})
@@ -43,6 +56,13 @@ const props = defineProps({
// Data
const nums = ref('')
const symbol = ref('')
const range = ref([
{ value: '=', text: '=' },
{ value: '<', text: '<' }
])
const numbers = ref([
{ text: '1' },
{ text: '2' },
@@ -60,8 +80,9 @@ const numbers = ref([
// Methods
const ok = () => {
const val = { val: nums.value }
const val = { val: nums.value, symbol: symbol.value }
nums.value = ''
symbol.value = ''
if (val.val) {
uni.$emit('keyboardOK', val)
}
@@ -69,10 +90,12 @@ const ok = () => {
const setNull = () => {
nums.value = ''
symbol.value = ''
uni.$emit('keyboardOK', null)
}
const clearNum = () => {
nums.value = ''
symbol.value = ''
}
const jianshao = () => {
if (nums.value) {
@@ -171,9 +194,15 @@ defineExpose({ clearNum })
flex: 1;
padding: 8px;
box-sizing: border-box;
display: flex;
align-items: center;
.symbol {
flex: 1;
}
}
.weight-data {
flex: 5;
color: #4cd964;
text-align: right;
letter-spacing: 5px;

View File

@@ -100,7 +100,8 @@
</view>
<zzjc-num-keyboard
ref="myKeyboard"
v-show="currentFillingWay == 'keyboard'"
v-show="currentFillingWay == 'keyboard' || (selectedField.type == 'project' && selectedField.isEdit)"
:showSymbol="selectedField.type == 'project' && selectedField.isEdit"
:numKeyboardParam="numKeyboardParam"
></zzjc-num-keyboard>
<view v-if="currentFillingWay == 'collect'" class="y-f">
@@ -140,12 +141,7 @@
<up-textarea v-model="inputValue" placeholder="请输入内容"></up-textarea>
<view class="x-c mt20 pl100 pr100">
<up-button @click="handleResetInputValue" style="width: 30%" :plain="true" text="清空"></up-button>
<up-button
@click="selectedField.value = inputValue"
style="width: 30%"
type="success"
text="确认"
></up-button>
<up-button @click="handleInputConfirm" style="width: 30%" type="success" text="确认"></up-button>
</view>
</view>
</u-col>
@@ -178,7 +174,8 @@
v-show="field.hidden != 1"
:class="{
'selected-field': groupFieldIndex === groupIndex + '-' + fieldIndex,
'disabled-field': !field.isEdit
'disabled-field': !field.isEdit,
'flex-column': field.dataType === 'datetime'
}"
>
<view
@@ -215,11 +212,16 @@
<!--普通输入框 使用文本显示-->
<view class="content-my-text" v-if="field.dataType != 'select'">
<text v-if="!field.value" class="content-my-text-placeholder">{{
!field.fillingWay || field.fillingWay == 'calculate' ? '计算值' : '请输入'
!field.fillingWay || field.fillingWay == 'calculate'
? '计算值'
: field.fillingWay == 'datetime'
? '请选择时间'
: '请输入'
}}</text>
<text
v-else
:class="['content-my-text-value', { 'field-high-light': field.highlight == 1 }]"
><text v-if="field.symbol !== '='" class="mr5">{{ field.symbol }}</text
>{{ field.value }}</text
>
</view>
@@ -244,6 +246,13 @@
</view>
</u-col>
</u-row>
<up-datetime-picker
:show="dateTimeShow"
v-model="dateTimeDefaultValue"
@confirm="handleDateConfirm"
@cancel="dateTimeShow = false"
mode="datetime"
></up-datetime-picker>
<!-- 天平选择-->
<auncel-select-popup
ref="auncelSelector"
@@ -311,6 +320,8 @@ let fieldGroup = ref([])
const collaHeights = ref([])
const cupNumKey = '杯号'
const inputValue = ref('')
const dateTimeShow = ref(false)
const dateTimeDefaultValue = ref(new Date())
function handleResetInputValue() {
inputValue.value = ''
@@ -366,14 +377,26 @@ const parameterClassifyChange = v => {
autoNextField()
}
function handleInputConfirm() {
selectedField.value.value = inputValue.value
autoNextField()
}
function handleDateConfirm(e) {
selectedField.value.value = nx.$dayjs(e.value).format('YYYY-MM-DD HH:mm:ss')
dateTimeShow.value = false
autoNextField()
}
const fieldClick = (field, key) => {
if (!field.isEdit) return
currentFillingIndex.value = 0
selectedField.value = field
groupFieldIndex.value = key
if (currentFillingWay.value === 'input') {
inputValue.value = field.value
}
selectedField.value = field
groupFieldIndex.value = key
if (currentFillingWay.value === 'datetime') {
dateTimeShow.value = true
}
if (myKeyboard.value) {
myKeyboard.value.clearNum()
}
@@ -772,7 +795,8 @@ const autoGenerateCupNum = () => {
if (currentIndex === 0) return
//取上一个样品的杯号
const sample = sampleDataList.value[currentIndex - 1]
cupNum = sample[cupNumFieldIndex.value].value
cupNum = sample[cupNumFieldIndex.value]?.value
if (!cupNum) return
//杯号赋值到当前样品
putCupNum(Number(cupNum) + 1, currentIndex, Number(cupNum))
}
@@ -1086,11 +1110,15 @@ const listenNumKeyboard = () => {
//自动补全小数位数
const decimalPosition = selectedField.value.decimalPosition
let val = res.val
const symbol = res.symbol
if (decimalPosition == null) {
selectedField.value.value = val
} else {
selectedField.value.value = handleRoundFiveNumber(val, decimalPosition)
}
if (symbol) {
selectedField.value.symbol = symbol
}
syncFieldValueByEqualParamNo()
calcAnalysisValue(fieldGroup.value)
//自动跳转下一个字段
@@ -1099,11 +1127,11 @@ const listenNumKeyboard = () => {
}, 60)
})
}
// 查找paramNo相同的列使其值同步
// 查找paramNo相同的列并且类型相同,使其值同步
function syncFieldValueByEqualParamNo() {
for (const group of fieldGroup.value) {
group.fields.forEach(field => {
if (field.paramNo === selectedField.value.paramNo) {
if (field.paramNo === selectedField.value.paramNo && field.type === selectedField.value.type) {
field.value = selectedField.value.value
}
})
@@ -1272,6 +1300,12 @@ onBackPress(() => {
.disabled-field {
background-color: #eee;
}
.flex-column {
display: flex;
flex-direction: column;
align-items: start;
padding: 4px;
}
.label-my {
flex: 5;
}