铭牌更新
This commit is contained in:
parent
287745de4e
commit
320b7bd266
|
|
@ -686,6 +686,12 @@
|
||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/nameplateUpdate/index",
|
||||||
|
"style": {
|
||||||
|
"navigationStyle": "custom"
|
||||||
|
}
|
||||||
|
},
|
||||||
// 材料站 start
|
// 材料站 start
|
||||||
// 首页
|
// 首页
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@
|
||||||
<ScanQrCode ref="scanQrCodeRef" @scanSuccess="handleScanSuccess" @scanError="handleScanError" />
|
<ScanQrCode ref="scanQrCodeRef" @scanSuccess="handleScanSuccess" @scanError="handleScanError" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup>
|
||||||
import {
|
import {
|
||||||
getWsMaInfoList,
|
getWsMaInfoList,
|
||||||
updateCheckTime
|
updateCheckTime
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,333 @@
|
||||||
|
<template>
|
||||||
|
<uni-nav-bar
|
||||||
|
fixed
|
||||||
|
:border="false"
|
||||||
|
background-color="#dcf4ff"
|
||||||
|
color="black"
|
||||||
|
status-bar
|
||||||
|
title="铭牌信息更新"
|
||||||
|
><template v-slot:left>
|
||||||
|
<view style="display: flex; align-items: center" @click="back">
|
||||||
|
<!-- 图标 -->
|
||||||
|
<uni-icons type="left" size="20" color="black"></uni-icons>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<template v-slot:right>
|
||||||
|
<view style="display: flex; align-items: center" @click="onQrCode">
|
||||||
|
<!-- 文本 -->
|
||||||
|
<text>二维码</text>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
</uni-nav-bar>
|
||||||
|
<div class="content">
|
||||||
|
<div class="search">
|
||||||
|
<uni-easyinput v-model="keyWord" placeholder="请输入设备编码"></uni-easyinput>
|
||||||
|
<button
|
||||||
|
type="primary"
|
||||||
|
size="mini"
|
||||||
|
@click="handleSearch"
|
||||||
|
style="margin-left: 10px; background-color: #18bc37"
|
||||||
|
>
|
||||||
|
查询
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="popup" style="margin: 20px 0 30px" @click="handlePopup(1)">{{ typeName || '请选择对应机具' }}</div>
|
||||||
|
|
||||||
|
<div class="search-item">
|
||||||
|
<div>设备类型:{{ formData.materialName }}</div>
|
||||||
|
<div>
|
||||||
|
<span><span style="color: red">*</span>规格型号:</span
|
||||||
|
><uni-easyinput v-model="formData.materialModel" placeholder="请输入"></uni-easyinput>
|
||||||
|
</div>
|
||||||
|
<div>二维码:{{ formData.qrCode }}</div>
|
||||||
|
<div>设备编码:{{ formData.maCode }}</div>
|
||||||
|
<div>设备状态:{{ formData.maStatus }}</div>
|
||||||
|
<div>
|
||||||
|
<span>本次检修人员:</span
|
||||||
|
><uni-easyinput v-model="formData.checkMan" placeholder="请输入"></uni-easyinput>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>本次检修时间:</span>
|
||||||
|
<uni-datetime-picker type="date" v-model="formData.thisCheckTime" @change="changeTime" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>下次检修时间:</span>
|
||||||
|
<uni-datetime-picker
|
||||||
|
type="date"
|
||||||
|
v-model="formData.nextCheckTime"
|
||||||
|
@change="changeNextTime"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span><span style="color: red">*</span>出厂时间:</span>
|
||||||
|
<uni-datetime-picker type="date" v-model="formData.outFacTime" @change="changeFacTime" />
|
||||||
|
</div>
|
||||||
|
<div style="display: flex; align-items: center; justify-content: space-between">
|
||||||
|
<div><span style="color: red">*</span>机具厂家:</div>
|
||||||
|
<div class="popup" style="width: 70%" @click="handlePopup(2)">
|
||||||
|
{{ formData.maVender || '请选择' }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button
|
||||||
|
type="primary"
|
||||||
|
size="mini"
|
||||||
|
@click="handleSubmit"
|
||||||
|
style="margin-top: 30px; background-color: #18bc37; width: 100%"
|
||||||
|
>
|
||||||
|
确认修改
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<uni-popup ref="popup" border-radius="5px 5px 5px 5px" background-color="#fff">
|
||||||
|
<div
|
||||||
|
v-for="(item, index) in list"
|
||||||
|
:key="index"
|
||||||
|
class="popup-item"
|
||||||
|
@click.stop="handleCheck(item)"
|
||||||
|
>
|
||||||
|
<div>{{ item.name }}</div>
|
||||||
|
<uni-data-checkbox
|
||||||
|
v-model="item.isChecked"
|
||||||
|
:localdata="range"
|
||||||
|
@change="handleCheck(item, $event)"
|
||||||
|
></uni-data-checkbox>
|
||||||
|
</div>
|
||||||
|
</uni-popup>
|
||||||
|
<ScanQrCode ref="scanQrCodeRef" @scanSuccess="handleScanSuccess" @scanError="handleScanError" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { getWsMaInfoList, updateCheckTime } from '@/services/wsMaInfo/wsMaInfo.js'
|
||||||
|
import { getInfoByCode, updateInfo } from '@/services/information'
|
||||||
|
import { getSupplierList } from '@/services/repair/repair.js'
|
||||||
|
import { onLoad } from '@dcloudio/uni-app'
|
||||||
|
import { reactive, ref } from 'vue'
|
||||||
|
import ScanQrCode from '@/pages/devicesSearch/ScanQrCode'
|
||||||
|
|
||||||
|
const keyWord = ref('')
|
||||||
|
const qrCode = ref('')
|
||||||
|
let formData = reactive({
|
||||||
|
id: '',
|
||||||
|
maVender: '',
|
||||||
|
supplierId: '',
|
||||||
|
})
|
||||||
|
const scanQrCodeRef = ref()
|
||||||
|
const popup = ref()
|
||||||
|
const typeName = ref('')
|
||||||
|
const list = ref([])
|
||||||
|
const typeList = ref([]) // 设备类型
|
||||||
|
const range = ref([{ value: 0, text: '' }])
|
||||||
|
const supplierList = ref([]) // 厂家
|
||||||
|
|
||||||
|
onLoad(() => {
|
||||||
|
console.log('onLoad')
|
||||||
|
getSupplier()
|
||||||
|
})
|
||||||
|
|
||||||
|
const back = () => {
|
||||||
|
uni.navigateBack({
|
||||||
|
delta: 1,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const onQrCode = () => {
|
||||||
|
console.log('🚀 ~ onQrCode ~ 二维码:')
|
||||||
|
if (scanQrCodeRef.value) scanQrCodeRef.value.scanQrCode()
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleSearch = () => {
|
||||||
|
console.log('🚀 ~ handleSearch ~ 查询:', keyWord.value)
|
||||||
|
if (!keyWord.value) {
|
||||||
|
uni.showToast({
|
||||||
|
title: '请输入设备编码',
|
||||||
|
icon: 'none',
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
qrCode.value = ''
|
||||||
|
typeList.value = []
|
||||||
|
getInfo()
|
||||||
|
}
|
||||||
|
const getInfo = () => {
|
||||||
|
const params = {
|
||||||
|
maCode: keyWord.value,
|
||||||
|
qrCode: qrCode.value,
|
||||||
|
}
|
||||||
|
getInfoByCode(params)
|
||||||
|
.then((res) => {
|
||||||
|
if (res.code === 200 && res.data && res.data.length > 0) {
|
||||||
|
typeList.value = res.data.map((option) => {
|
||||||
|
return {
|
||||||
|
...option,
|
||||||
|
id: option.maId,
|
||||||
|
name: option.materialName + '-' + option.materialModel,
|
||||||
|
isChecked: 1,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.log(error)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取厂家
|
||||||
|
const getSupplier = () => {
|
||||||
|
getSupplierList()
|
||||||
|
.then((res) => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
supplierList.value = res.rows.map((item) => {
|
||||||
|
return {
|
||||||
|
...item,
|
||||||
|
id: item.supplierId,
|
||||||
|
name: item.supplier,
|
||||||
|
isChecked: 1,
|
||||||
|
isSupplier: true,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.log(error)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const changeTime = (e) => {
|
||||||
|
formData.thisCheckTime = e
|
||||||
|
}
|
||||||
|
|
||||||
|
const changeNextTime = (e) => {
|
||||||
|
formData.nextCheckTime = e
|
||||||
|
}
|
||||||
|
|
||||||
|
const changeFacTime = (e) => {
|
||||||
|
formData.outFacTime = e
|
||||||
|
}
|
||||||
|
|
||||||
|
const handlePopup = (type) => {
|
||||||
|
console.log('🚀 ~ handlePopup ~ 弹窗:')
|
||||||
|
if (type === 1) {
|
||||||
|
list.value = typeList.value
|
||||||
|
} else {
|
||||||
|
list.value = supplierList.value
|
||||||
|
}
|
||||||
|
if (list.value.length === 0) {
|
||||||
|
uni.showToast({ title: '暂无数据', icon: 'none' })
|
||||||
|
return
|
||||||
|
}
|
||||||
|
popup.value.open()
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleCheck = (item) => {
|
||||||
|
console.log('🚀 ~ handleCheck ~ 单选:', item)
|
||||||
|
// 循环 typeList 将当前点击的 item.isChecked 设置为 0 其他设置 1
|
||||||
|
list.value.forEach((i) => {
|
||||||
|
i.isChecked = i.id === item.id ? 0 : 1
|
||||||
|
})
|
||||||
|
|
||||||
|
if (item.isSupplier) {
|
||||||
|
formData.maVender = item.supplier
|
||||||
|
formData.supplierId = item.supplierId
|
||||||
|
} else {
|
||||||
|
formData = {}
|
||||||
|
formData = item
|
||||||
|
typeName.value = item.name
|
||||||
|
}
|
||||||
|
|
||||||
|
popup.value.close()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理扫描成功事件
|
||||||
|
const handleScanSuccess = (result) => {
|
||||||
|
qrCode.value = result?.text?.split('?qrcode=')[1] || result?.text
|
||||||
|
if (qrCode.value === '') {
|
||||||
|
uni.showToast({ title: '扫码识别失败', icon: 'none' })
|
||||||
|
} else {
|
||||||
|
keyWord.value = ''
|
||||||
|
getInfo()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理扫描失败事件
|
||||||
|
const handleScanError = (error) => {
|
||||||
|
console.error('扫描出错:', error.message)
|
||||||
|
uni.showToast({ title: error.message, icon: 'none' })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 提交
|
||||||
|
const handleSubmit = () => {
|
||||||
|
// 必填项 验证
|
||||||
|
console.log('🚀 ~ handleSubmit ~ formData:', formData)
|
||||||
|
if (!formData.materialModel || !formData.outFacTime || !formData.maVender) {
|
||||||
|
uni.showToast({ title: '请填写完整信息', icon: 'none' })
|
||||||
|
return
|
||||||
|
}
|
||||||
|
delete formData.maStatus
|
||||||
|
updateInfo(formData)
|
||||||
|
.then((res) => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
uni.showToast({
|
||||||
|
title: res.msg,
|
||||||
|
icon: 'none',
|
||||||
|
})
|
||||||
|
resetFormData()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.log(error)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const resetFormData = () => {
|
||||||
|
Object.keys(formData).forEach(key => {
|
||||||
|
formData[key] = ''
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.content {
|
||||||
|
padding: 10px;
|
||||||
|
|
||||||
|
.search {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup {
|
||||||
|
background: #fff;
|
||||||
|
/* margin: 20px 0 30px; */
|
||||||
|
padding: 5px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-item {
|
||||||
|
line-height: 1.9;
|
||||||
|
div {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-item {
|
||||||
|
padding: 10px;
|
||||||
|
border-bottom: 1px solid #c7c9ce;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .uni-popup__wrapper {
|
||||||
|
width: calc(100% - 20px);
|
||||||
|
/* padding: 10px; */
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .uni-data-checklist {
|
||||||
|
// 去掉 flex: 1
|
||||||
|
flex: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -158,7 +158,7 @@ const newInfoList = ref([
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '铭牌更新',
|
title: '铭牌更新',
|
||||||
url: '',
|
url: '/pages/nameplateUpdate/index',
|
||||||
iconSrc: '../../static/workbench/minPai.png',
|
iconSrc: '../../static/workbench/minPai.png',
|
||||||
},
|
},
|
||||||
])
|
])
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
import { http } from '@/utils/http'
|
||||||
|
|
||||||
|
// 获取铭牌信息
|
||||||
|
export const getInfoByCode = (data) => {
|
||||||
|
return http({
|
||||||
|
method: 'GET',
|
||||||
|
url: '/material/ma_machine/getInfoByCode',
|
||||||
|
data,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新铭牌
|
||||||
|
export const updateInfo = (data) => {
|
||||||
|
return http({
|
||||||
|
method: 'PUT',
|
||||||
|
url: '/material/ma_machine',
|
||||||
|
data,
|
||||||
|
})
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue