Browse Source

fix: SBBJ-790app巡检点检,点击重置,内容应重置,现没有重置

master
张立 4 months ago
parent
commit
7584aaf377
  1. 329
      src/pages/spotCheckOrder/addForm.vue

329
src/pages/spotCheckOrder/addForm.vue

@ -5,26 +5,23 @@
<u-form-item label="点检描述" prop="describes" required> <u-form-item label="点检描述" prop="describes" required>
<u-input v-model="form.describes" placeholder="请输入点检描述" /> <u-input v-model="form.describes" placeholder="请输入点检描述" />
</u-form-item> </u-form-item>
<u-form-item :label="`${type=='DEVICE'?'设备' : '模具'}编码`" prop="deviceNumber" required> <u-form-item :label="`${type == 'DEVICE' ? '设备' : '模具'}编码`" prop="deviceNumber" required>
<u-input v-model="form.deviceNumber" :placeholder="`请输入${type=='DEVICE'?'设备' : '模具'}编码`" @blur="blur" <u-input v-model="form.deviceNumber" :placeholder="`请输入${type == 'DEVICE' ? '设备' : '模具'}编码`" @blur="blur" @confirm="blur()" />
@confirm='blur()' /> <view class="right-button" @click="chickRightButton"> 扫描 </view>
<view class="right-button" @click="chickRightButton">
扫描
</view>
</u-form-item> </u-form-item>
<u-form-item :label="`${type=='DEVICE'?'设备' : '模具'}名称`" prop="deviceName" required class="disabled"> <u-form-item :label="`${type == 'DEVICE' ? '设备' : '模具'}名称`" prop="deviceName" required class="disabled">
<u-input v-model="form.deviceName" :placeholder="`请输入${type=='DEVICE'?'设备' : '模具'}名称`" disabled /> <u-input v-model="form.deviceName" :placeholder="`请输入${type == 'DEVICE' ? '设备' : '模具'}名称`" disabled />
</u-form-item> </u-form-item>
<u-form-item label="点检人" prop="name" required class="disabled"> <u-form-item label="点检人" prop="name" required class="disabled">
<u-input v-model=" store.name" placeholder="请输入点检人" disabled /> <u-input v-model="store.name" placeholder="请输入点检人" disabled />
</u-form-item> </u-form-item>
<u-form-item label="班次" prop="classes" required> <u-form-item label="班次" prop="classes" required>
<view class="select" @click="openSingleColumn('classes',form.classes,maintenanceShift)"> <view class="select" @click="openSingleColumn('classes', form.classes, maintenanceShift)">
<view class="input" v-if='form.classes'> <view class="input" v-if="form.classes">
{{form.classesName}} {{ form.classesName }}
</view> </view>
<view class="placeholder" v-else> <view class="placeholder" v-else>
{{`请选择班次`}} {{ `请选择班次` }}
</view> </view>
<u-icon name="arrow-right" color="#aaaaaa" size="28"></u-icon> <u-icon name="arrow-right" color="#aaaaaa" size="28"></u-icon>
</view> </view>
@ -34,20 +31,18 @@
<!-- <view class="title"> <!-- <view class="title">
<span></span>备件 <span></span>备件
</view> --> </view> -->
<view class="item " v-for="(item,index) in subList" :key="index"> <view class="item" v-for="(item, index) in subList" :key="index">
<view class="item-box"> <view class="item-box">
<view class="spare-title"> <view class="spare-title">
<view class="title-txt"> <view class="title-txt">
{{item.name}} {{ item.name }}
</view> </view>
</view> </view>
<u-row gutter="16"> <u-row gutter="16">
<u-col :span="12"> <u-col :span="12">
<view class="dec"> <view class="dec">
<view class=""> <view class=""> 设备部位名称: </view>
设备部位名称: <view>{{ item.equipmentParts }}</view>
</view>
<view>{{item.equipmentParts}}</view>
</view> </view>
<view class="dec"> <view class="dec">
<!-- <view style="margin-right: 20rpx;">是否符合:</view><u-switch v-model="item.isConform1"></u-switch> --> <!-- <view style="margin-right: 20rpx;">是否符合:</view><u-switch v-model="item.isConform1"></u-switch> -->
@ -63,25 +58,19 @@
<u-radio name="TRUE">符合</u-radio> <u-radio name="TRUE">符合</u-radio>
<u-radio name="FALSE">不符合</u-radio> <u-radio name="FALSE">不符合</u-radio>
</u-radio-group> </u-radio-group>
</view> </view>
<view class="dec"> <view class="dec">
<view class=""> <view class="">
<span v-if="item.numberNeedSwitch" class="required">*</span> <span v-if="item.numberNeedSwitch" class="required">*</span>
巡检点检记录: 巡检点检记录:
</view> </view>
<u-input <u-input v-model="item.records" :placeholder="'请输入巡检点检记录'" :class="{ error: item.numberNeedSwitch && !item.records }" />
v-model="item.records"
:placeholder="'请输入巡检点检记录'"
:class="{'error': item.numberNeedSwitch && !item.records}"
/>
</view> </view>
<view class="image" style="margin-top: 20rpx;"> <view class="image" style="margin-top: 20rpx">
<view class="image-list" :key="refreshKey"> <view class="image-list" :key="refreshKey">
<view class="image-item" v-for="(element,index) in item.imgList" :key="index"> <view class="image-item" v-for="(element, index) in item.imgList" :key="index">
<image :src="element" mode=""></image> <image :src="element" mode=""></image>
<u-icon name="close-circle-fill" color="red" class="close" size="36" @click="delImage(index)"> <u-icon name="close-circle-fill" color="red" class="close" size="36" @click="delImage(index)"> </u-icon>
</u-icon>
</view> </view>
</view> </view>
<view class="image-item image-item1" @click="chooseImage(item)"> <view class="image-item image-item1" @click="chooseImage(item)">
@ -101,39 +90,34 @@
<view class="footer"> <view class="footer">
<view class="btns"> <view class="btns">
<button class="reset" @click="reset">重置</button> <button class="reset" @click="reset">重置</button>
<button class="sure" @click="submit" :loading='loading' :disabled='loading'>确定</button> <button class="sure" @click="submit" :loading="loading" :disabled="loading">确定</button>
</view> </view>
<view style="height: constant(safe-area-inset-bottom); height: env(safe-area-inset-bottom);"></view> <view style="height: constant(safe-area-inset-bottom); height: env(safe-area-inset-bottom)"></view>
</view> </view>
<u-select v-model="singleColumnShow" mode="single-column" :default-value='singleColumnDefaultValue' <u-select v-model="singleColumnShow" mode="single-column" :default-value="singleColumnDefaultValue" :list="singleColumnList" @confirm="chooseSingleColumn" @cancle="singleColumnShow = false"></u-select>
:list="singleColumnList" @confirm="chooseSingleColumn" @cancle='singleColumnShow = false'></u-select>
</view> </view>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { import { onLoad } from '@dcloudio/uni-app'
onLoad import { ref, getCurrentInstance } from 'vue'
} from '@dcloudio/uni-app'
import {
ref,
getCurrentInstance
} from 'vue'
import * as deviceApi from "@/api/device" import * as deviceApi from '@/api/device'
import * as moldApi from "@/api/mold" import * as moldApi from '@/api/mold'
import * as spotCheckOrderApi from "@/api/spotCheckOrder" import * as spotCheckOrderApi from '@/api/spotCheckOrder'
import * as dictApi from "@/api/dict" import * as dictApi from '@/api/dict'
import { useCountStore } from '@/store' import { useCountStore } from '@/store'
import * as uploadApi from "@/api/upload" import * as uploadApi from '@/api/upload'
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
// store // store
const store = useCountStore() const store = useCountStore()
const loading = ref(false) const loading = ref(false)
const type = ref('') const type = ref('')
const imgList = ref([]) const imgList = ref([])
const list = ref([{ const list = ref([
{
name: 'apple', name: 'apple',
disabled: false disabled: false
}, },
@ -144,114 +128,123 @@
{ {
name: 'orange', name: 'orange',
disabled: false disabled: false
}]) }
const form = ref({ ])
describes: "", const form = ref({
describes: '',
deviceNumber: '', deviceNumber: '',
deviceName: '', deviceName: '',
maintenances: '', maintenances: '',
classes: '', classes: '',
classesName: '' classesName: ''
}) })
const singleColumnShow = ref(false) const singleColumnShow = ref(false)
const singleColumnDefaultValue = ref([]) const singleColumnDefaultValue = ref([])
const singleColumnList = ref([]) const singleColumnList = ref([])
const field = ref('') const field = ref('')
const maintenanceShift = ref([]) const maintenanceShift = ref([])
const subList = ref([]) const subList = ref([])
const refreshKey = ref(0); const refreshKey = ref(0)
// //
function chickRightButton(field) { function chickRightButton(field) {
uni.scanCode({ uni.scanCode({
success: function (res) { success(res) {
form.value.deviceNumber = res.result form.value.deviceNumber = res.result
getDetailsByNumber() getDetailsByNumber()
getSubList() getSubList()
} }
}); })
} }
function blur() { function blur() {
if (form.value.deviceNumber) { if (form.value.deviceNumber) {
getDetailsByNumber() getDetailsByNumber()
getSubList() getSubList()
} }
} }
// / // /
function getDetailsByNumber() { function getDetailsByNumber() {
const data = { const data = {
number: form.value.deviceNumber, number: form.value.deviceNumber,
flag: 2 flag: 2
} }
if (type.value == 'MOLD') { if (type.value == 'MOLD') {
moldApi.getMoldDetailsByNumber(data).then((res) => { moldApi
.getMoldDetailsByNumber(data)
.then((res) => {
if (res.data) { if (res.data) {
form.value.deviceName = res.data.name form.value.deviceName = res.data.name
} else { } else {
proxy.$modal.showToast(`找不到该${type.value == 'DEVICE' ? '设备' : '模具'}`) proxy.$modal.showToast(`找不到该${type.value == 'DEVICE' ? '设备' : '模具'}`)
} }
}).catch(() => { }) })
.catch(() => {})
} else { } else {
deviceApi.getDeviceDetailsByNumber(data).then((res) => { deviceApi
.getDeviceDetailsByNumber(data)
.then((res) => {
if (res.data) { if (res.data) {
form.value.deviceName = res.data.name form.value.deviceName = res.data.name
} else { } else {
proxy.$modal.showToast(`找不到该${type.value == 'DEVICE' ? '设备' : '模具'}`) proxy.$modal.showToast(`找不到该${type.value == 'DEVICE' ? '设备' : '模具'}`)
} }
}).catch(() => { }) })
} .catch(() => {})
} }
// }
function getSubList() { //
function getSubList() {
const data = { const data = {
number: form.value.deviceNumber number: form.value.deviceNumber
} }
deviceApi.getSubList(data).then((res) => { deviceApi
.getSubList(data)
.then((res) => {
if (res.data) { if (res.data) {
subList.value = res.data subList.value = res.data
subList.value.forEach(item => { subList.value.forEach((item) => {
item.isConform = 'TRUE' item.isConform = 'TRUE'
item.records = '' item.records = ''
}) })
} else { } else {
proxy.$modal.showToast(`找不到该${type.value == 'DEVICE' ? '设备' : '模具'}`) proxy.$modal.showToast(`找不到该${type.value == 'DEVICE' ? '设备' : '模具'}`)
} }
}).catch(() => { }) })
} .catch(() => {})
// }
function submit() { //
function submit() {
// //
if (!form.value.describes) { if (!form.value.describes) {
proxy.$modal.showToast('请输入点检描述'); proxy.$modal.showToast('请输入点检描述')
return; return
} }
if (!form.value.deviceNumber) { if (!form.value.deviceNumber) {
proxy.$modal.showToast(`请输入${type.value == 'DEVICE' ? '设备' : '模具'}编码`); proxy.$modal.showToast(`请输入${type.value == 'DEVICE' ? '设备' : '模具'}编码`)
return; return
} }
if (!form.value.classes) { if (!form.value.classes) {
proxy.$modal.showToast('请选择班次'); proxy.$modal.showToast('请选择班次')
return; return
} }
if (subList.value.length == 0) { if (subList.value.length == 0) {
proxy.$modal.showToast('该设备无检修项目'); proxy.$modal.showToast('该设备无检修项目')
return; return
} }
// subList // subList
let hasError = false; let hasError = false
subList.value.forEach(item => { subList.value.forEach((item) => {
if (item.numberNeedSwitch && !item.records) { if (item.numberNeedSwitch && !item.records) {
hasError = true; hasError = true
item.error = true; // item.error = true //
} else { } else {
item.error = false; // item.error = false //
} }
}); })
if (hasError) { if (hasError) {
proxy.$modal.showToast('请填写所有必填的巡检点检记录'); proxy.$modal.showToast('请填写所有必填的巡检点检记录')
return; return
} }
const data = { const data = {
@ -261,115 +254,121 @@
classes: form.value.classes, classes: form.value.classes,
subList: subList.value, subList: subList.value,
type: type.value type: type.value
}; }
proxy.$modal.confirm('是否添加点检工单').then(() => { proxy.$modal.confirm('是否添加点检工单').then(() => {
proxy.$modal.loading('加载中'); proxy.$modal.loading('加载中')
loading.value = true; loading.value = true
spotCheckOrderApi.spotCheckOrderCreate(data, type.value).then((res) => { spotCheckOrderApi
proxy.$modal.closeLoading(); .spotCheckOrderCreate(data, type.value)
.then((res) => {
proxy.$modal.closeLoading()
if (res.data) { if (res.data) {
proxy.$modal.showToast('添加成功'); proxy.$modal.showToast('添加成功')
setTimeout(() => { setTimeout(() => {
proxy.$tab.navigateBack(); proxy.$tab.navigateBack()
loading.value = false; loading.value = false
}, 1500); }, 1500)
} else { } else {
if (res.msg) { if (res.msg) {
proxy.$modal.showToast(res.msg); proxy.$modal.showToast(res.msg)
} else { } else {
proxy.$modal.showToast('添加失败'); proxy.$modal.showToast('添加失败')
} }
loading.value = false; loading.value = false
} }
}).catch(() => { })
proxy.$modal.closeLoading(); .catch(() => {
loading.value = false; proxy.$modal.closeLoading()
}); loading.value = false
}); })
} })
// }
function reset() { //
function reset() {
form.value = { form.value = {
describes: "", describes: '',
deviceNumber: '', deviceNumber: '',
deviceName: '', deviceName: '',
maintenances: '', maintenances: '',
classes: '' classes: ''
} }
} subList.value = []
}
// //
function openSingleColumn(fieldName, val, list) { function openSingleColumn(fieldName, val, list) {
singleColumnList.value = list singleColumnList.value = list
field.value = fieldName field.value = fieldName
if (val) { if (val) {
singleColumnDefaultValue.value = [list.findIndex(item => item.value == val)] singleColumnDefaultValue.value = [list.findIndex((item) => item.value == val)]
} else { } else {
singleColumnDefaultValue.value = [] singleColumnDefaultValue.value = []
} }
singleColumnShow.value = true singleColumnShow.value = true
} }
// //
function chooseSingleColumn(e) { function chooseSingleColumn(e) {
form.value[field.value] = e[0].value form.value[field.value] = e[0].value
if (field.value == 'classes') { if (field.value == 'classes') {
form.value.classesName = e[0].label form.value.classesName = e[0].label
} }
singleColumnShow.value = false singleColumnShow.value = false
} }
function chooseImage(dataItem) { function chooseImage(dataItem) {
uni.chooseImage({ uni.chooseImage({
count: 1, // 9 count: 1, // 9
sizeType: ['compressed'], // sizeType: ['compressed'], //
sourceType: ['album', 'camera'], // sourceType: ['album', 'camera'], //
success: (res) => { success: (res) => {
let filePath = res.tempFilePaths[0] const filePath = res.tempFilePaths[0]
proxy.$modal.loading() proxy.$modal.loading()
const fileInfo = ref({ const fileInfo = ref({
name: res.tempFiles[0].name, name: res.tempFiles[0].name,
url: '' url: ''
}) })
uploadApi.uploadFile({ uploadApi
filePath: filePath, .uploadFile({
filePath,
name: 'file', name: 'file',
formData: { formData: {
'user': 'test' user: 'test'
}, }
}).then(ret => { })
if(dataItem['imgList']){ .then((ret) => {
dataItem['imgList'].push(ret.data) if (dataItem.imgList) {
dataItem.imgList.push(ret.data)
fileInfo.value.url = ret.data fileInfo.value.url = ret.data
dataItem['fileInfoList'].push(fileInfo.value) dataItem.fileInfoList.push(fileInfo.value)
}else{ } else {
dataItem['imgList'] = [ret.data] dataItem.imgList = [ret.data]
fileInfo.value.url = ret.data fileInfo.value.url = ret.data
dataItem['fileInfoList'] = [fileInfo.value] dataItem.fileInfoList = [fileInfo.value]
} }
proxy.$modal.closeLoading() proxy.$modal.closeLoading()
}).catch((err) => { })
.catch((err) => {
proxy.$modal.closeLoading() proxy.$modal.closeLoading()
}); })
},
});
} }
})
}
// //
function delImage(index) { function delImage(index) {
imgList.value.splice(index, 1) imgList.value.splice(index, 1)
} }
onLoad(async (option) => { onLoad(async (option) => {
if (option.type) type.value = option.type; if (option.type) type.value = option.type
maintenanceShift.value = await dictApi.getDict('maintenance_shift') maintenanceShift.value = await dictApi.getDict('maintenance_shift')
form.value.maintenances = uni.getStorageSync('user').nickname form.value.maintenances = uni.getStorageSync('user').nickname
}) })
function radioGroupChange(e) { function radioGroupChange(e) {
console.log(e); console.log(e)
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@ -390,7 +389,7 @@
display: flex; display: flex;
margin-bottom: 20rpx; margin-bottom: 20rpx;
.item-box { .item-box {
background: #F5F5F5; background: #f5f5f5;
border-radius: 12rpx; border-radius: 12rpx;
flex: 1; flex: 1;
width: 0rpx; width: 0rpx;
@ -456,7 +455,7 @@
} }
} }
.reset { .reset {
background: #F5F5F5; background: #f5f5f5;
border-radius: 0px; border-radius: 0px;
&::after { &::after {
border-radius: 0px; border-radius: 0px;
@ -486,7 +485,7 @@
flex-wrap: wrap; flex-wrap: wrap;
} }
} }
.image-item { .image-item {
width: 210rpx; width: 210rpx;
height: 210rpx; height: 210rpx;
margin-right: 20rpx; margin-right: 20rpx;
@ -506,9 +505,9 @@
right: 0px; right: 0px;
top: 0px; top: 0px;
} }
} }
.image-item1 { .image-item1 {
border: none; border: none;
margin-right: 0px; margin-right: 0px;
@ -516,5 +515,5 @@
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
} }
</style> </style>
Loading…
Cancel
Save