进销存·华玺砂浆》设备保修的新增保修添加金额和审批人开发
进销存·华玺砂浆》协同报销页面修改
已修改5个文件
171 ■■■■ 文件已修改
src/hooks/usePaginationApi.jsx 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/collaborativeApproval/approvalProcess/index.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/equipmentManagement/repair/Form/RepairForm.vue 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/equipmentManagement/repair/Modal/RepairModal.vue 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/equipmentManagement/repair/index.vue 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/hooks/usePaginationApi.jsx
@@ -76,6 +76,7 @@
  }
  async function getTableData() {
    // 如果这次和上次的filter不同,那么就重置页码
    if (!isEqual(unref(filters), lastFilters)) {
      pagination.currentPage = 1;
@@ -87,7 +88,7 @@
      current: pagination.currentPage,
      size: pagination.pageSize
    }).then(({ code, data, msg, ...rest }) => {
      if (code == 200) {
      if (code === 200) {
        // pagination.currentPage = meta.current_page;
        // pagination.pageSize = meta.per_page;
        pagination.total = data.total;
@@ -99,7 +100,11 @@
        loading.value = false;
        ElMessage({ message: msg, type: "error" });
      }
    });
    }).catch(() => {
        loading.value = false;
        ElMessage({ message: msg, type: "error" });
    }).finally(() => {});
  }
  function onSizeChange(val) {
src/views/collaborativeApproval/approvalProcess/index.vue
@@ -96,14 +96,12 @@
      }
    },
    formatType: (params) => {
      if (params == 0) {
      if (params === 0) {
        return "warning";
      } else if (params == 1) {
        return "primary";
      } else if (params == 2) {
      } else if (params === 2) {
        return "success";
      } else if (params == 4) {
        return "";
      } else if (params === 3) {
        return "danger";
      } else {
        return 'danger';
      }
src/views/equipmentManagement/repair/Form/RepairForm.vue
@@ -1,8 +1,8 @@
<template>
  <el-form :model="form" label-width="100px">
  <el-form :model="form" ref="formModelRefs" :rules="rules" label-width="100px">
    <el-row>
      <el-col :span="12">
        <el-form-item label="设备名称">
        <el-form-item label="设备名称" prop="deviceLedgerId">
          <el-select v-model="form.deviceLedgerId" @change="setDeviceModel" filterable>
            <el-option
              v-for="(item, index) in deviceOptions"
@@ -14,7 +14,7 @@
        </el-form-item>
      </el-col>
      <el-col :span="12">
        <el-form-item label="规格型号">
        <el-form-item label="规格型号" prop="deviceModel">
          <el-input
            v-model="form.deviceModel"
            placeholder="请输入规格型号"
@@ -23,7 +23,7 @@
        </el-form-item>
      </el-col>
      <el-col :span="12">
        <el-form-item label="报修日期">
        <el-form-item label="报修日期" prop="repairTime">
          <el-date-picker
            v-model="form.repairTime"
            placeholder="请选择报修日期"
@@ -36,15 +36,15 @@
        </el-form-item>
      </el-col>
      <el-col :span="12">
        <el-form-item label="报修人">
          <el-input v-model="form.repairName" placeholder="请输入报修人" />
        <el-form-item label="报修人员" prop="repairName">
          <el-input v-model="form.repairName" placeholder="请输入报修人员" />
        </el-form-item>
      </el-col>
    </el-row>
    <el-row v-if="id">
      <el-col :span="12">
        <el-form-item label="报修状态">
          <el-select v-model="form.status">
          <el-select v-model="form.status" prop="status">
            <el-option label="待维修" :value="0"></el-option>
            <el-option label="完结" :value="1"></el-option>
            <el-option label="失败" :value="2"></el-option>
@@ -53,8 +53,27 @@
      </el-col>
    </el-row>
    <el-row>
      <el-col :span="12">
        <el-form-item label="报修金额" prop="maintenancePrice">
          <el-input-number
              style="width: 100%"
              :min="0"
              v-model="form.maintenancePrice"
              placeholder="请输入保修金额"
          />
        </el-form-item>
      </el-col>
      <el-col :span="12">
        <el-form-item label="审批人员" prop="approverId">
          <el-select v-model="form.approverId" placeholder="请选择审批人员" clearable>
            <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId" />
          </el-select>
        </el-form-item>
      </el-col>
    </el-row>
    <el-row>
      <el-col :span="24">
        <el-form-item label="故障现象">
        <el-form-item label="故障现象" prop="remark">
          <el-input
            v-model="form.remark"
            :rows="2"
@@ -68,10 +87,12 @@
</template>
<script setup>
import {onMounted} from "vue"
import dayjs from "dayjs";
import useFormData from "@/hooks/useFormData";
import { getDeviceLedger } from "@/api/equipmentManagement/ledger";
import useUserStore from "@/store/modules/user";
import { userListNoPage } from "@/api/system/user.js";
const { id } = defineProps(["id"])
@@ -81,10 +102,33 @@
const userStore = useUserStore();
const deviceOptions = ref([]);
const formModelRefs = ref(null)
const userList = ref(null)
const loadDeviceName = async () => {
  const { data } = await getDeviceLedger();
  deviceOptions.value = data;
};
const rules = {
  deviceLedgerId: [{ required: true, message: "请选择设备名称", trigger: "change" }],
  repairTime: [{ required: true, message: "请选择报修日期", trigger: "change" }],
  repairName: [{ required: true, message: "请输入报修人", trigger: "blur" }],
  remark: [{ required: true, message: "请输入故障现象", trigger: "blur" }],
  maintenancePrice: [{ required: true, message: "请输入保修金额", trigger: "blur" }],
  approverId:[{required: true,message: "请选择审批人", trigger: "change"}]
};
// 校验表单是否合规
const submitForm = async () => {
  if (!formModelRefs.value) return false;
  try {
    await formModelRefs.value.validate();
    return true; // 表单验证通过
  } catch (error) {
    return false; // 表单验证失败
  }
};
const { form, resetForm } = useFormData({
@@ -95,6 +139,7 @@
  repairName: userStore.nickName, // 报修人
  remark: undefined, // 故障现象
  status: 0, // 报修状态
  maintenancePrice:0, // 保修金额
});
const setDeviceModel = (id) => {
@@ -114,17 +159,21 @@
  form.repairName = data.repairName;
  form.remark = data.remark;
  form.status = data.status;
  form.maintenancePrice = data.maintenancePrice
};
// onMounted(() => {
//   loadDeviceName();
// });
onMounted(async() => {
  // loadDeviceName();
  let userLists = await userListNoPage();
  userList.value = userLists.data;
});
defineExpose({
  loadDeviceName,
  resetForm,
  getForm,
  setForm,
  submitForm
});
</script>
src/views/equipmentManagement/repair/Modal/RepairModal.vue
@@ -38,17 +38,32 @@
} = useModal({ title: "设备报修" });
const sendForm = async () => {
  loading.value = true;
  const form = await repairFormRef.value.getForm();
  const { code } = id.value
    ? await editRepair({ id: unref(id), ...form })
    : await addRepair(form);
  if (code == 200) {
    ElMessage.success(`${id ? "编辑" : "新增"}报修成功`);
  try {
    // 开始加载
    loading.value = true;
    // 提交表单并获取校验结果
    const submitStatus = await repairFormRef.value.submitForm();
    if (!submitStatus) {
      // 如果表单验证失败,取消加载状态
      loading.value = false;
      return;
    }
    // 获取表单数据
    const form = await repairFormRef.value.getForm();
    // 根据是否有ID决定是编辑还是新增
    const { code } = id.value
        ? await editRepair({ id: unref(id), ...form })
        : await addRepair(form);
    if (code === 200) {
      ElMessage.success(`${id ? "编辑" : "新增"}报修成功`);
      emits("ok");
    }
  } catch (error) {
  } finally {
    // 无论成功还是失败,都取消加载状态
    loading.value = false;
    closeModal();
    emits("ok");
  }
  loading.value = false;
};
const openAdd = async () => {
src/views/equipmentManagement/repair/index.vue
@@ -71,9 +71,10 @@
          <el-button
            type="primary"
            icon="Plus"
            :disabled="multipleList.length !== 1"
            :disabled="multipleList.length !== 1 || multipleList[0]?.status !== 1"
            @click="addMaintain"
          >
            新增维修
          </el-button>
          <el-button type="success" icon="Van" @click="addRepair">
@@ -86,7 +87,7 @@
            type="danger"
            icon="Delete"
            :disabled="multipleList.length <= 0"
            @click="delRepairByIds(multipleList.map((item) => item.id))"
            @click="delRepairByIds(multipleList)"
          >
            批量删除
          </el-button>
@@ -106,9 +107,12 @@
        @pagination="changePage"
      >
        <template #statusRef="{ row }">
          <el-tag v-if="row.status === 2" type="danger">失败</el-tag>
          <el-tag v-if="row.status === 1" type="success">完结</el-tag>
          <el-tag v-if="row.status === 0" type="warning">待维修</el-tag>
          <el-tag v-if="row.status === 5" type="danger">维修失败</el-tag>
          <el-tag v-if="row.status === 4" type="danger">维修成功</el-tag>
          <el-tag v-if="row.status === 3" type="danger">维修中</el-tag>
          <el-tag v-if="row.status === 2" type="danger">审核失败</el-tag>
          <el-tag v-if="row.status === 1" type="success">审核通过</el-tag>
          <el-tag v-if="row.status === 0" type="warning">审核中</el-tag>
        </template>
        <template #operation="{ row }">
          <el-button
@@ -116,6 +120,7 @@
            text
            icon="editPen"
            @click="editRepair(row.id)"
            :disabled="row.status !== 0"
          >
            编辑
          </el-button>
@@ -123,7 +128,8 @@
            type="danger"
            text
            icon="delete"
            @click="delRepairByIds(row.id)"
            @click="delRepairByIds(row)"
            :disabled="row.status !== 0"
          >
            删除
          </el-button>
@@ -270,6 +276,7 @@
// 新增维修
const addMaintain = () => {
  const row = multipleList.value[0];
  maintainModalRef.value.open(row.id, row);
};
@@ -282,15 +289,40 @@
// 单行删除
const delRepairByIds = async (ids) => {
  let isDel = false
  if(Array.isArray(ids)){
    ids.forEach((item)=>{
      if(item.status !== 0){
        isDel = true
      }
    })
  }else{
    if(ids.status !== 0){
      isDel = true
    }
  }
  if(isDel){
    ElMessage.warning("只能删除审核中的报修数据");
    return
  }
  ElMessageBox.confirm("确认删除报修数据, 此操作不可逆?", "警告", {
    confirmButtonText: "确定",
    cancelButtonText: "取消",
    type: "warning",
  }).then(async () => {
    const { code } = await delRepair(ids);
    let idsList = ""
    if(Array.isArray(ids)){
      idsList = multipleList.value.map((item) => item.id);
      console.log(idsList)
    }else{
      idsList = ids.id
    }
    const { code } = await delRepair(idsList);
    if (code === 200) {
      ElMessage.success("删除成功");
      getTableData();
      await getTableData();
    }
  });
};