车间能级提升-智能设备管理系统
baoshiwei
2025-06-12 bab490d2da009c1a23b352b3b964e0c2dd06a0b3
eims-ui-mobile/src/pages/repair/repair-add.vue
@@ -1,30 +1,22 @@
<route lang="json5" type="page">
{
  layout: 'default',
  style: {
    navigationBarTitleText: '添加报修',
    'app-plus': {
      titleNView: {
        buttons: [
          {
            text: '提交',
            fontSize: '14px',
            color: '#FFFFFF',
          },
          {
            text: '',
            fontSize: '24px',
            color: '#FFFFFF',
          },
        ],
      },
    },
  },
  needLogin: true,
  style: { navigationBarTitleText: '添加报修', navigationStyle: 'custom' },
}
</route>
<template>
  <view class="bg-base">
    <wd-navbar
      title="添加报修"
      left-arrow
      @click-left="goBack"
      right-text="提交"
      @click-right="handleSubmit"
      custom-style="background: #4D80F0;"
      safeAreaInsetTop
    ></wd-navbar>
    <wd-form ref="form" :model="model">
      <wd-cell-group custom-class="group" title="类型信息" border>
        <wd-picker
@@ -35,6 +27,7 @@
          label="故障类型"
          v-model="model.reqType"
          @confirm="handleConfirmReqType"
          :disabled="reqTypeDis"
        />
      </wd-cell-group>
@@ -122,10 +115,9 @@
        />
        <wd-cell title="报修图片" title-width="200rpx" prop="fileList">
          <wd-upload
            :auto-upload="false"
            :file-list="model.fileList"
            v-model:file-list="model.fileList"
            :action="VITE_UPLOAD_BASEURL"
            @change="handleFileChange"
            @success="handleUploadSuccess"
          ></wd-upload>
        </wd-cell>
@@ -138,9 +130,26 @@
          @open="openOccTime"
          @confirm="handleOccTimeConfirm"
        />
        <!-- <wd-picker
          :columns="urgencyList"
          label-key="dictLabel"
          value-key="dictValue"
          label="紧急程度"
          v-model="model.urgencyLevel"
          @confirm="handleConfirmUrgencyLevel"
        /> -->
        <wd-cell title="紧急程度" title-width="200rpx" prop="urgencyLevel">
          <wd-radio-group v-model="model.urgencyLevel" inline  shape="dot"> @change="handleConfirmUrgencyLevel">
          <wd-radio v-for="item in urgencyList" :value="item.dictValue">{{item.dictLabel}}</wd-radio>
        </wd-radio-group>
        </wd-cell>
      </wd-cell-group>
      <wd-cell-group custom-class="mt-2" title="其他信息" border>
      <wd-button style="margin: 20px" block @click="handleSubmit">提交</wd-button>
      <!-- <wd-cell-group custom-class="mt-2" title="其他信息" border>
        <wd-picker
          :columns="faultList"
          label-key="dictLabel"
@@ -157,7 +166,7 @@
          v-model="model.urgencyLevel"
          @confirm="handleConfirmUrgencyLevel"
        />
      </wd-cell-group>
      </wd-cell-group> -->
    </wd-form>
  </view>
</template>
@@ -181,6 +190,25 @@
const toast = useToast()
const userStore = useUserStore()
/**
 * 其他页面传过来的数据
 * assetNo: 资产编号
 * from: 是否是扫码进来的,如果是扫码进来,只能查询固定设备的数据
 */
interface PageParams {
  equId?: string
  equName?: string
  from?: string
}
// 页面参数,上个页面传递过来的参数
const option = reactive<PageParams>({
  equId: '',
  equName: '',
  from: '',
})
const reqTypeDis = ref(false)
// 报修类型
const reqList = ref<any>([])
// 故障类别
@@ -223,11 +251,16 @@
  fixtureName: '',
  fileList: [],
})
const goBack = () => {
  uni.navigateBack()
}
/**
 * 选择设备
 */
function handleSelectEqu() {
  if (reqTypeDis.value) {
    return false
  }
  uni.navigateTo({
    url: '/pages/equ/equ-list',
    events: {
@@ -294,10 +327,14 @@
function handleAddRepairReq() {
  // 补充必要字段
  model.status = '0'
  model.status = '0' // 报修后默认状态为待接单
  model.reqTime = formatDate(new Date())
  model.reqDept = userStore?.userInfo?.deptId
  model.reqUser = userStore?.userInfo?.userId
  console.log('model', model)
  const map = model.fileList?.map((file) => file.url)
  console.log('map', map)
  model.faultPicture = map.join(',')
  addRepairReq(model)
    .then((res: any) => {
      if (res?.code === 200) {
@@ -309,16 +346,21 @@
      }
    })
    .catch((res) => {
      console.error('添加报修失败:', res)
      toast.error(res?.data?.msg || '请求失败')
    })
}
/**
 * 上传点检图片
 * @param fileList
 */
function handleFileChange({ fileList }) {
  model.fileList = fileList
function handleUploadSuccess({ file, fileList }) {
  console.log('handleUploadSuccess', file)
  // 判断 file.response是不是 对象,不是对象将json字符串转换为对象
  if (typeof file.response === 'string') {
    file.response = JSON.parse(file.response)
    console.log('file.response', file.response)
    file.ossId = file.response.data.ossId
    file.url = file.response.data.url
  }
}
function checkData() {
@@ -353,31 +395,31 @@
 */
function openOccTime() {
  occTime.value = Date.now()
  console.log('openOccTime', occTime)
  model.occTime = formatDate(new Date(occTime.value))
}
/**
 * 确认选择发生时间
 */
function handleOccTimeConfirm({ value }) {
  console.log('handleOccTimeConfirm', value)
  model.occTime = formatDate(new Date(value))
}
/**
 * 选择报修类型
 */
function handleConfirmReqType({ value }) {
}
function handleConfirmReqType({ value }) {}
/**
 * 选择故障类别
 */
function handleConfirmFaultType({ value }) {
}
function handleConfirmFaultType({ value }) {}
/**
 * 选择紧急程度
 */
function handleConfirmUrgencyLevel({ value }) {
}
function handleConfirmUrgencyLevel({ value }) {}
async function initData() {
  const reqTypeList = await getDictInfo(DICT_REPAIR_REQ_TYPE)
@@ -390,13 +432,16 @@
  urgencyList.value = uList
}
onNavigationBarButtonTap((e) => {
  if (e.index === 0) {
    handleSubmit()
  }
})
onLoad((options) => {
  Object.assign(option, options)
  // 扫码页面进入的一些初始化
  if (option.from === 'scan') {
    model.equId = option?.equId
    model.equName = option?.equName
    // 设置类型为设备类型
    model.reqType = '1'
    reqTypeDis.value = true
  }
  initData()
})
</script>