| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view class="content"> |
| | | <view class="content_search"> |
| | | <Search @searchInput="searchInput" @submit="submit" @reset="reset" :isShow="true" placeholder="æç´¢å·¥åç¼ç /ç©æç¼ç "> |
| | | <template v-slot:content> |
| | | <view class="Search_item"> |
| | | <view class="Search_item_label">æ£éªæ¥æ</view> |
| | | <view class="Search_item_content" @click="timeShow = true"> |
| | | <view class="Search_item_content_a" :style="pageData.checkStartDate ? 'color: #000;' : ''">{{ pageData.checkStartDate ? pageData.checkStartDate : 'å¼å§æ¥æ'}}</view> |
| | | <text>-</text> |
| | | <view class="Search_item_content_a" :style="pageData.checkEndDate ? 'color: #000;' : ''">{{ pageData.checkEndDate ? pageData.checkEndDate : 'ç»ææ¥æ'}}</view> |
| | | </view> |
| | | </view> |
| | | <view class="Search_item"> |
| | | <view class="Search_item_label">æ£éªç±»å</view> |
| | | <view class="Search_item_content"> |
| | | <view class="tag"> |
| | | <view class="tag_item" :class="{'tag_active': item.isActive}" v-for="(item, i) in data" :key="item.id" @click="changeTag(i)">{{item.name}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="Search_item"> |
| | | <view class="Search_item_label">æ£éªå·¥åº</view> |
| | | <view class="Search_item_content"> |
| | | <view class="tag"> |
| | | <view class="tag_item" :class="{'tag_active': item.isActive}" v-for="(item, i) in workingProcedure" :key="item.id" @click="changeTag1(i)">{{item.name}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="Search_item"> |
| | | <view class="Search_item_label">æ¹æ¬¡å·</view> |
| | | <view class="Search_item_content"> |
| | | <u--input placeholder="请è¾å
¥æ¹æ¬¡å·" border="surround" v-model="pageData.batch"></u--input> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | </Search> |
| | | </view> |
| | | <view class="content_total" :style="{top: top}">å
±{{pageData.total}}æ¡æ°æ®</view> |
| | | <view class="content_list"> |
| | | <scroll-view |
| | | :refresher-enabled="true" |
| | | :refresher-triggered="isLoading" |
| | | @refresherrefresh="onRefresh" |
| | | refresher-background="#fff" |
| | | @scrolltolower="onLoads" |
| | | scroll-y |
| | | :style="{height: height}"> |
| | | <view class="content_list_item" v-for="item in listData" :key="item.id" @click="jumpDesc(item)"> |
| | | <view class="content_list_item_title"> |
| | | <text>{{item.code}}</text> |
| | | <text class="warning" v-if="item.checkType === 0">巡线</text> |
| | | <text v-if="item.checkType === 1">å·¡æ£</text> |
| | | <text class="green" v-if="item.checkType === 2">å®å·¥æ£</text> |
| | | </view> |
| | | <view class="content_list_item_nr"> |
| | | <view class="content_list_item_nr_box"> |
| | | <view class="label">ç©æä¿¡æ¯ï¼</view> |
| | | <view class="cr" v-if="item.mmodel">{{item.mmodel.name}}丨{{item.mmodel.code}}</view> |
| | | </view> |
| | | <view class="content_list_item_nr_boxs"> |
| | | <view class="label">ç产æ°éï¼</view> |
| | | <view class="cr" v-if="item.umodel">{{item.num}}{{item.umodel.name}}</view> |
| | | </view> |
| | | <view class="content_list_item_nr_box"> |
| | | <view class="label">çäº§æ¹æ¬¡ï¼</view> |
| | | <view class="cr">{{item.batch}}</view> |
| | | </view> |
| | | <view class="content_list_item_nr_boxs"> |
| | | <view class="label">ç产工åºï¼</view> |
| | | <view class="cr" v-if="item.pmodel">{{item.pmodel.name}}</view> |
| | | </view> |
| | | <view class="content_list_item_nr_box"> |
| | | <view class="label">å·¥åç¼å·ï¼</view> |
| | | <view class="cr">{{item.workorderCode}}</view> |
| | | </view> |
| | | <view class="content_list_item_nr_boxs"> |
| | | <view class="label">æ£éªäººåï¼</view> |
| | | <view class="cr">{{item.smodelRealName}}/{{item.checkUserDepartName}}</view> |
| | | </view> |
| | | <!-- <view class="content_list_item_nr_box"> |
| | | <view class="label">æ£éªæ¥æï¼</view> |
| | | <view class="cr">{{item.checkDate}}</view> |
| | | </view> --> |
| | | <!-- <view class="content_list_item_nr_boxs"> |
| | | <view class="label">å·¥è£
ç ï¼</view> |
| | | <view class="cr" v-if="item.amodel">{{item.amodel.code}}</view> |
| | | </view> --> |
| | | <view class="content_list_item_nr_box"> |
| | | <view class="label">åæ ¼æ°éï¼</view> |
| | | <view class="cr" v-if="item.umodel">{{item.qualifiedNum}}{{item.umodel.name}}</view> |
| | | </view> |
| | | <view class="content_list_item_nr_boxs"> |
| | | <view class="label">ä¸è¯æ°éï¼</view> |
| | | <view class="cr warning" v-if="item.umodel">{{item.unqualifiedNum}}{{item.umodel.name}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </scroll-view> |
| | | </view> |
| | | <!-- éæ©æ¥æ --> |
| | | <u-calendar :show="timeShow" mode="range" @confirm="timeConfirm" @close="timeShow = false"></u-calendar> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import Search from '@/components/Search.vue' |
| | | import { page } from '@/util/api/QualityAPI' |
| | | import { getWorkingProcedure, deletejy } from "@/util/api/PlanningAPI" |
| | | import { mapState } from 'vuex' |
| | | |
| | | export default { |
| | | components: { Search }, |
| | | data() { |
| | | return { |
| | | height: '', |
| | | top: '', |
| | | isLoading: false, |
| | | pageData: { |
| | | capacity: 10, |
| | | page: 0, |
| | | total: 0, |
| | | checkStartDate: '', |
| | | checkEndDate: '', |
| | | minParam: '', |
| | | batch: '', |
| | | checkType: '', |
| | | procedureId: '', |
| | | workorderId: '' |
| | | }, |
| | | data: [ // æ£éªç±»å |
| | | { id: '0', name: '巡线', isActive: false }, |
| | | { id: '1', name: 'å·¡æ£', isActive: false }, |
| | | { id: '2', name: 'å®å·¥æ£', isActive: false } |
| | | ], |
| | | minDate: new Date(2021, 0, 1), |
| | | maxDate: new Date(new Date().getFullYear() + 1, 12, 30), |
| | | listData: [], |
| | | workingProcedure: [], // å·¥åº |
| | | loading: false, |
| | | finished: false, |
| | | refreshing: false, |
| | | timeShow: false |
| | | }; |
| | | }, |
| | | onReady() { |
| | | var that = this |
| | | this.$nextTick(() => { |
| | | uni.createSelectorQuery().in(this).select('.content_search').boundingClientRect((rect) => { |
| | | that.height = `calc(100vh - ${rect.height + 80}px)` |
| | | that.top = `${rect.height}px` |
| | | }).exec() |
| | | }) |
| | | }, |
| | | computed: { |
| | | ...mapState(['userInfo']) |
| | | }, |
| | | onLoad(option) { |
| | | if (option.id) { |
| | | this.pageData.workorderId = option.id |
| | | } |
| | | this.onLoads() |
| | | this.getWorkingProcedures() |
| | | }, |
| | | methods: { |
| | | // 跳转 |
| | | jumpDesc(item) { |
| | | uni.navigateTo({ |
| | | url: `/pages_inspect/pages/InspectionDetails/InspectionDetails?id=${item.id}` |
| | | }) |
| | | }, |
| | | // è·å头é¨ç»ä»¶é«åº¦ |
| | | getHeight(height) { |
| | | this.height = height |
| | | }, |
| | | onRefresh() { |
| | | if (this.isLoading) return |
| | | this.isLoading = true |
| | | this.listData = [] |
| | | this.pageData.page = 0 |
| | | this.onLoads() |
| | | }, |
| | | // éç½® |
| | | reset() { |
| | | this.pageData.checkStartDate = '' |
| | | this.pageData.checkEndDate = '' |
| | | this.pageData.minParam = '' |
| | | this.pageData.checkType = '' |
| | | this.pageData.procedureId = '' |
| | | this.pageData.batch = '' |
| | | this.pageData.page = 0 |
| | | this.listData = [] |
| | | this.finished = false |
| | | this.data.forEach(item => { item.isActive = false }) |
| | | this.workingProcedure.forEach(item => { item.isActive = false }) |
| | | this.onLoads() |
| | | }, |
| | | // æ¥æç¡®å® |
| | | timeConfirm(val) { |
| | | this.pageData.checkStartDate = val[0] |
| | | this.pageData.checkEndDate = val[val.length - 1] |
| | | this.timeShow = false |
| | | }, |
| | | // 忢æ£ç±»å |
| | | changeTag(i) { |
| | | this.data.forEach((item, index) => { |
| | | item.isActive = index === i; |
| | | }) |
| | | }, |
| | | // 忢æ£å·¥åº |
| | | changeTag1(i) { |
| | | this.workingProcedure.forEach((item, index) => { |
| | | item.isActive = index === i; |
| | | }) |
| | | }, |
| | | // æå¼æ¥ææä»¶ |
| | | openDate() { |
| | | this.timeShow = true |
| | | }, |
| | | // æç´¢ |
| | | searchInput(val) { |
| | | this.pageData.minParam = val |
| | | this.pageData.page = 0 |
| | | this.listData = [] |
| | | this.finished = false |
| | | this.onLoads() |
| | | }, |
| | | // è·åå·¥åºæ°æ® |
| | | getWorkingProcedures() { |
| | | getWorkingProcedure({ |
| | | capacity: 100, |
| | | page: 1, |
| | | model: { |
| | | userId: this.userInfo.id |
| | | } |
| | | }).then(res => { |
| | | if (res.code === 200 && res.data.records.length !== 0) { |
| | | res.data.records.forEach((item, index) => { |
| | | // if (index === 0) { |
| | | // workingProcedure.push({ id: item.id, name: item.name, isActive: true }) |
| | | // } else { |
| | | this.workingProcedure.push({ id: item.id, name: item.name, isActive: false }) |
| | | // } |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | // æç´¢å¼¹æ¡æäº¤ |
| | | submit() { |
| | | this.data.forEach(item => { |
| | | if (item.isActive) { |
| | | this.pageData.checkType = item.id |
| | | } |
| | | }) |
| | | this.workingProcedure.forEach(item => { |
| | | if (item.isActive) { |
| | | this.pageData.procedureId = item.id |
| | | } |
| | | }) |
| | | this.pageData.page = 0 |
| | | this.listData = [] |
| | | this.finished = false |
| | | this.onLoads() |
| | | }, |
| | | // å表 |
| | | onLoads() { |
| | | if (!this.finished) { |
| | | this.pageData.page = this.pageData.page += 1 |
| | | this.loading = true |
| | | page({ |
| | | capacity: this.pageData.capacity, |
| | | page: this.pageData.page, |
| | | model: { |
| | | minParam: this.pageData.minParam, |
| | | checkStartDate: this.pageData.checkStartDate, |
| | | checkEndDate: this.pageData.checkEndDate, |
| | | checkType: this.pageData.checkType, |
| | | procedureId: this.pageData.procedureId, |
| | | workorderId: this.pageData.workorderId, |
| | | batch: this.pageData.batch |
| | | } |
| | | }).then(res => { |
| | | this.isLoading = false |
| | | if (this.refreshing) { |
| | | this.listData = [] |
| | | this.refreshing = false; |
| | | } |
| | | this.loading = false |
| | | if (res.code === 200 && res.data.records && res.data.records.length !== 0) { |
| | | this.pageData.total = res.data.total |
| | | this.listData.push(...res.data.records) |
| | | } else { |
| | | this.finished = true |
| | | } |
| | | }).catch(err => { |
| | | this.isLoading = false |
| | | this.loading = false |
| | | this.finished = true |
| | | if (this.refreshing) { |
| | | this.listData = [] |
| | | this.refreshing = false; |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .content { |
| | | .content_search { |
| | | width: 100%; |
| | | padding: 30rpx; |
| | | background: white; |
| | | position: sticky; |
| | | top: 0; |
| | | z-index: 999; |
| | | box-sizing: border-box; |
| | | .Search_item { |
| | | margin-bottom: 40rpx; |
| | | .Search_item_label { |
| | | font-size: 30rpx; |
| | | font-weight: 500; |
| | | color: #222222; |
| | | } |
| | | .Search_item_content { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | margin-top: 30rpx; |
| | | input { |
| | | width: 100%; |
| | | height: 70rpx; |
| | | border-radius: 10rpx; |
| | | padding: 0 20rpx; |
| | | box-sizing: border-box; |
| | | border: 1rpx solid #939393; |
| | | color: black; |
| | | font-size: 26rpx; |
| | | } |
| | | input::-webkit-input-placeholder { |
| | | color: #999999; |
| | | font-size: 26rpx; |
| | | } |
| | | input:-moz-placeholder { |
| | | color: #999999; |
| | | font-size: 26rpx; |
| | | } |
| | | input::-moz-placeholder { |
| | | color: #999999; |
| | | font-size: 26rpx; |
| | | } |
| | | input:-ms-input-placeholder { |
| | | color: #999999; |
| | | font-size: 26rpx; |
| | | } |
| | | .tag { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | align-items: center; |
| | | .tag_active { |
| | | background: $nav-color !important; |
| | | color: #ffffff !important; |
| | | } |
| | | .tag_item { |
| | | width: 156rpx; |
| | | height: 70rpx; |
| | | box-sizing: border-box; |
| | | background: #F2F2F2; |
| | | border-radius: 8rpx; |
| | | font-size: 26rpx; |
| | | font-weight: 400; |
| | | color: #333333; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | margin-right: 22rpx; |
| | | margin-bottom: 22rpx; |
| | | &:nth-child(4n) { |
| | | margin-right: 0; |
| | | } |
| | | } |
| | | } |
| | | text { |
| | | font-size: 26rpx; |
| | | font-weight: 400; |
| | | color: #333333; |
| | | } |
| | | .Search_item_content_a { |
| | | width: 308rpx; |
| | | height: 70rpx; |
| | | background: #F7F7F7; |
| | | border-radius: 8rpx; |
| | | border: 1rpx solid #EEEEEE; |
| | | font-size: 26rpx; |
| | | font-weight: 400; |
| | | color: #B2B2B2; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | } |
| | | } |
| | | .content_search_x { |
| | | height: 24rpx; |
| | | } |
| | | } |
| | | .content_list { |
| | | width: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | .content_list_item { |
| | | width: 100%; |
| | | box-sizing: border-box; |
| | | padding: 30rpx; |
| | | background: #ffffff; |
| | | margin-bottom: 20rpx; |
| | | .content_list_item_title { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | .warning { |
| | | color: $nav-stateColor5 !important; |
| | | } |
| | | .green { |
| | | color: $nav-stateColor2 !important; |
| | | } |
| | | text { |
| | | font-size: 32rpx; |
| | | font-weight: 500; |
| | | color: #333333; |
| | | } |
| | | } |
| | | .content_list_item_nr { |
| | | padding: 24rpx 30rpx; |
| | | background: #F7F7F7; |
| | | border-radius: 16rpx; |
| | | margin-top: 30rpx; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | flex-wrap: wrap; |
| | | .content_list_item_nr_boxs { |
| | | width: 45%; |
| | | display: flex; |
| | | margin-top: 24rpx; |
| | | &:nth-child(1) { |
| | | margin-top: 0; |
| | | } |
| | | &:nth-child(2) { |
| | | margin-top: 0; |
| | | } |
| | | .warning { |
| | | color: $nav-stateColor4 !important; |
| | | } |
| | | .label { |
| | | flex-shrink: 0; |
| | | font-size: 24rpx; |
| | | font-weight: 400; |
| | | color: #666666; |
| | | } |
| | | .cr { |
| | | flex: 1; |
| | | font-size: 24rpx; |
| | | font-weight: 400; |
| | | color: #222222; |
| | | overflow: hidden; |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | -o-text-overflow:ellipsis; |
| | | } |
| | | } |
| | | .content_list_item_nr_box { |
| | | width: 55%; |
| | | display: flex; |
| | | margin-top: 24rpx; |
| | | &:nth-child(1) { |
| | | margin-top: 0; |
| | | } |
| | | &:nth-child(2) { |
| | | margin-top: 0; |
| | | } |
| | | .label { |
| | | font-size: 24rpx; |
| | | font-weight: 400; |
| | | color: #666666; |
| | | flex-shrink: 0; |
| | | } |
| | | .cr { |
| | | font-size: 24rpx; |
| | | font-weight: 400; |
| | | color: #222222; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .content_total { |
| | | width: 100%; |
| | | height: 80rpx; |
| | | padding: 24rpx 30rpx; |
| | | background: #F7F7F7; |
| | | font-size: 24rpx; |
| | | font-weight: 400; |
| | | box-sizing: border-box; |
| | | color: #666666; |
| | | position: sticky; |
| | | z-index: 99; |
| | | } |
| | | } |
| | | </style> |