From f5d6313fd8d62501844527232b044055299ccdff Mon Sep 17 00:00:00 2001
From: linwenling <3256558519@qq.com>
Date: 星期三, 03 五月 2023 09:29:28 +0800
Subject: [PATCH] 新增保洁收纳模块

---
 ruoyi-ui/src/views/clean/index.vue     |  674 +++++++++++++++++++++++++++++++++
 ruoyi-ui/src/views/clean/cleanInfo.vue |  390 +++++++++++++++++++
 ruoyi-ui/src/api/clean/index.js        |   78 +++
 ruoyi-ui/src/router/index.js           |   16 
 4 files changed, 1,158 insertions(+), 0 deletions(-)

diff --git a/ruoyi-ui/src/api/clean/index.js b/ruoyi-ui/src/api/clean/index.js
new file mode 100644
index 0000000..1be79a3
--- /dev/null
+++ b/ruoyi-ui/src/api/clean/index.js
@@ -0,0 +1,78 @@
+import request from '@/utils/request'
+
+// 鏌ヨ鎵�鏈変繚娲佹敹绾�
+export function listClean(query) {
+  return request({
+    url: '/zfClean/all',
+    method: 'get',
+    params: query
+  })
+}
+// 鏍规嵁id鏌ヨ鎵�鏈変繚娲佹敹绾宠缁嗕俊鎭�
+export function getCLeanInfo(id) {
+  return request({
+    url: '/zfClean/' + id,
+    method: 'get',
+
+  })
+}
+//鏂板淇℃伅
+export function addClean(data) {
+    return request({
+      url: '/zfClean',
+      method: 'post'
+    })
+  }
+
+// 鍒犻櫎璧勪骇淇℃伅
+export function delClean(Ids) {
+  return request({
+    url: '/zfClean' + Ids,
+    method: 'delete'
+  })
+}
+//淇敼淇℃伅
+export function updateClean(data) {
+  return request({
+    url: '/zfClean',
+    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}
+  })
+}
+
+
+//涓婁紶鏂囦欢
+export function enload(data) {
+  return request({
+    url: '/family/property/importData',
+    method: 'post',
+    data: data
+  })
+}
diff --git a/ruoyi-ui/src/router/index.js b/ruoyi-ui/src/router/index.js
index b92b663..9501abc 100644
--- a/ruoyi-ui/src/router/index.js
+++ b/ruoyi-ui/src/router/index.js
@@ -196,7 +196,23 @@
       }
     ]
   },
+//淇濇磥鏀剁撼
+  {
+    path: '/familymodel/clean',
+    component: Layout,
+    // permissions: [],
+    hidden: true,
+    permissions: ['familymodel:clean:info'],
 
+    children: [
+      {
+        path: 'cleanInfo/:id(\\d+)',
+        component: () => import('@/views/clean/cleanInfo'),
+        name: 'cleanInfo',
+        meta: { title: '瀹跺涵鏀舵敮鍙拌处鏌ヨ璇︽儏',activeMenu: '/familymodel/zfClean'}
+      }
+    ]
+  },
   //鏀惰棌鍜岃崳瑾�
   {
     path: '/familymodel/Collection',
diff --git a/ruoyi-ui/src/views/clean/cleanInfo.vue b/ruoyi-ui/src/views/clean/cleanInfo.vue
new file mode 100644
index 0000000..5731bae
--- /dev/null
+++ b/ruoyi-ui/src/views/clean/cleanInfo.vue
@@ -0,0 +1,390 @@
+<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="120px">
+        <!-- <el-form-item label="搴忓彿" 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="kind">
+          <el-select v-model="formData.kind" placeholder="璇烽�夋嫨淇濇磥/鏀剁撼" clearable :style="{width: '100%'}" :disabled="dsb" >
+          </el-select>
+        </el-form-item>
+        <el-form-item label="绫诲埆" prop="type">
+          <el-input v-model="formData.type" placeholder="璇疯緭鍏ョ被鍒�" clearable :style="{width: '100%'}" :disabled="dsb"></el-input>
+        </el-form-item>
+        <el-form-item label="閫傜敤浜�" prop="suitable">
+          <el-input v-model="formData.suitable" placeholder="璇疯緭鍏ラ�傜敤浜�" clearable :style="{width: '100%'}" :disabled="dsb">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="淇濇磥鏂规硶" prop="method">
+          <el-input v-model="formData.method" 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="place">
+          <el-input v-model="formData.place" placeholder="璇烽�夋嫨鏀剧疆鍦扮偣" clearable :style="{width: '100%'}" :disabled="dsb">
+            </el-input>
+        </el-form-item>
+        <el-form-item label="鏃堕棿" prop="happenTime">
+          <el-input v-model="formData.happenTime" placeholder="璇疯緭鍏ユ椂闂�" clearable :style="{width: '100%'}" :disabled="dsb"></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">Click to upload</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 {getCLeanInfo,  uploadPic, download} from "@/api/clean/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: {
+          type: undefined,
+          kind: undefined,
+          suitable: undefined,
+          method: undefined,
+          location:undefined,
+          place:undefined,
+          remark: undefined,
+          url: undefined,
+        },
+          dialogImageUrl: '',
+          dialogVisible: false,
+          disabled: false,
+        rules: {
+          // id: [{
+          //   required: true,
+          //   message: '璇疯緭鍏d',
+          //   trigger: 'blur'
+          // }],
+          kind: [{
+            required: true,
+            message: '璇烽�夋嫨淇濇磥/鏀剁撼',
+            trigger: 'change'
+          }],
+          type: [{
+            required: true,
+            message: '璇疯緭鍏ョ被鍒�',
+            trigger: 'blur'
+          }],
+          method: [{
+            required: true,
+            message: '璇疯緭鍏ヤ繚娲佹柟娉�',
+            trigger: 'blur'
+          }],
+          location: [{
+            required: true,
+            message: '璇疯緭鍏ユ潗鏂欏瓨鏀惧湴',
+            trigger: 'blur'
+          }],
+          place: [{
+            required: true,
+            message: '璇疯緭鍏ユ斁缃湴鐐�',
+            trigger: 'blur'
+          }],
+          suitable: [{
+            required: true,
+            message: '璇疯緭鍏ラ�傜敤浜�',
+            trigger: 'blur'
+          }],
+  
+        },
+        typeOptions: [{
+    value: '0',
+    label: '淇濇磥',
+  },
+  {
+    value: '1',
+    label: '鏀剁撼',
+  }],
+      }
+    },
+    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;
+        getCLeanInfo(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: {
+      getSrc1(type) {
+      if (type === 0) {
+        return '鍩洪噾'
+      }else {
+        return '鍙拌处'
+      }
+    },
+  
+    getSrc2(kind) {
+      if (kind == 0) {
+        return '鐜伴噾'
+      }else  {
+        return '鑷姩鎵e垝'
+      }
+    },
+     
+      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) {
+              updateEconomy(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 = 'economy_'+nt+'.'+suffix
+          const blob = new Blob([response])
+          saveAs(blob, filename)
+        })
+      },
+    
+  
+   
+        handlePictureCardPreview(file) {
+          this.dialogFileUrl = file.url;
+        const Base64 = require('js-base64').Base64
+        this.desurl = process.env.VUE_APP_BASE_OTHER_API+'onlinePreview?url='+encodeURIComponent(Base64.encode(this.dialogFileUrl));
+        myWindow=window.open(this.desurl,'','width=1200,height=800,top=150,left=300');
+          
+        },
+  //鍒犻櫎鍥剧墖
+      handleRemoveFile(file,) {
+    
+        for(let i = 0; i < this.fileListOther.length; i++)
+        {
+          if(this.fileListOther[i].url==file.url)
+            this.$delete(this.fileListOther,i);
+        }
+      },
+        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 = 'property_'+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 scoped lang="scss">
+  .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/clean/index.vue b/ruoyi-ui/src/views/clean/index.vue
new file mode 100644
index 0000000..2bd5233
--- /dev/null
+++ b/ruoyi-ui/src/views/clean/index.vue
@@ -0,0 +1,674 @@
+<template>
+    <div class="app-container">
+      <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
+        <el-form-item label="绫诲瀷" prop="kind">
+          <el-select
+            v-model="queryParams.kind"
+            placeholder="鎵�鏈夌被鍨�"
+            clearable
+            style="width: 240px"
+          >
+            <el-option
+              v-for="dict in typeOptions"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            />
+          </el-select>
+          <el-form-item label="閫傜敤浜�" prop="suitable">
+            <el-input
+              v-model="queryParams.suitable"
+              placeholder="璇疯緭鍏ラ�傜敤浜�"
+              clearable
+              style="width: 240px"
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="绫诲埆" prop="type">
+            <el-input
+              v-model="queryParams.type"
+              placeholder="璇疯緭鍏ョ被鍒�"
+              clearable
+              style="width: 240px"
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="淇濇磥鏂规硶" prop="method">
+            <el-input
+              v-model="queryParams.method"
+              placeholder="璇疯緭鍏ヤ繚娲佹柟娉�"
+              clearable
+              style="width: 240px"
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+
+        </el-form-item>
+
+        <el-form-item>
+          <el-button   size="mini" @click="handleQuery" style=" width: 65px; height: 32px;background: #FFDDE3;
+            border-radius:6px 6px 6px 6px;opacity:1;">鎼滅储</el-button>
+          <el-button  size="mini" @click="resetQuery" style=" width: 65px; height: 32px;background: #FFDDE3;
+            border-radius: 6px 6px 6px 6px;opacity:1;">閲嶇疆</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>
+  
+          <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>
+          <el-col :span="1.2">
+            <el-upload
+              action=""
+              class="upload-demo"
+              :show-file-list="false"
+              :http-request="handleEnport"
+            >
+              <el-button size="mini"   type="primary"
+              plain
+              icon="el-icon-plus" >瀵煎叆</el-button>
+  
+            </el-upload>
+          </el-col>
+  
+        <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      </el-row>
+  
+      <el-table v-loading="loading" :data="cleanList" @selection-change="handleSelectionChange" :row-class-name="tableRowClassName">
+        <el-table-column type="selection" width="55"  align="center" />
+        <el-table-column label="绫诲瀷" prop="kind" sortable width="120" >
+          <template slot-scope="scope">
+          {{ getSrc1(scope.row.kind) }}
+           </template>
+          </el-table-column>
+        <el-table-column  label="搴忓彿" sortable type="index" :index="(queryParams.pageNum-1)*queryParams.pageSize+1" width="120"/>
+        <el-table-column label="閫傜敤浜�" prop="suitable" sortable :show-overflow-tooltip="true" width="150" />
+        <el-table-column label="绫诲埆" prop="type" sortable width="100" />
+        <el-table-column label="淇濇磥鏂规硶" prop="method" sortable width="100" />
+        <el-table-column label="鏉愭枡瀛樻斁鍦�" prop="location" sortable width="120" />
+        <el-table-column label="鏀剧疆鍦扮偣" prop="place" sortable width="100" />
+        <el-table-column label="鍙戠敓鏃堕棿" align="center" sortable prop="happenTime" width="180">
+         <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.happenTime) }}</span>
+         </template>
+        </el-table-column>
+        <el-table-column label="澶囨敞" prop="remark" sortable width="100" />
+        <el-table-column label="鐢靛瓙鏂囦欢" prop="url" width="100" >
+             <template slot-scope="scope" >
+               <img
+                 class="el-upload-list__item-thumbnail"
+                 src="../../assets/images/deviceLis.png"
+                 alt=""
+                 style="width: 35px; height: 35px;"
+                 fit="cover"
+                  v-if="scope.row.url !== null"
+               >
+        <img
+                 class="el-upload-list__item-thumbnail"
+                 src="../../assets/images/deviceA.png"
+                 alt=""
+                 style="width: 35px; height: 35px;"
+                 fit="cover"
+                  v-if="scope.row.url === null"
+               >
+             </template>
+          </el-table-column>
+          <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="['familymodel:clean:info']"
+          >淇敼</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="['familymodel:clean:info']">
+            <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"
+        style="background: #FEF7FC;"
+      />
+  
+      <!-- 娣诲姞鎴栦慨鏀硅祫浜т俊鎭厤缃璇濇 -->
+      <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="kind">
+        <el-select v-model="formDat.kind" placeholder="璇烽�夋嫨绫诲瀷" clearable :style="{width: '100%'}"  >
+          <el-option v-for="(item, index) in typeOptions" :key="index" :label="item.label" :value="item.value"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+          <el-form-item label="閫傜敤浜�" prop="suitable">
+            <el-input v-model="formDat.suitable" placeholder="璇疯緭鍏ラ�傜敤浜�" clearable :style="{width: '100%'}" ></el-input>
+          </el-form-item>
+          <el-form-item label="绫诲埆" prop="type">
+            <el-input v-model="formDat.type" placeholder="璇疯緭鍏ョ被鍒�" clearable :style="{width: '100%'}" >
+            </el-input>
+          </el-form-item>
+          <el-form-item label="鏃堕棿" prop="happenTime">
+           <el-date-picker
+            v-model='formDat.happenTime'
+            type='createDate'
+            placeholder='閫夋嫨鏃ユ湡'></el-date-picker>
+          </el-form-item>
+          <el-form-item label="淇濇磥鏂规硶" prop="method">
+            <el-input v-model="formDat.method" placeholder="璇疯緭鍏ヤ繚娲佹柟娉�" clearable :style="{width: '100%'}" >
+            </el-input>
+          </el-form-item>
+          <el-form-item label="鏉愭枡瀛樻斁鍦�" prop="place">
+            <el-input v-model="formDat.place" 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="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 {listClean,enload,delClean, addClean, uploadPic} from "@/api/clean/index";
+  export default {
+    name: "Role",
+    dicts: ['sys_normal_disable'],
+    data() {
+      return {
+        // 閬僵灞�
+        disabled: false,
+  
+        loading: true,
+        formData:[],
+        // 閫変腑鏁扮粍
+        ids: [],
+        // 闈炲崟涓鐢�
+        single: true,
+        // 闈炲涓鐢�
+        multiple: true,
+        // 鏄剧ず鎼滅储鏉′欢
+        showSearch: true,
+        // 鎬绘潯鏁�
+        total: 0,
+        // 璧勪骇琛ㄦ牸鏁版嵁
+        cleanList: [],
+        // 寮瑰嚭灞傛爣棰�
+        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,
+          kind: undefined,
+          suitable: undefined,
+          method: undefined,
+          place: undefined,
+          location: undefined,
+          remark: undefined,
+          happenTime: undefined,
+          url: undefined,
+  
+        },
+        // 鑿滃崟鍒楄〃
+        menuOptions: [],
+        // 閮ㄩ棬鍒楄〃
+        deptOptions: [],
+        // 鏌ヨ鍙傛暟
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10,
+          type:undefined,
+          suitable:undefined,
+          kind:undefined,
+          method:undefined,
+          happenStartTime:undefined,
+          happenEndTime:undefined
+        },
+        // 琛ㄥ崟鍙傛暟
+        form: {},
+        defaultProps: {
+          children: "children",
+          label: "label"
+        },
+        // 琛ㄥ崟鏍¢獙
+        rules: {
+          kind: [{
+            required: true,
+            message: '璇烽�夋嫨绫诲瀷',
+            trigger: 'change'
+          }],
+          type: [{
+            required: true,
+            message: '閫夋嫨绫诲埆',
+            trigger: 'blur'
+          }],
+          location: [{
+            required: true,
+            message: '璇疯緭鍏ユ潗鏂欏瓨鏀惧湴鍧�',
+            trigger: 'blur'
+          }],
+          suitable: [{
+            required: true,
+            message: '璇疯緭鍏ラ�傜敤浜�',
+            trigger: 'blur'
+          }],
+          method: [{
+            required: true,
+            message: '璇疯緭鍏ヤ繚娲佹柟娉�',
+            trigger: 'blur'
+          }],
+          place: [{
+            required: true,
+            message: '璇疯緭鍏ユ斁缃湴鐐�',
+            trigger: 'blur'
+          }],
+        },
+        typeOptions: [{
+  value: '0',
+  label: '淇濇磥',
+},
+{
+  value: '1',
+  label: '鏀剁撼',
+}],
+      };
+    },
+    created() {
+      this.getList();
+      this.getCateInfor()
+  
+    },
+    methods: {
+    //
+    getSrc1(kind) {
+    if (kind === 0) {
+      return '淇濇磥'
+    }else {
+      return '鏀剁撼'
+    }
+  },
+      // 鍙栨秷鎸夐挳
+      cancelData() {
+        this.open = false;
+        this.reset();
+      },
+  
+      //闅旇鍙樿壊
+      tableRowClassName({ row, rowIndex }) {
+        if (rowIndex % 2 == 0) {
+          return "statistics-warning-row1";
+        } else {
+          return "statistics-warning-row";
+        }
+      },
+  
+      /** 鏌ヨ瑙掕壊鍒楄〃 */
+      getList() {
+        this.loading = true;
+        this.queryParams.happenStartTime = this.dateRange.length > 0 && this.dateRange[0]
+        this.queryParams.happenEndTime = this.dateRange.length > 0 && this.dateRange[1]
+  
+        // console.log(this.queryParams)
+        //  listProperty(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
+        listClean(this.queryParams).then(response => {
+            //  alert(123)
+            //   console.log(response.data)
+            this.cleanList = response.data.data;
+  
+            this.total = response.data.total;
+            this.loading = false;
+          }
+        );
+      },
+      /** 鏌ヨ绫诲埆淇℃伅 */
+      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]})
+          })
+        })
+      },
+  
+      handleRemove(file) {
+        for(let i = 0; i < this.fileListOther.length; i++)
+        {
+          if(this.fileListOther[i].url==file.url)
+            this.$delete(this.fileListOther,i);
+        }
+      },
+      // 鍙栨秷鎸夐挳
+      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("/familymodel/clean/cleanInfo/" + id);
+      },
+      /** 淇敼鎸夐挳鎿嶄綔 */
+      handleUpdate(row) {
+        const id = row.id;
+        let jd = true
+  
+        this.$router.push({
+          path:"/familymodel/clean/cleanInfo/" + id,
+          query:{
+            detail:jd
+          }
+        });
+      },
+  
+  
+      handlePictureCardPreview(file) {
+        this.dialogImageUrl = file.url;
+        this.dialogVisible = true;
+      },
+      handleRemoveFile(file,) {
+  
+  for(let i = 0; i < this.fileListOther.length; i++)
+  {
+    if(this.fileListOther[i].url==file.url)
+      this.$delete(this.fileListOther,i);
+  }
+},
+      /** 鎻愪氦鎸夐挳锛堟暟鎹潈闄愶級 */
+      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) {
+  
+            addClean(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 delClean(Ids);
+        }).then(() => {
+          this.getList();
+          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        }).catch(() => {});
+      },
+      /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+      handleExport() {
+        this.download('/zfEconomy/export', {
+          ...this.queryParams
+        }, `clean_${new Date().getTime()}.xlsx`)
+      },
+      /** 瀵煎叆鎿嶄綔*/
+      handleEnport(params){
+      var file = params.file;
+      var formData = new FormData();
+      formData.append('excelImport', file);
+      let _this = this
+      alert(file)
+      enload(formData).then(response => {
+         _this.getList();
+        Message({ message: "瀵煎叆鎴愬姛", type: 'warning' })
+  
+      }).catch(err)
+      {
+        Message({ message: "瀵煎叆澶辫触", type: 'error' })
+      }
+  
+      }
+    }
+  };
+  </script>
+  <style>
+  .el-table__row.statistics-warning-row {
+    background: #E0EEFE;
+  
+  }
+  .el-table__row.statistics-warning-row1 {
+    background: #FFEFF2;
+  
+  }
+  </style>
+  
\ No newline at end of file

--
Gitblit v1.9.1