qinhb vor 1 Jahr
Ursprung
Commit
b27347ce16
2 geänderte Dateien mit 140 neuen und 143 gelöschten Zeilen
  1. 8 0
      src/api/device/index.ts
  2. 132 143
      src/views/device/metering/index.vue

+ 8 - 0
src/api/device/index.ts

@@ -115,4 +115,12 @@ export function updateProtocol(params: any) {
   });
 }
 
+export function meteringUpdate(params: any) {
+  return request({
+    url: "/api/v1/device/metering/meteringUpdate",
+    method: "post",
+    data: params,
+  });
+}
+
 

+ 132 - 143
src/views/device/metering/index.vue

@@ -16,7 +16,7 @@
         @current-change="dataList"
         @selection-change="selectionChange"
     >
-      <template #menu-left="{ size }">
+<!--      <template #menu-left="{ size }">
         <el-button
           :disabled="toDeleteIds.length < 1"
           type="danger"
@@ -25,25 +25,13 @@
           @click="multipleDelete"
           >删除</el-button
         >
-      </template>
+      </template>-->
       <template #menu="{size,row,index}">
         <el-button @click="maintenance(row)"
                    icon="el-icon-setting"
                    text
-                   v-if="row.state === 0"
-                   type="primary"
-                   :size="size">流程</el-button>
-        <el-button disabled
-                   icon="el-icon-setting"
-                   text
-                   v-if="row.state === 1"
                    type="primary"
-                   :size="size">流程</el-button>
-        <el-button @click="maintenanceList(row)"
-                   icon="el-icon-fold"
-                   text
-                   type="primary"
-                   :size="size">记录</el-button>
+                   :size="size">计量</el-button>
       </template>
     </avue-crud>
     <el-dialog
@@ -62,7 +50,7 @@
         height="80%"
         @close="dialog1.visible = false">
       <el-timeline style="max-width: 500px;margin-left: 100px">
-        <el-timeline-item center color="#0bbd87" type="success" placement="top">
+<!--        <el-timeline-item center color="#0bbd87" type="success" placement="top">
           <el-card>
             <h4>维护计划</h4>
             <p>设备编号: {{maintenanceInfo.deviceNo}}</p>
@@ -70,15 +58,15 @@
             <p>维护内容:{{maintenanceInfo.remark}}</p>
             <p>计划时间:{{maintenanceInfo.nextTime}}</p>
           </el-card>
-        </el-timeline-item>
-        <el-timeline-item center placement="top" :type="maintenanceInfo.state === 0 ? 'primary' : 'success'">
+        </el-timeline-item>-->
+<!--        <el-timeline-item center placement="top" :type="maintenanceInfo.state === 0 ? 'primary' : 'success'">-->
           <el-card>
-            <h4>设备维护</h4>
+            <h4>设备计量</h4>
             <el-form ref="maintenanceInfoForm" :model="maintenanceInfo" label-width="auto" style="max-width: 400px" :rules="rules">
-              <el-form-item label="维护人员" prop="userName">
+              <el-form-item label="计量人员" prop="userName">
                 <el-select
                     v-model="maintenanceInfo.userName"
-                    placeholder="维护人员"
+                    placeholder="计量人员"
                     size="large"
                     style="width: 240px">
                   <el-option
@@ -89,27 +77,35 @@
                   />
                 </el-select>
               </el-form-item>
-              <el-form-item label="维护结果">
+              <el-form-item label="计量结果">
                 <el-radio-group v-model="maintenanceInfo.result" class="ml-4">
-                  <el-radio :value="0">正常</el-radio>
-                  <el-radio :value="1">报故</el-radio>
+                  <el-radio :value="0">已计量</el-radio>
                 </el-radio-group>
               </el-form-item>
-              <el-form-item v-if="maintenanceInfo.result === 1" label="报故内容">
+<!--              <el-form-item v-if="maintenanceInfo.result === 1" label="报故内容">
                 <el-input v-model="maintenanceInfo.maintenanceContent" />
+              </el-form-item>-->
+              <el-form-item label="下次计量日期" prop="nextTime">
+                <el-date-picker
+                    v-model="maintenanceInfo.nextTime"
+                    type="date"
+                    style="width:240px;"
+                    :disabled-date="disabledDate"
+                    placeholder="请选择时间"
+                    format="YYYY-MM-DD"
+                    value-format="YYYY-MM-DD"
+                />
+<!--                <el-input v-model="maintenanceInfo.nextTime" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"/>-->
               </el-form-item>
-              <el-form-item v-if="maintenanceInfo.result === 0" label="下次维护日期">
-                <el-input v-model="maintenanceInfo.nextTime" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"/>
-              </el-form-item>
-              <el-form-item v-if="maintenanceInfo.result === 0" label="下次维护内容">
+<!--              <el-form-item v-if="maintenanceInfo.result === 0" label="下次维护内容">
                 <el-input v-model="maintenanceInfo.maintenanceContent" />
-              </el-form-item>
+              </el-form-item>-->
               <el-form-item style="margin-left: 45%">
                 <el-button type="primary" @click="maintenanceSubmit">保存</el-button>
               </el-form-item>
             </el-form>
           </el-card>
-        </el-timeline-item>
+<!--        </el-timeline-item>-->
       </el-timeline>
     </el-dialog>
 
@@ -129,7 +125,7 @@ import { ref, getCurrentInstance } from "vue";
 import { useCrud } from "@/hooks/userCrud";
 import ButtonPermKeys from "@/common/configs/buttonPermission";
 import {getUserList} from "@/api/system/user"
-import {maintenanceUpdate} from "@/api/device/index";
+import {maintenanceUpdate,meteringUpdate} from "@/api/device/index";
 import { useCommonStoreHook } from "@/store";
 import dictDataUtil from "@/common/configs/dictDataUtil";
 import RecordPage from "./components/metering-record.vue";
@@ -138,7 +134,9 @@ const test = () => {
   isShowTable.value = true;
   tableType.value = tableType.value == 1 ? 2 : 1;
 };
-
+const disabledDate = (time) =>{
+  return time.getTime() < Date.now(); // 8.64e7 毫秒数代表一天
+}
 const dialog = reactive({
   title: "设备选择",
   visible: false,
@@ -155,7 +153,7 @@ const userList = ref([])
 // 传入一个url,后面不带/
 const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
   useCrud({
-    src: "/api/v1/device/metering",
+    src: "/api/v1/device",
   });
 const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } = Methords; //增删改查
 const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
@@ -168,7 +166,7 @@ const deviceInfo = (value) => {
 const maintenanceInfo = ref(null)
 const maintenance = (row)=>{
   maintenanceInfo.value = row
-  maintenanceInfo.value.maintenanceContent = row.remark
+  maintenanceInfo.value.deviceId = row.id
   maintenanceInfo.value.result = 0
   dialog1.visible = true
 }
@@ -186,7 +184,7 @@ const maintenanceSubmit =()=>{
   //alert(JSON.stringify(maintenanceInfo.value))
   maintenanceInfoForm.value.validate((isValid, invalidFields) => {
     if (isValid) {
-      maintenanceUpdate(maintenanceInfo.value).then((data)=>{
+      meteringUpdate(maintenanceInfo.value).then((data)=>{
         ElMessage({
           message: data.msg,
           type: "success",
@@ -204,169 +202,160 @@ const rules = reactive({
     // trigger触发此条规则校验的时机,有两个值, blur 或 change,默认就是blur和change都会进行校验
     // min此字段的最小长度,max此字段的最大长度
     // pattern 正则表达式
-    { required: true, message: '维护人员不能为空', trigger: 'blur' }
+    { required: true, message: '计量人员不能为空', trigger: 'blur' }
+  ],
+  nextTime: [
+    { required: true, message: '计量日期不能为空', trigger: 'blur' }
   ]
 })
 // 设置表格列或者其他自定义的option
 option.value = Object.assign(option.value, {
   delBtn: false,
-  selection: true,
+  selection: false,
   labelWidth: 150,
+  addBtn: false,
+  editBtn: false,
   viewBtn: false,
   column: [
     {
       label: "设备编号",
       prop: "deviceNo",
       search: true,
-      rules: [
-        {
-          required: true,
-          message: "设备编号不能为空",
-          trigger: "trigger",
-        },
-      ],
-      click: ({ value, column }) => {
-        if(column.boxType){
-          dialog.visible = true
-        }
-      },
+      width: 160,
+      overHidden: true,
     },
     {
       label: "设备名称",
       prop: "deviceName",
-      display: false,
       search: true,
+      width: 160,
+      overHidden: true,
     },
     {
       label: "设备类型",
       prop: "deviceType",
       type: "select",
+      width: 130,
+      overHidden: true,
       search: true,
-      display: false,
       dicUrl:
-        dictDataUtil.request_url +
-        dictDataUtil.TYPE_CODE.device_type,
+          dictDataUtil.request_url +
+          dictDataUtil.TYPE_CODE.device_type,
       props: {
         label: "dictLabel",
         value: "dictValue",
       },
-      rules: [
-        {
-          required: true,
-          message: "设备类型不能为空",
-          trigger: "trigger",
-        },
-      ],
-    },
-    {
-      label: "设备位置",
-      prop: "devicePosition",
-      display: false,
     },
     {
-      label: "运行状态",
-      prop: "runState",
+      label: "设备状态",
+      prop: "state",
       type: "select",
-      display: false,
+      width: 160,
+      overHidden: true,
+      search: true,
       dicUrl:
           dictDataUtil.request_url +
-          dictDataUtil.TYPE_CODE.device_run_status,
+          dictDataUtil.TYPE_CODE.device_status,
       props: {
         label: "dictLabel",
         value: "dictValue",
       },
-      rules: [
-        {
-          required: true,
-          message: "运行状态不能为空",
-          trigger: "trigger",
-        },
-      ],
     },
     {
-      label: "计量负责人",
-      prop: "meteringUser",
-      search: true,
-      rules: [
-        {
-          required: true,
-          message: "计量负责人不能为空",
-          trigger: "trigger",
-        },
-      ],
+      label: "在线状态",
+      prop: "onlineState",
+      width: 100,
+      display: false,
+      html: true,
+      formatter: (val) => {
+        if (val.onlineState === "1") {
+          return '<b class="el-tag el-tag--success el-tag--light">在线</b>';
+        } else {
+          return '<b class="el-tag el-tag--warning el-tag--light">离线</b>';
+        }
+      },
     },
     {
-      label: "计量单位",
-      prop: "meteringUnit",
-      rules: [
-        {
-          required: true,
-          message: "计量单位不能为空",
-          trigger: "trigger",
-        },
-      ],
+      label: "负责人",
+      prop: "head",
+      width: 160,
+      overHidden: true,
     },
     {
-      label: "计量周期",
-      prop: "cycle",
+      label: "计量有效期",
+      prop: "meteringDate",
+      type: "date",
+      width: 160,
+      format: 'YYYY-MM-DD',
+      valueFormat: 'YYYY-MM-DD',
+      overHidden: true,
+    },
+    {
+      label: "所属PAC",
+      prop: "terminal",
       type: "select",
-      dicUrl:
-          dictDataUtil.request_url +
-          dictDataUtil.TYPE_CODE.device_maintenance_cycle,
+      width: 160,
+      overHidden: true,
+      dicUrl:import.meta.env.VITE_APP_BASE_API + "/api/v1/device/pacList",
       props: {
-        label: "dictLabel",
-        value: "dictValue",
-      },
-      rules: [
-        {
-          required: true,
-          message: "计量周期不能为空",
-          trigger: "trigger",
-        },
-      ],
+        label: "deviceName",
+        value: "deviceNo",
+      }
     },
     {
-      label: "计量状态",
-      prop: "state",
-      type: "select",
-      addDisplay: false,
-      dicData: [{label: '待审批',value:0},{label: '带计量',value:1},{label: '已计量',value:2}],
-      rules: [
-        {
-          required: true,
-          message: "计量状态不能为空",
-          trigger: "trigger",
-        },
-      ],
+      label: "供应厂商",
+      prop: "manufacturer",
+      width: 160,
+      overHidden: true,
     },
     {
-      label: "计量日期",
-      prop: "nextTime",
-      type: "date",
-      addDisplay: false,
-      width: "120",
-      format: "YYYY-MM-DD", //前端展示格式
-      valueFormat: "YYYY-MM-DD", //设置后端接收的日期格式
-      rules: [
-        {
-          required: true,
-          message: "计量日期不能为空",
-          trigger: "trigger",
-        },
-      ],
+      label: "所属部门",
+      prop: "deptId",
+      width: 160,
+      overHidden: true,
+      type: "tree",
+      dicUrl: dictDataUtil.dept_tree_url,
+      props: {
+        label: "deptName",
+        value: "id",
+      }
+    },
+    {
+      label: "所在车间",
+      prop: "workshop",
+      width: 160,
+      overHidden: true,
+    },
+    {
+      label: "所在工位",
+      prop: "station",
+      width: 160,
+      overHidden: true,
+    },
+    {
+      label: "设备位置",
+      prop: "devicePosition",
+      width: 160,
+      overHidden: true,
+    },
+    {
+      label: "规格",
+      prop: "specifications",
+      width: 160,
+      overHidden: true,
     },
     {
-      label: "备注",
-      prop: "remark",
-      minRows: 2, //最小行/最小值
-      type: "textarea", //类型为多行文本域框
-      maxlength: 512, //最大输入长度
-      overHidden: true
+      label: "品牌",
+      width: 160,
+      overHidden: true,
+      prop: "brand",
     },
   ],
 });
 
 onMounted(() => {
+  search.value.needMetering = "1"
+  maintenanceInfo.result = "0"
   dataList();
   queryUserList()
 });