From f37d45b8998ea08a42002579ecc103244bdac17b Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期四, 21 十一月 2024 11:06:56 +0800
Subject: [PATCH] Merge remote-tracking branch 'supervisionVue/hc-dataproduct-v1112' into lsf-dataproduct-1024

---
 src/views/fysp/check/components/ArbitraryPhoto.vue |  360 +++++------------------------------------------------------
 1 files changed, 31 insertions(+), 329 deletions(-)

diff --git a/src/views/fysp/check/components/ArbitraryPhoto.vue b/src/views/fysp/check/components/ArbitraryPhoto.vue
index 4759c38..4593d21 100644
--- a/src/views/fysp/check/components/ArbitraryPhoto.vue
+++ b/src/views/fysp/check/components/ArbitraryPhoto.vue
@@ -1,358 +1,60 @@
 <template>
-  <div class="main">
-    <div class="filters" v-if="false">
-      <el-select
-        v-for="(key_select, index_select) of filters.keys()"
-        :placeholder="key_select.text"
-      >
-        <el-option
-          v-for="(key_option, index_option) in filters.get(key_select.key)"
-          :key="key_option.key"
-          :value="key_option.value"
-          :label="key_option.label"
-        >
-        </el-option>
-      </el-select>
-    </div>
-    <div class="btns" v-if="!readonly">
-      <el-button size="small" type="primary" @click="sendSelectedImg(true)">纭畾</el-button>
-      <el-button size="small" type="primary" @click="sendSelectedImg(false)">鍙栨秷</el-button>
-    </div>
-
-    <div class="center">
-      <el-descriptions>
-        <el-descriptions-item label="鎬绘暟">
-          <span>{{ this.imgUrlList.length }}</span>
-        </el-descriptions-item>
-      </el-descriptions>
-      <el-tabs v-model="activeId" type="card">
-        <el-tab-pane
-          v-for="item in typeList"
-          :label="item.businesstype"
-          :name="item.businesstypeid"
-        >
-        </el-tab-pane>
-      </el-tabs>
-      <el-empty v-if="isEmpty" description="鏆傛棤璁板綍" />
-      <div class="imgs">
-        <el-image
-          v-for="(img, i) in typeImgMap.get(activeId)"
-          :class="[Boolean(img.isSelect) ? 'selected' : 'noActive', 'image']"
-          fit="cover"
-          :src="img.url"
-          lazy
-          @click="onSelect(img, i)"
-        />
-      </div>
-    </div>
-  </div>
+  <FYImageSelectDialog
+    title="鍦烘櫙鍥剧墖"
+    :typeList="typesList"
+    :typeImgMap="typesMap"
+  ></FYImageSelectDialog>
 </template>
 <script>
-import problemApi from '@/api/fysp/problemApi.js';
 import mediafileApi from '@/api/fysp/mediafileApi.js';
 import { $fysp } from '@/api/index.js';
 export default {
   props: {
-    filters: Map,
-    // 鏄惁浠ュ彧璇荤殑褰㈠紡鏌ョ湅褰撳墠椤甸潰
-    readonly: {
-      type: Boolean,
-      default: false
-    },
     subtask: {
       type: Object,
       efault: {}
-    },
-    inspectionGuid: {
-      type: String,
-      default: ''
-    },
-    defaultFile: {
-      type: Array,
-      default: () => []
     }
   },
   data() {
     return {
       // 鏃犳暟鎹�
-      isEmpty: false,
-      isClose: false,
-      isAll: false,
-      activeId: '',
-      typeList: [
-        // { businesstypeid: 5, businesstype: '甯歌璁板綍' },
-        // { businesstypeid: 3, businesstype: '鐩戞祴璁惧' },
-        // { businesstypeid: 7, businesstype: '閾墝' },
-        // { businesstypeid: 51, businesstype: '鎵╁睍绫讳竴' },
-        // { businesstypeid: 52, businesstype: '鎵╁睍绫讳簩' },
-        // { businesstypeid: 53, businesstype: '鎵╁睍绫讳笁' },
-        // { businesstypeid: 54, businesstype: '鎵╁睍绫诲洓' },
-        // { businesstypeid: 55, businesstype: '鎵╁睍绫讳簲' },
-        // { businesstypeid: 56, businesstype: '鎵╁睍绫诲叚' },
-        // { businesstypeid: 57, businesstype: '鎵╁睍绫讳竷' },
-        // { businesstypeid: 58, businesstype: '鎵╁睍绫诲叓' },
-        // { businesstypeid: 59, businesstype: '鎵╁睍绫讳節' },
-        // { businesstypeid: 60, businesstype: '鎵╁睍绫诲崄' }
-      ],
-      typeImgMap: new Map(),
-      imgUrlList: []
+      typesList: [],
+      typesMap: new Map()
     };
   },
-  watch: {
-    defaultFile: {
-      handler(newFileList, oldFileList) {
-        if (this.isClose) {
-          return;
-        }
-      },
-      deep: true
-    },
-    typeImgMap: {
-      handler(newMap, oldMap) {
-        if (this.isClose || newMap.get(this.activeId) == undefined) {
-          return;
-        }
-        newMap.get(this.activeId).forEach((i) => {
-          if (i.isSelect == true) {
-            return;
-          }
-          this.defaultFile.forEach((imgItem) => {
-            if (imgItem.url == i.url) {
-              i.isSelect = true;
-            }
-          });
-        });
-      },
-
-      deep: true
-    }
-  },
   mounted() {
-    if (this.defaultFile == undefined || this.defaultFile == null) {
-      this.defaultFile = [];
-    }
-    if (this.subtask) {
-      this.getAllImgList();
-    }
+    this.getGroupImgs();
   },
   methods: {
-    // 鍒濆鍖栧垰寮�濮嬮�変腑鐨勬爣绛�
-    initSelectedTab() {
-      if (this.typeList.length > 0) {
-        this.activeId = this.typeList[0].businesstypeid;
-      }
-    },
-    async getAllImgList() {
-      // for(var k of this.typeImgMap.keys()) {
-      //     this.typeImgMap.set(k, [])
-      // }
-      await mediafileApi.getRoutineByStGuid(this.subtask.stGuid).then((res) => {
-        this.isEmpty = false;
-        let data = res.data;
-        if (data.length == 0) {
-          this.isEmpty = true;
-        }
-        for (const e of data) {
-          let list;
-          let businesstypeid = e.businesstypeid;
-          let businesstype = e.businesstype;
-          let hasThisType = false;
-          this.typeImgMap.forEach((v, k, m) => {
-            if (k == businesstypeid) {
-              hasThisType = true;
-              var isAlreadyHas = false;
-              if (v != undefined && v != null) {
-                for (let index = 0; index < v.length; index++) {
-                  const element = v[index];
-                  if (element.guid == e.guid) {
-                    isAlreadyHas = true;
-                    break;
-                  }
-                }
-              }
-              if (!isAlreadyHas) {
-                v.push(e);
-              }
-            }
-          });
-          if (!hasThisType) {
-            this.typeImgMap.set(businesstypeid, Array.of(e));
-            this.typeList.push(e);
-          }
-          this.imgUrlList.push(e);
-          // TODO imgUrl鍏ㄥ眬閰嶇疆
-          e.url = $fysp.imgUrl + e.extension1 + e.guid + '.jpg';
-          // e.url = "http://47.100.191.150:9005/images/" + e.extension1 + e.guid + '.jpg'
-          e.isSelect = false;
-        }
-        this.initSelectedTab();
-      });
-    },
-    getInitImgList() {
+    // 鍥剧墖鍒嗙被
+    getGroupImgs() {
       mediafileApi.getRoutineByStGuid(this.subtask.stGuid).then((res) => {
-        let data = res.data;
+        let typeList = [];
+        let typeMap = new Map();
+        const data = res.data;
         for (const e of data) {
-          let list;
-          let businesstypeid = e.businesstypeid;
-          let businesstype = e.businesstype;
-          let hasThisType = false;
-          this.typeImgMap.forEach((v, k, m) => {
-            if (k == businesstypeid) {
-              hasThisType = true;
-              if (v.length < 3) {
-                v.push(e);
-              }
-            }
-          });
-          if (!hasThisType) {
-            this.typeImgMap.set(businesstypeid, Array.of(e));
-            this.typeList.push(e);
+          let img = {
+            url: $fysp.imgUrl + e.extension1 + e.guid + '.jpg'
+          };
+          const businesstype = e.businesstype;
+          const businesstypeid = e.businesstypeid;
+          if (
+            typeList.find((item) => item.typeName == businesstype) != undefined
+          ) {
+            typeMap.get(businesstypeid).push(img);
+          } else {
+            typeList.push({
+              typeId: businesstypeid,
+              typeName: businesstype
+            });
+            typeMap.set(businesstypeid, [img]);
           }
-          this.imgUrlList.push(e);
-          // TODO imgUrl鍏ㄥ眬閰嶇疆
-          e.url = $fysp.imgUrl + e.extension1 + e.guid + '.jpg';
-          // e.url = "http://47.100.191.150:9005/images/" + e.extension1 + e.guid + '.jpg'
-          e.isSelect = false;
         }
-        if (this.typeList.length > 0) {
-          this.activeId = this.typeList[0].businesstypeid;
-        }
+        this.typesList = typeList;
+        this.typesMap = typeMap;
       });
-    },
-    onSelect(img, i) {
-      // if (i == 2 && !this.isAll) {
-      //   this.getAllImgList();
-      //   this.isAll = true;
-      // } else {
-      //   if (this.readonly) {
-      //     return;
-      //   }
-      //   img.isSelect = !Boolean(img.isSelect);
-      // }
-
-      if (this.readonly) {
-        return;
-      }
-      img.isSelect = !Boolean(img.isSelect);
-    },
-    sendSelectedImg(isOk) {
-      let result = [];
-      if (!Boolean(isOk)) {
-        this.$emit('selectByAnyPhonoEvent', result);
-      }
-      for (const item of this.imgUrlList) {
-        if (item.isSelect == true) {
-          result.push(item);
-        }
-      }
-      this.isClose = true;
-      this.$emit('selectByAnyPhonoEvent', result);
     }
   }
 };
 </script>
-<style scoped>
-.center {
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-}
-.text {
-  padding: 20px;
-}
-
-.main {
-  margin: 0 auto; /* 浣跨埗鍏冪礌灞呬腑 */
-  height: 100%;
-  width: 100%;
-}
-
-.btns {
-  height: 10%;
-}
-/* 
-.img_types {
-  margin: 0 auto;
-  height: 440px;
-  width: 900px;
-  flex-grow: 1;
-  overflow-y: hidden ;
-  padding: 3%;
-  flex-wrap: wrap;
-  overflow: hidden;
-} */
-
-.imgs {
-  height: 370px;
-  width: 90%;
-  min-height: 100px !important;
-  /* border-style:solid;
-    border-radius: 1px; */
-  /* height: 100%; */
-  flex-grow: 1 !important;
-  overflow-y: auto !important;
-  /* 鍐呭鐨勫唴杈硅窛 */
-  display: flex !important;
-  flex-wrap: wrap !important;
-  /* overflow: hidden; */
-}
-
-.image {
-  height: 210px;
-  width: 200px;
-  border-radius: 4px;
-}
-
-.active {
-  padding: 5px;
-  width: 20%;
-  height: 200px;
-  border: 0.5rem outset rgb(52, 155, 4);
-}
-
-.selected {
-  padding: 5px;
-  color: #4abe84;
-  box-shadow: 0 2px 7px 0 rgba(85, 110, 97, 0.35);
-  border: 1px solid rgba(74, 190, 132, 1);
-}
-
-.selected:before {
-  content: '';
-  position: absolute;
-  right: 0;
-  bottom: 0;
-  border: 17px solid #4abe84;
-  border-top-color: transparent;
-  border-left-color: transparent;
-}
-
-.selected:after {
-  content: '';
-  width: 5px;
-  height: 12px;
-  position: absolute;
-  right: 6px;
-  bottom: 6px;
-  border: 2px solid #fff;
-  border-top-color: transparent;
-  border-left-color: transparent;
-  transform: rotate(45deg);
-}
-
-.noActive {
-  padding: 5px;
-}
-
-.blurry {
-  filter: blur(3px);
-}
-.filters {
-  display: flex;
-  padding: 5px;
-}
-
-.el-dialog__body {
-  height: 60vh;
-}
-</style>
+<style scoped></style>

--
Gitblit v1.9.3