From 90df755d258da3864af193b61ef94267dc540e10 Mon Sep 17 00:00:00 2001
From: linwenling <3256558519@qq.com>
Date: 星期六, 08 四月 2023 21:56:41 +0800
Subject: [PATCH] 新增家庭设备页面

---
 ruoyi-ui/src/views/device/equipmentInfo.vue |  388 +++++++++++++++++++++
 ruoyi-ui/src/views/device/index.vue         |  549 ++++++++++++++++++++++++++++++
 ruoyi-ui/src/api/device/index.js            |   76 ++++
 ruoyi-ui/src/router/index.js                |   19 
 4 files changed, 1,030 insertions(+), 2 deletions(-)

diff --git a/ruoyi-ui/src/api/device/index.js b/ruoyi-ui/src/api/device/index.js
new file mode 100644
index 0000000..546dca1
--- /dev/null
+++ b/ruoyi-ui/src/api/device/index.js
@@ -0,0 +1,76 @@
+import request from '@/utils/request'
+
+//Equipment 
+
+// 鏌ヨ鎵�鏈夊搴澶�
+export function listEquipment(query) {
+  return request({
+    url: '/zfEquipment/all',
+    method: 'get',
+    params: query
+  })
+}
+
+// // 鏍规嵁id鏌ヨ鎵�鏈夊搴澶囪缁嗕俊鎭�
+export function getEquipmentInfo(id) {
+  return request({
+    url: '/zfEquipment/' + id,
+    method: 'get',
+
+  })
+}
+
+//澧炲姞瀹跺涵璁惧
+export function addEquipment(data)
+{
+  return request({
+    url: '/zfEquipment',
+    method: 'post',
+    data: data
+  })
+}
+
+// 鍒犻櫎瀹跺涵璁惧
+export function delEquipment(Ids) {
+  return request({
+    url: '/zfEquipment' + Ids,
+    method: 'delete'
+  })
+}
+//淇敼瀹跺涵璁惧
+export function updateEquipment(data) {
+  return request({
+    url: '/zfEquipment',
+    method: 'put',
+    data: data
+  })
+}
+//涓婁紶鏂囦欢
+export function uploadPic(data) {
+  return request({
+    url: '/common/upload',
+    method: 'post',
+    data: data
+  })
+}
+//涓嬭浇鏂囦欢
+export function download(data) {
+  return request({
+    url: '/common/downLoadFile',
+    method: 'get',
+    params: data,
+    responseType: 'blob'
+  })
+}
+
+// //鎷垮埌绫诲埆
+// export function getCategory()
+// {
+//   return request({
+//     url: '/zDict/byId',
+//     method: 'get',
+//     params: {'id':22}
+//   })
+// }
+
+
diff --git a/ruoyi-ui/src/router/index.js b/ruoyi-ui/src/router/index.js
index 73e7673..8b055f2 100644
--- a/ruoyi-ui/src/router/index.js
+++ b/ruoyi-ui/src/router/index.js
@@ -121,7 +121,7 @@
     children: [
       {
         path: 'propertyInfo/:id(\\d+)',
-        component: () => import('@/views/note/propertylnfo'),
+        component: () => import('@/views/note/propertyInfo'),
         name: 'propertyInfo',
         meta: { title: '鏌ヨ璇︽儏'}
       }
@@ -143,7 +143,22 @@
       }
     ]
   },
-
+  //瀹跺涵璁惧璇︽儏椤�
+  {
+    path: '/jiatingshebei/device',
+    component: Layout,
+    // permissions: [],
+    permissions: ['jiatingshebei:device:list'],
+    hidden: true,
+    children: [
+      {
+        path: 'equipmentInfo/:id(\\d+)',
+        component: () => import('@/views/device/equipmentInfo'),
+        name: 'equipmentInfo',
+        meta: { title: '鏌ヨ璇︽儏'}
+      }
+    ]
+  },
   //缂栬緫涓汉淇℃伅
   {
     path: '/self/user',
diff --git a/ruoyi-ui/src/views/device/equipmentInfo.vue b/ruoyi-ui/src/views/device/equipmentInfo.vue
new file mode 100644
index 0000000..6873343
--- /dev/null
+++ b/ruoyi-ui/src/views/device/equipmentInfo.vue
@@ -0,0 +1,388 @@
+<template>
+    <div class="app-container">
+      <div class="form-header mt">
+        <h4 class="dt h4">瀹跺涵璁惧璇︽儏 </h4>
+        <el-button type="primary" class="pt"  icon="el-icon-edit" @click="handleEdit()" :disabled="btn">缂栬緫</el-button>
+      </div>
+  <!-- 鍚嶇О銆佹椂闂淬�佽喘涔颁汉銆佸唴瀹广�佸湴鐐广�佸娉� -->
+      <el-form ref="elForm" :model="formData" :rules="rules" size="medium" label-width="100px" >
+        <!-- <el-form-item label="id" prop="id">
+          <el-input v-model="formData.id" placeholder="璇疯緭鍏d" :maxlength="11" show-word-limit :disabled="true"
+                    clearable prefix-icon='el-icon-mobile' :style="{width: '100%'}"></el-input>
+        </el-form-item> -->
+        <!-- <el-form-item label="绫诲埆" prop="type">
+          <el-select v-model="formData.type" placeholder="璇烽�夋嫨绫诲埆" clearable :style="{width: '100%'}" :disabled="dsb" >
+            <el-option v-for="(item, index) in typeOptions" :key="index" :label="item.label" :value="item.value"
+                       :disabled="item.disabled"></el-option>
+          </el-select>
+        </el-form-item> -->
+        <el-form-item label="璁惧鍚嶇О" prop="name">
+          <el-input v-model="formData.name" placeholder="璇疯緭鍏ヨ澶囧悕绉�" clearable :style="{width: '100%'}" :disabled="dsb"></el-input>
+        </el-form-item>
+        <el-form-item label="鏃堕棿" prop="createDate">
+          <el-input v-model="formData.createDate" placeholder="璇疯緭鍏ユ椂闂�" clearable :style="{width: '100%'}" :disabled="dsb">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="璐拱浜�" prop="buyer">
+          <el-input v-model="formData.buyer" placeholder="璇疯緭鍏ヨ喘涔颁汉" clearable :style="{width: '100%'}" :disabled="dsb">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="浜嬮」鍐呭" prop="content">
+          <el-input v-model="formData.content" placeholder="璇疯緭鍏ヤ簨椤瑰唴瀹�" clearable :style="{width: '100%'}" :disabled="dsb">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="瀛樻斁鍦扮偣" prop="location">
+          <el-input v-model="formData.location" placeholder="璇疯緭鍏ュ瓨鏀惧湴鍧�" clearable :style="{width: '100%'}" :disabled="dsb">
+          </el-input>
+        </el-form-item>
+
+
+        <el-form-item label="瀹跺涵鍙�" prop="familyId">
+        <el-input v-model="formData.familyId" placeholder="璇疯緭鍏ュ搴彿" :maxlength="11" show-word-limit :disabled="true"
+          clearable prefix-icon='el-icon-mobile' :style="{width: '100%'}"></el-input>
+      </el-form-item>
+        <el-form-item label="澶囨敞" prop="remark">
+          <el-input v-model="formData.remark" placeholder="璇疯緭鍏ュ娉�" clearable :style="{width: '100%'}" :disabled="dsb"></el-input>
+        </el-form-item>
+        
+  
+        <h4 class="form-header">鐩稿叧鍥剧墖 </h4>
+        <el-upload
+          action="#"
+          list-type="picture-card"
+          multiple
+          :http-request="requestUpload"
+          :file-list="fileList"
+        >
+          <i slot="default" class="el-icon-plus"></i>
+          <div slot="file" slot-scope="{file}">
+            <img
+              class="el-upload-list__item-thumbnail"
+              :src="file.url"
+              alt=""
+              style="width: 147px; height: 147px"
+              fit="cover"
+              :preview-src-list="[file.url]"
+            >
+            <span class="el-upload-list__item-actions">
+          <span
+            class="el-upload-list__item-preview"
+            @click="handlePictureCardPreview(file)"
+          >
+            <i class="el-icon-zoom-in"></i>
+          </span>
+          <span
+            v-if="!disabled"
+            class="el-upload-list__item-delete"
+            @click="handleDownload(file.url)"
+          >
+            <i class="el-icon-download"></i>
+          </span>
+          <span
+            v-if="!disabled"
+            class="el-upload-list__item-delete"
+            @click="handleRemove(file)"
+          >
+            <i class="el-icon-delete"></i>
+          </span>
+        </span>
+  
+  
+          </div>
+        </el-upload>
+  
+        <h4 class="form-header">鍏朵粬闄勪欢 </h4>
+        <el-upload
+          action=""
+          :file-list="fileListOther"
+          class="upload-demo"
+          multiple
+          :on-preview="handlePreview"
+  
+          :on-remove="handleRemove"
+          :http-request="requestUpload"
+          :show-file-list="true"
+        >
+          <el-button type="primary">涓婁紶闄勪欢</el-button>
+          <template #tip>
+            <div class="el-upload__tip">
+            </div>
+          </template>
+  
+  
+        </el-upload>
+  
+        <el-form-item size="large">
+          <el-button type="primary" @click="submitForm" :disabled="dsb">淇敼</el-button>
+        </el-form-item>
+      </el-form>
+  
+      <el-dialog  :visible.sync="dialogVisible">
+        <img w-full :src="dialogImageUrl" alt="Preview Image" />
+      </el-dialog>
+    </div>
+  </template>
+  <script>
+  import { getEquipmentInfo, updateEquipment, uploadPic, download} from "@/api/device/index";
+  import {addRole, updateRole} from "@/api/system/role";
+  import {blobValidate} from "@/utils/ruoyi";
+  import errorCode from "@/utils/errorCode";
+  import {Message} from "element-ui";
+  
+  export default {
+    components: {},
+    props: [],
+    data() {
+      return {
+        cdi:"瀹跺涵璁惧淇℃伅",
+        udi:"瀹跺涵璁惧淇敼",
+        fot:[".jpg",".jif"],
+        fileList:[
+        ],
+        fileListOther:[
+  
+        ],
+        dsb:true,
+        btn:false,
+        formData: {
+          id: undefined,
+          // type: undefined,
+          name: undefined,
+          location: undefined,
+          buyer: undefined,
+          content: undefined,
+          remark: undefined,
+          familyId:undefined,
+          url: undefined,
+        },
+        dialogImageUrl: '',
+        dialogVisible: false,
+        disabled: false,
+        rules: {
+          // id: [{
+          //   required: true,
+          //   message: '璇疯緭鍏d',
+          //   trigger: 'blur'
+          // }],
+          createDate: [{
+            required: true,
+            message: '璇烽�夋嫨鏃堕棿',
+            trigger: 'change'
+          }],
+          name: [{
+            required: true,
+            message: '璇疯緭鍏ヨ澶囧悕绉�',
+            trigger: 'blur'
+          }],
+          familyId: [{
+            required: true,
+            message: '璇疯緭鍏ュ搴彿',
+            trigger: 'blur'
+          }],
+          buyer: [{
+            required: true,
+            message: '璇疯緭鍏ヨ喘涔颁汉',
+            trigger: 'blur'
+          }],
+          location: [{
+            required: true,
+            message: '璇疯緭鍏ュ瓨鏀惧湴鐐�',
+            trigger: 'blur'
+          }],
+          familyId: [{
+            required: true,
+            message: '璇疯緭鍏ュ搴彿',
+            trigger: 'blur'
+          }],
+          content:[{
+            required: true,
+            message: '璇疯緭鍏ヤ簨椤瑰唴瀹�',
+            trigger: 'blur'
+         } ],
+          remark: [{
+            required: true,
+            message: '璇疯緭鍏ュ娉�',
+            trigger: 'blur'
+          }],
+  
+        },
+        typeOptions: [],
+      }
+    },
+    //鍦╟reated锛堬級涓皟鐢ㄦ帴鍙o紝鎷垮埌鏁版嵁
+    computed: {},
+    watch: {},
+    created() {
+      const id = this.$route.params && this.$route.params.id;
+      let jd;
+      if(this.$route.query.detail!=undefined)
+      {
+        jd =  this.$route.query.detail
+        this.btn= jd
+        this.dsb = !jd
+        document.title = "淇敼瀹跺涵璁惧璇︾粏淇℃伅";
+        this.$route.meta.title = "淇敼瀹跺涵璁惧璇︾粏淇℃伅";//鍒楄〃鐨勫悕绉�
+      }
+      else{
+        document.title = "鏌ョ湅瀹跺涵璁惧璇︾粏淇℃伅";
+        this.$route.meta.title = "鏌ョ湅瀹跺涵璁惧璇︾粏淇℃伅";//鍒楄〃鐨勫悕绉�
+      }
+  
+      let _this = this
+      if (id) {
+        this.loading = true;
+        getEquipmentInfo(id).then((response) => {
+       
+          this.formData = response.data;
+          let paths = response.data.url.split(",");
+          for(let i = 0; i < paths.length; i++)
+          {
+            if(paths[i]!="") {
+  
+              let pth = paths[i].substr(paths[i].length - 4, paths[i].length)
+  
+              if (_this.fot.includes(pth) === true)
+                _this.fileList.push({name:paths[i],url: process.env.VUE_APP_BASE_TRUE_API+paths[i]})
+              else {
+                // alert(paths[i])
+                let nms = paths[i].split("\/")
+                let nm = nms[nms.length - 1]
+                _this.fileListOther.push({name:nm, url: process.env.VUE_APP_BASE_TRUE_API+paths[i]})
+              }
+            }
+          }
+          this.loading = false;
+        });
+        // this.getCateInfor()
+  
+      }
+    },
+    mounted() {},
+    methods: {
+      /** 鏌ヨ绫诲埆淇℃伅 */
+      // getCateInfor()
+      // {
+      //   let _this = this
+      //   getCategory().then(response=>{
+  
+      //     response.data.itemValues.replace("{","").replace("}","").split(",").map(elem=>{
+      //       _this.typeOptions.push({"label":elem.split(":")[0], "value":elem.split(":")[0]})
+      //     })
+      //   })
+      // },
+      submitForm() {
+        let ul = this.fileList.map(function (elem){
+          return elem.url.replace(process.env.VUE_APP_BASE_TRUE_API,"")
+        }).join(",")
+        let uls = this.fileListOther.map(function (elem){
+          return elem.url.replace(process.env.VUE_APP_BASE_TRUE_API,"")
+        }).join(",")
+        this.formData.url = ul+","+uls
+  
+        this.$refs['elForm'].validate(valid => {
+  
+  
+          if (valid) {
+            if (this.formData.id != undefined) {
+              updateEquipment(this.formData).then(response => {
+                this.$modal.msgSuccess("淇敼鎴愬姛");
+                // this.open = false;
+                this.btn=false
+              });
+            } else {
+              this.$modal.msgSuccess("淇敼澶辫触");
+  
+            }
+          }
+        })
+      },
+      resetForm() {
+        this.$refs['elForm'].resetFields()
+      },
+      handlePreview(file)
+      {
+        let formData = {'path':"/"+file.url.replace(process.env.VUE_APP_BASE_TRUE_API,"")};
+        let lens = formData.path.split(".")
+        let suffix = lens[lens.length-1]
+        download(formData).then(async (response) => {
+          const isLogin = await blobValidate(response);
+          let nt = new Date().getTime()
+          let filename = 'equipment_'+nt+'.'+suffix
+          const blob = new Blob([response])
+          saveAs(blob, filename)
+        })
+      },
+      handleRemoveFile(file) {
+        alert(23)
+      },
+      handleRemove(file) {
+        alert(323)
+      },
+      handlePictureCardPreview(file) {
+        this.dialogImageUrl = file.url;
+        this.dialogVisible = true;
+      },
+      //鐐瑰嚮涓嬭浇鍑芥暟
+      handleDownload(url) {
+        var formData = {'path':"/"+url.replace(process.env.VUE_APP_BASE_TRUE_API,"")};
+  
+        let lens = formData.path.split(".")
+        let suffix = lens[lens.length-1]
+        download(formData).then(async (response) => {
+          const isLogin = await blobValidate(response);
+          let nt = new Date().getTime()
+          let filename = 'equipment_'+nt+'.'+suffix
+          const blob = new Blob([response])
+          saveAs(blob, filename)
+        })
+      },
+      handleEdit()
+      {
+        this.dsb = false
+        this.btn = true
+      },
+      requestUpload(params)
+      {
+        var file = params.file;
+        var formData = new FormData();
+        formData.append('uploadFile', file);
+        let _this = this
+  
+        uploadPic(formData).then(response => {
+          let pth = response.data.originalFilename.substr(response.data.originalFilename.length-4, response.data.originalFilename.length)
+  
+          if(_this.fot.includes(pth) === true)
+          {
+            _this.fileList.push({name:response.data.fileName, "url":response.data.url})
+  
+          }
+  
+          else{
+            _this.fileListOther.push({name:response.data.fileName, url:response.data.url})
+  
+          }
+        })
+  
+      }
+  
+    }
+  }
+  
+  </script>
+  <style>
+  .mt
+  {
+    position: relative;
+  }
+  .dt{
+    display: block;
+  
+  }
+  .pt{
+    right: 10px;
+    top:-3px;
+    display: block;
+    position: absolute;
+  }
+  </style>
+  
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/device/index.vue b/ruoyi-ui/src/views/device/index.vue
new file mode 100644
index 0000000..fe8eb37
--- /dev/null
+++ b/ruoyi-ui/src/views/device/index.vue
@@ -0,0 +1,549 @@
+<template>
+    <div class="app-container" style="opacity: 1;">
+      <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
+
+        <el-form-item label="鏃堕棿">
+          <el-date-picker
+            v-model="dateRange"
+            style="width: 240px"
+            value-format="yyyy-MM-dd HH-MM"
+            type="daterange"
+            range-separator="-"
+            start-placeholder="寮�濮嬫棩鏈�"
+            end-placeholder="缁撴潫鏃ユ湡"
+          ></el-date-picker>
+        </el-form-item>
+          <el-form-item label="璐拱浜�" prop="buyer">
+            <el-input
+              v-model="queryParams.buyer"
+              placeholder="璇疯緭鍏ヨ喘涔颁汉"
+              clearable
+              style="width: 240px"
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="瀛樻斁鍦扮偣" prop="location">
+            <el-input
+              v-model="queryParams.location"
+              placeholder="璇疯緭鍏ュ瓨鏀惧湴鐐�"
+              clearable
+              style="width: 240px"
+              @keyup.enter.native="handleQuery"
+            />
+
+        </el-form-item>
+
+        <el-form-item label="浜嬮」鍐呭" prop="content">
+            <el-input
+              v-model="queryParams.content"
+              placeholder="璇疯緭鍏ヤ簨椤瑰唴瀹�"
+              clearable
+              style="width: 240px"
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+        <el-form-item>
+          <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
+          <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
+        </el-form-item>
+      </el-form>
+
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="1.5">
+          <el-button
+            type="primary"
+            plain
+            icon="el-icon-plus"
+            size="mini"
+            @click="handleAdd"
+            v-hasPermi="['system:role:add']"
+          >鏂板</el-button>
+        </el-col>
+
+        <el-col :span="1.5">
+          <el-button
+            type="danger"
+            plain
+            icon="el-icon-delete"
+            size="mini"
+            :disabled="multiple"
+            @click="handleDelete"
+            v-hasPermi="['system:role:remove']"
+          >鍒犻櫎</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="warning"
+            plain
+            icon="el-icon-download"
+            size="mini"
+            @click="handleExport"
+            v-hasPermi="['family:note:export']"
+          >瀵煎嚭</el-button>
+        </el-col>
+        <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      </el-row>
+      <!-- 搴忓彿銆佽澶囧悕绉般�佹椂闂淬�佽喘涔颁汉銆佷簨椤瑰唴瀹广�佸瓨鏀惧湴鐐广�佺數瀛愭枃浠躲�佸娉� 鎿嶄綔-->
+      <!-- 杩欓噷鏈変釜equipmentList鏁扮粍 鏄湪data()涓畾涔夌殑 -->
+      <el-table v-loading="loading" :data="equipmentList" @selection-change="handleSelectionChange">
+        <el-table-column type="selection" width="55"  align="center" />
+        <el-table-column label="搴忓彿" prop="id" sortable width="120" />
+        <el-table-colun label="璁惧鍚嶇О" prop="name" sortable width="180"/>
+        <el-table-column label="鏃堕棿" align="center" sortable prop="createDate" width="180">
+          <template slot-scope="scope">
+            <span>{{ parseTime(scope.row.createDate) }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="璐拱浜�" prop="buyer" sortable width="100" />
+        <el-table-column label="浜嬮」鍐呭" prop="content" sortable :show-overflow-tooltip="true" width="150" />
+        <el-table-column label="瀛樻斁鍦扮偣" prop="location" sortable width="100" />
+        <el-table-column label="澶囨敞" prop="remark" sortable width="100" />
+        <!-- <el-table-colum label="鐢靛瓙鏂囦欢" prop="fujian" sortable width="100"/> -->
+        <el-table-column label="瀹跺涵鍙�" prop="familyId" sortable width="100" />
+        <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
+          <template slot-scope="scope" v-if="scope.row.roleId !== 1">
+            <el-button
+              size="mini"
+              type="text"
+              icon="el-icon-edit"
+              @click="handleUpdate(scope.row)"
+              v-hasPermi="['system:role:edit']"
+            >淇敼</el-button>
+            <el-button
+              size="mini"
+              type="text"
+              icon="el-icon-delete"
+              @click="handleDelete(scope.row)"
+              v-hasPermi="['system:role:remove']"
+            >鍒犻櫎</el-button>
+            <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['system:role:edit']">
+              <el-button size="mini" type="text" icon="el-icon-d-arrow-right"  @click="handleCheck(scope.row)">鏌ョ湅璇︽儏</el-button>
+
+            </el-dropdown>
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <pagination
+        v-show="total>0"
+        :total="total"
+        :page.sync="queryParams.pageNum"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
+      />
+
+      <!-- 娣诲姞鎴栦慨鏀硅祫浜т俊鎭厤缃璇濇 -->
+      <!-- 璁惧鍚嶇О銆佹椂闂淬�佽喘涔颁汉銆佷簨椤瑰唴瀹广�佸瓨鏀惧湴鐐广�佸娉ㄣ�佺數瀛愭枃浠� -->
+      <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
+        <el-form ref="elForm" :model="formDat" :rules="rules" size="medium" label-width="100px">
+
+          <el-form-item label="璁惧鍚嶇О" prop="name">
+            <el-input v-model="formDat.name" placeholder="璇疯緭鍏ヨ澶囧悕绉�" clearable :style="{width: '100%'}" ></el-input>
+          </el-form-item>
+
+          <!-- <el-form-item label="鏃堕棿" prop="createDate">
+            <el-input v-model="formDat.createDate" placeholder="璇疯緭鍏ユ椂闂�" clearable :style="{width: '100%'}" ></el-input>
+          </el-form-item>
+           -->
+          <el-form-item label="鏃堕棿" prop="createDate">
+              <el-date-picker
+                v-model='formDat.createDate'
+                type='date'
+                placeholder='閫夋嫨鏃ユ湡'
+               ></el-date-picker>
+
+        </el-form-item>
+
+
+
+          <el-form-item label="璐拱浜�" prop="buyer">
+            <el-input v-model="formDat.buyer" placeholder="璇疯緭鍏ヨ喘涔颁汉" clearable :style="{width: '100%'}" >
+            </el-input>
+          </el-form-item>
+          <el-form-item label="浜嬮」鍐呭" prop="content">
+            <el-input v-model="formDat.content" placeholder="璇疯緭鍏ヤ簨椤瑰唴瀹�" clearable :style="{width: '100%'}" ></el-input>
+          </el-form-item>
+          <el-form-item label="瀛樻斁鍦扮偣" prop="location">
+            <el-input v-model="formDat.location" placeholder="璇疯緭鍏ュ瓨鏀惧湴鐐�" clearable :style="{width: '100%'}" >
+            </el-input>
+          </el-form-item>
+          <el-form-item label="瀹跺涵鍙�" prop="familyId">
+            <el-input v-model="formDat.familyId" placeholder="璇疯緭鍏ュ搴彿" clearable :style="{width: '100%'}" >
+            </el-input>
+          </el-form-item>
+          <el-form-item label="澶囨敞" prop="remark">
+            <el-input v-model="formDat.remark" placeholder="璇疯緭鍏ュ娉�" clearable :style="{width: '100%'}" ></el-input>
+          </el-form-item>
+
+          <h4 class="form-header">鐩稿叧鍥剧墖 </h4>
+          <el-upload
+            action="#"
+            list-type="picture-card"
+            multiple
+            :http-request="requestUpload"
+            :file-list="fileList"
+          >
+            <i slot="default" class="el-icon-plus"></i>
+            <div slot="file" slot-scope="{file}">
+              <img
+                class="el-upload-list__item-thumbnail"
+                :src="file.url"
+                alt=""
+                style="width: 126px; height: 126px"
+                fit="cover"
+                :preview-src-list="[file.url]"
+              >
+              <span class="el-upload-list__item-actions">
+          <span
+            class="el-upload-list__item-preview"
+            @click="handlePictureCardPreview(file)"
+          >
+            <i class="el-icon-zoom-in"></i>
+          </span>
+
+          <span
+            v-if="!disabled"
+            class="el-upload-list__item-delete"
+            @click="handleRemove(file)"
+          >
+            <i class="el-icon-delete"></i>
+          </span>
+        </span>
+
+
+            </div>
+          </el-upload>
+          <h4 class="form-header">鍏朵粬闄勪欢 </h4>
+          <el-upload
+            action=""
+            :file-list="fileListOther"
+            class="upload-demo"
+            multiple
+
+            :on-remove="handleRemove"
+            :http-request="requestUpload"
+            :show-file-list="true"
+          >
+            <el-button type="primary">涓婁紶</el-button>
+            <template #tip>
+              <div class="el-upload__tip">
+              </div>
+            </template>
+          </el-upload>
+
+        </el-form>
+        <h4 class="form-header"> </h4>
+
+        <div slot="footer" class="dialog-footer">
+          <el-button type="primary" @click="submitDataScope">纭� 瀹�</el-button>
+          <el-button @click="cancelData">鍙� 娑�</el-button>
+        </div>
+      </el-dialog>
+
+      <!-- 鍒嗛厤瑙掕壊鏁版嵁鏉冮檺瀵硅瘽妗� -->
+      <el-dialog :title="title" :visible.sync="openDataScope" width="500px" append-to-body>
+
+      </el-dialog>
+
+    </div>
+  </template>
+
+  <script>
+  import { listRole, getRole, delRole, addRole, updateRole, dataScope, changeRoleStatus, deptTreeSelect } from "@/api/system/role";
+  import { treeselect as menuTreeselect, roleMenuTreeselect } from "@/api/system/menu";
+
+
+
+  //鍦╯ystem/note/index.js涓鍏ユ帴鍙e嚱鏁�  --鎺ュソ浜�
+  import {listEquipment,getEquipmentInfo,delEquipment, addEquipment, uploadPic} from "@/api/device/index";
+  export default {
+    name: "Role",
+    dicts: ['sys_normal_disable'],
+    data() {
+      return {
+        // 閬僵灞�
+        disabled: false,
+        value:"",
+        loading: true,
+        formData:[],
+        // 閫変腑鏁扮粍
+        ids: [],
+        // 闈炲崟涓鐢�
+        single: true,
+        // 闈炲涓鐢�
+        multiple: true,
+        // 鏄剧ず鎼滅储鏉′欢
+        showSearch: true,
+        // 鎬绘潯鏁�
+        total: 0,
+        // 瀹跺ぇ浜嬭琛ㄦ牸鏁版嵁
+        equipmentList: [],
+        // 寮瑰嚭灞傛爣棰�
+        title: "",
+        // 鏄惁鏄剧ず寮瑰嚭灞�
+        open: false,
+        // 鏄惁鏄剧ず寮瑰嚭灞傦紙鏁版嵁鏉冮檺锛�
+        openDataScope: false,
+        menuExpand: false,
+        menuNodeAll: false,
+        deptExpand: true,
+        deptNodeAll: false,
+        // 鏃ユ湡鑼冨洿
+        dateRange: [],
+        // 鏁版嵁鑼冨洿閫夐」
+        fot:[".jpg",".jif"],
+        fileList:[
+        ],
+        fileListOther:[
+
+        ],
+        dsb:true,
+        btn:false,
+        formDat: {
+          // type: undefined,
+          content: undefined,
+          location: undefined,
+          buyer: undefined,
+          name:undefined,
+          remark: undefined,
+          familyId:undefined,
+          url: undefined,
+        },
+        // 鑿滃崟鍒楄〃
+        menuOptions: [],
+        // 閮ㄩ棬鍒楄〃
+        deptOptions: [],
+        // 鏌ヨ鍙傛暟
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10,
+          content:undefined,
+          buyer:undefined,
+          location:undefined,
+          createDate:undefined
+        },
+        // 琛ㄥ崟鍙傛暟
+        form: {},
+        defaultProps: {
+          children: "children",
+          label: "label"
+        },
+        // 琛ㄥ崟鏍¢獙
+        rules: {
+          name: [{
+            required: true,
+            message: '璇疯緭鍏ヨ澶囧悕绉�',
+            trigger: 'blur'
+          }],
+
+          buyer: [{
+            required: true,
+            message: '璇疯緭鍏ヨ喘涔颁汉',
+            trigger: 'blur'
+          }],
+          location: [{
+            required: true,
+            message: '璇疯緭鍏ュ瓨鏀惧湴鐐�',
+            trigger: 'blur'
+          }],
+          // remark: [{
+          //   required: true,
+          //   message: '璇疯緭鍏ュ娉�',
+          //   trigger: 'blur'
+          // }],
+          familyId: [{
+            required: true,
+            message: '璇疯緭鍏ュ搴彿',
+            trigger: 'blur'
+          }],
+          // createDate: [{
+          //   required: true,
+          //   message: '璇烽�夋嫨鏃ユ湡閫夋嫨',
+          //   trigger: 'change'
+          // }],
+              content: [{
+            required: true,
+            message: '璇烽�夋嫨浜嬮」鍐呭',
+            trigger: 'blur'
+          }],
+        },
+        typeOptions: [],
+      };
+    },
+    created() {
+      this.getList();
+    //   this.getCateInfor()
+
+    },
+    methods: {
+      // 鍙栨秷鎸夐挳
+      cancelData() {
+        this.open = false;
+        this.reset();
+      },
+
+      /** 鏌ヨ瑙掕壊鍒楄〃 */
+      //鍒楄〃鏄剧ず瀹跺ぇ浜嬭
+
+      getList() {
+        this.loading = true;
+        // console.log(this.queryParams)
+        //  listProperty(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
+        listEquipment(this.queryParams).then(response => {
+            //  alert(123)
+            //   console.log(response.data)
+            this.equipmentList = response.data.data;
+
+            this.total = response.data.total;
+            this.loading = false;
+          }
+        );
+      },
+
+      // 鍙栨秷鎸夐挳
+      cancel() {
+        this.open = false;
+        this.reset();
+      },
+      // 鍙栨秷鎸夐挳锛堟暟鎹潈闄愶級
+      cancelDataScope() {
+        this.openDataScope = false;
+        this.reset();
+      },
+      // 琛ㄥ崟閲嶇疆
+      reset() {
+        if (this.$refs.menu != undefined) {
+          this.$refs.menu.setCheckedKeys([]);
+        }
+        this.menuExpand = false,
+          this.menuNodeAll = false,
+          this.deptExpand = true,
+          this.deptNodeAll = false,
+          this.form = {
+            roleId: undefined,
+            roleName: undefined,
+            roleKey: undefined,
+            roleSort: 0,
+            status: "0",
+            menuIds: [],
+            deptIds: [],
+            menuCheckStrictly: true,
+            deptCheckStrictly: true,
+            remark: undefined
+          };
+        this.resetForm("form");
+      },
+      /** 鎼滅储鎸夐挳鎿嶄綔 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 閲嶇疆鎸夐挳鎿嶄綔 */
+      resetQuery() {
+        this.dateRange = [];
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      // 澶氶�夋閫変腑鏁版嵁
+      handleSelectionChange(selection) {
+        this.ids = selection.map(item => item.id)
+        console.log(this.ids)
+        this.single = selection.length!=1
+        this.multiple = !selection.length
+      },
+
+      /** 鏂板鎸夐挳鎿嶄綔 */
+      handleAdd() {
+        this.reset();
+        this.open = true;
+        this.title = "娣诲姞瀹跺涵璁惧淇℃伅";
+      },
+
+
+      /** 鏌ョ湅璇︾粏淇℃伅 */
+      handleCheck(row){
+        const id = row.id;
+        this.$router.push("/jiatingshebei/device/equipmentInfo/" + id);
+      },
+      /** 淇敼鎸夐挳鎿嶄綔 */
+      handleUpdate(row) {
+        const id = row.id;
+        let jd = true
+
+        this.$router.push({
+          path:"/jiatingshebei/device/equipmentInfo/" + id,
+          query:{
+            detail:jd
+          }
+        });
+      },
+
+
+      handlePictureCardPreview(file) {
+        this.dialogImageUrl = file.url;
+        this.dialogVisible = true;
+      },
+      /** 鎻愪氦鎸夐挳锛堟暟鎹潈闄愶級 */
+      submitDataScope: function() {
+
+        let ul = this.fileList.map(function (elem){
+          return elem.url.replace(process.env.VUE_APP_BASE_TRUE_API,"")
+        }).join(",")
+        let uls = this.fileListOther.map(function (elem){
+          return elem.url.replace(process.env.VUE_APP_BASE_TRUE_API,"")
+        }).join(",")
+        this.formDat.url = ul+","+uls
+        this.$refs["elForm"].validate(valid => {
+          if (valid) {
+
+            addEquipment(this.formDat).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        });
+      },
+      requestUpload(params)
+      {
+        var file = params.file;
+        var formData = new FormData();
+        formData.append('uploadFile', file);
+        let _this = this
+
+        uploadPic(formData).then(response => {
+          let pth = response.data.originalFilename.substr(response.data.originalFilename.length-4, response.data.originalFilename.length)
+
+          if(_this.fot.includes(pth) === true)
+          {
+            _this.fileList.push({name:response.data.fileName, "url":response.data.url})
+
+          }
+
+          else{
+            _this.fileListOther.push({name:response.data.fileName, url:response.data.url})
+
+          }
+        })
+
+      },
+      /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+      handleDelete(row) {
+        const Ids = row.id || this.ids;
+        this.$modal.confirm('鏄惁纭鍒犻櫎搴忓彿涓�"' + Ids + '"鐨勬暟鎹」锛�').then(function() {
+          return delEquipment(Ids);
+        }).then(() => {
+          this.getList();
+          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        }).catch(() => {});
+      },
+      /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+      handleExport() {
+        this.download('/zfEquipment/export', {
+          ...this.queryParams
+        }, `zfEquiment_${new Date().getTime()}.xlsx`)
+      }
+    }
+  };
+  </script>
+

--
Gitblit v1.9.1