| | |
| | | <template> |
| | | <view class="content"> |
| | | <view class="content_search"> |
| | | <Search @searchInput="searchInput" @submit="submit" @reset="reset" placeholder="搜索物料名称/编码"></Search> |
| | | <view class="content_search_x"></view> |
| | | <Search @searchInput="searchInput" placeholder="搜索物料名称/编码"></Search> |
| | | <view class="content_search_x" v-if="tagList.length > 0"></view> |
| | | <LabelSelection :TagList="tagList" :isShow="true" @change="clickTag" /> |
| | | </view> |
| | | <view class="content_total" :style="{top: top}">共{{listData.total}}条数据</view> |
| | | <view class="content_total" :style="{top: top}">共{{search.total}}条数据</view> |
| | | <view class="content_list"> |
| | | <scroll-view @scrolltolower="getLists" scroll-y :style="{height: height}"> |
| | | <view class="fp_list_item" v-for="(item, i) in lists" :key="item.id" @click="clickItem(i)"> |
| | | <scroll-view |
| | | :refresher-enabled="true" |
| | | :refresher-triggered="isLoading" |
| | | @refresherrefresh="onRefresh" |
| | | refresher-background="#fff" |
| | | @scrolltolower="getLists" |
| | | scroll-y |
| | | :style="{height: height}"> |
| | | <view class="fp_list_item" v-for="(item, i) in list" :key="item.id" @click="clickItem(i)"> |
| | | <view class="fp_list_item_header"> |
| | | <u-checkbox :checked="item.isActive"></u-checkbox> |
| | | <text v-if="item.mmodel">{{item.mmodel.name}}</text> |
| | |
| | | </view> |
| | | <view class="fp_zw"></view> |
| | | <view class="fp_footer"> |
| | | <view class="fp_footer_button" @click="submit">分配(1)</view> |
| | | <view class="fp_footer_button" @click="submit">分配</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | |
| | | <script> |
| | | import Search from '@/components/Search.vue' |
| | | import LabelSelection from '@/components/LabelSelection.vue' |
| | | import { getList, getSelfList } from '@/util/api/PlanningAPI' |
| | | export default { |
| | | components: { Search, LabelSelection }, |
| | | data() { |
| | | return { |
| | | height: '', |
| | | top: '', |
| | | listData: { |
| | | isLoading: false, |
| | | search: { |
| | | gxId: '', |
| | | capacity: 10, |
| | | page: 0, |
| | | total: 0, |
| | | startDate: '', |
| | | endDate: '', |
| | | procedureIds: [], |
| | | departIds: '', |
| | | mixParam: '', |
| | | cateIds: [] |
| | | first: true // 用于判断是否是第一次进入页面 |
| | | }, |
| | | tagList: [ |
| | | { |
| | | id: '', |
| | | name: '注射', |
| | | num: '0' |
| | | }, |
| | | { |
| | | id: '0', |
| | | name: '烧结', |
| | | num: '0' |
| | | }, |
| | | { |
| | | id: '1,4', |
| | | name: '焊接', |
| | | num: '0' |
| | | } |
| | | ], |
| | | data: [], // 工序数据 |
| | | factoryList: [], |
| | | finished: true, |
| | | tagList: [], |
| | | finished: false, |
| | | loading: false, |
| | | refreshing: false, |
| | | timeShow: false, |
| | | lists: [ |
| | | { |
| | | id: 1, |
| | | status: 0, |
| | | urgent: 1, |
| | | num: 100, |
| | | isActive: false, |
| | | batch: '11111', |
| | | planDate: '2023-08-29', |
| | | mmodel: { |
| | | name: '工序计划', |
| | | code: 'fbdseasafghb' |
| | | }, |
| | | usermodel: { |
| | | realname: '计划人员' |
| | | }, |
| | | pmodel: { |
| | | name: '工序计划' |
| | | }, |
| | | fmodel: { |
| | | name: '工厂' |
| | | } |
| | | }, |
| | | { |
| | | id: 2, |
| | | status: 0, |
| | | urgent: 1, |
| | | num: 100, |
| | | isActive: false, |
| | | batch: '11111', |
| | | planDate: '2023-08-29', |
| | | mmodel: { |
| | | name: '工序计划', |
| | | code: 'fbdseasafghb' |
| | | }, |
| | | usermodel: { |
| | | realname: '计划人员' |
| | | }, |
| | | pmodel: { |
| | | name: '工序计划' |
| | | }, |
| | | fmodel: { |
| | | name: '工厂' |
| | | } |
| | | }, |
| | | { |
| | | id: 3, |
| | | status: 0, |
| | | urgent: 1, |
| | | num: 100, |
| | | batch: '11111', |
| | | isActive: false, |
| | | planDate: '2023-08-29', |
| | | mmodel: { |
| | | name: '工序计划', |
| | | code: 'fbdseasafghb' |
| | | }, |
| | | usermodel: { |
| | | realname: '计划人员' |
| | | }, |
| | | pmodel: { |
| | | name: '工序计划' |
| | | }, |
| | | fmodel: { |
| | | name: '工厂' |
| | | } |
| | | }, |
| | | { |
| | | id: 4, |
| | | status: 0, |
| | | urgent: 1, |
| | | num: 100, |
| | | isActive: false, |
| | | batch: '11111', |
| | | planDate: '2023-08-29', |
| | | mmodel: { |
| | | name: '工序计划', |
| | | code: 'fbdseasafghb' |
| | | }, |
| | | usermodel: { |
| | | realname: '计划人员' |
| | | }, |
| | | pmodel: { |
| | | name: '工序计划' |
| | | }, |
| | | fmodel: { |
| | | name: '工厂' |
| | | } |
| | | }, |
| | | { |
| | | id: 5, |
| | | status: 0, |
| | | urgent: 1, |
| | | num: 100, |
| | | isActive: false, |
| | | batch: '11111', |
| | | planDate: '2023-08-29', |
| | | mmodel: { |
| | | name: '工序计划', |
| | | code: 'fbdseasafghb' |
| | | }, |
| | | usermodel: { |
| | | realname: '计划人员' |
| | | }, |
| | | pmodel: { |
| | | name: '工序计划' |
| | | }, |
| | | fmodel: { |
| | | name: '工厂' |
| | | } |
| | | } |
| | | ] |
| | | list: [] |
| | | }; |
| | | }, |
| | | onReady() { |
| | |
| | | }).exec() |
| | | }) |
| | | }, |
| | | onLoad() { |
| | | this.getLists() |
| | | }, |
| | | methods: { |
| | | // 下拉刷新 |
| | | onRefresh() { |
| | | if (this.isLoading) return |
| | | this.isLoading = true |
| | | this.search.page = 0 |
| | | this.list = [] |
| | | this.finished = false |
| | | this.getLists() |
| | | }, |
| | | // 点击当前项 |
| | | clickItem(i) { |
| | | this.lists.forEach((item, index) => { |
| | | this.list.forEach((item, index) => { |
| | | item.isActive = i === index; |
| | | }) |
| | | }, |
| | | // 跳转 |
| | | jump(item) { |
| | | uni.navigateTo({ |
| | | url: `/pages/planDetails/planDetails?id=${item.id}` |
| | | }) |
| | | }, |
| | | // 获取头部组件高度 |
| | | getHeight(height) { |
| | | this.height = height |
| | | }, |
| | | // 重置 |
| | | reset() { |
| | | this.listData.page = 0 |
| | | this.finished = false |
| | | this.lists = [] |
| | | this.listData.mixParam = '' |
| | | this.listData.startDate = '' |
| | | this.listData.endDate = '' |
| | | this.listData.procedureIds = [] |
| | | if (this.factoryList.length > 0) { |
| | | this.listData.departIds = this.factoryList[0].id |
| | | } |
| | | if (this.data.length > 0) { |
| | | this.data.forEach(item => { item.isActive = false }) |
| | | } |
| | | // this.getLists() |
| | | // this.pageCounts() |
| | | }, |
| | | // 日期确定 |
| | | timeConfirm(val) { |
| | | this.listData.startDate = val[0] |
| | | this.listData.endDate = val[val.length - 1] |
| | | this.timeShow = false |
| | | }, |
| | | // 切换工厂 |
| | | changeTags(i, id) { |
| | | this.listData.departIds = id |
| | | this.getWorkingProcedures(id) |
| | | this.factoryList.forEach((item, index) => { |
| | | if (index === i) { |
| | | item.isActive = true |
| | | } else { |
| | | item.isActive = false |
| | | } |
| | | }) |
| | | }, |
| | | // 打开日期插件 |
| | | openDate() { |
| | | this.timeShow = true |
| | | }, |
| | | // 搜索 |
| | | searchInput(val) { |
| | | this.listData.mixParam = val |
| | | this.listData.page = 0 |
| | | searchInput(e) { |
| | | this.search.mixParam = e |
| | | this.search.page = 0 |
| | | this.list = [] |
| | | this.finished = false |
| | | this.lists = [] |
| | | this.getLists() |
| | | }, |
| | | // 点击标签搜索 |
| | | clickTag(ids) { |
| | | this.listData.cateIds = ids |
| | | this.listData.page = 0 |
| | | // 点击 |
| | | clickTag(id) { |
| | | this.search.gxId = id |
| | | this.list = [] |
| | | this.search.page = 0 |
| | | this.finished = false |
| | | this.lists = [] |
| | | // this.getLists() |
| | | }, |
| | | // 获取列表统计 |
| | | pageCounts() { |
| | | pageCount({ |
| | | factoryId: this.listData.departIds, |
| | | procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [], |
| | | startDate: this.listData.startDate, |
| | | endDate: this.listData.endDate, |
| | | statusList: this.listData.cateIds |
| | | }).then(res => { |
| | | if (res.code === 200 && res.data) { |
| | | this.tagList[0].num = res.data.allNum.toString() |
| | | this.tagList[1].num = res.data.startNum.toString() |
| | | this.tagList[2].num = res.data.ingNum.toString() |
| | | this.tagList[3].num = res.data.endNum.toString() |
| | | } |
| | | }) |
| | | }, |
| | | // 获取工厂数据 |
| | | getOrganizations() { |
| | | getOrganization({ |
| | | type: 1 |
| | | }).then(res => { |
| | | if (res.code === 200 && res.data && res.data.length !== 0) { |
| | | res.data.forEach((item, i) => { |
| | | item.isActive = i === 0; |
| | | }) |
| | | if (res.data.length > 0) { |
| | | this.factoryList = res.data |
| | | this.listData.departIds = this.factoryList[0].id |
| | | this.listData.procedureIds = '' |
| | | this.finished = false |
| | | this.getWorkingProcedures(this.factoryList[0].id) |
| | | this.getLists() |
| | | this.pageCounts() |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | // 获取工序数据 |
| | | getWorkingProcedures(orgId) { |
| | | this.data = [] |
| | | getWorkingProcedure({ orgId }) |
| | | .then(res => { |
| | | if (res.code === 200 && res.data && res.data.length !== 0) { |
| | | res.data.forEach((item, i) => { |
| | | item.isActive = false; |
| | | }) |
| | | this.data = res.data |
| | | } |
| | | }) |
| | | }, |
| | | // 分配 |
| | | submit() { |
| | | let data; |
| | | this.lists.forEach(item => { |
| | | this.list.forEach((item) => { |
| | | if (item.isActive) { |
| | | data = item |
| | | } |
| | | }) |
| | | if (!data) { |
| | | uni.showToast({ title: '至少选择一项计划!', duration: 2000 }); |
| | | uni.showToast({ title: '至少选择一项计划!', icon: 'none', duration: 2000 }); |
| | | return |
| | | } |
| | | uni.navigateTo({ |
| | | url: `/pages/allocation/allocation?gxid=${data.procedureId}&jhid=${data.id}&num=${data.workorderDistributNum ? data.num - data.workorderDistributNum : data.num}` |
| | | }); |
| | | }, |
| | | // 获取当前用户所分配的工序 |
| | | async getWorkingProcedures() { |
| | | let res = await getSelfList({}) |
| | | if (res.code === 200 && res.data.length > 0) { |
| | | let arr = [] |
| | | res.data.forEach((item) => { |
| | | arr.push({ name: item.name, id: item.id }) |
| | | }) |
| | | this.search.gxId = arr[0].id |
| | | this.tagList = arr |
| | | return true |
| | | } |
| | | return false |
| | | }, |
| | | // 获取计划列表数据 |
| | | getLists() { |
| | | console.log('getLists') |
| | | async getLists() { |
| | | if (!this.finished) { |
| | | this.loading = true |
| | | this.listData.page = this.listData.page++ |
| | | getList({ |
| | | capacity: this.listData.capacity, |
| | | this.search.page = this.search.page += 1 |
| | | if (this.search.first) { // 如果是第一次,先请求工序 |
| | | await this.getWorkingProcedures() |
| | | let res = await getList({ |
| | | capacity: this.search.capacity, |
| | | page: this.search.page, |
| | | model: { |
| | | mixParam: this.listData.mixParam, |
| | | startDate: this.listData.startDate, |
| | | endDate: this.listData.endDate, |
| | | procedureIdList: this.listData.procedureIds ? this.listData.procedureIds : [], |
| | | factoryId: this.listData.departIds, |
| | | statusList: this.listData.cateIds |
| | | }, |
| | | page: this.listData.page, |
| | | sorts: [ |
| | | { |
| | | direction: 'ASC', |
| | | property: 'publishDate' |
| | | mixParam: this.search.mixParam, |
| | | procedureId: this.search.gxId, |
| | | statusList: [1, 4] |
| | | } |
| | | ] |
| | | }).then(res => { |
| | | }) |
| | | this.isLoading = false |
| | | this.loading = false |
| | | this.listData.total = res.data.total |
| | | if (this.refreshing) { |
| | | this.lists = [] |
| | | this.list = [] |
| | | this.refreshing = false; |
| | | } |
| | | if (res.code === 200 && res.data.records.length !== 0) { |
| | | if (this.lists.length === 0) { |
| | | this.lists = res.data.records |
| | | this.search.total = res.data.total |
| | | res.data.records.forEach((item) => { |
| | | item.isActive = false |
| | | }) |
| | | this.list.push(...res.data.records) |
| | | } else { |
| | | this.lists.push(...res.data.records) |
| | | this.finished = true; |
| | | } |
| | | this.search.first = false |
| | | } else { |
| | | this.finished = true |
| | | } |
| | | }).catch(err => { |
| | | this.loading = false |
| | | this.finished = true |
| | | if (this.refreshing) { |
| | | this.lists = [] |
| | | this.refreshing = false; |
| | | let res = await getList({ |
| | | capacity: this.search.capacity, |
| | | page: this.search.page, |
| | | model: { |
| | | mixParam: this.search.mixParam, |
| | | procedureId: this.search.gxId, |
| | | statusList: [1, 4] |
| | | } |
| | | }) |
| | | this.isLoading = false |
| | | if (this.refreshing) { |
| | | this.list = [] |
| | | this.refreshing = false; |
| | | } |
| | | this.loading = false |
| | | if (res.code === 200 && res.data.records.length !== 0) { |
| | | res.data.records.forEach((item) => { |
| | | item.isActive = false |
| | | }) |
| | | this.list.push(...res.data.records) |
| | | this.search.total = res.data.total |
| | | } else { |
| | | this.finished = true; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | z-index: 99; |
| | | } |
| | | .fp_zw { |
| | | height: 150px; |
| | | height: calc(98rpx + env(safe-area-inset-bottom)); |
| | | } |
| | | .fp_footer { |
| | | width: 100%; |