铭牌更新
This commit is contained in:
		
							parent
							
								
									287745de4e
								
							
						
					
					
						commit
						320b7bd266
					
				| 
						 | 
				
			
			@ -686,6 +686,12 @@
 | 
			
		|||
                "navigationStyle": "custom"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "path": "pages/nameplateUpdate/index",
 | 
			
		||||
            "style": {
 | 
			
		||||
                "navigationStyle": "custom"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        // 材料站 start
 | 
			
		||||
        // 首页
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -48,7 +48,7 @@
 | 
			
		|||
	<ScanQrCode ref="scanQrCodeRef" @scanSuccess="handleScanSuccess" @scanError="handleScanError" />
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script setup lang="ts">
 | 
			
		||||
<script setup>
 | 
			
		||||
	import {
 | 
			
		||||
		getWsMaInfoList,
 | 
			
		||||
		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: '铭牌更新',
 | 
			
		||||
        url: '',
 | 
			
		||||
        url: '/pages/nameplateUpdate/index',
 | 
			
		||||
        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