From 87958d6d33603fa673cb7c8f5caf2394689959bf Mon Sep 17 00:00:00 2001 From: hcong <1050828145@qq.com> Date: 星期四, 21 十一月 2024 11:00:43 +0800 Subject: [PATCH] 1. 图片选择组件移动到全局组件文件夹 2. 涉及到使用图片选择组件添加图片区域loading 3. 无用页面删除 --- src/views/fysp/check/components/ArbitraryPhoto.vue | 366 +++++----------------------------------------------- 1 files changed, 36 insertions(+), 330 deletions(-) diff --git a/src/views/fysp/check/components/ArbitraryPhoto.vue b/src/views/fysp/check/components/ArbitraryPhoto.vue index 4759c38..52034e9 100644 --- a/src/views/fysp/check/components/ArbitraryPhoto.vue +++ b/src/views/fysp/check/components/ArbitraryPhoto.vue @@ -1,358 +1,64 @@ <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 + v-loading="loading" + 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(), + loading: true, }; }, - 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; + this.loading = true + 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; - } - }); - }, - 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); + this.typesList = typeList; + this.typesMap = typeMap; + }).finally(() => (this.loading = false)); } } }; </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> + \ No newline at end of file -- Gitblit v1.9.3