|
@@ -32,6 +32,41 @@
|
|
|
</div>
|
|
|
</van-form>
|
|
|
</van-popup>
|
|
|
+
|
|
|
+ <van-popup v-model:show="showDateTime" round :style="{ width: '80%' }" :close-on-click-overlay="false">
|
|
|
+ <van-form @submit="onSubmit" label-width="48">
|
|
|
+ <van-cell-group inset>
|
|
|
+ <van-field border v-model="port" label="端口" readonly name="port" />
|
|
|
+ <van-field
|
|
|
+ v-model="newVal"
|
|
|
+ label="值"
|
|
|
+ name="newVal"
|
|
|
+ type="text"
|
|
|
+ number="2.2"
|
|
|
+ placeholder="请输入数值"
|
|
|
+ :rules="[{ required: true, message: '请填写要设置的值' }]"
|
|
|
+ title="请选择日期时间"
|
|
|
+ is-link
|
|
|
+ readonly
|
|
|
+ border
|
|
|
+ @click="showPicker = true"
|
|
|
+ />
|
|
|
+ </van-cell-group>
|
|
|
+ <div class="van-button-group">
|
|
|
+ <van-button @click="handleCancel" size="small">取消</van-button>
|
|
|
+ <van-button type="primary" native-type="submit" size="small">确定</van-button>
|
|
|
+ </div>
|
|
|
+ </van-form>
|
|
|
+ </van-popup>
|
|
|
+
|
|
|
+ <van-popup v-model:show="showPicker" destroy-on-close round position="bottom">
|
|
|
+ <van-picker
|
|
|
+ :model-value="pickerValue"
|
|
|
+ :columns="columns"
|
|
|
+ @cancel="showPicker = false"
|
|
|
+ @confirm="PickerConfirm"
|
|
|
+ />
|
|
|
+ </van-popup>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -82,24 +117,85 @@ runtimeWorker.onmessage = (e) => {
|
|
|
}
|
|
|
const port = ref('AI0')
|
|
|
const showPopup = ref(false)
|
|
|
-const newVal = ref(0)
|
|
|
+const showPicker = ref(false)
|
|
|
+const showDateTime = ref(false)
|
|
|
+const newVal: any = ref(0)
|
|
|
+const columns = reactive([[{}], [{}], [{}], [{}], [{}], [{}]])
|
|
|
+const pickerValue = reactive([0, 0, 0, 0, 0, 0])
|
|
|
+
|
|
|
const onSubmit = () => {
|
|
|
runtimeWorker.postMessage({
|
|
|
type: popupType.value === 'AI' ? 'set' : 'time',
|
|
|
- val: newVal.value,
|
|
|
+ val: popupType.value === 'AI' ? newVal.value : (new Date(newVal.value).getTime() - new Date().getTime()) / 1000,
|
|
|
i: port.value.slice(-1)
|
|
|
})
|
|
|
handleCancel()
|
|
|
}
|
|
|
const handleCancel = () => {
|
|
|
showPopup.value = false
|
|
|
+ showDateTime.value = false
|
|
|
+ showPicker.value = false
|
|
|
newVal.value = 0
|
|
|
}
|
|
|
|
|
|
const updateTime = () => {
|
|
|
+ let len = columns.length
|
|
|
+ columns.splice(0, len) //清空数组
|
|
|
+ let date = new Date(crtPlcTime.value)
|
|
|
+ let year = []
|
|
|
+ for (let i = 0 ; i < 100 ; i++)
|
|
|
+ {
|
|
|
+ let y = date.getFullYear() - 10 + i
|
|
|
+ year.push({'text': y + '', value: y})
|
|
|
+ }
|
|
|
+ columns[0] = year
|
|
|
+ let month = []
|
|
|
+ for (let i = 0 ; i < 12 ; i++)
|
|
|
+ {
|
|
|
+ let m = i + 1
|
|
|
+ month.push({'text': String(m).padStart(2, '0'), value: m})
|
|
|
+ }
|
|
|
+ columns[1] = month
|
|
|
+ let day = []
|
|
|
+ for (let i = 0 ; i < 31 ; i++)
|
|
|
+ {
|
|
|
+ let d = i + 1
|
|
|
+ day.push({'text': String(d).padStart(2, '0'), value: d})
|
|
|
+ }
|
|
|
+ columns[2] = day
|
|
|
+ let hour = []
|
|
|
+ for (let i = 0 ; i < 24 ; i++)
|
|
|
+ {
|
|
|
+ hour.push({'text': String(i).padStart(2, '0'), value: i})
|
|
|
+ }
|
|
|
+ columns[3] = hour
|
|
|
+ let min_sec = []
|
|
|
+ for (let i = 0 ; i < 60 ; i++)
|
|
|
+ {
|
|
|
+ min_sec.push({'text': String(i).padStart(2, '0'), value: i})
|
|
|
+ }
|
|
|
+ columns[4] = min_sec
|
|
|
+ columns[5] = min_sec
|
|
|
+ pickerValue[0] = date.getFullYear()
|
|
|
+ pickerValue[1] = date.getMonth() + 1
|
|
|
+ pickerValue[2] = date.getDate()
|
|
|
+ pickerValue[3] = date.getHours()
|
|
|
+ pickerValue[4] = date.getMinutes()
|
|
|
+ pickerValue[5] = date.getSeconds()
|
|
|
+ newVal.value = crtPlcTime.value
|
|
|
popupType.value = 'time'
|
|
|
- port.value = `设备时间与系统时间差值`
|
|
|
- showPopup.value = true
|
|
|
+ port.value = `设备时间`
|
|
|
+ showDateTime.value = true
|
|
|
+}
|
|
|
+
|
|
|
+const PickerConfirm = (res: any) => {
|
|
|
+ newVal.value = String(res.selectedValues[0]) + '-' +
|
|
|
+ String(res.selectedValues[1]).padStart(2, '0') + '-' +
|
|
|
+ String(res.selectedValues[2]).padStart(2, '0') + ' ' +
|
|
|
+ String(res.selectedValues[3]).padStart(2, '0') + ':' +
|
|
|
+ String(res.selectedValues[4]).padStart(2, '0') + ':' +
|
|
|
+ String(res.selectedValues[5]).padStart(2, '0')
|
|
|
+ showPicker.value = false
|
|
|
}
|
|
|
|
|
|
let timer: any
|