xiaohaizhao 1 month ago
parent
commit
89bac6c63f

+ 1 - 1
index.html

@@ -4,7 +4,7 @@
     <meta charset="UTF-8" />
     <link rel="icon" type="image/svg+xml" href="/vite.svg" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>班尼戈水务管理</title>
+    <title>班尼戈智慧管网控制平台</title>
     <!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=yPAXrDnWV10GdKxnOMwfk8UrjSDCRLun"></script> -->
   </head>
   <body style="overflow: hidden;">

+ 185 - 129
src/operation/moduleNormal/productManage/detail/index.vue

@@ -1,16 +1,23 @@
 <template>
   <div>
     <!-- :disable="utils.isDisabled(userData.status,['ACTIVE'])" -->
-    <detail-template 
-      :headData="mainAreaData" 
-      :title="`${userData.prodname}(${userData.prodnum})`" 
-      :tabs="['详情信息','物模型','告警配置']" 
-      ownertable="w_product" 
-      :delParam="{id:'20230815135002',content:{w_productid:router.currentRoute.value.query.id}}"
+    <detail-template
+      :headData="mainAreaData"
+      :title="`${userData.prodname}(${userData.prodnum})`"
+      :tabs="['详情信息', '物模型', '告警配置']"
+      ownertable="w_product"
+      :delParam="{
+        id: '20230815135002',
+        content: { w_productid: router.currentRoute.value.query.id },
+      }"
       :disable="!utils.hasPermission('delete') || isDisabled"
-      >
+    >
       <template #operation>
-        <Edit :disabled="isDisabled || !utils.hasPermission('update')" :data="userData" @onSuccess="mianData"></Edit>
+        <Edit
+          :disabled="isDisabled || !utils.hasPermission('update')"
+          :data="userData"
+          @onSuccess="mianData"
+        ></Edit>
         <customBtn
           :btnName="userData.isused ? '禁用' : '启用'"
           idName="20230609160002"
@@ -18,48 +25,82 @@
           :id="userData.w_productid"
           type="primary"
           size="middle"
-          :paramData="[{key:'isused',value:userData.isused ? 0 : 1}]"
-          :message="userData.isused ? '确定禁用当前产品吗?' : '确定启用当前产品吗?'"
+          :paramData="[{ key: 'isused', value: userData.isused ? 0 : 1 }]"
+          :message="
+            userData.isused ? '确定禁用当前产品吗?' : '确定启用当前产品吗?'
+          "
           @onSuccess="mianData"
           :disabled="!utils.hasPermission('use') || isDisabled"
         />
       </template>
       <template #tab0>
         <p class="normal-title">基本信息</p>
-        <defaultInfo :data="defaultInfoData" style="margin-bottom: 16px;"></defaultInfo>
+        <defaultInfo
+          :data="defaultInfoData"
+          style="margin-bottom: 16px"
+        ></defaultInfo>
         <p class="normal-title">系统信息</p>
-        <defaultInfo :data="systemInfoData" :attinfos="userData.attinfos" :column="2"></defaultInfo>
+        <defaultInfo
+          :data="systemInfoData"
+          :attinfos="userData.attinfos"
+          :column="2"
+        ></defaultInfo>
       </template>
       <template #tab1>
-        <SelectModel 
-          ref="Class" 
-          @selectRowData="selectChange" 
-          rowKey="w_firmwareid" 
-          :param="firmwareParam" 
-          :columns="utils.TBLayout('firmwareTable')" title="选择固件版本"
+        <SelectModel
+          ref="Class"
+          @selectRowData="selectChange"
+          rowKey="w_firmwareid"
+          :param="firmwareParam"
+          :columns="utils.TBLayout('firmwareTable')"
+          title="选择固件版本"
         >
           <template v-slot:slot1>
-            <div style="display: block;margin-bottom: 10px;">
+            <div style="display: block; margin-bottom: 10px">
               <span style="margin-right: 10px">固件版本:</span>
-              <a-input @click="$refs.Class.modeVisible=true" style="width: 200px;" placeholder="请选择固件版本" readonly v-model:value="firmware.firmwarename"></a-input>
+              <a-input
+                @click="$refs.Class.modeVisible = true"
+                style="width: 200px"
+                placeholder="请选择固件版本"
+                readonly
+                v-model:value="firmware.firmwarename"
+              ></a-input>
             </div>
           </template>
         </SelectModel>
-        <a-radio-group v-model:value="currentInfoModel" :style="{ marginBottom: '8px' }" style="margin-bottom:10px">
+        <a-radio-group
+          v-model:value="currentInfoModel"
+          :style="{ marginBottom: '8px' }"
+          style="margin-bottom: 10px"
+        >
           <a-radio-button value="attribute">属性定义</a-radio-button>
           <a-radio-button value="server">功能定义</a-radio-button>
           <!-- <a-radio-button value="event">事件定义</a-radio-button> -->
         </a-radio-group>
-        <AttributeTab :disabled="!utils.hasPermission('modelTab') || isDisabled" :data="userData" ref="attributeTab" v-if="currentInfoModel == 'attribute'">
+        <AttributeTab
+          :disabled="!utils.hasPermission('modelTab') || isDisabled"
+          :data="userData"
+          ref="attributeTab"
+          v-if="currentInfoModel == 'attribute'"
+        >
         </AttributeTab>
 
-        <serveTable :disabled="!utils.hasPermission('modelTab') || isDisabled" :data="userData" ref="serveTab" v-else-if="currentInfoModel == 'server'">
+        <serveTable
+          :disabled="!utils.hasPermission('modelTab') || isDisabled"
+          :data="userData"
+          ref="serveTab"
+          v-else-if="currentInfoModel == 'server'"
+        >
           <template #add>
             <!-- <AddServe :disabled="!utils.hasPermission('modelTab') || isDisabled" :data="userData" @onSuccess="serveSuccess"></AddServe> -->
           </template>
         </serveTable>
 
-        <eventTab :disabled="!utils.hasPermission('modelTab') || isDisabled" :data="userData" v-else></eventTab>
+        <eventTab
+          :disabled="!utils.hasPermission('modelTab') || isDisabled"
+          :data="userData"
+          v-else
+        ></eventTab>
       </template>
       <template #tab2>
         <warningSet></warningSet>
@@ -69,150 +110,165 @@
 </template>
 
 <script setup>
-import Api from '@/api/api'
-import utils  from '@/utils/utils'
+import Api from "@/api/api";
+import utils from "@/utils/utils";
 
-import normalTable from '@/template/normalTable/index.vue'
-import SelectModel from '@/components/selectModel/index.vue'
-import detailTemplate from '@/components/detailTemplate/index.vue'
-import defaultInfo from '@/template/defaultInfo/index.vue'
-import customBtn from '@/components/customHandleBtn/index.vue'
-import Edit from './modules/Edit.vue'
-import AddServe from './modules/serveTable/modules/Add.vue'
-import AttributeTab from './modules/attributeTab/index.vue'
-import serveTable from './modules/serveTable/index.vue'
-import eventTab from './modules/eventTab/index.vue'
-import warningSet from './modules/warningSet/index.vue'
-import { message, Modal } from 'ant-design-vue'
-import { ExclamationCircleOutlined } from '@ant-design/icons-vue'
+import normalTable from "@/template/normalTable/index.vue";
+import SelectModel from "@/components/selectModel/index.vue";
+import detailTemplate from "@/components/detailTemplate/index.vue";
+import defaultInfo from "@/template/defaultInfo/index.vue";
+import customBtn from "@/components/customHandleBtn/index.vue";
+import Edit from "./modules/Edit.vue";
+import AddServe from "./modules/serveTable/modules/Add.vue";
+import AttributeTab from "./modules/attributeTab/index.vue";
+import serveTable from "./modules/serveTable/index.vue";
+import eventTab from "./modules/eventTab/index.vue";
+import warningSet from "./modules/warningSet/index.vue";
+import { message, Modal } from "ant-design-vue";
+import { ExclamationCircleOutlined } from "@ant-design/icons-vue";
 import { useRouter } from "vue-router";
-import { onMounted,ref,createVNode,computed,provide   } from "vue"
-const router = useRouter()
-const mainAreaData = ref([])
+import { onMounted, ref, createVNode, computed, provide } from "vue";
+const router = useRouter();
+const mainAreaData = ref([]);
 
-let currentInfoModel = ref('attribute')
-const userData = ref({})
-let defaultInfoData = ref([])
-let systemInfoData = ref([])
-let serveTab = ref()
+let currentInfoModel = ref("attribute");
+const userData = ref({});
+let defaultInfoData = ref([]);
+let systemInfoData = ref([]);
+let serveTab = ref();
 
 let isDisabled = computed(() => {
-  return userData.value.isOffical == 1
-})
-provide('detailData',() => {return userData.value})
-provide('isDisabled',() => {return isDisabled})
+  return userData.value.isOffical == 1;
+});
+provide("detailData", () => {
+  return userData.value;
+});
+provide("isDisabled", () => {
+  return isDisabled;
+});
 
-const mianData = async ()=>{
+const mianData = async () => {
   const res = await Api.requested({
-    "id":20230612152502,
-    "content": {
-      "w_productid": router.currentRoute.value.query.id
-    }
-  })
-  res.data.attinfos.forEach(item => {
-    item.name = item.document
-  })
-  userData.value = res.data
+    id: 20230612152502,
+    content: {
+      w_productid: router.currentRoute.value.query.id,
+    },
+  });
+  res.data.attinfos.forEach((item) => {
+    item.name = item.document;
+  });
+  userData.value = res.data;
   console.log(userData.value);
-  changeDataStructure(res.data)
-}
+  changeDataStructure(res.data);
+};
 
 const changeDataStructure = (data) => {
   mainAreaData.value = [
     {
-      label:'产品编码',
-      value:data.prodnum
+      label: "产品编码",
+      value: data.prodnum,
     },
     {
-      label:'产品名称',
-      value:data.prodname
+      label: "产品名称",
+      value: data.prodname,
     },
     {
-      label:'产品分类',
-      value:data.prodclassname
+      label: "产品分类",
+      value: data.prodclassname,
     },
     {
-      label:'连接类型',
-      value:data.prodtype
+      label: "连接类型",
+      value: data.prodtype,
     },
     {
-      label:'厂商',
-      value:data.enterprisename
+      label: "厂商",
+      value: data.enterprisename,
     },
     {
-      label:'状态',
-      value:data.isused ? '启用':'停用',
-      style:() => {
-        let style = {}
-        style.color = utils.statusAndColor(userData.value.isused ? '启用' : '停用')
-        return style
-      }
+      label: "状态",
+      value: data.isused ? "启用" : "停用",
+      style: () => {
+        let style = {};
+        style.color = utils.statusAndColor(
+          userData.value.isused ? "启用" : "停用"
+        );
+        return style;
+      },
     },
     {
-      label:'描述',
-      value:data.remarks
+      label: "描述",
+      value: data.remarks,
     },
-  ]
+  ];
   defaultInfoData.value = [
-    {label:'产品编码',value:userData.value.prodnum},
-    {label:'产品名称',value:userData.value.prodname},
-    {label:'产品分类',value:userData.value.prodclassname},
-    {label:'连接类型',value:userData.value.prodtype},
-    {label:'厂商',value:userData.value.enterprisename},
-    {label:'状态',value:userData.value.isused ? '启用' : '停用',style:() => {
-      let style = {}
-      style.color = utils.statusAndColor(userData.value.isused ? '启用' : '停用')
-      return style
-    }},
-    {label:'设备数量',value:userData.value.device_count},
+    { label: "产品编码", value: userData.value.prodnum },
+    { label: "产品名称", value: userData.value.prodname },
+    { label: "产品分类", value: userData.value.prodclassname },
+    { label: "连接类型", value: userData.value.prodtype },
+    { label: "厂商", value: userData.value.enterprisename },
     {
-      label:'是否指令反馈',
-      value:data.isfeedback ? '是' : '否'
+      label: "状态",
+      value: userData.value.isused ? "启用" : "停用",
+      style: () => {
+        let style = {};
+        style.color = utils.statusAndColor(
+          userData.value.isused ? "启用" : "停用"
+        );
+        return style;
+      },
     },
+    { label: "设备数量", value: userData.value.device_count },
     {
-      label:'是否支持蓝牙',
-      value:data.issupportbluetooth ? '是' : '否'
+      label: "是否指令反馈",
+      value: data.isfeedback ? "是" : "否",
     },
-    {label:'描述',value:userData.value.remarks},
-  ]
+    {
+      label: "是否支持蓝牙",
+      value: data.issupportbluetooth ? "是" : "否",
+    },
+    {
+      label: "设备时间标准",
+      value: data.tsfrom ? "设备时间" : "接收时间",
+    },
+    { label: "描述", value: userData.value.remarks },
+  ];
   systemInfoData.value = [
-    {label:'创建时间',value:userData.value.createdate},
-    {label:'创建人',value:userData.value.createby},
-    {label:'最近编辑时间',value:userData.value.changedate},
-    {label:'最近编辑人',value:userData.value.changeby},
-  ]
-}
+    { label: "创建时间", value: userData.value.createdate },
+    { label: "创建人", value: userData.value.createby },
+    { label: "最近编辑时间", value: userData.value.changedate },
+    { label: "最近编辑人", value: userData.value.changeby },
+  ];
+};
 
 //获取固件信息
-let firmware = ref()
+let firmware = ref();
 let firmwareParam = ref({
-    "content": {
-      "pageNumber":1,
-      "pageSize":20,
-      "w_productid": router.currentRoute.value.query.id
-    },
-    "id": "2024072313473202",
-})
-provide('firmware',() => firmware.value)
+  content: {
+    pageNumber: 1,
+    pageSize: 20,
+    w_productid: router.currentRoute.value.query.id,
+  },
+  id: "2024072313473202",
+});
+provide("firmware", () => firmware.value);
 let getFirmwareid = async () => {
-    let res = await Api.requested(firmwareParam.value)
-  firmware.value = res.data[0]||{firmwarename:'',w_firmwareid:''}
-  console.log(firmware,'固件');
-
-}
+  let res = await Api.requested(firmwareParam.value);
+  firmware.value = res.data[0] || { firmwarename: "", w_firmwareid: "" };
+  console.log(firmware, "固件");
+};
 
 let selectChange = (data) => {
-  firmware.value = data[data.length - 1]
-}
+  firmware.value = data[data.length - 1];
+};
 
 let serveSuccess = () => {
-  serveTab.value.param.content.ownerid = router.currentRoute.value.query.id
-  serveTab.value.$refs.list.listData()
-}
-onMounted (()=>{
-  mianData()
-  getFirmwareid()
-})
+  serveTab.value.param.content.ownerid = router.currentRoute.value.query.id;
+  serveTab.value.$refs.list.listData();
+};
+onMounted(() => {
+  mianData();
+  getFirmwareid();
+});
 </script>
 <style>
 </style>

+ 207 - 144
src/operation/moduleNormal/productManage/detail/modules/Edit.vue

@@ -9,27 +9,53 @@
     :closable="false"
     @close="visible = false"
   >
-    <a-form ref="formRef" :model="form" size="small" layout="vertical" mode="multiple">
+    <a-form
+      ref="formRef"
+      :model="form"
+      size="small"
+      layout="vertical"
+      mode="multiple"
+    >
       <a-row :gutter="16">
         <a-col :span="24">
-          <a-form-item  label="产品编码" name="prodnum" :rules="[{ required: true, message: '请输入产品编码' }]">
-            <a-input :disabled="true" v-model:value="form.prodnum" placeholder="请输入产品编码"></a-input>
+          <a-form-item
+            label="产品编码"
+            name="prodnum"
+            :rules="[{ required: true, message: '请输入产品编码' }]"
+          >
+            <a-input
+              :disabled="true"
+              v-model:value="form.prodnum"
+              placeholder="请输入产品编码"
+            ></a-input>
           </a-form-item>
         </a-col>
         <a-col :span="24">
-          <a-form-item  label="产品名称" name="prodname" :rules="[{ required: true, message: '请输入产品名称' }]">
-            <a-input v-model:value="form.prodname" placeholder="请输入产品名称"></a-input>
+          <a-form-item
+            label="产品名称"
+            name="prodname"
+            :rules="[{ required: true, message: '请输入产品名称' }]"
+          >
+            <a-input
+              v-model:value="form.prodname"
+              placeholder="请输入产品名称"
+            ></a-input>
           </a-form-item>
         </a-col>
         <a-col :span="24">
-          <a-form-item  label="产品分类" name="prodclassname">
-            <SelectModel 
-              ref="Class" 
-              @selectRowData="selectClass" 
-              rowKey="w_prodclassid" 
-              :param="classParam" 
-              :filterMultiple="true" 
-              :columns="utils.TBLayout('categoryTable').splice(0,utils.TBLayout('categoryTable').length - 1)" title="选择产品分类"
+          <a-form-item label="产品分类" name="prodclassname">
+            <SelectModel
+              ref="Class"
+              @selectRowData="selectClass"
+              rowKey="w_prodclassid"
+              :param="classParam"
+              :filterMultiple="true"
+              :columns="
+                utils
+                  .TBLayout('categoryTable')
+                  .splice(0, utils.TBLayout('categoryTable').length - 1)
+              "
+              title="选择产品分类"
               @handleList="handleList"
             >
               <template v-slot:slot1>
@@ -37,28 +63,41 @@
                   v-model:value="form.prodclassname"
                   enter-button="添加"
                   readonly
-                  @search="$refs.Class.modeVisible=true"
+                  @search="$refs.Class.modeVisible = true"
                 />
               </template>
             </SelectModel>
           </a-form-item>
         </a-col>
         <a-col :span="24">
-          <a-form-item  label="连接类型" name="prodtype" :rules="[{ required: true, message: '请选择连接类型' }]">
-            <a-select
-              v-model:value="form.prodtype"
-              
-            >
-              <a-select-option :value="item.value" v-for="(item,index) in typeList" :key="index">{{ item.value }}</a-select-option>
+          <a-form-item
+            label="连接类型"
+            name="prodtype"
+            :rules="[{ required: true, message: '请选择连接类型' }]"
+          >
+            <a-select v-model:value="form.prodtype">
+              <a-select-option
+                :value="item.value"
+                v-for="(item, index) in typeList"
+                :key="index"
+                >{{ item.value }}</a-select-option
+              >
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="24">
-          <a-form-item  label="厂商" name="sys_enterpriseid" :rules="[{required:true,message:'请选择厂商'}]">
-            <a-select
-              v-model:value="form.sys_enterpriseid"
-            >
-              <a-select-option v-for="item in enterpriseList" :key="item.sys_enterpriseid" :value="item.sys_enterpriseid">{{ item.enterprisename }}</a-select-option>
+          <a-form-item
+            label="厂商"
+            name="sys_enterpriseid"
+            :rules="[{ required: true, message: '请选择厂商' }]"
+          >
+            <a-select v-model:value="form.sys_enterpriseid">
+              <a-select-option
+                v-for="item in enterpriseList"
+                :key="item.sys_enterpriseid"
+                :value="item.sys_enterpriseid"
+                >{{ item.enterprisename }}</a-select-option
+              >
             </a-select>
             <!-- <SelectModel 
               ref="Class" 
@@ -81,35 +120,54 @@
           </a-form-item>
         </a-col>
         <a-col :span="24">
-          <a-form-item  label="描述" name="remarks">
-            <a-textarea v-model:value="form.remarks" placeholder="请输入描述"></a-textarea>
+          <a-form-item label="描述" name="remarks">
+            <a-textarea
+              v-model:value="form.remarks"
+              placeholder="请输入描述"
+            ></a-textarea>
           </a-form-item>
         </a-col>
         <a-col :span="24">
-          <a-form-item  label="是否指令反馈" name="isfeedback">
-            <a-radio-group v-model:value="form.isfeedback" :options="feedbackList" />
+          <a-form-item label="是否指令反馈" name="isfeedback">
+            <a-radio-group
+              v-model:value="form.isfeedback"
+              :options="feedbackList"
+            />
           </a-form-item>
         </a-col>
         <a-col :span="24">
-          <a-form-item  label="是否支持蓝牙" name="issupportbluetooth">
-            <a-radio-group v-model:value="form.issupportbluetooth" :options="feedbackList" />
+          <a-form-item label="是否支持蓝牙" name="issupportbluetooth">
+            <a-radio-group
+              v-model:value="form.issupportbluetooth"
+              :options="feedbackList"
+            />
           </a-form-item>
         </a-col>
         <a-col :span="24">
-          <a-form-item  label="是否启用" name="isused">
+          <a-form-item label="设备时间标准" name="tsfrom">
+            <a-radio-group v-model:value="form.tsfrom" :options="tsfrom" />
+          </a-form-item>
+        </a-col>
+        <a-col :span="24">
+          <a-form-item label="是否启用" name="isused">
             <a-checkbox v-model:checked="form.isused"></a-checkbox>
           </a-form-item>
         </a-col>
         <a-col :span="24">
-          <a-form-item  label="图片" name="attinfos">
-            <Upload2 accept="image/png, image/jpeg" :bindData="bindData" ref="upload" v-model:value="form.attinfos"></Upload2>
+          <a-form-item label="图片" name="attinfos">
+            <Upload2
+              accept="image/png, image/jpeg"
+              :bindData="bindData"
+              ref="upload"
+              v-model:value="form.attinfos"
+            ></Upload2>
           </a-form-item>
         </a-col>
       </a-row>
     </a-form>
     <template #extra>
       <a-space>
-        <a-button @click="visible=false">关闭</a-button>
+        <a-button @click="visible = false">关闭</a-button>
         <a-button type="primary" @click="onSubmit">保存</a-button>
       </a-space>
     </template>
@@ -117,145 +175,150 @@
 </template>
 
 <script setup>
-import {ref, defineProps, defineEmits, onMounted,nextTick} from 'vue'
-import SelectModel from '@/components/selectModel/index.vue'
-import Upload2 from '@/components/upload2/index2.vue'
-import Api from '@/api/api'
-import utils from '@/utils/utils'
-import { useBaseStore } from '@/stores/modules/base'
-import { storeToRefs } from 'pinia'
+import { ref, defineProps, defineEmits, onMounted, nextTick } from "vue";
+import SelectModel from "@/components/selectModel/index.vue";
+import Upload2 from "@/components/upload2/index2.vue";
+import Api from "@/api/api";
+import utils from "@/utils/utils";
+import { useBaseStore } from "@/stores/modules/base";
+import { storeToRefs } from "pinia";
 
-let base = useBaseStore()
-let emit = defineEmits(['onSuccess'])
-let props = defineProps(['data','disabled'])
-let searchType = ref([{label:'搜索',key:'condition',type:'input'}])
-let visible = ref(false)
+let base = useBaseStore();
+let emit = defineEmits(["onSuccess"]);
+let props = defineProps(["data", "disabled"]);
+let searchType = ref([{ label: "搜索", key: "condition", type: "input" }]);
+let visible = ref(false);
 let form = ref({
-  "w_productid": 0,
-  "w_prodclassid": 0,
-  "prodnum": "",
-  "prodname": "",
-  "prodtype": "",
-  "sys_enterpriseid": '',
-  "remarks": "",
-  "isused": 0,
-  "enterprisename":'',
-  'dashboardpath':'',
-  'isfeedback':1,
-  "attinfos":'',
-  issupportbluetooth:0
-
-})
+  w_productid: 0,
+  w_prodclassid: 0,
+  prodnum: "",
+  prodname: "",
+  prodtype: "",
+  sys_enterpriseid: "",
+  remarks: "",
+  isused: 0,
+  enterprisename: "",
+  dashboardpath: "",
+  isfeedback: 1,
+  attinfos: "",
+  issupportbluetooth: 0,
+  tsfrom: 1,
+});
 let classParam = ref({
-  "id": 20230609105302,
-  "content": {},
-})
-let bindData = ref({})
-let upload = ref()
-let loading = ref(false)
-let enterpriseList = ref([])
-let typeList = ref([])
-let formRef = ref()
-let feedbackList = ref([{label:'是',value:1},{label:'否',value:0}])
+  id: 20230609105302,
+  content: {},
+});
+let bindData = ref({});
+let upload = ref();
+let loading = ref(false);
+let enterpriseList = ref([]);
+let typeList = ref([]);
+let formRef = ref();
+let feedbackList = ref([
+  { label: "是", value: 1 },
+  { label: "否", value: 0 },
+]);
+let tsfrom = ref([
+  { label: "设备时间", value: 1 },
+  { label: "接收时间", value: 0 },
+]);
 let onSubmit = async () => {
-  form.value.attinfos = upload.value.fileList.length ? '1' : '' 
-  let isCheck = await formRef.value.validateFields()
-  if (!isCheck) return
-  loading.value = true
+  form.value.attinfos = upload.value.fileList.length ? "1" : "";
+  let isCheck = await formRef.value.validateFields();
+  if (!isCheck) return;
+  loading.value = true;
   let res = await Api.requested({
-    id:20230609150202,
-    content: form.value
-  })
-  utils.message(res,'操作成功',() => {
-    visible.value = false
-    bindData.value = {}
-    emit('onSuccess')
-    formRef.value.resetFields()
-    loading.value = false
-  })
-}
+    id: 20230609150202,
+    content: form.value,
+  });
+  utils.message(res, "操作成功", () => {
+    visible.value = false;
+    bindData.value = {};
+    emit("onSuccess");
+    formRef.value.resetFields();
+    loading.value = false;
+  });
+};
 
 let editBtn = () => {
-  visible.value = true
-  form.value = Object.assign({},form.value,props.data)
+  visible.value = true;
+  form.value = Object.assign({}, form.value, props.data);
   bindData.value = {
-    "ownertable": 'w_product',
-    "ownerid": form.value.w_productid,
-    "usetype": 'previewImage',
-  }
+    ownertable: "w_product",
+    ownerid: form.value.w_productid,
+    usetype: "previewImage",
+  };
   nextTick(() => {
-    upload.value.fileList = form.value.attinfos
-  })
-}
+    upload.value.fileList = form.value.attinfos;
+  });
+};
 
 let getEnterpriseList = async () => {
   let res = await Api.requested({
-    "id": 20230612091102,
-    "content": {
-        "pageNumber": 1,
-        "pageSize": 9999999,
-        "where": {
-            "condition": ""
-        }
-    }
-  })
-  enterpriseList.value = res.data
-  console.log(enterpriseList.value)
-}
+    id: 20230612091102,
+    content: {
+      pageNumber: 1,
+      pageSize: 9999999,
+      where: {
+        condition: "",
+      },
+    },
+  });
+  enterpriseList.value = res.data;
+  console.log(enterpriseList.value);
+};
 
 let selectClass = (data) => {
   console.log(data);
-  form.value.prodclassname = data[data.length-1].prodclassname
-  form.value.w_prodclassid = data[data.length-1].w_prodclassid
-}
+  form.value.prodclassname = data[data.length - 1].prodclassname;
+  form.value.w_prodclassid = data[data.length - 1].w_prodclassid;
+};
 
 let handleList = (res) => {
   console.log(res);
-  res.data = createDeep(res.data)
-}
+  res.data = createDeep(res.data);
+};
 let createDeep = (array) => {
-  let arr = []
-  function deepFun (node) {
-    console.log(node,'触发');
+  let arr = [];
+  function deepFun(node) {
+    console.log(node, "触发");
     let elNode = {
-      changeby:node['changeby'],
-      changeuserid:node['changeuserid'],
-      createby:node['createby'],
-      createuserid:node['createuserid'],
-      parentid:node['parentid'],
-      prodclassname:node['prodclassname'],
-      prodclassnum:node['prodclassnum'],
-      remarks:node['remarks'],
-      sequence:node['sequence'],
-      w_prodclassid:node['w_prodclassid'],
-      children:[]
-    }
+      changeby: node["changeby"],
+      changeuserid: node["changeuserid"],
+      createby: node["createby"],
+      createuserid: node["createuserid"],
+      parentid: node["parentid"],
+      prodclassname: node["prodclassname"],
+      prodclassnum: node["prodclassnum"],
+      remarks: node["remarks"],
+      sequence: node["sequence"],
+      w_prodclassid: node["w_prodclassid"],
+      children: [],
+    };
     if (node.sub && node.sub.length > 0) {
       // 如果存在子节点
       for (var index = 0; index < node.sub.length; index++) {
-      // 遍历子节点, 把每个子节点看做一颗独立的树, 传入递归构造子树, 并把结果放回到新node的children中
-      elNode.children.push(deepFun(node.sub[index]));
+        // 遍历子节点, 把每个子节点看做一颗独立的树, 传入递归构造子树, 并把结果放回到新node的children中
+        elNode.children.push(deepFun(node.sub[index]));
       }
     }
-    if (!elNode.children.length) delete elNode.children
-    return elNode
+    if (!elNode.children.length) delete elNode.children;
+    return elNode;
   }
-  array.forEach(item => {
+  array.forEach((item) => {
     console.log(item);
-    arr.push(deepFun(item))
-  })
-  return arr
-}
+    arr.push(deepFun(item));
+  });
+  return arr;
+};
 
 onMounted(async () => {
-  getEnterpriseList()
-  let res = await base.optiontypeselect('prodtype')
-  typeList.value = res.data
-  console.log(typeList,'分类数据');
-})
-
+  getEnterpriseList();
+  let res = await base.optiontypeselect("prodtype");
+  typeList.value = res.data;
+  console.log(typeList, "分类数据");
+});
 </script>
 
 <style scoped>
-
 </style>

+ 224 - 155
src/operation/moduleNormal/productManage/modules/Add.vue

@@ -1,5 +1,11 @@
 <template>
-  <a-button type="primary" :disabled="disabled" @click="addBtn" style="margin-right:10px">新建</a-button>
+  <a-button
+    type="primary"
+    :disabled="disabled"
+    @click="addBtn"
+    style="margin-right: 10px"
+    >新建</a-button
+  >
   <a-drawer
     v-model:visible="visible"
     class="custom-class"
@@ -9,27 +15,52 @@
     :closable="false"
     @close="visible = false"
   >
-    <a-form ref="formRef" :model="form" size="small" layout="vertical" mode="multiple">
+    <a-form
+      ref="formRef"
+      :model="form"
+      size="small"
+      layout="vertical"
+      mode="multiple"
+    >
       <a-row :gutter="16">
         <a-col :span="24">
-          <a-form-item  label="产品编码" name="prodnum" :rules="[{ required: true, message: '请输入产品编码' }]">
-            <a-input v-model:value="form.prodnum" placeholder="请输入产品编码"></a-input>
+          <a-form-item
+            label="产品编码"
+            name="prodnum"
+            :rules="[{ required: true, message: '请输入产品编码' }]"
+          >
+            <a-input
+              v-model:value="form.prodnum"
+              placeholder="请输入产品编码"
+            ></a-input>
           </a-form-item>
         </a-col>
         <a-col :span="24">
-          <a-form-item  label="产品名称" name="prodname" :rules="[{ required: true, message: '请输入产品名称' }]">
-            <a-input v-model:value="form.prodname" placeholder="请输入产品名称"></a-input>
+          <a-form-item
+            label="产品名称"
+            name="prodname"
+            :rules="[{ required: true, message: '请输入产品名称' }]"
+          >
+            <a-input
+              v-model:value="form.prodname"
+              placeholder="请输入产品名称"
+            ></a-input>
           </a-form-item>
         </a-col>
         <a-col :span="24">
-          <a-form-item  label="产品分类" name="prodclassname">
-            <SelectModel 
-              ref="Class" 
-              @selectRowData="selectClass" 
-              rowKey="w_prodclassid" 
-              :param="classParam" 
-              :filterMultiple="true" 
-              :columns="utils.TBLayout('categoryTable').splice(0,utils.TBLayout('categoryTable').length - 1)" title="选择产品分类"
+          <a-form-item label="产品分类" name="prodclassname">
+            <SelectModel
+              ref="Class"
+              @selectRowData="selectClass"
+              rowKey="w_prodclassid"
+              :param="classParam"
+              :filterMultiple="true"
+              :columns="
+                utils
+                  .TBLayout('categoryTable')
+                  .splice(0, utils.TBLayout('categoryTable').length - 1)
+              "
+              title="选择产品分类"
               @handleList="handleList"
             >
               <template v-slot:slot1>
@@ -37,28 +68,41 @@
                   v-model:value="form.prodclassname"
                   enter-button="添加"
                   readonly
-                  @search="$refs.Class.modeVisible=true"
+                  @search="$refs.Class.modeVisible = true"
                 />
               </template>
             </SelectModel>
           </a-form-item>
         </a-col>
         <a-col :span="24">
-          <a-form-item  label="连接类型" name="prodtype" :rules="[{ required: true, message: '请选择连接类型' }]">
-            <a-select
-              v-model:value="form.prodtype"
-              
-            >
-              <a-select-option :value="item.value" v-for="(item,index) in typeList" :key="index">{{ item.value }}</a-select-option>
+          <a-form-item
+            label="连接类型"
+            name="prodtype"
+            :rules="[{ required: true, message: '请选择连接类型' }]"
+          >
+            <a-select v-model:value="form.prodtype">
+              <a-select-option
+                :value="item.value"
+                v-for="(item, index) in typeList"
+                :key="index"
+                >{{ item.value }}</a-select-option
+              >
             </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="24">
-          <a-form-item  label="厂商" name="sys_enterpriseid" :rules="[{required:true,message:'请选择厂商'}]">
-            <a-select
-              v-model:value="form.sys_enterpriseid"
-            >
-              <a-select-option v-for="item in enterpriseList" :key="item.sys_enterpriseid" :value="item.sys_enterpriseid">{{ item.enterprisename }}</a-select-option>
+          <a-form-item
+            label="厂商"
+            name="sys_enterpriseid"
+            :rules="[{ required: true, message: '请选择厂商' }]"
+          >
+            <a-select v-model:value="form.sys_enterpriseid">
+              <a-select-option
+                v-for="item in enterpriseList"
+                :key="item.sys_enterpriseid"
+                :value="item.sys_enterpriseid"
+                >{{ item.enterprisename }}</a-select-option
+              >
             </a-select>
             <!-- <SelectModel 
               ref="Class" 
@@ -81,194 +125,219 @@
           </a-form-item>
         </a-col>
         <a-col :span="24">
-          <a-form-item  label="描述" name="remarks">
-            <a-textarea v-model:value="form.remarks" placeholder="请输入描述"></a-textarea>
+          <a-form-item label="描述" name="remarks">
+            <a-textarea
+              v-model:value="form.remarks"
+              placeholder="请输入描述"
+            ></a-textarea>
           </a-form-item>
         </a-col>
         <a-col :span="24">
-          <a-form-item  label="是否指令反馈" name="isfeedback">
-            <a-radio-group v-model:value="form.isfeedback" :options="feedbackList" />
+          <a-form-item label="是否指令反馈" name="isfeedback">
+            <a-radio-group
+              v-model:value="form.isfeedback"
+              :options="feedbackList"
+            />
           </a-form-item>
         </a-col>
         <a-col :span="24">
-          <a-form-item  label="是否支持蓝牙" name="issupportbluetooth">
-            <a-radio-group v-model:value="form.issupportbluetooth" :options="feedbackList" />
+          <a-form-item label="是否支持蓝牙" name="issupportbluetooth">
+            <a-radio-group
+              v-model:value="form.issupportbluetooth"
+              :options="feedbackList"
+            />
           </a-form-item>
         </a-col>
         <a-col :span="24">
-          <a-form-item  label="是否启用" name="isused">
+          <a-form-item label="设备时间标准" name="tsfrom">
+            <a-radio-group v-model:value="form.tsfrom" :options="tsfrom" />
+          </a-form-item>
+        </a-col>
+        <a-col :span="24">
+          <a-form-item label="是否启用" name="isused">
             <a-checkbox v-model:checked="form.isused"></a-checkbox>
           </a-form-item>
         </a-col>
         <a-col :span="24">
-          <a-form-item  label="图片" name="attinfos">
-            <Upload2 accept="image/png, image/jpeg" :bindData="bindData" ref="upload" v-model:value="form.attinfos"></Upload2>
+          <a-form-item label="图片" name="attinfos">
+            <Upload2
+              accept="image/png, image/jpeg"
+              :bindData="bindData"
+              ref="upload"
+              v-model:value="form.attinfos"
+            ></Upload2>
           </a-form-item>
         </a-col>
       </a-row>
     </a-form>
     <template #extra>
       <a-space>
-        <a-button @click="visible=false">关闭</a-button>
-        <a-button type="primary" @click="onSubmit" :loading="loading">保存</a-button>
+        <a-button @click="visible = false">关闭</a-button>
+        <a-button type="primary" @click="onSubmit" :loading="loading"
+          >保存</a-button
+        >
       </a-space>
     </template>
   </a-drawer>
 </template>
 
 <script setup>
-import {ref, defineProps, defineEmits, onMounted} from 'vue'
-import SelectModel from '@/components/selectModel/index.vue'
-import Upload2 from '@/components/upload2/index2.vue'
-import Api from '@/api/api'
-import utils from '@/utils/utils'
-import { useBaseStore } from '@/stores/modules/base'
-import { storeToRefs } from 'pinia'
+import { ref, defineProps, defineEmits, onMounted } from "vue";
+import SelectModel from "@/components/selectModel/index.vue";
+import Upload2 from "@/components/upload2/index2.vue";
+import Api from "@/api/api";
+import utils from "@/utils/utils";
+import { useBaseStore } from "@/stores/modules/base";
+import { storeToRefs } from "pinia";
 
-let base = useBaseStore()
-let emit = defineEmits(['onSuccess'])
-let props = defineProps(['disabled'])
-let searchType = ref([{label:'搜索',key:'condition',type:'input'}])
-let visible = ref(false)
-let upload = ref()
-let bindData = ref({})
-let loading = ref(false)
+let base = useBaseStore();
+let emit = defineEmits(["onSuccess"]);
+let props = defineProps(["disabled"]);
+let searchType = ref([{ label: "搜索", key: "condition", type: "input" }]);
+let visible = ref(false);
+let upload = ref();
+let bindData = ref({});
+let loading = ref(false);
 let form = ref({
-  "w_productid": 0,
-  "w_prodclassid": 0,
-  "prodclassname":'',
-  "prodnum": "",
-  "prodname": undefined,
-  "prodtype": undefined,
-  "sys_enterpriseid": undefined,
-  "remarks": "",
-  "isused": 0,
-  "enterprisename":undefined,
-  'isfeedback':1,
-  "attinfos":'',
-  issupportbluetooth:0
-})
+  w_productid: 0,
+  w_prodclassid: 0,
+  prodclassname: "",
+  prodnum: "",
+  prodname: undefined,
+  prodtype: undefined,
+  sys_enterpriseid: undefined,
+  remarks: "",
+  isused: 0,
+  enterprisename: undefined,
+  isfeedback: 1,
+  attinfos: "",
+  issupportbluetooth: 0,
+  tsfrom: 1,
+});
 let classParam = ref({
-  "id": 20230609105302,
-  "content": {},
-})
-let enterpriseList = ref([])
-let typeList = ref([])
-let formRef = ref()
-let feedbackList = ref([{label:'是',value:1},{label:'否',value:0}])
-
+  id: 20230609105302,
+  content: {},
+});
+let enterpriseList = ref([]);
+let typeList = ref([]);
+let formRef = ref();
+let feedbackList = ref([
+  { label: "是", value: 1 },
+  { label: "否", value: 0 },
+]);
+let tsfrom = ref([
+  { label: "设备时间", value: 1 },
+  { label: "接收时间", value: 0 },
+]);
 let addBtn = async () => {
-  visible.value = true
-  getEnterpriseList()
-  let res = await base.optiontypeselect('prodtype')
-  typeList.value = res.data
-}
+  visible.value = true;
+  getEnterpriseList();
+  let res = await base.optiontypeselect("prodtype");
+  typeList.value = res.data;
+};
 
 let onSubmit = async () => {
-  form.value.attinfos = upload.value.fileList.length ? '1' : '' 
-  let isCheck = await formRef.value.validateFields()
-  if (!isCheck) return
-  form.value.isused = form.value.isused ? 1 : 0
-  loading.value = true
+  form.value.attinfos = upload.value.fileList.length ? "1" : "";
+  let isCheck = await formRef.value.validateFields();
+  if (!isCheck) return;
+  form.value.isused = form.value.isused ? 1 : 0;
+  loading.value = true;
   let res = await Api.requested({
-    id:20230609150202,
-    content: form.value
-  })
+    id: 20230609150202,
+    content: form.value,
+  });
   if (res.code) {
     bindData.value = {
-      "ownertable": 'w_product',
-      "ownerid": res.data.w_productid,
-      "usetype": 'previewImage',
-    }
+      ownertable: "w_product",
+      ownerid: res.data.w_productid,
+      usetype: "previewImage",
+    };
     if (form.value.attinfos) {
       upload.value.toUpload(() => {
-        utils.message(res,'操作成功',() => {
-          visible.value = false
-          emit('onSuccess')
-          formRef.value.resetFields()
-          bindData.value = {}
-          upload.value.refresh()
-          loading.value = false
-        })
-      })
+        utils.message(res, "操作成功", () => {
+          visible.value = false;
+          emit("onSuccess");
+          formRef.value.resetFields();
+          bindData.value = {};
+          upload.value.refresh();
+          loading.value = false;
+        });
+      });
     } else {
-      utils.message(res,'操作成功',() => {
-        visible.value = false
-        emit('onSuccess')
-        formRef.value.resetFields()
-        bindData.value = {}
-        loading.value = false
-      })
+      utils.message(res, "操作成功", () => {
+        visible.value = false;
+        emit("onSuccess");
+        formRef.value.resetFields();
+        bindData.value = {};
+        loading.value = false;
+      });
     }
   } else {
-    loading.value = false
-    utils.message(res)
+    loading.value = false;
+    utils.message(res);
   }
-  
-  
-}
+};
 
 let getEnterpriseList = async () => {
   let res = await Api.requested({
-    "id": 20230612091102,
-    "content": {
-        "pageNumber": 1,
-        "pageSize": 9999999,
-        "where": {
-            "condition": ""
-        }
-    }
-  })
-  enterpriseList.value = res.data
-  console.log(res,'企业res');
-  console.log(enterpriseList.value,'企业')
-}
+    id: 20230612091102,
+    content: {
+      pageNumber: 1,
+      pageSize: 9999999,
+      where: {
+        condition: "",
+      },
+    },
+  });
+  enterpriseList.value = res.data;
+  console.log(res, "企业res");
+  console.log(enterpriseList.value, "企业");
+};
 
 let selectClass = (data) => {
   console.log(data);
-  form.value.prodclassname = data[data.length-1].prodclassname
-  form.value.w_prodclassid = data[data.length-1].w_prodclassid
-}
+  form.value.prodclassname = data[data.length - 1].prodclassname;
+  form.value.w_prodclassid = data[data.length - 1].w_prodclassid;
+};
 
 let handleList = (res) => {
   console.log(res);
-  res.data = createDeep(res.data)
-}
+  res.data = createDeep(res.data);
+};
 let createDeep = (array) => {
-  let arr = []
-  function deepFun (node) {
-    console.log(node,'触发');
+  let arr = [];
+  function deepFun(node) {
+    console.log(node, "触发");
     let elNode = {
-      changeby:node['changeby'],
-      changeuserid:node['changeuserid'],
-      createby:node['createby'],
-      createuserid:node['createuserid'],
-      parentid:node['parentid'],
-      prodclassname:node['prodclassname'],
-      prodclassnum:node['prodclassnum'],
-      remarks:node['remarks'],
-      sequence:node['sequence'],
-      w_prodclassid:node['w_prodclassid'],
-      children:[]
-    }
+      changeby: node["changeby"],
+      changeuserid: node["changeuserid"],
+      createby: node["createby"],
+      createuserid: node["createuserid"],
+      parentid: node["parentid"],
+      prodclassname: node["prodclassname"],
+      prodclassnum: node["prodclassnum"],
+      remarks: node["remarks"],
+      sequence: node["sequence"],
+      w_prodclassid: node["w_prodclassid"],
+      children: [],
+    };
     if (node.sub && node.sub.length > 0) {
       // 如果存在子节点
       for (var index = 0; index < node.sub.length; index++) {
-      // 遍历子节点, 把每个子节点看做一颗独立的树, 传入递归构造子树, 并把结果放回到新node的children中
-      elNode.children.push(deepFun(node.sub[index]));
+        // 遍历子节点, 把每个子节点看做一颗独立的树, 传入递归构造子树, 并把结果放回到新node的children中
+        elNode.children.push(deepFun(node.sub[index]));
       }
     }
-    if (!elNode.children.length) delete elNode.children
-    return elNode
+    if (!elNode.children.length) delete elNode.children;
+    return elNode;
   }
-  array.forEach(item => {
+  array.forEach((item) => {
     console.log(item);
-    arr.push(deepFun(item))
-  })
-  return arr
-}
+    arr.push(deepFun(item));
+  });
+  return arr;
+};
 </script>
 
 <style scoped>
-
 </style>