Merge remote-tracking branch 'origin/master'
| | |
| | | report, |
| | | certification, |
| | | sealScope, |
| | | informationNotification, |
| | | } |
| | | } |
| | | |
| | |
| | | delInsOrderTemplate: "/insOrder/delInsOrderTemplate", //å 餿£éªåæ¨¡æ¿ |
| | | selectSampleAndProductByOrderId: "/insOrder/selectSampleAndProductByOrderId", //éè¿æ£éªåæ¥è¯¢æ£éªæ°æ®ï¼æ°æ®æ¥çï¼ |
| | | costStatistics: "/insOrder/costStatistics", //è´¹ç¨ç»è®¡ |
| | | selectSampleDefects: "/insOrder/selectSampleDefects", //æ ·åç¼ºé·ææ |
| | | } |
| | | |
| | | const sampleOrder = { |
| | |
| | | addSeal:"/sealScope/addSeal",//æ·»å å°ç« åæ° |
| | | } |
| | | |
| | | const informationNotification = { |
| | | checkForUnreadData:"/informationNotification/checkForUnreadData",//æ¥è¯¢æ¯å¦å卿ªè¯»æ°æ® |
| | | deleteDataBasedOnId:"/informationNotification/deleteDataBasedOnId",//æ ¹æ®Idå 餿°æ® |
| | | informationReadOrDelete:"/informationNotification/informationReadOrDelete",//æ è®°ææä¿¡æ¯ä¸ºå·²è¯»-å 餿æå·²è¯»æ¶æ¯ |
| | | page:"/informationNotification/page",//æ»å¨å页æ¥è¯¢ |
| | | updateMessageStatus:"/informationNotification/updateMessageStatus",//æ´æ°æ¶æ¯ç¶æï¼æç»ãæ¥æ¶ï¼ |
| | | triggerModificationStatusToRead:"/informationNotification/triggerModificationStatusToRead",//ç¹å»è¯¦æ
触åä¿®æ¹ç¶æä¸ºå·²è¯» |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="scroll-pagination" ref="content" @scroll="scrollFn"> |
| | | <slot></slot> |
| | | <el-button |
| | | v-if="isLoding" |
| | | type="text" |
| | | style="display: flex; margin: 0 auto; color: #909399" |
| | | ><i class="el-icon-loading" style="font-size:20px"></i |
| | | ></el-button> |
| | | <el-button |
| | | type="text" |
| | | v-if="finishLoding" |
| | | style="display: flex; margin: 0 auto; color: #909399" |
| | | >å·²ç»æ²¡ææ´å¤å¦~</el-button |
| | | > |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: 'ScrollPagination', |
| | | props: { |
| | | finishLoding: { |
| | | type:Boolean, |
| | | default:false |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | isLoding: false, |
| | | } |
| | | }, |
| | | mounted(){ |
| | | window.addEventListener("scroll", this.throttle(this.scrollFn, 20000)); |
| | | }, |
| | | methods: { |
| | | scrollFn() { |
| | | let content = this.$refs.content |
| | | if (content.scrollTop + content.clientHeight >= content.scrollHeight) { |
| | | if(!this.finishLoding){ |
| | | this.loadMore() |
| | | }else{ |
| | | this.isLoding = false |
| | | } |
| | | } |
| | | }, |
| | | loadMore(){ |
| | | if (this.isLoding) return |
| | | this.isLoding = true |
| | | // Simulate loading data (replace with your own API call) |
| | | setTimeout(() => { |
| | | this.$emit('load') |
| | | this.isLoding = false |
| | | }, 1000) |
| | | }, |
| | | throttle(fn, wait) { |
| | | // å°è£
彿°è¿è¡èæµ |
| | | var timer = null; |
| | | return function () { |
| | | var context = this; |
| | | var args = arguments; |
| | | if (!timer) { |
| | | timer = setTimeout(function () { |
| | | fn.apply(context, args); |
| | | timer = null; |
| | | }, wait); |
| | | } |
| | | }; |
| | | }, |
| | | }, |
| | | destroyed() { |
| | | window.removeEventListener("scroll", this.throttle(), false); |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .scroll-pagination { |
| | | height: 100%; |
| | | overflow-y: auto; |
| | | } |
| | | </style> |
| | |
| | | } |
| | | } |
| | | this.addLoad = true |
| | | this.upHead.forEach((item,index)=>{ |
| | | if(this.data.cascaderField&&this.data.cascaderField[item.label]){ |
| | | if(this.upData[item.label]){ |
| | | this.upData[item.label] = this.upData[item.label].join(','); |
| | | }else{ |
| | | this.upData[item.label] = '' |
| | | } |
| | | } |
| | | }) |
| | | this.$axios.post(this.addUrl, this.upData, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | |
| | | return count * 15 + 60 + 'px' |
| | | }, |
| | | handleSuccessUp(response,label){ |
| | | if(label){ |
| | | if(typeof label === 'string'){ |
| | | if(response.code==200){ |
| | | this.upData[label] = response.data.url; |
| | | } |
| | |
| | | showSelect: false, |
| | | select: false, |
| | | do: [], |
| | | tagField: {}, |
| | | selectField: {}, |
| | | tagField: { |
| | | type:{ |
| | | select:[] |
| | | } |
| | | }, |
| | | selectField: { |
| | | type:{ |
| | | select:[] |
| | | } |
| | | }, |
| | | requiredAdd: [], |
| | | requiredUp: [] |
| | | requiredUp: [], |
| | | addUpload:['address'], |
| | | }, |
| | | entityCopy: {}, |
| | | upIndex: 0, |
| | |
| | | return m |
| | | }) |
| | | this.options[0].children = arr; |
| | | this.fileComponentData.tagField.type.select = arr; |
| | | this.fileComponentData.selectField.type.select = arr; |
| | | }) |
| | | }, |
| | | refresh() { |
| | |
| | | if (power[i].menuMethod == 'addParameter') { |
| | | add = true |
| | | } |
| | | if (power[i].menuMethod == 'selectSeal') { |
| | | if (power[i].menuMethod == 'addSeal') { |
| | | file = true |
| | | } |
| | | } |
| | |
| | | v-model="componentData.entity.specificationModel" @keyup.enter.native="refreshTable()"></el-input></div> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">设å¤å¤§ç±»ï¼</div> |
| | | <div class="search_label">设å¤åç±»ï¼</div> |
| | | <el-select v-model="componentData.entity.largeCategory" placeholder="è¯·éæ©"> |
| | | <el-option v-for="item in equipmentList" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | |
| | | <el-form-item label="è§æ ¼åå·:"> |
| | | <el-input :disabled="isUp" v-model="formData.specificationModel" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="设å¤ç¶æ:"> |
| | | <el-form-item label="å½åç¶æ:"> |
| | | <el-select :disabled="isUp" v-model="formData.deviceStatus" placeholder="è¯·éæ©" size="small" |
| | | style="width:100%"> |
| | | <el-option v-for="item in deviceStatusList" :key="item.value" :label="item.label" :value="item.value"> |
| | |
| | | </div> |
| | | </el-image> |
| | | <!-- 表å --> |
| | | <el-form :label-position="labelPosition" :model="formData2" label-width="90px"> |
| | | <el-form-item label="åºåæ¥æ:"> |
| | | <el-date-picker style="width:100%" v-model="formData2.dateProduction" type="datetime" size="small" |
| | | format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©æ¥æ"> |
| | | </el-date-picker> |
| | | <el-form :label-position="labelPosition" :model="formData2" label-width="100px"> |
| | | <el-form-item label="仪å¨åç§°:"> |
| | | <el-input v-model="formData2.deviceName" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="设å¤è´è´£äºº:"> |
| | | <el-form-item label="仪å¨åç§°EN:"> |
| | | <el-input v-model="formData2.deviceName" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="è§æ ¼åå·:"> |
| | | <el-input v-model="formData2.deviceName" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç产åå®¶:"> |
| | | <el-input v-model="formData2.deviceName" size="small"></el-input> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="设å¤è´è´£äºº:"> |
| | | <el-select v-model="formData2.equipmentManager" placeholder="è¯·éæ©" size="small" style="width:100%"> |
| | | <el-option v-for="item in responsiblePersonList" :key="item.value" :label="item.label" |
| | | :value="item.value"> |
| | |
| | | separator="," |
| | | clearable></el-cascader> |
| | | </el-form-item> |
| | | --> |
| | | </el-form> |
| | | </el-col> |
| | | </el-col> |
| | | <!-- ä¸é´å¸å± --> |
| | | <el-col :span="7"> |
| | | <el-form :label-position="labelPosition" :model="formData2" label-width="116px"> |
| | | <el-form-item label="设å¤åç§°:"> |
| | | <el-input v-model="formData2.deviceName" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å
é¨ç¼ç :"> |
| | | <el-input v-model="formData2.internalCode" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="èµäº§ç¼ç :"> |
| | | <el-input v-model="formData2.assetCode" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ ¡åæ¥æï¼æï¼:"> |
| | | <el-date-picker v-model="formData2.calibrationDate" type="month" size="small" format="yyyy-MM" |
| | | value-format="yyyy-MM" style="width:100%" placeholder="éæ©æ"> |
| | | <el-form :label-position="labelPosition" :model="formData2" label-width="110px"> |
| | | <el-form-item label="ç产åå®¶EN:"> |
| | | <el-input v-model="formData2.deviceName" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="åºåç¼å·:"> |
| | | <el-input v-model="formData2.deviceName" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="管çç¼å·:"> |
| | | <el-input v-model="formData2.deviceName" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ææ¯ææ :"> |
| | | <el-input v-model="formData2.deviceName" :rows="7" type="textarea" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="è´ç½®æ¥æ:"> |
| | | <el-date-picker style="width:100%" v-model="formData2.scrapTime" type="date" |
| | | format="yyyy-MM-dd" value-format="yyyy-MM-dd" size="small" placeholder="éæ©æ¥æ"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="æ¥åºæ¶é´:"> |
| | | <el-date-picker style="width:100%" v-model="formData2.scrapTime" type="datetime" |
| | | format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" size="small" placeholder="éæ©æ¶é´"> |
| | | <el-form-item label="å¯ç¨æ¥æ:"> |
| | | <el-date-picker style="width:100%" v-model="formData2.scrapTime" type="date" |
| | | format="yyyy-MM-dd" value-format="yyyy-MM-dd" size="small" placeholder="éæ©æ¥æ"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="éªæ¶è®°å½:"> |
| | | <el-input v-model="formData2.acceptanceRecords" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="设å¤ç¼ç :"> |
| | | <el-input v-model="formData2.factoryNo" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="è´ç½®æ¥æ:"> |
| | | <el-date-picker style="width:100%" v-model="formData2.acquisitionDate" type="datetime" size="small" |
| | | format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" placeholder="éæ©æ¥æ"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="å确度éå¼:"> |
| | | <el-input v-model="formData2.accurateMeasurement" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="夿³¨:"> |
| | | <el-input v-model="formData2.notes" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="管ç人:"> |
| | | <el-select v-model="formData2.equipmentManager" placeholder="è¯·éæ©" size="small" style="width:100%"> |
| | | <el-option v-for="item in responsiblePersonList" :key="item.value" :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="å°å:"> |
| | | <el-input v-model="formData2.deviceName" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-col> |
| | | <!-- å³è¾¹å¸å± --> |
| | | <el-col :span="7"> |
| | | <el-form :label-position="labelPosition" :model="formData2" label-width="110px" ref="ruleForm"> |
| | | <el-form-item label="è§æ ¼åå·:"> |
| | | <el-input v-model="formData2.specificationModel" size="small"></el-input> |
| | | <el-form :label-position="labelPosition" :model="formData2" label-width="120px" ref="ruleForm"> |
| | | <!-- å®éªå®¤å表 --> |
| | | <el-form-item label="æå±é¨é¨:"> |
| | | <el-select v-model="formData2.equipmentManager" placeholder="è¯·éæ©" size="small" style="width:100%"> |
| | | <el-option v-for="item in responsiblePersonList" :key="item.value" :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æ£æµé¡¹ç®:"> |
| | | <el-cascader |
| | | v-model="formData.insProductIds" |
| | | :options="options" |
| | | :show-all-levels="false" |
| | | :props="props" |
| | | placeholder="è¯·éæ©" size="small" |
| | | style="width:100%" |
| | | collapse-tags |
| | | separator="," |
| | | clearable></el-cascader> |
| | | </el-form-item> |
| | | <el-form-item label="æ ¡åæå¡æºæ:"> |
| | | <el-input v-model="formData2.deviceName" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æè¿æ ¡åæ¥æ:"> |
| | | <el-date-picker style="width:100%" v-model="formData2.latestTraceability" format="yyyy-MM-dd" |
| | | value-format="yyyy-MM-dd" type="date" size="small" placeholder="éæ©æ¥æ"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="设å¤ç¶æ:"> |
| | | <el-form-item label="䏿¬¡æ ¡åæ¥æ:"> |
| | | <el-date-picker style="width:100%" v-model="formData2.latestTraceability" format="yyyy-MM-dd" |
| | | value-format="yyyy-MM-dd" type="date" size="small" placeholder="éæ©æ¥æ"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="设å¤ç±»å:"> |
| | | <el-select v-model="formData2.equipmentManager" placeholder="è¯·éæ©" size="small" style="width:100%"> |
| | | <el-option v-for="item in equipmentList" :key="item.value" :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="åä»·(ä¸å
):"> |
| | | <el-input v-model="formData2.deviceName" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å½åç¶æ:"> |
| | | <el-select v-model="formData2.deviceStatus" placeholder="è¯·éæ©" size="small" style="width:100%"> |
| | | <el-option v-for="item in deviceStatusList" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="åæ¾ç¹:"> |
| | | <el-input v-model="formData2.storagePoint" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æè¿è¿½æº¯æ¥æ:"> |
| | | <el-date-picker style="width:100%" v-model="formData2.latestTraceability" format="yyyy-MM-dd HH:mm:ss" |
| | | value-format="yyyy-MM-dd HH:mm:ss" type="datetime" size="small" placeholder="éæ©æ¥æ"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="åç¨æ¶é´:"> |
| | | <el-date-picker style="width:100%" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" |
| | | v-model="formData2.downTime" type="datetime" size="small" placeholder="éæ©æ¶é´"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="维修记å½:"> |
| | | <el-input v-model="formData2.maintenanceRecords" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç产åå®¶:"> |
| | | <el-input v-model="formData2.manufacturer" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="éè´è´¹ç¨:"> |
| | | <el-input v-model="formData2.procurementCosts" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ ¡åè¯ä¹¦:"> |
| | | <el-input v-model="formData2.calibrationCerticate" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æ ¡åå¨æï¼æï¼:"> |
| | | <el-input v-model="formData2.deviceName" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å¾ç:"> |
| | | <div |
| | | style="border: 1px solid #DCDFE6;border-radius:4px;height:32px;lineHeight:32px;display:flex;justify-content: space-around;font-size: 13px;"> |
| | |
| | | options: [], |
| | | labelPosition: 'right', |
| | | dialogVisible: false, |
| | | dialogVisible2: false, |
| | | dialogVisible2: true, |
| | | addPower: false, |
| | | componentData: { |
| | | entity: { |
| | |
| | | responsiblePersonList: [], |
| | | // ææäººå表 |
| | | authorizerList: [], |
| | | // 设å¤ç¶æå表 |
| | | // å½åç¶æå表 |
| | | deviceStatusList: [], |
| | | upLoad: false, |
| | | upLoad2: false, |
| | |
| | | <el-button size="small" type="primary" @click="currentPage= 1,list=[],finishLoding = false,refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table" @scroll="scrollFn"> |
| | | <ul v-loading="loading" class="card"> |
| | | <div class="table" v-loading="loading"> |
| | | <scroll-pagination @load="refreshTable" :finishLoding="finishLoding"> |
| | | <ul class="card"> |
| | | <li v-for="(m,i) in list" :key="i"> |
| | | <el-image class="img" :src="javaApi+'/img/'+m.imageUpload"> |
| | | <div slot="error" class="image-error" style="width: 112px; |
| | |
| | | </div> |
| | | </li> |
| | | </ul> |
| | | <div v-if="list.length<1&&!loading&&!isLoding" style="color:#909399;font-size:14px;text-align: center;margin-top:200px" >ææ æ°æ®</div> |
| | | <div v-if="list.length>0"> |
| | | <el-button |
| | | v-if="isLoding" |
| | | type="text" |
| | | style="display: flex; margin: 0 auto; color: #909399" |
| | | ><i class="el-icon-loading" style="font-size:20px"></i |
| | | ></el-button> |
| | | <el-button |
| | | type="text" |
| | | v-if="finishLoding" |
| | | style="display: flex; margin: 0 auto; color: #909399" |
| | | >å·²ç»æ²¡ææ´å¤å¦~</el-button |
| | | > |
| | | </div> |
| | | </scroll-pagination> |
| | | <div v-if="list.length<1&&!loading" style="color:#909399;font-size:14px;text-align: center;margin-top:200px" >ææ æ°æ®</div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import ScrollPagination from '../tool/scroll-paging.vue' |
| | | export default { |
| | | components: { |
| | | ScrollPagination |
| | | }, |
| | | data() { |
| | | return { |
| | | entity:{ |
| | |
| | | pageSize: 16, // ä¸é¡µ16æ¡ |
| | | total: '', |
| | | loading: true, // ç»ä»¶loadingçå±ç¤º,é»è®¤ä¸ºtrue |
| | | isLoding: false, // å è½½ä¸ï¼loading徿 ,é»è®¤ä¸ºtrue |
| | | finishLoding: false // å è½½å®æï¼æ¾ç¤ºå·²ç»æ²¡ææ´å¤äº |
| | | } |
| | | }, |
| | |
| | | }, |
| | | methods: { |
| | | refreshTable() { |
| | | if(this.currentPage>1){ |
| | | this.isLoding = true |
| | | }else{ |
| | | if(this.currentPage==1){ |
| | | this.loading = true |
| | | } |
| | | if(this.list.length==0){ |
| | | window.addEventListener("scroll", this.throttle(this.scrollFn, 20000)); |
| | | } |
| | | this.$axios.post(this.$api.deviceScope.selectDeviceParameter,{ |
| | | page: { |
| | |
| | | if(this.total==this.list.length){ |
| | | this.finishLoding = true; |
| | | } |
| | | this.currentPage++; |
| | | } |
| | | } |
| | | this.loading = false |
| | | this.isLoding = false; |
| | | }) |
| | | }, |
| | | refresh() { |
| | |
| | | } |
| | | .card li{ |
| | | width: 320px; |
| | | /* height: 170px; */ |
| | | border-radius: 8px 8px 8px 8px; |
| | | box-shadow: 4px 4px 8px 0px rgba(51,51,51,0.04); |
| | | border: 1px solid #EEEEEE; |
| | |
| | | <el-button size="small" type="primary" @click="currentPage= 1,list=[],finishLoding = false,refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table" @scroll="scrollFn"> |
| | | <ul v-loading="loading" class="card"> |
| | | <div class="table" v-loading="loading"> |
| | | <scroll-pagination @load="refreshTable" :finishLoding="finishLoding"> |
| | | <ul class="card" style="margin-top: 10px;"> |
| | | <li v-for="(m,i) in list" :key="i"> |
| | | <el-image style="width: 80px; |
| | | height: 112px;" :src="javaApi+'/img/'+m.pictureUrl"> |
| | |
| | | <div class="title">{{ m.name }}</div> |
| | | </li> |
| | | </ul> |
| | | <div v-if="list.length<1&&!loading&&!isLoding" style="color:#909399;font-size:14px;text-align: center;margin-top:200px" >ææ æ°æ®</div> |
| | | <div v-if="list.length>0"> |
| | | <el-button |
| | | v-if="isLoding" |
| | | type="text" |
| | | style="display: flex; margin: 0 auto; color: #909399" |
| | | ><i class="el-icon-loading" style="font-size:20px"></i |
| | | ></el-button> |
| | | <el-button |
| | | type="text" |
| | | v-if="finishLoding" |
| | | style="display: flex; margin: 0 auto; color: #909399" |
| | | >å·²ç»æ²¡ææ´å¤å¦~</el-button |
| | | > |
| | | </div> |
| | | </scroll-pagination> |
| | | <div v-if="list.length<1&&!loading" style="color:#909399;font-size:14px;text-align: center;margin-top:200px" >ææ æ°æ®</div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import ScrollPagination from '../tool/scroll-paging.vue' |
| | | export default { |
| | | components: { |
| | | ScrollPagination |
| | | }, |
| | | data() { |
| | | return { |
| | | entity:{ |
| | |
| | | pageSize: 16, // ä¸é¡µ16æ¡ |
| | | total: '', |
| | | loading: true, // ç»ä»¶loadingçå±ç¤º,é»è®¤ä¸ºtrue |
| | | isLoding: false, // å è½½ä¸ï¼loading徿 ,é»è®¤ä¸ºtrue |
| | | finishLoding: false // å è½½å®æï¼æ¾ç¤ºå·²ç»æ²¡ææ´å¤äº |
| | | } |
| | | }, |
| | |
| | | }, |
| | | methods: { |
| | | refreshTable() { |
| | | if(this.currentPage>1){ |
| | | this.isLoding = true |
| | | }else{ |
| | | if(this.currentPage==1){ |
| | | this.loading = true |
| | | } |
| | | if(this.list.length==0){ |
| | | window.addEventListener("scroll", this.throttle(this.scrollFn, 20000)); |
| | | } |
| | | this.$axios.post(this.$api.user.selectUserList,{ |
| | | page: { |
| | |
| | | if(this.total==this.list.length){ |
| | | this.finishLoding = true; |
| | | } |
| | | this.currentPage++; |
| | | } |
| | | } |
| | | this.loading = false |
| | | this.isLoding = false; |
| | | }) |
| | | }, |
| | | refresh() { |
| | |
| | | let url = row.urlS?row.urlS:row.url; |
| | | const link = document.createElement('a'); |
| | | link.href = this.javaApi + url; |
| | | link.target = '_blank'; |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | }, |
| | |
| | | this.$confirm('æ¯å¦æäº¤å½åæ¥å?', "æäº¤", { |
| | | confirmButtonText: "æäº¤", |
| | | cancelButtonText: "åæ¶", |
| | | type: "success" |
| | | type: "warning" |
| | | }).then(() => { |
| | | this.$axios.post(this.$api.insReport.writeReport, { |
| | | id: row.id |
| | |
| | | if (res.code == 201) return |
| | | this.pageData = this.HaveJson(res.data) |
| | | let xData = res.data.DAYS.map(m=>{ |
| | | return `${m[1]}-${m[2]}` |
| | | let arr = m.split('-') |
| | | return `${arr[1]}-${arr[2]}` |
| | | }) |
| | | this.chartData0.xData = xData |
| | | this.chartData1.xData = xData |
| | |
| | | if (res.code == 201) return |
| | | this.pageData = this.HaveJson(res.data) |
| | | let xData = res.data.DAYS.map(m=>{ |
| | | return `${m[1]}-${m[2]}` |
| | | let arr = m.split('-') |
| | | return `${arr[1]}-${arr[2]}` |
| | | }) |
| | | this.chartData0.xData = xData |
| | | this.chartData1.xData = xData |
| | |
| | | <div class="search_thing"> |
| | | <div class="search_label">æ£éªé¡¹ç®ï¼</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请è¾å
¥" clearable |
| | | v-model="entity.laboratoryName" @keyup.enter.native="refreshTable()"></el-input></div> |
| | | v-model="entity.inspectionItems" @keyup.enter.native="refreshTable()"></el-input></div> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">å§æç¼å·ï¼</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请è¾å
¥" clearable |
| | | v-model="entity.laboratoryNumber" @keyup.enter.native="refreshTable()"></el-input></div> |
| | | v-model="entity.orderNumber" @keyup.enter.native="refreshTable()"></el-input></div> |
| | | </div> |
| | | <div class="search_thing" style="padding-left: 30px;"> |
| | | <el-button size="small" @click="refresh()">é ç½®</el-button> |
| | |
| | | default-expand-all |
| | | :tree-props="{children: 'children', hasChildren: 'hasChildren'}"> |
| | | <el-table-column |
| | | prop="date" |
| | | prop="inspection_item" |
| | | label="æ£éªé¡¹ç®" |
| | | sortable |
| | | min-width="180"> |
| | | <template slot-scope="scope"> |
| | | <p> |
| | | <el-tag style="margin-right: 10px;height: 24px;border-radius: 10px;line-height: 24px;border: 0;" :type="scope.row.level==2?'success':''">{{ '0' + scope.row.level }}</el-tag> |
| | | <span>{{ scope.row.date }}</span> |
| | | <span>{{ scope.row.inspection_item }}</span> |
| | | </p> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | prop="entrust_code" |
| | | label="å§æç¼å·" |
| | | sortable |
| | | min-width="180"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | prop="name" |
| | | label="æ£éªäºº" |
| | | min-width="180"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="address" |
| | | prop="create_time" |
| | | label="æ£éªæ¶é´" |
| | | min-width="180"> |
| | | </el-table-column> |
| | |
| | | export default { |
| | | data() { |
| | | return { |
| | | entity: {}, |
| | | tableData: [{ |
| | | id: 3, |
| | | date: '2016-05-01', |
| | | name: 'çå°è', |
| | | address: '䏿µ·å¸æ®éåºéæ²æ±è·¯ 1519 å¼', |
| | | level:1, |
| | | children: [{ |
| | | id: 31, |
| | | date: '2016-05-01', |
| | | name: 'çå°è', |
| | | address: '䏿µ·å¸æ®éåºéæ²æ±è·¯ 1519 å¼', |
| | | level:2, |
| | | }, { |
| | | id: 32, |
| | | date: '2016-05-01', |
| | | name: 'çå°è', |
| | | address: '䏿µ·å¸æ®éåºéæ²æ±è·¯ 1519 å¼', |
| | | level:2, |
| | | }] |
| | | }], |
| | | entity: { |
| | | orderNumber:null, |
| | | inspectionItems:null, |
| | | }, |
| | | tableData: [], |
| | | page:{ |
| | | current:1, |
| | | size:20, |
| | |
| | | } |
| | | }, |
| | | mounted() { |
| | | |
| | | this.getPower() |
| | | // this.getPower() |
| | | this.refreshTable() |
| | | }, |
| | | methods: { |
| | | refreshTable(){ |
| | | this.loading = true |
| | | this.$axios.post(this.$api.insOrder.selectSampleDefects, { |
| | | ...this.page, |
| | | ...this.entity |
| | | }).then(res => { |
| | | this.loading = false |
| | | if (res.code === 201) { |
| | | this.loading = false |
| | | return |
| | | } |
| | | this.total = res.data.total; |
| | | this.tableData = res.data.records.map(item=>{ |
| | | item.level = 1; |
| | | item.inspection_item = item.sample |
| | | item.children = item.children.map(m=>{ |
| | | m.id = Math.random(10000) |
| | | m.level = 2; |
| | | return m |
| | | }) |
| | | return item |
| | | }); |
| | | }) |
| | | }, |
| | | refresh(){ |
| | | this.page.size = 20; |
| | | this.entity = { |
| | | orderNumber:null, |
| | | inspectionItems:null, |
| | | }, |
| | | this.page.current = 1; |
| | | this.refreshTable(); |
| | | }, |
| | |
| | | </div> |
| | | <div class="right-3 card" style="overflow: hidden;"> |
| | | <div class="right-3-tab"> |
| | | <div class="tab-item" style="cursor: pointer;" :class="{active:currentIndex==0}" @click="currentIndex=0">é¢è¦æé 10</div> |
| | | <div class="tab-item" style="cursor: pointer;" :class="{active:currentIndex==1}" @click="currentIndex=1">éç¥éå 12</div> |
| | | <div class="tab-item" style="cursor: pointer;" :class="{active:currentIndex==4}" @click="currentIndex=4">é¢è¦æé</div> |
| | | <div class="tab-item" style="cursor: pointer;" :class="{active:currentIndex==5}" @click="currentIndex=5">éç¥éå</div> |
| | | </div> |
| | | <div class="right-3-list"> |
| | | <div class="list3-item" v-for="(m,i) in 5" :key="i"> |
| | | <div class="right-3-list" v-loading="listLoading"> |
| | | <scroll-pagination @load="getList" :finishLoding="finishLoding"> |
| | | <div class="list3-item" v-for="(m,i) in list" :key="i"> |
| | | <div class="list3-item-title"> |
| | | <img src="../../../static/img/index-tip.svg" alt=""> |
| | | <p>设å¤å°ææé</p> |
| | | <p>{{ m.theme }}</p> |
| | | </div> |
| | | <div class="list3-item-info"> |
| | | <p style="width: 73%;-webkit-line-clamp: 1;" class="ellipsis-multiline">ç¼å·<span style="color:#3A7BFA;"> SB20240101-001 </span>ç设å¤å°äº2023-09-09 11:11:11è¿æ</p> |
| | | <p>2023-09-09 09:09:09</p> |
| | | <p style="width: 73%;-webkit-line-clamp: 1;" class="ellipsis-multiline"> |
| | | <!-- ç¼å·<span style="color:#3A7BFA;"> SB20240101-001 </span>ç设å¤å°äº2023-09-09 11:11:11è¿æ --> |
| | | {{ m.content }} |
| | | </p> |
| | | <p>{{ m.createTime }}</p> |
| | | </div> |
| | | </div> |
| | | </scroll-pagination> |
| | | <div v-if="list.length<1&&!listLoading" style="color:#909399;font-size:14px;text-align: center;margin-top:80px" >ææ æ°æ®</div> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | |
| | | import { |
| | | getYearAndMonthAndDays |
| | | } from '../../util/date' |
| | | import ScrollPagination from '../tool/scroll-paging.vue' |
| | | export default { |
| | | components: { |
| | | ScrollPagination |
| | | }, |
| | | data() { |
| | | return { |
| | | user: {}, |
| | | now: null, |
| | | calendarValue: new Date(), |
| | | currentIndex:0, |
| | | currentIndex:4, |
| | | dialogVisible:false, |
| | | query:{ |
| | | time:'', |
| | |
| | | weekdays:[], |
| | | listScheduleByMe:[], |
| | | scheduleLoading:false, |
| | | list:[], |
| | | currentPage:1, |
| | | pageSize: 8, // ä¸é¡µ7æ¡ |
| | | total: null, |
| | | listLoading: true, // ç»ä»¶loadingçå±ç¤º,é»è®¤ä¸ºtrue |
| | | finishLoding: false // å è½½å®æï¼æ¾ç¤ºå·²ç»æ²¡ææ´å¤äº |
| | | } |
| | | }, |
| | | watch:{ |
| | | calendarValue(val){ |
| | | this.getScheduleByMe() |
| | | }, |
| | | currentIndex(){ |
| | | this.currentPage = 1; |
| | | this.list = []; |
| | | this.getList(); |
| | | } |
| | | }, |
| | | mounted() { |
| | |
| | | this.init(); |
| | | this.weekdays = this.getWeekdaysForNextWeek() |
| | | this.getScheduleByMe() |
| | | this.currentPage = 1; |
| | | this.list = []; |
| | | this.getList(); |
| | | }, |
| | | methods: { |
| | | getList(){ |
| | | if(this.currentPage==1){ |
| | | this.listLoading = true |
| | | } |
| | | if(this.list.length==0){ |
| | | this.finishLoding = false; |
| | | } |
| | | this.$axios.get(this.$api.informationNotification.page+'?size='+this.pageSize+'¤t='+this.currentPage+'&messageType='+this.currentIndex).then(res => { |
| | | if(res.code === 201){ |
| | | return |
| | | } |
| | | let list = res.data.records; |
| | | this.total = res.data.total; |
| | | if(list.length==0){ |
| | | this.finishLoding = true; |
| | | }else{ |
| | | if(list.length<this.pageSize){ |
| | | this.finishLoding = true; |
| | | } |
| | | this.list = this.list.concat(list) |
| | | if(this.total==this.list.length){ |
| | | this.finishLoding = true; |
| | | } |
| | | this.currentPage++; |
| | | } |
| | | this.listLoading = false |
| | | }) |
| | | }, |
| | | nowTime() { |
| | | var date = new Date(); |
| | | var y = date.getFullYear(); |
| | |
| | | this.workList.push(res.data[`work${i}`]) |
| | | } |
| | | this.workDay = res.data.weekDays.map(m=>{ |
| | | return m[2] |
| | | let arr = m.split('-') |
| | | return arr[2] |
| | | }) |
| | | }) |
| | | }, |
| | |
| | | }) |
| | | }) |
| | | }, |
| | | } |
| | | }, |
| | | } |
| | | </script> |
| | |
| | | <template> |
| | | <div class="notice-detail-page"> |
| | | <div class="notice-detail-head"> |
| | | <el-row :gutter="20"> |
| | | <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;"></el-col> |
| | | </el-row> |
| | | <div class="head-item"> |
| | | <label>主é¢ï¼</label> |
| | | <p></p> |
| | | </div> |
| | | <div class="head-item"> |
| | | <h4 style="margin-bottom: 16px;">{{ noticeInfo.theme }}</h4> |
| | | <p style="font-size: 12px;color: #999;margin-bottom: 20px;"> |
| | | <!-- <span>æ¶æ¯ç±»åï¼å®¡æ¹ </span> --> |
| | | <span>åé人ï¼{{ noticeInfo.createUser }} </span> |
| | | <span> </span> |
| | | <span>æ¶ä»¶äººï¼{{ noticeInfo.consigneeUser }}</span> |
| | | <span> </span> |
| | | <span>åä»¶æ¶é´ï¼{{ noticeInfo.createTime }}</span> |
| | | </p> |
| | | <div class="notice-detail-head-content"> |
| | | <label>å
容ï¼</label> |
| | | <p></p> |
| | | </div> |
| | | <div class="head-item"> |
| | | <label>åä»¶æ¶é´ï¼</label> |
| | | <p></p> |
| | | </div> |
| | | <div class="head-item"> |
| | | <label>åé人ï¼</label> |
| | | <p></p> |
| | | </div> |
| | | <div class="head-item"> |
| | | <label>æ¶ä»¶äººï¼</label> |
| | | <p></p> |
| | | <div>{{ noticeInfo.content }}</div> |
| | | </div> |
| | | </div> |
| | | <component class="notice-content" :is="noticeInfo.u"> |
| | | </component> |
| | | <div class="info-box" v-if="noticeInfo.jumpPath"> |
| | | <component class="notice-content" :is="noticeInfo.jumpPath" style="height: 500px;" > |
| | | </component> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | components: comObj, |
| | | data() { |
| | | return{ |
| | | noticeInfo:{ |
| | | u:'b1-inspect-order-plan' |
| | | }, |
| | | noticeInfo:{}, |
| | | } |
| | | } |
| | | }, |
| | | created(){ |
| | | this.noticeInfo = JSON.parse(sessionStorage.getItem("noticeInfo")); |
| | | }, |
| | | mounted(){ |
| | | this.noticeInfo = JSON.parse(sessionStorage.getItem("noticeInfo")); |
| | | this.$bus.$on("change", (msg) => { |
| | | this.noticeInfo = JSON.parse(msg); |
| | | sessionStorage.setItem("noticeInfo", msg); |
| | | }); |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .notice-detail-page{ |
| | | height: calc(100vh - 120px); |
| | | overflow-y: auto; |
| | | padding-top: 16px; |
| | | } |
| | | .notice-detail-head{ |
| | |
| | | box-sizing: border-box; |
| | | padding: 16px; |
| | | } |
| | | .notice-detail-head{ |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | .info-box{ |
| | | margin-top: 16px; |
| | | width: 100%; |
| | | box-sizing: border-box; |
| | | padding: 8px 20px 20px; |
| | | background: rgba(148, 147, 147, 0.1); |
| | | border-radius: 8px; |
| | | } |
| | | .notice-detail-head-content div{ |
| | | border-radius: 8px; |
| | | border: 1px solid #ccc; |
| | | min-height: 60px; |
| | | width: 100%; |
| | | padding: 16px; |
| | | box-sizing: border-box; |
| | | margin-top: 12px; |
| | | } |
| | | </style> |
| | |
| | | Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80"; |
| | | // const javaApi = 'http://192.168.11.200:8001';//æ |
| | | // const javaApi = 'http://192.168.11.249:8001';//å¼ |
| | | const javaApi = 'http://192.168.11.50:8002';//å§ |
| | | const javaApi = 'http://192.168.11.50:8001';//å§ |
| | | // const javaApi = 'http://192.168.11.2:8001';//æ´ |
| | | // const javaApi = 'http://114.132.189.42:9006';//æµè¯æ |
| | | //èäºæå¡å¨ |
| | | // Vue.prototype.LOCATIONVUE = "http://syxt.shxiao2.cn"; |
| | |
| | | new Vue({ |
| | | el: '#app', |
| | | router, |
| | | render: h => h(App) |
| | | render: h => h(App), |
| | | beforeCreate() { |
| | | // éè¦å¨å
¨å±æ·»å ä¸ä¸ªå±æ§ |
| | | Vue.prototype.$bus = this |
| | | } |
| | | }); |
| | |
| | | </div> |
| | | <div class="label">LIMSå®éªå®¤ç®¡çç³»ç»</div> |
| | | <div class="user"> |
| | | <el-badge is-dot style="cursor: pointer;margin-right: 10px;"> |
| | | <el-badge :is-dot="newMsg" style="cursor: pointer;margin-right: 10px;"> |
| | | <i class="el-icon-bell" style="font-size: 20px;" @click="openNotice"></i> |
| | | </el-badge> |
| | | <el-dropdown trigger="click" @command="handleCommand"> |
| | |
| | | activeIndex: 0, |
| | | power: [], |
| | | editVisible:false, |
| | | query:{} |
| | | query:{}, |
| | | newMsg:false, |
| | | timer:null, |
| | | }; |
| | | }, |
| | | created() { |
| | |
| | | this.activeBox = 0 |
| | | } |
| | | this.getPower() |
| | | this.timer&&clearInterval(this.timer); |
| | | this.timer = setInterval(()=>{ |
| | | this.checkForUnreadData() |
| | | },20000) |
| | | }, |
| | | methods: { |
| | | saveClick(){ |
| | |
| | | }, |
| | | openNotice(){ |
| | | this.$refs.notice.open() |
| | | this.$refs.notice.handleType() |
| | | }, |
| | | checkForUnreadData(){ |
| | | this.$axios.get(this.$api.informationNotification.checkForUnreadData).then(res => { |
| | | if (res.code == 201) { |
| | | return |
| | | } |
| | | this.newMsg = res.data |
| | | }) |
| | | } |
| | | } |
| | | }, |
| | | destroyed() { |
| | | this.timer&&clearInterval(this.timer); |
| | | } |
| | | }; |
| | | </script> |
| | |
| | | title="æ¶æ¯éç¥" |
| | | :visible.sync="drawer" |
| | | :direction="direction" |
| | | :before-close="handleClose" style="height: 100vh;"> |
| | | :before-close="handleClose" style="height: 100vh;z-index: 9999999;"> |
| | | <div class="head"> |
| | | <div class="head-search"> |
| | | <label>æ¶æ¯ç±»åï¼</label> |
| | | <el-select v-model="type" placeholder="è¯·éæ©" style="width: 150px;" size="small"> |
| | | <el-select v-model="type" placeholder="è¯·éæ©" style="width: 150px;" size="small" @change="handleType"> |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <el-dropdown style="margin-right: 20px;"> |
| | | <el-dropdown style="margin-right: 20px;" v-if="list.length>0" @command="handleDropdownAll"> |
| | | <span class="el-dropdown-link"> |
| | | <span class="more">···</span> |
| | | </span> |
| | | <el-dropdown-menu slot="dropdown"> |
| | | <el-dropdown-item> |
| | | <el-dropdown-item command="1"> |
| | | <i class="el-icon-check"></i> |
| | | <span>æ è®°æææ¶æ¯ä¸ºå·²è¯»</span> |
| | | </el-dropdown-item> |
| | | <el-dropdown-item> |
| | | <el-dropdown-item command="2"> |
| | | <i class="el-icon-delete"></i> |
| | | <span>å 餿æå·²è¯»æ¶æ¯</span> |
| | | </el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </el-dropdown> |
| | | </div> |
| | | <div class="notice-content"> |
| | | <div class="notice-content-item" v-for="(m,i) in list" :key="i"> |
| | | <div class="btns"> |
| | | <el-dropdown style="margin-right: 20px;" trigger="click" @command="handleDropdown"> |
| | | <span class="el-dropdown-link"> |
| | | <span class="more" style="line-height: 26px;display: inline-block;">···</span> |
| | | </span> |
| | | <el-dropdown-menu slot="dropdown"> |
| | | <el-dropdown-item v-for="(n,j) in dropdownList" :key="j" :command="n.value"> |
| | | {{ n.label }} |
| | | </el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </el-dropdown> |
| | | <i class="el-icon-close" style="cursor: pointer;"></i> |
| | | </div> |
| | | <div class="content"> |
| | | <img :src="`../../static/img/notice-${m.type}.svg`" alt="" style="width: 50px;margin-right: 18px;"> |
| | | <div class="content-info"> |
| | | <h4 style="font-weight: normal;margin-bottom: 4px;display: flex;align-items: center;justify-content: space-between;"> |
| | | <span>{{ m.title }}</span> |
| | | <span class="time" style="color: #999999;font-size: 12px;">{{ m.time }}</span> |
| | | </h4> |
| | | <p style="color: #999999;font-size: 14px;margin-bottom: 6px;" class="ellipsis-multiline">{{ m.content }}</p> |
| | | <el-tag type="danger" size="small" v-if="m.status==0&&m.type==2" style="margin-bottom: 4px;">å·²æç»</el-tag> |
| | | <el-tag type="success" size="small" v-if="m.status==1&&m.type==2" style="margin-bottom: 4px;">å·²æ¥æ¶</el-tag> |
| | | <p style="font-size: 12px;color: #999999;display: flex;align-items: center;justify-content: space-between;"> |
| | | <span>åé人ï¼{{m.sendUser}}</span> |
| | | <span>æ¶ä»¶äººï¼{{ m.getUser }}</span> |
| | | </p> |
| | | <div class="notice-content" v-loading="loading"> |
| | | <scroll-pagination @load="refresh" :finishLoding="finishLoding"> |
| | | <div class="notice-content-item" v-for="(m,i) in list" :key="i"> |
| | | <div class="btns" v-if="m"> |
| | | <el-dropdown style="margin-right: 20px;" trigger="click" @command="e=>handleDropdown(e,m)" v-if="m.messageType==2||m.messageType==3"> |
| | | <span class="el-dropdown-link"> |
| | | <span class="more" style="line-height: 26px;display: inline-block;">···</span> |
| | | </span> |
| | | <el-dropdown-menu slot="dropdown" v-if="m.messageType==2"> |
| | | <el-dropdown-item v-for="(n,j) in dropdownList0" :key="j" :command="n.value"> |
| | | {{ n.label }} |
| | | </el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | <el-dropdown-menu slot="dropdown" v-if="m.messageType==3"> |
| | | <el-dropdown-item v-for="(n,j) in dropdownList1" :key="j" :command="n.value"> |
| | | {{ n.label }} |
| | | </el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </el-dropdown> |
| | | <i class="el-icon-close" style="cursor: pointer;" @click="handleDel(m)"></i> |
| | | </div> |
| | | <div class="content"> |
| | | <img :src="`../../static/img/notice-${m.messageType}.svg`" alt="" style="width: 50px;margin-right: 18px;"> |
| | | <div class="content-info"> |
| | | <h4 style="font-weight: normal;margin-bottom: 4px;display: flex;align-items: center;justify-content: space-between;"> |
| | | <span>{{ m.theme }}<el-tag :type="!m.messageStatus?'danger':'success'" size="small" v-if="m.messageType==1||m.messageType==2||m.messageType==3" style="margin-left: 8px;">{{ !m.messageStatus?'æªå¤ç':'å·²å¤ç' }}</el-tag></span> |
| | | <span class="time" style="color: #999999;font-size: 12px;">{{ m.createTime }}</span> |
| | | </h4> |
| | | <p style="color: #999999;font-size: 14px;margin-bottom: 6px;cursor: pointer;" class="ellipsis-multiline" @click="goNoticeDetail(m)">{{ m.content }}</p> |
| | | <p style="font-size: 12px;color: #999999;display: flex;align-items: center;justify-content: space-between;"> |
| | | <span>åé人ï¼{{m.createUser}}</span> |
| | | <span>æ¶ä»¶äººï¼{{ m.consigneeUser }}</span> |
| | | </p> |
| | | </div> |
| | | </div> |
| | | <div class="new-notice" v-if="!m.viewStatus"> |
| | | <span>new</span> |
| | | </div> |
| | | </div> |
| | | <div class="new-notice" v-if="m.isRead==0"> |
| | | <span>new</span> |
| | | </div> |
| | | </div> |
| | | </scroll-pagination> |
| | | <div v-if="list.length<1&&!loading" style="color:#909399;font-size:14px;text-align: center;margin-top:200px" >ææ æ°æ®</div> |
| | | </div> |
| | | </el-drawer> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import ScrollPagination from '../components/tool/scroll-paging.vue' |
| | | export default { |
| | | components: { |
| | | ScrollPagination |
| | | }, |
| | | data(){ |
| | | return{ |
| | | drawer:false, |
| | | direction:'rtl', |
| | | options:[], |
| | | type:'0', |
| | | list:[ |
| | | dropdownList0:[ |
| | | { |
| | | type:1, |
| | | title:'æ é¢', |
| | | content:'å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容å
容', |
| | | time:'2019-08-07 15:34:26', |
| | | status:0,//æ¶æ¯ç¶æï¼æç»ãæ¥æ¶ |
| | | isRead:0,//æ¯å¦å·²è¯» |
| | | sendUser:'å°æ', |
| | | getUser:'æå', |
| | | }, |
| | | { |
| | | type:2, |
| | | title:'æ é¢', |
| | | content:'å
容', |
| | | time:'2019-08-07 15:34:26', |
| | | status:1,//æ¶æ¯ç¶æï¼æç»ãæ¥æ¶ |
| | | isRead:1,//æ¯å¦å·²è¯» |
| | | sendUser:'å°æ', |
| | | getUser:'æå', |
| | | }, |
| | | { |
| | | type:3, |
| | | title:'æ é¢', |
| | | content:'å
容', |
| | | time:'2019-08-07 15:34:26', |
| | | status:1,//æ¶æ¯ç¶æï¼æç»ãæ¥æ¶ |
| | | isRead:0,//æ¯å¦å·²è¯» |
| | | sendUser:'å°æ', |
| | | getUser:'æå', |
| | | }, |
| | | { |
| | | type:4, |
| | | title:'æ é¢', |
| | | content:'å
容', |
| | | time:'2019-08-07 15:34:26', |
| | | status:1,//æ¶æ¯ç¶æï¼æç»ãæ¥æ¶ |
| | | isRead:0,//æ¯å¦å·²è¯» |
| | | sendUser:'å°æ', |
| | | getUser:'æå', |
| | | }, |
| | | { |
| | | type:5, |
| | | title:'æ é¢', |
| | | content:'å
容', |
| | | time:'2019-08-07 15:34:26', |
| | | status:1,//æ¶æ¯ç¶æï¼æç»ãæ¥æ¶ |
| | | isRead:0,//æ¯å¦å·²è¯» |
| | | sendUser:'å°æ', |
| | | getUser:'æå', |
| | | }, |
| | | { |
| | | type:6, |
| | | title:'æ é¢', |
| | | content:'å
容', |
| | | time:'2019-08-07 15:34:26', |
| | | status:1,//æ¶æ¯ç¶æï¼æç»ãæ¥æ¶ |
| | | isRead:1,//æ¯å¦å·²è¯» |
| | | sendUser:'å°æ', |
| | | getUser:'æå', |
| | | }, |
| | | { |
| | | type:6, |
| | | title:'æ é¢', |
| | | content:'å
容', |
| | | time:'2019-08-07 15:34:26', |
| | | status:1,//æ¶æ¯ç¶æï¼æç»ãæ¥æ¶ |
| | | isRead:1,//æ¯å¦å·²è¯» |
| | | sendUser:'å°æ', |
| | | getUser:'æå', |
| | | }, |
| | | { |
| | | type:6, |
| | | title:'æ é¢', |
| | | content:'å
容', |
| | | time:'2019-08-07 15:34:26', |
| | | status:1,//æ¶æ¯ç¶æï¼æç»ãæ¥æ¶ |
| | | isRead:1,//æ¯å¦å·²è¯» |
| | | sendUser:'å°æ', |
| | | getUser:'æå', |
| | | }, |
| | | { |
| | | type:6, |
| | | title:'æ é¢', |
| | | content:'å
容', |
| | | time:'2019-08-07 15:34:26', |
| | | status:1,//æ¶æ¯ç¶æï¼æç»ãæ¥æ¶ |
| | | isRead:1,//æ¯å¦å·²è¯» |
| | | sendUser:'å°æ', |
| | | getUser:'æå', |
| | | }, |
| | | { |
| | | type:6, |
| | | title:'æ é¢', |
| | | content:'å
容', |
| | | time:'2019-08-07 15:34:26', |
| | | status:1,//æ¶æ¯ç¶æï¼æç»ãæ¥æ¶ |
| | | isRead:1,//æ¯å¦å·²è¯» |
| | | sendUser:'å°æ', |
| | | getUser:'æå', |
| | | }, |
| | | ], |
| | | dropdownList:[ |
| | | { |
| | | label:'æç»', |
| | | label:'éè¿', |
| | | value:0 |
| | | }, |
| | | { |
| | | label:'æ¥æ¶', |
| | | label:'ä¸éè¿', |
| | | value:1 |
| | | }, |
| | | { |
| | | label:'éè¿', |
| | | label:'æ¥çæ´å¤', |
| | | value:4 |
| | | }, |
| | | ], |
| | | dropdownList1:[ |
| | | { |
| | | label:'æ¹å', |
| | | value:2 |
| | | }, |
| | | { |
| | | label:'ä¸éè¿', |
| | | label:'䏿¹å', |
| | | value:3 |
| | | }, |
| | | { |
| | | label:'æ¹å', |
| | | label:'æ¥çæ´å¤', |
| | | value:4 |
| | | }, |
| | | { |
| | | label:'䏿¹å', |
| | | value:5 |
| | | }, |
| | | { |
| | | label:'æ¥çæ´å¤', |
| | | value:6 |
| | | }, |
| | | ] |
| | | ], |
| | | list:[], |
| | | currentPage:1, |
| | | pageSize: 8, // ä¸é¡µ7æ¡ |
| | | total: null, |
| | | loading: true, // ç»ä»¶loadingçå±ç¤º,é»è®¤ä¸ºtrue |
| | | finishLoding: false // å è½½å®æï¼æ¾ç¤ºå·²ç»æ²¡ææ´å¤äº |
| | | } |
| | | }, |
| | | mounted(){ |
| | | this.getTypeDicts(); |
| | | this.currentPage = 1; |
| | | this.list = []; |
| | | this.refresh(); |
| | | }, |
| | | methods:{ |
| | | refresh(){ |
| | | if(this.currentPage==1){ |
| | | this.loading = true |
| | | } |
| | | if(this.list.length==0){ |
| | | this.finishLoding = false |
| | | } |
| | | let type = this.type==0?null:this.type; |
| | | this.$axios.get(this.$api.informationNotification.page+'?size='+this.pageSize+'¤t='+this.currentPage+(type?'&messageType='+type:'')).then(res => { |
| | | if(res.code === 201){ |
| | | return |
| | | } |
| | | let list = res.data.records; |
| | | this.total = res.data.total; |
| | | if(list.length==0){ |
| | | this.finishLoding = true; |
| | | }else{ |
| | | if(list.length<this.pageSize){ |
| | | this.finishLoding = true; |
| | | } |
| | | this.list = this.list.concat(list) |
| | | if(this.total==this.list.length){ |
| | | this.finishLoding = true; |
| | | } |
| | | this.currentPage++ |
| | | } |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | open(){ |
| | | this.drawer = true; |
| | | }, |
| | |
| | | this.options = data; |
| | | }) |
| | | }, |
| | | goNoticeDetail(){ |
| | | this.drawer = false; |
| | | this.$parent.addTab({ |
| | | v: "æ¶æ¯è¯¦æ
", |
| | | i: "el-icon-s-tools", |
| | | u: "notice-detail", |
| | | k:35, |
| | | p: "abcd" |
| | | },29); |
| | | goNoticeDetail(row){ |
| | | this.$axios.put(this.$api.informationNotification.triggerModificationStatusToRead+'/'+row.id).then(res => { |
| | | this.drawer = false; |
| | | row.num = Math.random(100); |
| | | this.$bus.$emit("change", JSON.stringify(row)); |
| | | this.$parent.addTab({ |
| | | v: "æ¶æ¯è¯¦æ
", |
| | | i: "el-icon-s-tools", |
| | | u: "notice-detail", |
| | | k:35, |
| | | p: "abcd" |
| | | },29); |
| | | this.list = []; |
| | | this.currentPage = 1; |
| | | this.refresh(); |
| | | }) |
| | | }, |
| | | handleDropdown(e){ |
| | | handleDropdown(e,row){ |
| | | switch(e){ |
| | | case 0: |
| | | break; |
| | | case 6: |
| | | this.goNoticeDetail() |
| | | case 4: |
| | | this.goNoticeDetail(row) |
| | | break; |
| | | } |
| | | }, |
| | | handleDel(row){ |
| | | this.$confirm('æ¯å¦å é¤å½åæ°æ®?', "è¦å", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning" |
| | | }).then(() => { |
| | | this.$axios.delete(this.$api.informationNotification.deleteDataBasedOnId+'?id='+row.id).then(res => { |
| | | if (res.code === 201) { |
| | | return |
| | | } |
| | | this.$message.success('å 餿å') |
| | | this.list = []; |
| | | this.currentPage = 1; |
| | | this.refresh() |
| | | }).catch(e => { |
| | | this.$message.error('å é¤å¤±è´¥') |
| | | }) |
| | | }).catch(() => {}) |
| | | }, |
| | | // æ»å¨è§¦åºå è½½ |
| | | scrollFn() { |
| | | let clientHeight = document.documentElement.clientHeight - 18; //å¯è§åºå |
| | | let scrollHeight = document.body.scrollHeight; // æ»å¨ææ¡£é«åº¦ |
| | | let scrollTop = parseInt(document.documentElement.scrollTop); // å·²æ»å¨çé«åº¦ |
| | | let height = 300; |
| | | if ( |
| | | scrollTop + clientHeight >= scrollHeight - height && |
| | | scrollHeight != 0 |
| | | ) { |
| | | if (!this.finishLoding&&this.currentPage*this.pageSize<this.total) { |
| | | this.currentPage = this.currentPage + 1; |
| | | this.refresh(); |
| | | } |
| | | } else { |
| | | return false; |
| | | } |
| | | }, |
| | | throttle(fn, wait) { |
| | | // å°è£
彿°è¿è¡èæµ |
| | | var timer = null; |
| | | return function () { |
| | | var context = this; |
| | | var args = arguments; |
| | | if (!timer) { |
| | | timer = setTimeout(function () { |
| | | fn.apply(context, args); |
| | | timer = null; |
| | | }, wait); |
| | | } |
| | | }; |
| | | }, |
| | | handleType(){ |
| | | this.list = []; |
| | | this.currentPage = 1; |
| | | this.refresh(); |
| | | }, |
| | | handleDropdownAll(e){ |
| | | let type = false; |
| | | if(e==1){ |
| | | type = true; |
| | | } |
| | | this.$axios.put(this.$api.informationNotification.informationReadOrDelete+'/'+type).then(res => { |
| | | if(res.code===201){ |
| | | return |
| | | } |
| | | this.$message.success('æä½æå') |
| | | this.list = []; |
| | | this.currentPage = 1; |
| | | this.refresh(); |
| | | }) |
| | | } |
| | | } |
| | | }, |
| | | destroyed() { |
| | | window.removeEventListener("scroll", this.throttle(), false); |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | |
| | | <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1713774580175" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2343" width="24" height="24" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M85.333333 0h853.333334a85.333333 85.333333 0 0 1 85.333333 85.333333v853.333334a85.333333 85.333333 0 0 1-85.333333 85.333333H85.333333a85.333333 85.333333 0 0 1-85.333333-85.333333V85.333333a85.333333 85.333333 0 0 1 85.333333-85.333333z m426.666667 213.333333c-68.778667-0.682667-278.144 112.426667-277.333333 149.248 3.242667 296.96 225.322667 447.744 277.333333 448.085334 52.010667 0.341333 278.613333-148.565333 277.333333-448-0.256-37.418667-208.554667-148.650667-277.333333-149.333334z m164.394667 196.010667c12.032 12.458667 12.032 32.981333-0.725334 44.672l-155.264 160.426667a30.506667 30.506667 0 0 1-22.656 9.557333 32.085333 32.085333 0 0 1-23.381333-9.514667l-91.477333-93.781333c-12.757333-13.226667-12.757333-33.706667 0-46.890667 12.8-13.226667 33.322667-13.226667 46.08 0l70.186666 72.533334 132.565334-137.002667a31.36 31.36 0 0 1 44.672 0z" fill="#15B4D4" p-id="2344"></path></svg> |
| | | <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1713774491978" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1483" width="24" height="24" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M554.666667 554.666667v-92.586667a128.042667 128.042667 0 1 0-85.333334 0V554.666667H267.946667a42.666667 42.666667 0 0 0-41.386667 53.034666l21.333333 85.333334a42.666667 42.666667 0 0 0 41.386667 32.298666h445.44a42.666667 42.666667 0 0 0 41.386667-32.298666l21.333333-85.333334A42.666667 42.666667 0 0 0 756.053333 554.666667H554.666667zM85.333333 0h853.333334a85.333333 85.333333 0 0 1 85.333333 85.333333v853.333334a85.333333 85.333333 0 0 1-85.333333 85.333333H85.333333a85.333333 85.333333 0 0 1-85.333333-85.333333V85.333333a85.333333 85.333333 0 0 1 85.333333-85.333333z m234.666667 768a21.333333 21.333333 0 1 0 0 42.666667h384a21.333333 21.333333 0 1 0 0-42.666667h-384z" fill="#FAAB0C" p-id="1484"></path></svg> |
| | |
| | | <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1713774491978" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1483" width="24" height="24" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M554.666667 554.666667v-92.586667a128.042667 128.042667 0 1 0-85.333334 0V554.666667H267.946667a42.666667 42.666667 0 0 0-41.386667 53.034666l21.333333 85.333334a42.666667 42.666667 0 0 0 41.386667 32.298666h445.44a42.666667 42.666667 0 0 0 41.386667-32.298666l21.333333-85.333334A42.666667 42.666667 0 0 0 756.053333 554.666667H554.666667zM85.333333 0h853.333334a85.333333 85.333333 0 0 1 85.333333 85.333333v853.333334a85.333333 85.333333 0 0 1-85.333333 85.333333H85.333333a85.333333 85.333333 0 0 1-85.333333-85.333333V85.333333a85.333333 85.333333 0 0 1 85.333333-85.333333z m234.666667 768a21.333333 21.333333 0 1 0 0 42.666667h384a21.333333 21.333333 0 1 0 0-42.666667h-384z" fill="#FAAB0C" p-id="1484"></path></svg> |
| | | <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1713774535390" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1993" width="24" height="24" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M85.333333 0h853.333334a85.333333 85.333333 0 0 1 85.333333 85.333333v853.333334a85.333333 85.333333 0 0 1-85.333333 85.333333H85.333333a85.333333 85.333333 0 0 1-85.333333-85.333333V85.333333a85.333333 85.333333 0 0 1 85.333333-85.333333z m426.666667 810.666667a298.666667 298.666667 0 1 0 0-597.333334 298.666667 298.666667 0 0 0 0 597.333334z m-170.666667-256a42.666667 42.666667 0 1 1 0-85.333334 42.666667 42.666667 0 0 1 0 85.333334z m170.666667 0a42.666667 42.666667 0 1 1 0-85.333334 42.666667 42.666667 0 0 1 0 85.333334z m170.666667 0a42.666667 42.666667 0 1 1 0-85.333334 42.666667 42.666667 0 0 1 0 85.333334z" fill="#B162D9" p-id="1994"></path></svg> |
| | |
| | | <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1713774535390" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1993" width="24" height="24" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M85.333333 0h853.333334a85.333333 85.333333 0 0 1 85.333333 85.333333v853.333334a85.333333 85.333333 0 0 1-85.333333 85.333333H85.333333a85.333333 85.333333 0 0 1-85.333333-85.333333V85.333333a85.333333 85.333333 0 0 1 85.333333-85.333333z m426.666667 810.666667a298.666667 298.666667 0 1 0 0-597.333334 298.666667 298.666667 0 0 0 0 597.333334z m-170.666667-256a42.666667 42.666667 0 1 1 0-85.333334 42.666667 42.666667 0 0 1 0 85.333334z m170.666667 0a42.666667 42.666667 0 1 1 0-85.333334 42.666667 42.666667 0 0 1 0 85.333334z m170.666667 0a42.666667 42.666667 0 1 1 0-85.333334 42.666667 42.666667 0 0 1 0 85.333334z" fill="#B162D9" p-id="1994"></path></svg> |
| | | <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1713774524927" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1786" width="24" height="24" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M85.333333 0h853.333334a85.333333 85.333333 0 0 1 85.333333 85.333333v853.333334a85.333333 85.333333 0 0 1-85.333333 85.333333H85.333333a85.333333 85.333333 0 0 1-85.333333-85.333333V85.333333a85.333333 85.333333 0 0 1 85.333333-85.333333z m496.426667 257.792c-31.317333-59.306667-108.202667-59.306667-139.52 0L224.469333 672.853333C193.152 733.738667 231.594667 810.666667 294.229333 810.666667h435.541334c62.634667 0 101.12-76.928 69.76-137.813334l-217.770667-415.061333zM512 725.333333a42.666667 42.666667 0 1 1 0-85.333333 42.666667 42.666667 0 0 1 0 85.333333z m-0.938667-341.333333a40.874667 40.874667 0 0 1 40.746667 44.16l-11.562667 143.530667c-1.194667 14.506667-13.269333 25.642667-27.818666 25.642666a28.245333 28.245333 0 0 1-28.074667-25.6l-13.44-143.616A40.362667 40.362667 0 0 1 511.061333 384z" fill="#EA493D" p-id="1787"></path></svg> |
| | |
| | | <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1713774524927" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1786" width="24" height="24" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M85.333333 0h853.333334a85.333333 85.333333 0 0 1 85.333333 85.333333v853.333334a85.333333 85.333333 0 0 1-85.333333 85.333333H85.333333a85.333333 85.333333 0 0 1-85.333333-85.333333V85.333333a85.333333 85.333333 0 0 1 85.333333-85.333333z m496.426667 257.792c-31.317333-59.306667-108.202667-59.306667-139.52 0L224.469333 672.853333C193.152 733.738667 231.594667 810.666667 294.229333 810.666667h435.541334c62.634667 0 101.12-76.928 69.76-137.813334l-217.770667-415.061333zM512 725.333333a42.666667 42.666667 0 1 1 0-85.333333 42.666667 42.666667 0 0 1 0 85.333333z m-0.938667-341.333333a40.874667 40.874667 0 0 1 40.746667 44.16l-11.562667 143.530667c-1.194667 14.506667-13.269333 25.642667-27.818666 25.642666a28.245333 28.245333 0 0 1-28.074667-25.6l-13.44-143.616A40.362667 40.362667 0 0 1 511.061333 384z" fill="#EA493D" p-id="1787"></path></svg> |
| | | <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1713774611710" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3358" width="24" height="24" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M85.333333 0h853.333334a85.333333 85.333333 0 0 1 85.333333 85.333333v853.333334a85.333333 85.333333 0 0 1-85.333333 85.333333H85.333333a85.333333 85.333333 0 0 1-85.333333-85.333333V85.333333a85.333333 85.333333 0 0 1 85.333333-85.333333z m227.541334 213.333333C257.92 213.333333 213.333333 249.002667 213.333333 292.992v438.016C213.333333 774.997333 257.92 810.666667 312.874667 810.666667h398.250666C766.08 810.666667 810.666667 774.997333 810.666667 731.008V292.992C810.666667 249.002667 766.08 213.333333 711.125333 213.333333H312.874667z m149.333333 85.333334a64 64 0 1 1 0 128 64 64 0 0 1 0-128z m-128 220.842666h355.584c19.626667 0 35.541333 14.336 35.541333 32 0 17.706667-15.914667 32-35.541333 32H334.208c-19.626667 0-35.541333-14.293333-35.541333-32 0-17.664 15.914667-32 35.541333-32z m0 130.56H512c19.626667 0 35.541333 14.293333 35.541333 32 0 17.664-15.914667 32-35.541333 32H334.208c-19.626667 0-35.541333-14.336-35.541333-32 0-17.706667 15.914667-32 35.541333-32z" fill="#F57818" p-id="3359"></path></svg> |