Houjie
2025-06-03 2fda34643bc22e25f6c569415da5f955c81536bf
pages/TaskManager/TaskManagerList.vue
@@ -2,7 +2,12 @@
   <view class="container">
      <cu-custom :bgColor="NavBarColor" :isBack="true" backRouterName="productionTask">
         <block slot="backText">返回</block>
         <block slot="content">任务管理</block>
         <block slot="content">已办</block>
         <block slot="right">
            <view @click="search">
               <image class="search" src="/static/icon/sear.png" style="width: 25px; height: 25px;" alt="" />
            </view>
         </block>
      </cu-custom>
      <view style="width: 100%;">
@@ -11,11 +16,12 @@
               <!-- 基础表单校验 -->
               <uni-forms ref="form" :modelValue="formData" validate-trigger="bind" err-show-type="undertext">
                  <uni-group title="" top="0">
                     <uni-forms-item name="numbers" label="领料申请单号:">
                        <uni-easyinput type="text" v-model="formData.num" placeholder="请输入领料申请单号检索" />
                     <uni-forms-item name="type"   :labelWidth="80" label="流程分类:">
                        <uni-data-select v-model="formData.type" :localdata="storageTypeList"
                           @change="changeSelectType" />
                     </uni-forms-item>
                     <uni-forms-item name="name" label="领料产品:">
                        <uni-easyinput v-model="formData.partNumNameModel" placeholder="请输入领料产品" />
                     <uni-forms-item name="num"   :labelWidth="80" label="设备编号:">
                        <uni-easyinput v-model="formData.num" placeholder="请输入设备编号" />
                     </uni-forms-item>
                  </uni-group>
               </uni-forms>
@@ -36,114 +42,64 @@
      <view class="container">
         <uni-badge absolute="rightTop" :offset="[-30, 15]" :text="msg1Count" type="error" />
         <uni-badge absolute="rightTop" :offset="[-270, 15]" :text="msg2Count" type="error" />
         <view class="solid-bottom">
            <scroll-view scroll-x class="nav text-center ">
               <view class="flex text-center justify-around">
                  <view class="cu-item" :class="item.value==TabCur?'text-blue cur':''"
                     v-for="(item,index) in tabs" :key="index" @tap="tabSelect" :data-id="item.value">
                     {{item.title}}
                  </view>
               </view>
            </scroll-view>
         </view>
         <mescroll-uni ref="mescrollRef" @init="mescrollInit" :top="top" @down="downCallback" @up="upCallback">
            <!-- 列表信息开始 -->
            <view class="content">
               <uni-card margin="10px" spacing="1px" v-for="(item,index) in msgList" :key="index"
                  @click="onClickProductionTask(item)">
                  <view class="flex">
                     <view class="flex-sub text-light bg-white padding-xs margin-xs radius">任务名称:</view>
                     <view class="flex-sub text-light bg-white padding-xs margin-xs radius">流程名称:</view>
                     <view class="flex-sub bg-white padding-xs margin-xs   text-bold  radius text-right">
                        {{item.partName}}
                        {{item.procDefName}}
                     </view>
                  </view>
                  <view class="flex">
                     <view class="flex-sub text-light bg-white padding-xs margin-xs radius">任务类型:</view>
                     <view class="flex-sub bg-white padding-xs margin-xs     radius text-right">
                        {{item.taskType}}
                     <view class="flex-sub text-light bg-white padding-xs margin-xs radius">任务名称:</view>
                     <view class="flex-sub bg-white padding-xs margin-xs   text-orange   radius text-right">
                        {{item.taskName}}
                     </view>
                  </view>
                  <view class="flex">
                     <view class="flex-sub text-light bg-white padding-xs margin-xs radius">优先级:</view>
                     <view class="flex-sub text-light bg-white padding-xs margin-xs radius">流程发起人:</view>
                     <view class="flex-sub bg-white padding-xs margin-xs   text-blue   radius text-right">
                        {{item.priority}}
                        {{item.startUserName}}
                     </view>
                  </view>
                  <view class="flex">
                     <view class="flex-sub text-light bg-white padding-xs margin-xs radius">责任人:</view>
                     <view class="flex-sub bg-white padding-xs margin-xs   text-blue   radius text-right">
                        {{item.ssignee}}
                     </view>
                  </view>
                  <view class="flex">
                     <view class="flex-sub text-light bg-white padding-xs margin-xs radius">任务描述:</view>
                     <view class="flex-sub text-light bg-white padding-xs margin-xs radius">流程描述:</view>
                     <view class="flex-sub bg-white padding-xs margin-xs     radius text-right">
                        {{item.taskDesc}}
                        {{item.description}}
                     </view>
                  </view>
                  <view class="flex">
                     <view class="flex-sub text-light bg-white padding-xs margin-xs radius">完成时间:</view>
                     <view class="flex-sub bg-white padding-xs margin-xs     radius text-right">
                        {{item.dueaDate}}
                     </view>
                  </view>
                  <view class="flex">
                     <view class="flex-sub text-light bg-white padding-xs margin-xs radius">状态:</view>
                     <view
                        class="flex-sub bg-white padding-xs margin-xs  text-bold text-green   radius text-right"
                        v-if="item.status == '1'">
                        待处理
                     </view>
                     <view
                        class="flex-sub bg-white padding-xs margin-xs  text-bold text-green   radius text-right"
                        v-if="item.status == '3'">
                        已完成
                     </view>
                  </view>
               </uni-card>
            </view>
         </mescroll-uni>
      </view>
   </view>
</template>
<script>
   const tabs = [{
      title: '待办',
      value: 0
   }, {
      title: '已办',
      value: 1
   }];
   import MescrollMixin from "@/components/mescroll-uni/mescroll-mixins.js";
   export default {
      mixins: [MescrollMixin], // 使用mixin
      data() {
         return {
            TabCur: 0,
            type: 'top',
            scrollLeft:0,
            scrollLeft: 0,
            formData: {
               num: '',
               partNumNameModel: ''
               type: '',
               num:''
            },
            storageTypeList: [],
            NavBarColor: this.NavBarColor,
            tabs,
            current: 0,
            colorIndex: 0,
            activeColor: '#5277A6',
            url: {
               stallList: "/mom/partTakeRollingDetail/list"
               stallList: "assign/flow/finishedList",
               storageType: 'sys/dict/getDictItems/flow_type'
            },
            upOption: {
@@ -164,15 +120,7 @@
               color: '#2979FF',
               borderColor: '#2979FF'
            },
            msgList: [{
               partName: "设备A",
               taskType: "维护",
               taskDesc: "定期检查",
               priority: "高",
               dueaDate: "2023-10-10",
               ssignee: "张三",
               status: 1
            }], //列表数据
            msgList: [], //列表数据
            announcement1: [],
            msg1Count: 0,
            msg2Count: 0,
@@ -181,7 +129,7 @@
      },
      computed: {
         top() {
            return this.CustomBar * 2 + 130
            return this.CustomBar * 2 + 50
         },
         style() {
            var StatusBar = this.StatusBar;
@@ -198,260 +146,174 @@
         }
      },
      created() {},
      created() {
         this.storageType();
      },
      methods: {
         changeSelectType(e) {
            this.formData.type = e
         },
         /**
          * @param {Object} item
          * 详情页面
          * 流程类型
          */
         // onClickProductionTask(item) {
         //    let keyword = this.TabCur
         //    uni.navigateTo({
         //    url: '/pages/mes/om/workSheetOpToolingBorrowDeils/workSheetOpToolingBorrowDeils?keyword=' + keyword
         //    })
         // },
         tabSelect(e) {
            this.TabCur = e.currentTarget.dataset.id;
            this.scrollLeft = (e.currentTarget.dataset.id - 1) * 60;
            this.msgList = [] // 先置空列表,显示加载进度
            this.mescroll.resetUpScroll() // 再刷新列表数据
         storageType() {
            this.$http.get(this.url.storageType).then(res => {
               //设置列表数据
               if (res.data.success) {
                  this.storageTypeList = res.data.result
               }
            }).catch(() => {
               //联网失败,
            })
         },
         onClickProductionTask(item, flag = 'task') {
            const name = item.taskName;
            const type = item.category_dictText;
            let url = '';
         ListTouchStart(e) {
            this.listTouchStart = e.touches[0].pageX
         },
         // ListTouch计算方向
         ListTouchMove(e) {
            this.listTouchDirection = e.touches[0].pageX - this.listTouchStart > 0 ? 'right' : 'left'
         },
         // ListTouch计算滚动
         ListTouchEnd(e) {
            if (this.listTouchDirection == 'left') {
               this.modalName = e.currentTarget.dataset.target
            } else {
               this.modalName = null
            switch (true) {
               case (name === '是否需要领用备件' && type === '设备维修'):
                  url = '/pages/ToDoList/ToDoSpareParts/ToDoSpareParts';
                  break;
               case (name === '点检执行' && type === '设备点检'):
                  url = '/pages/ToDoList/ToDoListCheckSure/ToDoListCheckSure';
                  break;
               case (name === '周保执行' && type === '设备周保'):
                  url = '/pages/ToDoList/ToDoBaoZhouSure/ToDoBaoZhouSure';
                  break;
                  case (name === '周保领取' && type === '设备周保'):
                     url = '/pages/ToDoList/ToDoBaoZhouSure/ToDoBaoZhouSure';
                     break;
               case (name === '班组长确认' && type === '设备点检'):
                  url = '/pages/ToDoList/ToDoListCheckSure/ToDoListCheckSure';
                  break;
               case (name === '班组长确认' && type === '设备周保'):
                  url = '/pages/ToDoList/ToDoBaoZhouSure/ToDoBaoZhouSure';
                  break;
               case (name === '设管员初验' && type === '设备周保'):
                  url = '/pages/ToDoList/ToDoBaoZhouSure/ToDoBaoZhouSure';
                  break;
               case (name === '设能部终验' && type === '设备周保'):
                  url = '/pages/ToDoList/ToDoBaoZhouSure/ToDoBaoZhouSure';
                  break;
               case (name === '管理员领用备件' && type === '设备维修'):
                  url = '/pages/ToDoList/ToDoSpareParts/ToDoSpareParts';
                  break;
               case (name === '操作工确认' && type === '设备维修'):
                  url = '/pages/ToDoList/ToDoSpareParts/ToDoSpareParts';
                  break;
               case (name === '维修执行' && type === '设备维修'):
                  url = '/pages/ToDoList/ToDoSpareParts/ToDoSpareParts';
                  break;
               case (name === '点检工单' && type === '设备点检'):
                  url = '/pages/ToDoList/ToDoListCheckSure/ToDoListCheckSure';
                  break;
               case (name === '点检开始' && type === '设备点检'):
                  url = '/pages/ToDoList/ToDoListCheckSure/ToDoListCheckSure';
                  break;
               default:
                  console.warn(`No URL found for name: ${name} and type: ${type}`);
                  return;
            }
            this.listTouchDirection = null
         },
            if (url) {
               uni.navigateTo({
                  url: `${url}?item=${encodeURIComponent(JSON.stringify(item))}&flag=${flag}`
               });
            }
         },
         search() {
            this.$refs.popup.open();
         },
         // upCallback(page) {
         //    let keyword = this.TabCur
         //    if (keyword == 0) {
         //       this.$http.get(this.url.stallList, {
         //          params: {
         //             pageNo: page.num,
         //             pageSize: page.size,
         //             order: 'asc',
         //             column: 'createTime',
         //             status: 1
         //          },
         upCallback(page) {
            this.$http.get(this.url.stallList, {
               params: {
                  pageNo: page.num,
                  pageSize: page.size,
                  column: 'createTime',
                  order: 'desc'
               },
         //       }).then(res => {
         //          this.announcement1 = res.data.result.records
         //          this.mescroll.endSuccess(this.announcement1.length);
         //          console.log("url", res)
         //          //设置列表数据
         //          if (res.data.success) {
         //             console.log("res", res.data)
         //             this.msg1Count = res.data.result.total
         //             this.msg1Title = "通知(" + res.data.result.total + ")";
         //             for (let annItem of this.announcement1) {
         //                this.msgList.push(annItem)
         //             }
         //          }
         //          if (page.num == 1) {
         //             this.msgList = []; //如果是第一页需手动制空列表
         //             this.msgList = this.msgList.concat(this.announcement1); //追加新数据
         //          }
            }).then(res => {
               this.announcement1 = res.data.result.records
               this.mescroll.endSuccess(this.announcement1.length);
               console.log("url", res)
               //设置列表数据
               if (res.data.success) {
                  console.log("res", res.data)
                  this.msg1Count = res.data.result.total
                  this.msg1Title = "通知(" + res.data.result.total + ")";
                  for (let annItem of this.announcement1) {
                     this.msgList.push(annItem)
                  }
               }
               if (page.num == 1) {
                  this.msgList = []; //如果是第一页需手动制空列表
                  this.msgList = this.msgList.concat(this.announcement1); //追加新数据
               }
         //       }).catch(() => {
         //          //联网失败, 结束加载
         //          this.mescroll.endErr();
         //       })
         //    } else if (keyword == 1) {
         //       this.$http.get(this.url.stallList, {
         //          params: {
         //             pageNo: page.num,
         //             pageSize: page.size,
         //             order: 'desc',
         //             status: 3,
         //             column: 'createTime'
         //          },
         //       }).then(res => {
         //          this.announcement1 = res.data.result.records
         //          this.mescroll.endSuccess(this.announcement1.length);
         //          console.log("url", res)
         //          //设置列表数据
         //          if (res.data.success) {
         //             console.log("res", res.data)
         //             this.msg2Count = res.data.result.total
         //             this.msg1Title = "通知(" + res.data.result.total + ")";
         //             for (let annItem of this.announcement1) {
         //                this.msgList.push(annItem)
         //             }
         //          }
         //          if (page.num == 1) {
         //             this.msgList = []; //如果是第一页需手动制空列表
         //             this.msgList = this.msgList.concat(this.announcement1); //追加新数据
         //          }
         //       }).catch(() => {
         //          //联网失败, 结束加载
         //          this.mescroll.endErr();
         //       })
         //    }
            }).catch(() => {
               //联网失败, 结束加载
               this.mescroll.endErr();
            })
         },
         // },
         /* 重置查询条件 */
         resetTask() {
            this.formData.num = ''
            this.formData.partNumNameModel = ''
            this.formData.type = '',
            this.formData.num='',
            this.$refs.popup.close();
            this.mescroll.resetUpScroll()
         },
         /* 检索 */
         getSera() {
            this.$refs.popup.close();
            let keyword = this.TabCur
            this.msgList = [];
            this.$http.get(this.url.stallList, {
               params: {
                  pageNo: 1,
                  pageSize: 9999,
                  column: 'createTime',
                  order: 'desc',
                  category: this.formData.type,
                  title:this.formData.num
               },
            if (keyword == 0) {
               this.$http.get(this.url.stallList, {
                  params: {
                     pageNo: 1,
                     pageSize: 999,
                     order: "desc",
                     column: "createTime",
                     num: '*' + this.formData.num + '*',
                     partNumNameModel: '*' + this.formData.partNumNameModel + '*',
                     status: 'published'
            }).then(res => {
               this.announcement1 = res.data.result.records
               this.mescroll.endSuccess(this.announcement1.length);
               console.log("url", res)
               //设置列表数据
               if (res.data.success) {
                  console.log("res", res.data)
                  this.msg1Count = res.data.result.total
                  this.msg1Title = "通知(" + res.data.result.total + ")";
                  for (let annItem of this.announcement1) {
                     this.msgList.push(annItem)
                  }
               }).then(res => {
                  //联网成功的回调,隐藏下拉刷新和上拉加载的状态;
               }
               if (page.num == 1) {
                  this.msgList = []; //如果是第一页需手动制空列表
                  this.msgList = this.msgList.concat(this.announcement1); //追加新数据
               }
                  this.announcement1 = res.data.result.records
                  this.mescroll.endSuccess(this.announcement1.length);
                  console.log("url", res)
                  //设置列表数据
                  if (res.data.success) {
                     console.log("res", res.data)
                     this.msg1Count = res.data.result.total
                     this.msg1Title = "通知(" + res.data.result.total + ")";
                     for (let annItem of this.announcement1) {
                        this.msgList.push(annItem)
                     }
                  }
                  if (page.num == 1) {
                     this.msgList = []; //如果是第一页需手动制空列表
                     this.msgList = this.msgList.concat(this.announcement1); //追加新数据
                  }
               }).catch(() => {
                  //联网失败, 结束加载
                  this.mescroll.endErr();
               })
            } else if (keyword == 1) {
               this.$http.get(this.url.stallList, {
                  params: {
                     pageNo: 1,
                     pageSize: 999,
                     order: "desc",
                     column: "createTime",
                     status: 'training',
                     num: '*' + this.formData.num + '*',
                     partNumNameModel: '*' + this.formData.partNumNameModel + '*'
                  }
               }).then(res => {
                  //联网成功的回调,隐藏下拉刷新和上拉加载的状态;
                  this.announcement1 = res.data.result.records
                  this.mescroll.endSuccess(this.announcement1.length);
                  console.log("url", res)
                  //设置列表数据
                  if (res.data.success) {
                     console.log("res", res.data)
                     this.msg1Count = res.data.result.total
                     this.msg2Title = "通知(" + res.data.result.total + ")";
                     for (let annItem of this.announcement1) {
                        this.msgList.push(annItem)
                     }
                  }
                  if (page.num == 1) {
                     this.msgList = []; //如果是第一页需手动制空列表
                     this.msgList = this.msgList.concat(this.announcement1); //追加新数据
                  }
               }).catch(() => {
                  //联网失败, 结束加载
                  this.mescroll.endErr();
               })
            } else if (keyword == 2) {
               this.$http.get(this.url.stallList, {
                  params: {
                     pageNo: 1,
                     pageSize: 999,
                     order: "desc",
                     column: "createTime",
                     status: 'completed',
                     num: '*' + this.formData.num + '*',
                     partNumNameModel: '*' + this.formData.partNumNameModel + '*'
                  }
               }).then(res => {
                  //联网成功的回调,隐藏下拉刷新和上拉加载的状态;
                  this.announcement1 = res.data.result.records
                  this.mescroll.endSuccess(this.announcement1.length);
                  console.log("url", res)
                  //设置列表数据
                  if (res.data.success) {
                     console.log("res", res.data)
                     this.msg3Count = res.data.result.total
                     this.msg1Title = "通知(" + res.data.result.total + ")";
                     for (let annItem of this.announcement1) {
                        this.msgList.push(annItem)
                     }
                  }
                  if (page.num == 1) {
                     this.msgList = []; //如果是第一页需手动制空列表
                     this.msgList = this.msgList.concat(this.announcement1); //追加新数据
                  }
               }).catch(() => {
                  //联网失败, 结束加载
                  this.mescroll.endErr();
               })
            }
            }).catch(() => {
               //联网失败, 结束加载
               this.mescroll.endErr();
            })
         },
         mescrollInit(mescroll) {
            console.log('mescrollInit')
@@ -463,7 +325,6 @@
</script>
<style>
   .is-hover {
      color: rgba(255, 255, 255, 0.6);
      background-color: #55aaff;
@@ -471,7 +332,7 @@
   }
   .content {
      margin-top: 5px;
   }
@@ -481,7 +342,7 @@
   }
   .popupView {
      margin-top: 85px;
      margin-top: 45px;
      height: auto;
   }
</style>