ckgl/pages/colorBlank/chemical.vue
2025-02-05 17:28:38 +08:00

218 lines
5.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<script setup lang="ts">
import { onMounted, ref } from 'vue';
import { formatDate } from '../../utils/date';
import { showToast } from 'vant';
import { getAction } from '../../common/http';
const form = ref({ ybrq: formatDate(new Date()), list: [1, 2, 3, 4, 5], } as any)
const showPicker = ref(false)
const show = ref(false)
const popuList = ref([] as any[])
const list = ref([] as any[])
onMounted(() => {
getAction('/extraOption').then((res : any) => {
if (res.code === 200) {
list.value = JSON.parse(res.data.payload)
console.log(list.value);
}
})
})
const chooseDate = () => {
show.value = true
}
const onConfirmDate = (val : any) => {
form.value.ybrq = formatDate(val)
show.value = false
}
const onClickLeft = () => {
history.back()
}
const dataType = ref({} as any)
//选择框事件
const choosePic = (type : any) => {
showPicker.value = true
dataType.value = type
popuList.value = type.options.map((l : any) => ({ text: l.name, value: l.default }))
}
//选择框确认
const pickerConfirm = (val : any) => {
dataType.value.scz = val.selectedOptions[0].text
dataType.value.pdx = val.selectedOptions[0].value ? '符合' : '不符合'
showPickerCancel()
}
//取消
const showPickerCancel = () => {
showPicker.value = false
}
const h5ScanCode = ref(false);
function scanCode() {
// #ifdef H5
h5ScanCode.value = true;
// #endif
// #ifndef H5
uni.scanCode({
success: (res) => {
uni.showToast({
icon: "none",
title: res.result,
});
},
faile: (err : any) => {
console.log("err", err);
},
});
// #endif
}
function handleSuccess(res : any) {
h5ScanCode.value = false;
let tag = form.value.list.find((l) => l == res)
tag ? showToast('已存在该面料编号!') : form.value.list.push(res)
}
function handleFail(err : any) {
uni.showModal({
title: err.errName,
content: err.errMsg,
complete: () => {
h5ScanCode.value = false;
},
});
}
function handleClose() {
h5ScanCode.value = false;
}
</script>
<template>
<view class="flex">
<van-nav-bar title="理化报告" left-text="返回" left-arrow @click-left="onClickLeft" />
<view class="content">
<van-cell-group inset>
<van-field class="bor" label="验布日期" label-width="5em" colon v-model="form.ybrq" readonly
:rules="[{ required: true, message: '请填写' }]" @click="chooseDate()" />
<van-field label="面料信息" label-width="5em" colon>
<template #input>
<van-button type="primary" @click="scanCode">扫一扫</van-button>
</template>
</van-field>
<view class="grid-container">
<view class="grid-item" v-for="(item,index) in form.list">
<p style="width: 80%;">
{{item}}
</p>
<van-icon name="cross" @click="form.list.splice(index,1)"></van-icon>
</view>
</view>
<p class="lin"></p>
<p style="margin: 10rpx 0;">判断依据GB 18401-2010B国家放纺织产品基本安全技术规范</p>
<p class="lin"></p>
<p>检查结果如下:</p>
<view class="grid-container1">
<view class="grid-item1">项目</view>
<view class="grid-item1">标准值</view>
<view class="grid-item1">实测值</view>
<view class="grid-item1">单项判定</view>
</view>
<view class="grid-container1" v-for="(item,index) in list" :key="index">
<view class="grid-item1">{{item.name}}</view>
<view class="grid-item1">{{item.name1}}</view>
<view class="grid-item1">
<van-field class="bor" v-model="item.scz" readonly
:rules="item.necessary?[{ required: true, message: '请填写' }]:[]" @click="choosePic(item)" />
</view>
<view class="grid-item1">
{{item.pdx}}
</view>
</view>
</van-cell-group>
</view>
<van-field class="bor" label="操作人" label-width="4em" colon v-model="form.czr" readonly />
</view>
<van-calendar v-model:show="show" @confirm="onConfirmDate" :min-date="new Date(2010, 0, 1)"
:max-date="new Date(2050, 0, 31)" />
<!--选择框-->
<van-popup v-model:show="showPicker" round position="bottom">
<van-picker show-toolbar :columns="popuList" @confirm="pickerConfirm" @cancel="showPickerCancel"
ref="pickerRef" />
</van-popup>
<cshaptx4869-scancode v-if="h5ScanCode" @success="handleSuccess" @fail="handleFail"
@close="handleClose"></cshaptx4869-scancode>
</template>
<style lang="scss" scoped>
.flex {
display: flex;
flex-direction: column;
height: 100vh;
width: 100vw;
.van-nav-bar {
width: 100%;
}
.content {
flex: 1;
padding: 0 20rpx;
}
.grid-container {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
text-align: center;
}
.grid-item {
display: flex;
align-items: center;
border: 1rpx solid #81d3f8;
border-radius: 10rpx;
margin: 5rpx;
}
.grid-container1 {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr;
text-align: center;
align-items: center;
}
::v-deep .van-field {
font-size: 16px;
}
::v-deep .van-field__label {
display: flex;
justify-content: space-between;
}
::v-deep .van-button--normal {
padding: 5px 8px;
height: 30px;
}
::v-deep .van-field__control {
text-align: center;
font-size: 16px;
}
.bor {
::v-deep .van-field__control {
border: 1px solid #d7d7d7;
}
}
.lin {
border: 1rpx solid #000;
margin: 10rpx 0;
}
.line {
::v-deep .van-field__control {
border-bottom: 1px solid #d7d7d7;
}
}
}
</style>