chen.cheng 7 сар өмнө
parent
commit
bc3d21488c

+ 13 - 2
src/api/workorder.js

@@ -16,7 +16,13 @@ export const getMyOrderWork = async ({page = Page.page, size = Page.size, ...par
     ...params
   });
 }
-
+export const getMyOrderWorkTodo = async ({page = Page.page, size = Page.size, ...params}) => {
+  return await post('/orderWork/todoPage', {
+    page,
+    size,
+    ...params
+  });
+}
 export const getWorkOrderDetail = async (id) => {
   return await get(`/orderWork/getDetail/${id}`)
 }
@@ -40,4 +46,9 @@ export const scrapWorkOrder = async (id) => {
 }
 export const handleWorkOrder = async (id) => {
   return await get(`/orderWork/handle/${id}`)
-}
+}
+
+export const assignWorkOrder = async (param) => {
+  return await post(`orderWork/assign`, param)
+}
+

+ 11 - 1
src/common/demo.scss

@@ -145,4 +145,14 @@
     border-radius: 40rpx !important;
     color: $uni-text-color-inverse !important;
   }
-}
+}
+
+.u-popup {
+  .u-fade-enter-active {
+    z-index: 99 !important;
+  }
+
+  .u-slide-up-enter-active {
+    z-index: 100 !important;
+  }
+}

+ 0 - 18
src/components/Overlay/index.vue

@@ -1,18 +0,0 @@
-<template>
-
-</template>
-
-<script setup lang="ts">
-
-</script>
-
-<script lang="ts">
-export default {
-  options: {
-    styleIsolation: 'shared'
-  }
-}
-</script>
-<style scoped lang="scss">
-
-</style>

+ 43 - 0
src/components/overlay-tip/index.vue

@@ -0,0 +1,43 @@
+<template>
+  <up-overlay :show="show">
+    <view class="warp">
+      <up-loading-icon :text="tip" textSize="18"></up-loading-icon>
+    </view>
+  </up-overlay>
+</template>
+
+<script setup lang="ts">
+import {ref} from 'vue'
+
+const show = ref(false)
+const tip = ref("加载中...")
+const load = ({
+                msg = "数据正在提交..."
+              }) => {
+  show.value = true
+  tip.value = msg
+}
+const end = () => {
+  show.value = false
+}
+
+defineExpose({load, end})
+</script>
+
+<script lang="ts">
+export default {
+  options: {
+    name: 'overlay-tip',
+    styleIsolation: 'shared'
+  }
+}
+</script>
+<style scoped lang="scss">
+.warp {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  height: 100%;
+}
+
+</style>

+ 1 - 1
src/components/steps/index.vue

@@ -2,7 +2,7 @@
   <view class="stepper-container" :class="orientation">
     <view v-for="(step, index) in props.steps" :key="'step' + index" class="step">
       <view class="step-side">
-        <view class="step-icon">{{ index + 1 }}</view>
+        <view class="step-icon">{{ index < props.steps.length - 1 ? index + 1 : "" }}</view>
         <view v-if="index < props.steps.length - 1" class="step-line"></view>
       </view>
       <view class="step-content">

+ 24 - 6
src/pages/workbench/usrsubmit.vue

@@ -18,7 +18,7 @@
               v-for="(item, index) in indexList"
               :key="index"
           >
-            <view class="item-content">
+            <view class="item-content" @click="()=>handleWorkOrder(item)">
               <view class="item-dot">
                 <view class="item-dot-bg"></view>
               </view>
@@ -28,7 +28,9 @@
                       color="#555555"
                       size="25rpx"
                       :bold="true"
-                      style="font-weight:700;flex: inherit;width: auto;" :text="item.typeName">
+                      style="font-weight:700;flex: inherit;width: auto;"
+                      :text="item.typeName"
+                  >
                   </up-text>
                   <up-text
                       color="#f59a23"
@@ -43,6 +45,9 @@
                     工单名称:{{ formatTxt(item.name) }}
                   </view>
                   <view class="info-item">
+                    工单编号:{{ formatTxt(item.code) }}
+                  </view>
+                  <view class="info-item">
                     提报时间:{{ item.createTime }}
                   </view>
                   <view class="info-item">
@@ -64,8 +69,8 @@
 import Panel from "@/components/pannel/index.vue";
 import tag from "@/static/aiot/icon/tag.svg";
 import {ref} from 'vue';
-import {onLoad} from '@dcloudio/uni-app';
-import {getMyOrderWork} from "@/api/workorder.js";
+import {onLoad, onShow} from '@dcloudio/uni-app';
+import {getMyOrderWork, getMyOrderWorkTodo} from "@/api/workorder.js";
 import {formatTxt, navigateTo} from "@/util/index.js";
 import {valueToConst} from "@/common/consts/CommonConst.js";
 import {WorkOrderLevel} from "@/common/consts/WorkOrderConst.js";
@@ -74,16 +79,29 @@ const indexList = ref([]);
 onLoad(() => {
   loadmore();
 });
-
+onShow(() => {
+  uni.$on('refreshData', (res) => {
+    if (res.refresh) {
+      loadmore();
+    }
+  })
+});
 const loadmore = () => {
-  getMyOrderWork({}).then((res) => {
+  getMyOrderWorkTodo({}).then((res) => {
     const {records} = res;
     indexList.value = records;
   });
 };
+const handleWorkOrder = (item) => {
+  navigateTo({
+    url: "/pages/workbenchsub/workorder/detail",
+    param: item
+  })
+};
 </script>
 
 <script lang="ts">
+
 export default {
   options: {
     styleIsolation: 'shared'

+ 31 - 4
src/pages/workbenchsub/workorder/detail.vue

@@ -302,7 +302,6 @@
             labelField="name"
             valueField="id"
             defaultExpandAll
-            showCheckbox
             :defaultCheckedKeys="defaultCheckedKeysValue"
             @change="handleTreeChange"
             @expand="handleExpandChange"
@@ -310,6 +309,7 @@
         <up-button @click="confirmToUsr" style="margin-top: 20rpx;">指派</up-button>
       </view>
     </up-action-sheet>
+    <overlay-tip ref="overlay"/>
   </view>
 </template>
 
@@ -319,10 +319,12 @@ import list from "@/static/aiot/list.svg";
 import Panel from "@/components/pannel/index.vue";
 import LabelText from "@/components/labeltext/index.vue";
 import Steps from "@/components/steps/index.vue";
+import OverlayTip from "@/components/overlay-tip/index.vue";
 import {onMounted, reactive, ref, watch} from 'vue';
 
 import {onLoad} from "@dcloudio/uni-app";
 import {
+  assignWorkOrder,
   getWorkOrderDetail,
   getWorkOrderSteps,
   handleWorkOrder,
@@ -338,6 +340,7 @@ import DaTree from '@/components/da-tree/index.vue';
 
 const order = ref('')
 const DaTreeRef = ref(null)
+const overlay = ref(null)
 // key的类型必须对应树数据key的类型
 const defaultCheckedKeysValue = ref(['211', '222'])
 const roomTreeData = ref([])
@@ -390,7 +393,7 @@ watch(() =>
             groupTemp[dept] = {
               id: dept,
               name: dept,
-              children: []
+              children: [],
             }
           }
           groupTemp[dept].children.push({
@@ -420,8 +423,32 @@ const refresh = () => {
   })
 }
 const confirmToUsr = () => {
-  console.log(DaTreeRef.value.getCheckedKeys());
-
+  if (!DaTreeRef.value || !DaTreeRef.value.getCheckedKeys() || DaTreeRef.value.getCheckedKeys().length === 0) {
+    uToastRef.value.show({
+      type: 'warning',
+      message: "请选择处理人",
+    })
+    return;
+  }
+  overlay.value.load({})
+  assignWorkOrder({
+    handleUser: DaTreeRef.value.getCheckedKeys()[0],
+    id: order.value
+  }).then(() => {
+    state.toUsrShow = false;
+    uToastRef.value.show({
+      type: 'default',
+      message: "操作成功",
+      complete() {
+        uni.$emit('refreshData', {refresh: true});
+        uni.navigateBack({
+          delta: 1
+        })
+      }
+    })
+  }).finally(() => {
+    overlay.value.end()
+  })
 }
 const getDeviceStatus = (dataDetail) => {
   let statusMsg = []

+ 10 - 2
src/pages/workbenchsub/workorder/list.vue

@@ -62,7 +62,7 @@
 <script setup lang="ts">
 import {ref} from "vue"
 import {WorkOrderLevel, WorkOrderStat} from '@/common/consts/WorkOrderConst.js'
-import {onLoad} from '@dcloudio/uni-app';
+import {onLoad, onShow} from '@dcloudio/uni-app';
 import {getDevImg, navigateTo} from "@/util/index.js";
 import {getMyOrderWork} from "@/api/workorder.js";
 import {valueToConst} from "@/common/consts/CommonConst.js";
@@ -76,7 +76,15 @@ onLoad(() => {
   loading.value = true;
   loadmore();
 });
-
+onShow(() => {
+  uni.$on('refreshData', (res) => {
+    if (res.refresh) {
+      page.value = 1
+      loading.value = true;
+      loadmore();
+    }
+  })
+});
 let searchValue = ref("")
 let indexList = ref([])
 let selectTag = ref(WorkOrderStat.ALL.label)