Browse Source

仪器资源管理。

jiaxiaoqiang 3 months ago
parent
commit
923605a44d

+ 61 - 5
src/api/config/index.ts

@@ -59,7 +59,6 @@ export function configDel(queryParams?: object): AxiosPromise<any> {
   });
 }
 
-
 /**
  * 发送全局数据分页查询请求
  *
@@ -83,7 +82,7 @@ export function globalDataPage(queryParams?: object): AxiosPromise<any> {
 //全局数据新增
 export function globalDataAdd(queryParams?: object): AxiosPromise<any> {
   return request({
-    url: "/api/v1/test/engrGlobalData/add",//api/v1/test/engrGlobalData/add
+    url: "/api/v1/test/engrGlobalData/add", //api/v1/test/engrGlobalData/add
     method: "post",
     data: queryParams,
   });
@@ -113,7 +112,9 @@ export function selectInstrumentType(queryParams?: object): AxiosPromise<any> {
 }
 
 //新增测试仪器配置
-export function engrInstrumentConfigAdd(queryParams?: object): AxiosPromise<any> {
+export function engrInstrumentConfigAdd(
+  queryParams?: object
+): AxiosPromise<any> {
   return request({
     url: "/api/v1/test/engrInstrumentConfig/add",
     method: "post",
@@ -122,7 +123,9 @@ export function engrInstrumentConfigAdd(queryParams?: object): AxiosPromise<any>
 }
 
 //更新测试仪器配置
-export function engrInstrumentConfigUpdate(queryParams?: object): AxiosPromise<any> {
+export function engrInstrumentConfigUpdate(
+  queryParams?: object
+): AxiosPromise<any> {
   return request({
     url: "/api/v1/test/engrInstrumentConfig/update",
     method: "post",
@@ -130,10 +133,63 @@ export function engrInstrumentConfigUpdate(queryParams?: object): AxiosPromise<a
   });
 }
 //删除测试仪器配置
-export function engrInstrumentConfigDel(queryParams?: object): AxiosPromise<any> {
+export function engrInstrumentConfigDel(
+  queryParams?: object
+): AxiosPromise<any> {
   return request({
     url: "/api/v1/test/engrInstrumentConfig/del",
     method: "post",
     data: queryParams,
   });
 }
+
+// 查询通讯类型
+export function selectCommunicateType(queryParams?: object): AxiosPromise<any> {
+  return request({
+    url: "/api/v1/test/instrument/selectCommType",
+    method: "post",
+    data: queryParams,
+  });
+}
+
+// 仪器资源查询
+export function selectInstrumentResource(
+  queryParams?: object
+): AxiosPromise<any> {
+  return request({
+    url: "/api/v1/test/instrument/list",
+    method: "post",
+    data: queryParams,
+  });
+}
+
+// 仪器资源删除
+export function delInstrumentResource(id: string): AxiosPromise<any> {
+  return request({
+    url: "/api/v1/test/instrument/del",
+    method: "post",
+    data: {
+      id: id,
+    },
+  });
+}
+
+// 仪器资源新增
+export function addInstrumentResource(queryParams?: object): AxiosPromise<any> {
+  return request({
+    url: "/api/v1/test/instrument/add",
+    method: "post",
+    data: queryParams,
+  });
+}
+
+// 仪器资源更新
+export function updateInstrumentResource(
+  queryParams?: object
+): AxiosPromise<any> {
+  return request({
+    url: "/api/v1/test/instrument/update",
+    method: "post",
+    data: queryParams,
+  });
+}

+ 6 - 0
src/router/index.ts

@@ -65,6 +65,12 @@ export const constantRoutes: RouteRecordRaw[] = [
     component: () => import("@/views/modules/global-config/global-config.vue"),
     meta: { hidden: true },
   },
+  {
+    path: "/deviceResources",
+    component: () =>
+      import("@/views/modules/global-config/deviceResources.vue"),
+    meta: { hidden: true },
+  },
   // {
   // path: "/test",
   // component: () => import("@/views/modules/home/test/test.vue"),

+ 191 - 0
src/views/modules/global-config/components/resourceForm.vue

@@ -0,0 +1,191 @@
+<script setup lang="ts">
+import {
+  addInstrumentResource,
+  selectCommunicateType,
+  selectInstrumentType,
+  updateInstrumentResource,
+} from "@/api/config";
+
+const emits = defineEmits(["finished"]);
+
+const addVisible = ref(false);
+const dialogType = ref("1"); // 1新增 2修改
+const formRef = ref(null);
+const formData = ref({
+  baudRate: "",
+  channel: "",
+  checkBit: "",
+  commConfig: "",
+  commType: "",
+  connUrl: "",
+  dataBit: "",
+  instrumentModule: "",
+  instrumentName: "",
+  instrumentProperty: "1",
+  instrumentType: "",
+  ip: "",
+  port: "",
+  queryUrl: "",
+  slot: "",
+  stopBit: "",
+  writeUrl: "",
+});
+
+// 1 新增 2 修改
+
+const openDialog = (type: string, data: any) => {
+  dialogType.value = type;
+
+  getDevTypes();
+  getCommTypes();
+
+  addVisible.value = true;
+
+  nextTick(() => {
+    formRef.value?.resetFields();
+  });
+
+  dialogType.value = type;
+  if (type === "1") {
+  } else {
+    formData.value = data;
+  }
+};
+
+const saveFun = () => {
+  formRef.value
+    ?.validate()
+    .then(async () => {
+      formData.value.instrumentProperty = "1";
+      if (dialogType.value === "1") {
+        await addInstrumentResource(formData.value);
+      } else {
+        await updateInstrumentResource(formData.value);
+      }
+      emits("finished");
+      addVisible.value = false;
+    })
+    .catch(() => {});
+};
+
+defineExpose({
+  openDialog,
+});
+
+// 查询仪器类型
+const deviceTypeOptions = ref<any[]>([]);
+const getDevTypes = () => {
+  selectInstrumentType().then((res) => {
+    deviceTypeOptions.value = res.data;
+  });
+};
+// 查询通讯类型
+const commTypeOptions = ref<any[]>([]);
+const getCommTypes = () => {
+  selectCommunicateType({}).then((res) => {
+    commTypeOptions.value = res.data;
+  });
+};
+</script>
+
+<template>
+  <el-dialog
+    v-model="addVisible"
+    :append-to-body="true"
+    :title="'仪器资源' + (dialogType === '1' ? '新增' : '修改')"
+    width="500"
+    align-center
+    :close-on-click-modal="false"
+  >
+    <el-form
+      label-width="auto"
+      ref="formRef"
+      v-model:model="formData"
+      style="max-width: 600px"
+    >
+      <el-form-item label="波特率" prop="baudRate">
+        <el-input v-model="formData.baudRate" />
+      </el-form-item>
+      <el-form-item label="通道号" prop="channel">
+        <el-input v-model="formData.channel" />
+      </el-form-item>
+      <el-form-item label="校验位" prop="checkBit">
+        <el-input v-model="formData.checkBit" />
+      </el-form-item>
+      <el-form-item label="通信配置" prop="commConfig">
+        <el-input v-model="formData.commConfig" />
+      </el-form-item>
+      <el-form-item label="连接url" prop="connUrl">
+        <el-input v-model="formData.connUrl" />
+      </el-form-item>
+      <el-form-item label="数据位" prop="dataBit">
+        <el-input v-model="formData.dataBit" />
+      </el-form-item>
+      <el-form-item label="配置型号" prop="instrumentModule">
+        <el-input v-model="formData.instrumentModule" />
+      </el-form-item>
+      <el-form-item label="仪器名称" prop="instrumentName">
+        <el-input v-model="formData.instrumentName" />
+      </el-form-item>
+      <!--      <el-form-item label="仪器属性" prop="instrumentProperty">-->
+      <!--        <el-input v-model="formData.instrumentProperty" />-->
+      <!--      </el-form-item>-->
+      <el-form-item label="设备地址" prop="ip">
+        <el-input v-model="formData.ip" />
+      </el-form-item>
+      <el-form-item label="设备端口" prop="port">
+        <el-input v-model="formData.port" />
+      </el-form-item>
+      <el-form-item label="读url" prop="queryUrl">
+        <el-input v-model="formData.queryUrl" />
+      </el-form-item>
+      <el-form-item label="槽位号" prop="slot">
+        <el-input v-model="formData.slot" />
+      </el-form-item>
+      <el-form-item label="停止位" prop="stopBit">
+        <el-input v-model="formData.stopBit" />
+      </el-form-item>
+      <el-form-item label="写url" prop="writeUrl">
+        <el-input v-model="formData.writeUrl" />
+      </el-form-item>
+
+      <el-form-item label="通信类型" prop="commType">
+        <el-select
+          v-model="formData.commType"
+          placeholder="请选择通信类型"
+          size="large"
+        >
+          <el-option
+            v-for="item in commTypeOptions"
+            :key="item.id"
+            :label="item.dictLabel"
+            :value="item.dictValue"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="仪器类型" prop="instrumentType">
+        <el-select
+          v-model="formData.instrumentType"
+          placeholder="请选择仪器类型"
+          size="large"
+        >
+          <el-option
+            v-for="item in deviceTypeOptions"
+            :key="item.id"
+            :label="item.dictLabel"
+            :value="item.dictValue"
+          />
+        </el-select>
+      </el-form-item>
+    </el-form>
+
+    <template #footer>
+      <div class="dialog-footer">
+        <el-button @click="addVisible = false">取消</el-button>
+        <el-button type="primary" @click="saveFun"> 保存 </el-button>
+      </div>
+    </template>
+  </el-dialog>
+</template>
+
+<style scoped lang="scss"></style>

+ 124 - 0
src/views/modules/global-config/deviceResources.vue

@@ -0,0 +1,124 @@
+<script lang="ts" setup>
+import SecondHeader from "@/views/modules/conmon/SecondHeader.vue";
+import ResourceForm from "./components/resourceForm.vue";
+import { delInstrumentResource, selectInstrumentResource } from "@/api/config";
+
+const resourceList = ref<any[]>([]);
+
+onMounted?.(() => {
+  getList();
+});
+
+const getList = () => {
+  selectInstrumentResource({ instrumentProperty: "1" }).then((data) => {
+    resourceList.value = data.data;
+  });
+};
+
+const configHandleDelete = async (index: number, row: any) => {
+  await delInstrumentResource(row.id);
+  resourceList.value.splice(index, 1);
+};
+
+const configHandleEdit = async (index: number, row: any) => {
+  resourceRef.value && resourceRef.value.openDialog("2", row);
+};
+
+const addConfigFun = () => {
+  resourceRef.value && resourceRef.value.openDialog("1");
+};
+
+const resourceRef = ref();
+</script>
+
+<template>
+  <div class="global-config">
+    <SecondHeader>仪器资源配置</SecondHeader>
+    <div class="btns">
+      <el-button type="primary" @click="addConfigFun">
+        <span class="add">+</span>
+        新增
+      </el-button>
+    </div>
+    <el-table :data="resourceList" show-overflow-tooltip>
+      <el-table-column label="序号" type="index" width="80" />
+
+      <el-table-column label="波特率" prop="baudRate"> </el-table-column>
+      <el-table-column label="通道号" prop="channel"> </el-table-column>
+      <el-table-column label="校验位" prop="checkBit"> </el-table-column>
+      <el-table-column label="通信配置" prop="commConfig" width="200">
+      </el-table-column>
+      <el-table-column label="连接url" prop="connUrl"> </el-table-column>
+      <el-table-column label="数据位" prop="dataBit"> </el-table-column>
+      <el-table-column label="配置型号" prop="instrumentModule">
+      </el-table-column>
+      <el-table-column label="仪器名称" prop="instrumentName">
+      </el-table-column>
+      <!--      <el-table-column label="仪器属性" prop="instrumentProperty">-->
+      <!--        <el-input v-model="formData.instrumentProperty" />-->
+      <!--      </el-table-column>-->
+      <el-table-column label="设备地址" prop="ip"> </el-table-column>
+      <el-table-column label="设备端口" prop="port"> </el-table-column>
+      <el-table-column label="读url" prop="queryUrl"> </el-table-column>
+      <el-table-column label="槽位号" prop="slot"> </el-table-column>
+      <el-table-column label="停止位" prop="stopBit"> </el-table-column>
+      <el-table-column label="写url" prop="writeUrl"> </el-table-column>
+
+      <el-table-column label="通信类型" prop="commType" />
+      <el-table-column label="仪器类型" prop="instrumentType">
+      </el-table-column>
+
+      <el-table-column label="操作" prop="操作" fixed="right" width="180">
+        <template #default="scope">
+          <el-button
+            text
+            size="small"
+            type="primary"
+            @click="configHandleDelete(scope.$index, scope.row)"
+          >
+            删除
+          </el-button>
+          <el-button
+            text
+            size="small"
+            type="primary"
+            @click="configHandleEdit(scope.$index, scope.row)"
+          >
+            修改
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <ResourceForm ref="resourceRef" @finished="getList"></ResourceForm>
+  </div>
+</template>
+
+<style scoped lang="scss">
+.global-config {
+  width: 100%;
+  height: 100vh;
+  .demo-tabs {
+    // background-color: red;
+    :deep(.el-tabs__nav-scroll) {
+      padding: 0 20px;
+    }
+  }
+  .add {
+    width: 12px;
+    height: 12px;
+    line-height: 12px;
+    border-radius: 12px;
+    text-align: center;
+    background-color: #fff;
+    color: #3b7cff;
+    margin-right: 10px;
+    vertical-align: middle;
+  }
+}
+
+.btns {
+  text-align: start;
+  margin: 12px;
+}
+</style>