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

View File

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