Browse Source

1.设备维修应只能删除维修状态为待维修的数据, 1455 crud文本超出.2.1431 员工技能编辑窗口翻页。

jiaxiaoqiang 10 tháng trước cách đây
mục cha
commit
9dc8122f35

+ 148 - 136
src/views/base/skill/components/edit-skill.vue

@@ -2,8 +2,8 @@
   <div class="mainContentBox">
     <avue-form
       ref="formRef"
-      v-model:search="search"
       v-model="form"
+      v-model:search="search"
       :data="data2"
       :option="option2"
     >
@@ -13,19 +13,19 @@
       v-model="form"
       :data="data"
       :option="option"
-      v-model:page="page"
       @row-save="createRow"
       @row-update="updateRow"
       @row-del="deleteRow"
     >
       <template #menu-left="{ size }">
         <el-button
-          type="primary"
-          icon="el-icon-plus"
           circle
+          icon="el-icon-plus"
+          type="primary"
           @click="addSkill"
         ></el-button
-        ></template>
+        >
+      </template>
 
     </avue-crud>
     <CommonTable
@@ -35,39 +35,41 @@
       @selected-sure="onSelectedFinish"
     />
     <div class="detail-footer">
-      <el-button type="primary" @click="onHandle"> 确定 </el-button>
+      <el-button type="primary" @click="onHandle"> 确定</el-button>
       <el-button @click="cancelWindow">取消</el-button>
 
     </div>
   </div>
 </template>
 <script setup>
-import { ref, getCurrentInstance } from "vue";
-import { useCrud } from "@/hooks/userCrud";
+import {ref, getCurrentInstance} from "vue";
+import {useCrud} from "@/hooks/userCrud";
 import ButtonPermKeys from "@/common/configs/buttonPermission";
-import { useCommonStoreHook, useDictionaryStore } from "@/store";
+import {useCommonStoreHook, useDictionaryStore} from "@/store";
 import dictDataUtil from "@/common/configs/dictDataUtil";
 import SingleUpload from "@/components/Upload/SingleUpload.vue";
-const { isShowTable, tableType } = toRefs(useCommonStoreHook());
-import {getPostSkill,addEmployeeSkill,getSkillDetail} from "@/api/system/skill";
+
+const {isShowTable, tableType} = toRefs(useCommonStoreHook());
+import {getPostSkill, addEmployeeSkill, getSkillDetail} from "@/api/system/skill";
 // 数据字典相关
-const { dicts } = useDictionaryStore();
+const {dicts} = useDictionaryStore();
 
 const test = () => {
   isShowTable.value = true;
   tableType.value = tableType.value == 1 ? 2 : 1;
 };
-const data3=ref([]);
-const data2=ref(null);
+const data3 = ref([]);
+const data2 = ref(null);
 // 传入一个url,后面不带/
-const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
+const {form, data, option, search, page, toDeleteIds, Methords, Utils} =
   useCrud({
     src: "/api/v1/sys/skillScore",
+    dataListUrl: "/api/v1/sys/skillScore/list",
   });
-const { dataList, createRow, updateRow, deleteRow, searchChange, dataNoPageList } =
+const {dataList, createRow, updateRow, deleteRow, searchChange, dataNoPageList} =
   Methords; //增删改查
-const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
-const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
+const {selectionChange, multipleDelete} = Methords; //选中和批量删除事件
+const {checkBtnPerm, downloadTemplate, exportData} = Utils; //按钮权限等工具
 // checkBtnPerm(ButtonPermKeys.PLAN.BTNS.order_add) :permission="permission"
 // const permission = reactive({
 //   delBtn: checkPerm(buttonPermission.PLAN.BTNS.order_del),
@@ -75,93 +77,91 @@ const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等
 //   editBtn: checkPerm(buttonPermission.PLAN.BTNS.order_edit),
 //   menu: true,
 // });
-const option2=ref(null);
+const option2 = ref(null);
 const ctableRef = ref(null); //crudRef.value 获取avue-crud对象
 const router = useRouter();
 onMounted(() => {
   // console.log("crudRef", crudRef)
   getSkillDetail(props.skillId).then(
-    (data)=>{
-      form.value=data.data;
+    (data) => {
+      form.value = data.data;
     }
   )
-  search.value.employeeSkillId=props.skillId;
-  dataNoPageList();
-
+  search.value.employeeSkillId = props.skillId;
+  dataList();
 
 
 });
 
-const skillChange=(row)=>{
-  if(skillValue.value!==undefined&&skillValue.value!==null&&skillValue.value!==""){
-    data.value[row.$index].skillDictValue=skillValue.value;
+const skillChange = (row) => {
+  if (skillValue.value !== undefined && skillValue.value !== null && skillValue.value !== "") {
+    data.value[row.$index].skillDictValue = skillValue.value;
   }
 }
-const cancelWindow=()=>{
-  props.editDialog.visible=false;
+const cancelWindow = () => {
+  props.editDialog.visible = false;
 }
 const addSkill = () => {
-  const bom=ref({
-    $cellEdit:true,
+  const bom = ref({
+    $cellEdit: true,
   });
   data.value.push(bom.value);
 };
-const employeeSkill=ref({});
-const onHandle=()=>{
+const employeeSkill = ref({});
+const onHandle = () => {
   console.info(form.value);
-  if(form.value.userId===null||form.value.userId===undefined||form.value.userId===""){
+  if (form.value.userId === null || form.value.userId === undefined || form.value.userId === "") {
     ElMessage({
       message: "未选择打分用户",
       type: "error",
     });
     return false;
   }
-  if(form.value.postId===null||form.value.postId===undefined||form.value.postId===""){
+  if (form.value.postId === null || form.value.postId === undefined || form.value.postId === "") {
     ElMessage({
       message: "未选择岗位",
       type: "error",
     });
     return false;
   }
-  if(data.value.length===0){
+  if (data.value.length === 0) {
     ElMessage({
       message: "没有要保存的打分项",
       type: "error",
     });
     return false;
   }
-  if(data.value.length>0){
-    for(let i=0;i<data.value.length;i++){
-      if(data.value[i].skillDictValue===undefined||data.value[i].skillDictValue===null||data.value[i].skillDictValue===""){
+  if (data.value.length > 0) {
+    for (let i = 0; i < data.value.length; i++) {
+      if (data.value[i].skillDictValue === undefined || data.value[i].skillDictValue === null || data.value[i].skillDictValue === "") {
         ElMessage({
-          message: "第"+(i+1)+"项没有选择技能",
+          message: "第" + (i + 1) + "项没有选择技能",
           type: "error",
         });
         return false;
       }
-      if(data.value[i].score===undefined||data.value[i].score===null||data.value[i].score===""){
+      if (data.value[i].score === undefined || data.value[i].score === null || data.value[i].score === "") {
         ElMessage({
-          message: "第"+(i+1)+"项没有打分",
+          message: "第" + (i + 1) + "项没有打分",
           type: "error",
         });
         return false;
       }
     }
   }
-  employeeSkill.value.userId=form.value.userId;
-  employeeSkill.value.postId=form.value.postId;
-  employeeSkill.value.skillList=Array.from(data.value);
-  employeeSkill.value.id=form.value.id;
+  employeeSkill.value.userId = form.value.userId;
+  employeeSkill.value.postId = form.value.postId;
+  employeeSkill.value.skillList = Array.from(data.value);
+  employeeSkill.value.id = form.value.id;
   addEmployeeSkill(employeeSkill.value).then(
-    (data)=>{
-      if(data.code==="200") {
+    (data) => {
+      if (data.code === "200") {
         ElMessage({
           message: data.msg,
           type: "success",
         });
-        props.editDialog.visible=false;
-      }
-      else {
+        props.editDialog.visible = false;
+      } else {
         ElMessage({
           message: data.msg,
           type: "error",
@@ -174,100 +174,108 @@ const onHandle=()=>{
 // 设置表格列或者其他自定义的option
 option2.value = {
   selection: true,
-  submitBtn:false,
-  clearAbleBtn:false,
-  emptyBtn:false,
+  submitBtn: false,
+  clearAbleBtn: false,
+  emptyBtn: false,
   column: [
-    { label: "id", prop: "id", width: 130,overHidden: true,search: true ,
+    {
+      label: "id", prop: "id", width: 130, overHidden: true, search: true,
       filterable: true,
-      width: 100,overHidden: true,
-      disabled:false,
-      display:false,
+      width: 100, overHidden: true,
+      disabled: false,
+      display: false,
 
     },
 
-    { label: "用户id", prop: "userId", width: 130,overHidden: true,search: true ,
+    {
+      label: "用户id", prop: "userId", width: 130, overHidden: true, search: true,
       filterable: true,
-      width: 100,overHidden: true,
-      disabled:true,
-      display:false,
+      width: 100, overHidden: true,
+      disabled: true,
+      display: false,
 
     },
-    { label: "用户名", prop: "userName", width: 140,overHidden: true,search: true ,rules: [{
+    {
+      label: "用户名", prop: "userName", width: 140, overHidden: true, search: true, rules: [{
         required: true,
         search: true,
         message: "请选择员工姓名",
         trigger: "blur"
       }],
-      click: ({ value, column }) => {
+      click: ({value, column}) => {
         ctableRef.value.startSelect();
-      },},
-    { label: "所属机构", prop: "institution", width: 130,overHidden: true,search: true ,
+      },
+    },
+    {
+      label: "所属机构", prop: "institution", width: 130, overHidden: true, search: true,
       filterable: true,
-      width: 100,overHidden: true,
-      disabled:true,
+      width: 100, overHidden: true,
+      disabled: true,
 
     },
     {
       label: "员工编号",
       prop: "employeeCode",
       search: true,
-      disabled:true,
+      disabled: true,
     },
-    { label: "岗位", prop: "postName",
+    {
+      label: "岗位", prop: "postName",
       search: true,
       filterable: true,
       overHidden: true,
-      disabled:true,
-      dicUrl:dictDataUtil.post_list_url,
-      dicMethod:"post",
-      change:({ value, column })=>{
-       if(value!==undefined) {
-         props.postId = value;
-         skillValue.value=null;
-         optionSkill.value=null;
-         dataNoPageList();
-       }
+      disabled: true,
+      dicUrl: dictDataUtil.post_list_url,
+      dicMethod: "post",
+      change: ({value, column}) => {
+        if (value !== undefined) {
+          props.postId = value;
+          skillValue.value = null;
+          optionSkill.value = null;
+          dataNoPageList();
+        }
       },
-      props: { label: "postName", value: "id" },
+      props: {label: "postName", value: "id"},
 
     },
-    { label: "部门", prop: "deptName", overHidden: true,
-      disabled:true, },
+    {
+      label: "部门", prop: "deptName", overHidden: true,
+      disabled: true,
+    },
 
   ],
 };
-const postIdValue=ref({});
+const postIdValue = ref({});
 
 const props = defineProps({
-  editDialog:{
-    type:Object,
-    default:()=>{
+  editDialog: {
+    type: Object,
+    default: () => {
       return {};
     }
   },
-  skillId:{
-    type:String,
-    default:()=>{
+  skillId: {
+    type: String,
+    default: () => {
       return "0";
     }
   },
-  postId:{
-    type:Number,
-    default:()=>{
+  postId: {
+    type: Number,
+    default: () => {
       return "0";
     }
   }
 
 })
-const postIdSkill=ref({});
+const postIdSkill = ref({});
 // 设置表格列或者其他自定义的option
-option.value = Object.assign(option.value,{
+option.value = Object.assign(option.value, {
   selection: false,
   addBtn: false,
   viewBtn: false,
-  editBtn:false,
-  saveBtn:false,
+  editBtn: false,
+  saveBtn: false,
 
   cellBtn: true,
   column: [{
@@ -275,10 +283,10 @@ option.value = Object.assign(option.value,{
     prop: "skillDictValue",
     align: 'center',
     headerAlign: 'center',
-    span:24,
+    span: 24,
     cell: true,
     type: 'select',
-    dicUrl: import.meta.env.VITE_APP_BASE_API + "/api/v1/sys/postSkill/list/"+props.postId,
+    dicUrl: import.meta.env.VITE_APP_BASE_API + "/api/v1/sys/postSkill/list/" + props.postId,
     props: {
       label: "skillDictLabel", // 下拉菜单显示的字段
       value: "skillDictValue", // 下拉菜单值的字段
@@ -290,26 +298,26 @@ option.value = Object.assign(option.value,{
       align: 'center',
       headerAlign: 'center',
       cell: true,
-      type:"number",
+      type: "number",
       precision: 2,
-      max:100,
-      min:0,
-      span:24,
+      max: 100,
+      min: 0,
+      span: 24,
     },],
 });
-const onSelectedFinish=(selectedValue)=>{
-  form.value.userId=selectedValue.id;
+const onSelectedFinish = (selectedValue) => {
+  form.value.userId = selectedValue.id;
 
-  form.value.userName=selectedValue.userName;
-  form.value.deptName=selectedValue.deptName;
-  form.value.employeeCode=selectedValue.employeeCode;
-  form.value.institution=selectedValue.institution;
+  form.value.userName = selectedValue.userName;
+  form.value.deptName = selectedValue.deptName;
+  form.value.employeeCode = selectedValue.employeeCode;
+  form.value.institution = selectedValue.institution;
 
 }
-const skillValue=ref(null);
-const optionSkill=ref([]);
-const getPostSkills=()=>{
-  if(postIdValue.value===undefined||postIdValue.value===null||postIdValue.value===""){
+const skillValue = ref(null);
+const optionSkill = ref([]);
+const getPostSkills = () => {
+  if (postIdValue.value === undefined || postIdValue.value === null || postIdValue.value === "") {
     ElMessage({
       message: "未选择岗位",
       type: "error",
@@ -317,34 +325,38 @@ const getPostSkills=()=>{
     return false;
   }
   getPostSkill(postIdValue.value).then(
-    (data)=>{
-      optionSkill.value=Array.from(data.data);
+    (data) => {
+      optionSkill.value = Array.from(data.data);
     }
   )
 }
 
 </script>
 <style type="text/css">
-  .title-detail{
-    width: 30%;
-    height: 50px;
-    line-height: 50px;
-    margin: 25px 20px 25px 0;
-    float: left;
-  }
-  .detail{
-    margin: 0 auto;
-    width: 100%;
-  }
-  .avue-crud{
-    float: left;
-  }
-  .detail-footer{
-    float: right;
-    margin-top:15px;
-  }
-  .el-select__selection{
-    width: 150px;
-  }
+.title-detail {
+  width: 30%;
+  height: 50px;
+  line-height: 50px;
+  margin: 25px 20px 25px 0;
+  float: left;
+}
+
+.detail {
+  margin: 0 auto;
+  width: 100%;
+}
+
+.avue-crud {
+  float: left;
+}
+
+.detail-footer {
+  float: right;
+  margin-top: 15px;
+}
+
+.el-select__selection {
+  width: 150px;
+}
 
 </style>

+ 80 - 66
src/views/base/skill/index.vue

@@ -2,11 +2,11 @@
   <div class="mainContentBox">
     <avue-crud
       ref="crudRef"
-      v-model:search="search"
       v-model="form"
+      v-model:page="page"
+      v-model:search="search"
       :data="data"
       :option="option"
-      v-model:page="page"
       @row-update="updateRow"
       @row-del="deleteRow"
       @search-change="searchChange"
@@ -17,76 +17,82 @@
     >
       <template #menu-left="{ size }">
         <el-button
-          type="primary"
-          icon="el-icon-plus"
           :size="size"
+          icon="el-icon-plus"
+          type="primary"
           @click="addRow"
-        >新增</el-button
+        >新增
+        </el-button
         >
         <el-button
           :disabled="toDeleteIds.length < 1"
-          type="danger"
-          icon="el-icon-delete"
           :size="size"
+          icon="el-icon-delete"
+          type="danger"
           @click="multipleDelete"
-          >删除</el-button
-        ></template>
-        <template #menu="{row,index,type}">
-          <el-button @click="editSkills(row)"
-                     icon="el-icon-edit"
-                     text
-                     type="primary"
-          >编辑</el-button>
-          <el-button @click="viewSkills(row)"
-                     icon="el-icon-view"
-                     text
-                     type="primary"
-          >查看</el-button>
-        </template>
+        >删除
+        </el-button
+        >
+      </template>
+      <template #menu="{row,index,type}">
+        <el-button icon="el-icon-edit"
+                   text
+                   type="primary"
+                   @click="editSkills(row)"
+        >编辑
+        </el-button>
+        <el-button icon="el-icon-view"
+                   text
+                   type="primary"
+                   @click="viewSkills(row)"
+        >查看
+        </el-button>
+      </template>
 
 
     </avue-crud>
     <el-dialog
       v-model="dialog.visible"
+      :destroy-on-close="true"
       :title="dialog.title"
       width="800px"
-      :destroy-on-close="true"
-      @close="dialog.visible = false"
+      @close="addClose"
     >
-      <user-skill   :dialog="dialog"/>
+      <user-skill :dialog="dialog"/>
     </el-dialog>
 
     <el-dialog
       v-model="editDialog.visible"
+      :destroy-on-close="true"
       :title="editDialog.title"
       width="800px"
-      :destroy-on-close="true"
       @close="editClose"
     >
-      <editSkill   :editDialog="editDialog" :skillId="editUser.id" :postId="editUser.postId"/>
+      <editSkill :editDialog="editDialog" :postId="editUser.postId" :skillId="editUser.id"/>
     </el-dialog>
     <el-dialog
       v-model="viewDialog.visible"
+      :destroy-on-close="true"
       :title="viewDialog.title"
       width="800px"
-      :destroy-on-close="true"
       @close="viewDialog.visible=false"
     >
-      <viewSkill   :viewDialog="viewDialog" :skillId="viewUser.id" :postId="viewUser.postId"/>
+      <viewSkill :postId="viewUser.postId" :skillId="viewUser.id" :viewDialog="viewDialog"/>
     </el-dialog>
   </div>
 </template>
 <script setup>
-import { ref, getCurrentInstance } from "vue";
-import { useCrud } from "@/hooks/userCrud";
+import {ref, getCurrentInstance} from "vue";
+import {useCrud} from "@/hooks/userCrud";
 import ButtonPermKeys from "@/common/configs/buttonPermission";
-import { useCommonStoreHook, useDictionaryStore } from "@/store";
+import {useCommonStoreHook, useDictionaryStore} from "@/store";
 import dictDataUtil from "@/common/configs/dictDataUtil";
 import editSkill from "@/views/base/skill/components/edit-skill.vue"
 import viewSkill from "@/views/base/skill/components/view-skill.vue"
-const { isShowTable, tableType } = toRefs(useCommonStoreHook());
+
+const {isShowTable, tableType} = toRefs(useCommonStoreHook());
 // 数据字典相关
-const { dicts } = useDictionaryStore();
+const {dicts} = useDictionaryStore();
 
 const test = () => {
   isShowTable.value = true;
@@ -106,22 +112,26 @@ const viewDialog = reactive({
   title: "查看",
   visible: false,
 });
-const editClose=()=>{
+const addClose = () => {
+  dialog.visible = false;
+  dataList();
+}
+const editClose = () => {
   editDialog.visible = false;
   dataList();
 }
-const addRow=()=>{
-  dialog.visible=true;
+const addRow = () => {
+  dialog.visible = true;
 }
 // 传入一个url,后面不带/
-const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
+const {form, data, option, search, page, toDeleteIds, Methords, Utils} =
   useCrud({
     src: "/api/v1/sys/employeeSkill",
   });
-const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } =
+const {dataList, createRow, updateRow, deleteRow, searchChange, resetChange} =
   Methords; //增删改查
-const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
-const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
+const {selectionChange, multipleDelete} = Methords; //选中和批量删除事件
+const {checkBtnPerm, downloadTemplate, exportData} = Utils; //按钮权限等工具
 // checkBtnPerm(ButtonPermKeys.PLAN.BTNS.order_add) :permission="permission"
 // const permission = reactive({
 //   delBtn: checkPerm(buttonPermission.PLAN.BTNS.order_del),
@@ -139,7 +149,6 @@ onMounted(() => {
 });
 
 
-
 /**
  * 上传excel相关
  */
@@ -154,39 +163,41 @@ const importExcelData = () => {
     uploadRef.value.show("/api/v1/plan/order/import");
   }
 };
-const editUser=ref(null);
-const viewUser=ref(null);
-const editSkills=(row)=>{
-  editDialog.visible=true;
-  editUser.value=row;
+const editUser = ref(null);
+const viewUser = ref(null);
+const editSkills = (row) => {
+  editDialog.visible = true;
+  editUser.value = row;
 
 }
-const viewSkills=(row)=>{
-  viewDialog.visible=true;
-  viewUser.value=row;
+const viewSkills = (row) => {
+  viewDialog.visible = true;
+  viewUser.value = row;
 
 }
 // 设置表格列或者其他自定义的option
 option.value = Object.assign(option.value, {
   selection: true,
-  addBtn:false,
-  viewBtn:false,
-  editBtn:false,
+  addBtn: false,
+  viewBtn: false,
+  editBtn: false,
   column: [
 
 
-    { label: "所属机构", prop: "institution", width: 130,
+    {
+      label: "所属机构", prop: "institution", width: 130,
       search: true,
       filterable: true,
       type: "select",
       overHidden: true,
-      dicUrl:dictDataUtil.dept_list_url,
-      dicMethod:"post",
-      props: { label: "deptName", value: "id" },
-      disabled:true,
+      dicUrl: dictDataUtil.dept_list_url,
+      dicMethod: "post",
+      props: {label: "deptName", value: "id"},
+      disabled: true,
 
     },
-    { label: "员工姓名", prop: "userName", width: 140,overHidden: true,search: true ,rules: [{
+    {
+      label: "员工姓名", prop: "userName", width: 140, overHidden: true, search: true, rules: [{
         required: true,
         search: true,
         message: "请选择员工姓名",
@@ -197,20 +208,23 @@ option.value = Object.assign(option.value, {
       label: "员工编号",
       prop: "employeeCode",
       search: true,
-      disabled:true,
+      disabled: true,
     },
-    { label: "岗位", prop: "postId",
+    {
+      label: "岗位", prop: "postId",
       search: true,
       filterable: true,
       type: "select",
       overHidden: true,
-      dicUrl:dictDataUtil.post_list_url,
-      dicMethod:"post",
-      props: { label: "postName", value: "id" },
+      dicUrl: dictDataUtil.post_list_url,
+      dicMethod: "post",
+      props: {label: "postName", value: "id"},
 
     },
-    { label: "部门", prop: "deptName", overHidden: true,
-      disabled:true, },
+    {
+      label: "部门", prop: "deptName", overHidden: true,
+      disabled: true,
+    },
     {
       label: "分数",
       prop: "scopes",
@@ -218,7 +232,7 @@ option.value = Object.assign(option.value, {
     },
   ],
 });
-const onSelectedFinish=()=>{
+const onSelectedFinish = () => {
 
 }
 

+ 56 - 47
src/views/device/repair/index.vue

@@ -2,11 +2,11 @@
   <div class="mainContentBox">
     <avue-crud
       ref="crudRef"
-      v-model:search="search"
       v-model="form"
+      v-model:page="page"
+      v-model:search="search"
       :data="data"
       :option="option"
-      v-model:page="page"
       @row-save="createRow"
       @row-update="updateRow"
       @row-del="deleteRow"
@@ -18,18 +18,19 @@
     >
       <template #menu-left="{ size }">
         <el-button
+          v-hasPerm="[ButtonPermKeys.DEVICE.BTNS.repair_del]"
           :disabled="toDeleteIds.length < 1"
-          type="danger"
-          icon="el-icon-delete"
           :size="size"
-          v-hasPerm="[ButtonPermKeys.DEVICE.BTNS.repair_del]"
+          icon="el-icon-delete"
+          type="danger"
           @click="multipleDelete"
-          >删除</el-button
+        >删除
+        </el-button
         >
       </template>
       <template #menu="{ size, row, index }">
-        <el-button @click="maintenance(row, 0)" text type="primary" :size="size"
-          >流程
+        <el-button :size="size" text type="primary" @click="maintenance(row, 0)"
+        >流程
           <template #icon>
             <svg-icon icon-class="liucheng"></svg-icon>
           </template>
@@ -47,18 +48,18 @@
       width="850px"
       @close="dialog.visible = false"
     >
-      <device-page @deviceInfo="deviceInfo" />
+      <device-page @deviceInfo="deviceInfo"/>
     </el-dialog>
 
     <el-dialog
       v-model="dialog1.visible"
       :title="dialog1.title"
-      width="750px"
       height="80%"
+      width="750px"
       @close="dialog1.visible = false"
     >
       <el-timeline style="max-width: 500px; margin-left: 100px">
-        <el-timeline-item center type="success" placement="top">
+        <el-timeline-item center placement="top" type="success">
           <el-card>
             <h4>设备报故</h4>
             <p>设备编号: {{ maintenanceInfo.deviceNo }}</p>
@@ -69,9 +70,9 @@
           </el-card>
         </el-timeline-item>
         <el-timeline-item
+          :type="maintenanceInfo.state === 0 ? 'primary' : 'success'"
           center
           placement="top"
-          :type="maintenanceInfo.state === 0 ? 'primary' : 'success'"
         >
           <el-card v-if="viewPage">
             <h4>设备维修</h4>
@@ -93,18 +94,18 @@
             <el-form
               ref="maintenanceInfoForm1"
               :model="maintenanceInfo"
+              :rules="rules1"
               label-width="auto"
               style="max-width: 400px"
-              :rules="rules1"
             >
               <el-form-item label="维修人员" prop="handleUser">
                 <!--                <el-input :disabled="maintenanceInfo.state !== 0" v-model="maintenanceInfo.handleUser" />-->
                 <el-select
                   v-model="maintenanceInfo.handleUser"
-                  placeholder="维修人员"
                   :disabled="maintenanceInfo.state !== 0"
-                  size="large"
                   filterable
+                  placeholder="维修人员"
+                  size="large"
                 >
                   <el-option
                     v-for="item in userList"
@@ -116,16 +117,16 @@
               </el-form-item>
               <el-form-item label="维修内容" prop="handleContent">
                 <el-input
+                  v-model="maintenanceInfo.handleContent"
                   :disabled="maintenanceInfo.state !== 0"
-                  type="textarea"
                   :rows="2"
-                  v-model="maintenanceInfo.handleContent"
+                  type="textarea"
                 />
               </el-form-item>
               <el-form-item label="处理结果">
                 <el-radio-group
-                  :disabled="maintenanceInfo.state !== 0"
                   v-model="maintenanceInfo.handleResult"
+                  :disabled="maintenanceInfo.state !== 0"
                   class="ml-4"
                 >
                   <el-radio :value="0">可正常运行</el-radio>
@@ -134,20 +135,19 @@
               </el-form-item>
               <el-form-item style="margin-left: 45%">
                 <el-button
-                  type="primary"
                   v-if="maintenanceInfo.state === 0"
                   v-hasPerm="[ButtonPermKeys.DEVICE.BTNS.repair_repair]"
                   :disabled="maintenanceInfo.state !== 0"
+                  type="primary"
                   @click="maintenanceSubmit1"
-                  >维修</el-button
+                >维修
+                </el-button
                 >
               </el-form-item>
             </el-form>
           </el-card>
         </el-timeline-item>
         <el-timeline-item
-          center
-          placement="top"
           :type="
             maintenanceInfo.state === 1
               ? 'primary'
@@ -155,6 +155,8 @@
                 ? 'info'
                 : 'success'
           "
+          center
+          placement="top"
         >
           <el-card v-if="viewPage">
             <h4>设备审批</h4>
@@ -173,21 +175,21 @@
           <el-card v-if="!viewPage">
             <h4>设备审批</h4>
             <el-form
-              ref="maintenanceInfoForm2"
               v-if="maintenanceInfo.state >= 1"
+              ref="maintenanceInfoForm2"
               :model="maintenanceInfo"
+              :rules="rules2"
               label-width="auto"
               style="max-width: 400px"
-              :rules="rules2"
             >
               <el-form-item label="审批人员" prop="auditUser">
                 <!--                <el-input :disabled="maintenanceInfo.state !== 1 && readonly"  v-model="maintenanceInfo.auditUser" />-->
                 <el-select
                   v-model="maintenanceInfo.auditUser"
-                  placeholder="审批人员"
                   :disabled="maintenanceInfo.state !== 1 && readonly"
-                  size="large"
                   filterable
+                  placeholder="审批人员"
+                  size="large"
                 >
                   <el-option
                     v-for="item in userList"
@@ -199,8 +201,8 @@
               </el-form-item>
               <el-form-item label="审批结果">
                 <el-radio-group
-                  :disabled="maintenanceInfo.state !== 1 && readonly"
                   v-model="maintenanceInfo.auditResult"
+                  :disabled="maintenanceInfo.state !== 1 && readonly"
                   class="ml-4"
                 >
                   <el-radio :value="0">通过</el-radio>
@@ -209,12 +211,13 @@
               </el-form-item>
               <el-form-item style="margin-left: 45%">
                 <el-button
-                  type="primary"
                   v-if="maintenanceInfo.state === 1"
                   v-hasPerm="[ButtonPermKeys.DEVICE.BTNS.repair_audit]"
                   :disabled="maintenanceInfo.state !== 1"
+                  type="primary"
                   @click="maintenanceSubmit2"
-                  >审批</el-button
+                >审批
+                </el-button
                 >
               </el-form-item>
             </el-form>
@@ -225,15 +228,16 @@
   </div>
 </template>
 <script setup>
-import { ref, getCurrentInstance } from "vue";
-import { useCrud } from "@/hooks/userCrud";
+import {ref, getCurrentInstance} from "vue";
+import {useCrud} from "@/hooks/userCrud";
 import ButtonPermKeys from "@/common/configs/buttonPermission";
-import { checkPerm } from "@/directive/permission";
-import { getUserList } from "@/api/system/user";
-import { repair, audit } from "@/api/device/index";
-import { useCommonStoreHook } from "@/store";
+import {checkPerm} from "@/directive/permission";
+import {getUserList} from "@/api/system/user";
+import {repair, audit} from "@/api/device/index";
+import {useCommonStoreHook} from "@/store";
 import dictDataUtil from "@/common/configs/dictDataUtil";
-const { isShowTable, tableType } = toRefs(useCommonStoreHook());
+
+const {isShowTable, tableType} = toRefs(useCommonStoreHook());
 const test = () => {
   isShowTable.value = true;
   tableType.value = tableType.value == 1 ? 2 : 1;
@@ -256,14 +260,14 @@ const dialog1 = reactive({
 });
 const userList = ref([]);
 // 传入一个url,后面不带/
-const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
+const {form, data, option, search, page, toDeleteIds, Methords, Utils} =
   useCrud({
     src: "/api/v1/device/repair",
   });
-const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } =
+const {dataList, createRow, updateRow, deleteRow, searchChange, resetChange} =
   Methords; //增删改查
-const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
-const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
+const {selectionChange, multipleDelete} = Methords; //选中和批量删除事件
+const {checkBtnPerm, downloadTemplate, exportData} = Utils; //按钮权限等工具
 const crudRef = ref(null); //crudRef.value 获取avue-crud对象
 const deviceInfo = (value) => {
   form.value.deviceNo = value.deviceNo;
@@ -318,14 +322,14 @@ const maintenanceSubmit2 = () => {
 };
 const rules1 = reactive({
   handleUser: [
-    { required: true, message: "维修人员不能为空", trigger: "blur" },
+    {required: true, message: "维修人员不能为空", trigger: "blur"},
   ],
   handleContent: [
-    { required: true, message: "维修内容不能为空", trigger: "blur" },
+    {required: true, message: "维修内容不能为空", trigger: "blur"},
   ],
 });
 const rules2 = reactive({
-  auditUser: [{ required: true, message: "审批人员不能为空", trigger: "blur" }],
+  auditUser: [{required: true, message: "审批人员不能为空", trigger: "blur"}],
 });
 // 设置表格列或者其他自定义的option
 option.value = Object.assign(option.value, {
@@ -334,6 +338,9 @@ option.value = Object.assign(option.value, {
   labelWidth: 150,
   viewBtn: false,
   editBtn: false,
+  selectable: (row, index) => {
+    return row.state === 0;
+  },
   column: [
     {
       label: "设备编号",
@@ -346,7 +353,7 @@ option.value = Object.assign(option.value, {
           trigger: "trigger",
         },
       ],
-      click: ({ value, column }) => {
+      click: ({value, column}) => {
         if (column.boxType) {
           dialog.visible = true;
         }
@@ -363,6 +370,7 @@ option.value = Object.assign(option.value, {
       prop: "deviceType",
       type: "select",
       addDisabled: true,
+      overHidden: true,
       search: true,
       dicUrl: dictDataUtil.request_url + dictDataUtil.TYPE_CODE.device_type,
       props: {
@@ -388,6 +396,7 @@ option.value = Object.assign(option.value, {
       minRows: 2, //最小行/最小值
       type: "textarea", //类型为多行文本域框
       maxlength: 512, //最大输入长度,
+      overHidden: true,
       rules: [
         {
           required: true,
@@ -402,9 +411,9 @@ option.value = Object.assign(option.value, {
       type: "select",
       display: false,
       dicData: [
-        { label: "待维修", value: 0 },
-        { label: "待审批 ", value: 1 },
-        { label: "已完成", value: 2 },
+        {label: "待维修", value: 0},
+        {label: "待审批 ", value: 1},
+        {label: "已完成", value: 2},
       ],
     },
     {