| | |
| | | delInsOrderTemplate: "/insOrder/delInsOrderTemplate", //å 餿£éªåæ¨¡æ¿ |
| | | selectSampleAndProductByOrderId: "/insOrder/selectSampleAndProductByOrderId", //éè¿æ£éªåæ¥è¯¢æ£éªæ°æ®ï¼æ°æ®æ¥çï¼ |
| | | costStatistics: "/insOrder/costStatistics", //è´¹ç¨ç»è®¡ |
| | | selectSampleDefects: "/insOrder/selectSampleDefects", //æ ·åç¼ºé·ææ |
| | | } |
| | | |
| | | const sampleOrder = { |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <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> |
| | |
| | | return count * 15 + 60 + 'px' |
| | | }, |
| | | handleSuccessUp(response,label){ |
| | | if(label){ |
| | | if(typeof label === 'string'){ |
| | | if(response.code==200){ |
| | | this.upData[label] = response.data.url; |
| | | } |
| | |
| | | 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"> |
| | | <h4 style="margin-bottom: 16px;">æ¶æ¯ä¸»é¢</h4> |
| | | <h4 style="margin-bottom: 16px;">{{ noticeInfo.theme }}</h4> |
| | | <p style="font-size: 12px;color: #999;margin-bottom: 20px;"> |
| | | <!-- <span>æ¶æ¯ç±»åï¼å®¡æ¹ </span> --> |
| | | <span>åé人ï¼111 </span> |
| | | <span>åé人ï¼{{ noticeInfo.createUser }} </span> |
| | | <span> </span> |
| | | <span>æ¶ä»¶äººï¼111</span> |
| | | <span>æ¶ä»¶äººï¼{{ noticeInfo.consigneeUser }}</span> |
| | | <span> </span> |
| | | <span>åä»¶æ¶é´ï¼111</span> |
| | | <span>åä»¶æ¶é´ï¼{{ noticeInfo.createTime }}</span> |
| | | </p> |
| | | <div class="notice-detail-head-content"> |
| | | <label>å
容ï¼</label> |
| | | <div></div> |
| | | <div>{{ noticeInfo.content }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="info-box"> |
| | | <component class="notice-content" :is="noticeInfo.u" style="height: 500px;"> |
| | | <div class="info-box" v-if="noticeInfo.jumpPath"> |
| | | <component class="notice-content" :is="noticeInfo.jumpPath" style="height: 500px;" > |
| | | </component> |
| | | </div> |
| | | </div> |
| | |
| | | components: comObj, |
| | | data() { |
| | | return{ |
| | | noticeInfo:{ |
| | | u:'b1-report-preparation' |
| | | }, |
| | | 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> |
| | | |
| | |
| | | new Vue({ |
| | | el: '#app', |
| | | router, |
| | | render: h => h(App) |
| | | render: h => h(App), |
| | | beforeCreate() { |
| | | // éè¦å¨å
¨å±æ·»å ä¸ä¸ªå±æ§ |
| | | Vue.prototype.$bus = this |
| | | } |
| | | }); |
| | |
| | | this.timer&&clearInterval(this.timer); |
| | | this.timer = setInterval(()=>{ |
| | | this.checkForUnreadData() |
| | | },10000) |
| | | },20000) |
| | | }, |
| | | methods: { |
| | | saveClick(){ |
| | |
| | | </el-dropdown-menu> |
| | | </el-dropdown> |
| | | </div> |
| | | <div class="notice-content" @scroll="scrollFn" v-loading="loading"> |
| | | <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 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.viewStatus"> |
| | | <span>new</span> |
| | | </div> |
| | | </div> |
| | | <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> |
| | | </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:[ |
| | | { |
| | | label:'éè¿', |
| | |
| | | value:4 |
| | | }, |
| | | ], |
| | | list:[], |
| | | currentPage:1, |
| | | pageSize: 16, // ä¸é¡µ16æ¡ |
| | | pageSize: 8, // ä¸é¡µ7æ¡ |
| | | total: null, |
| | | loading: false, // ç»ä»¶loadingçå±ç¤º,é»è®¤ä¸ºtrue |
| | | isLoding: false, // å è½½ä¸ï¼loading徿 ,é»è®¤ä¸ºtrue |
| | | loading: true, // ç»ä»¶loadingçå±ç¤º,é»è®¤ä¸ºtrue |
| | | finishLoding: false // å è½½å®æï¼æ¾ç¤ºå·²ç»æ²¡ææ´å¤äº |
| | | } |
| | | }, |
| | |
| | | }, |
| | | methods:{ |
| | | refresh(){ |
| | | 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.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(this.total==this.list.length){ |
| | | this.finishLoding = true; |
| | | } |
| | | this.currentPage++ |
| | | } |
| | | this.loading = false |
| | | this.isLoding = false; |
| | | }) |
| | | }, |
| | | open(){ |
| | |
| | | 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", |