chen.cheng 8 сар өмнө
parent
commit
36701c6086

+ 3 - 0
src/api/workorder.js

@@ -37,4 +37,7 @@ export const submitOrderWork = async (params) => {
 
 export const scrapWorkOrder = async (id) => {
   return await get(`/orderWork/scrap/${id}`)
+}
+export const handleWorkOrder = async (id) => {
+  return await get(`/orderWork/handle/${id}`)
 }

+ 181 - 8
src/pages/workbenchsub/workorder/detail.vue

@@ -123,11 +123,140 @@
         :placeholder="false"
         :safeAreaInsetBottom="false"
     >
-      <view class="warning-btn">作废</view>
-      <view class="def-btn">处理</view>
-      <view class="def-btn">指派</view>
-      <view class="def-btn">受理</view>
+      <template v-if="state.orderInfo.rewrite">
+        <view class="def-btn"
+              @click="state.showDisableModal = true">
+          补充材料
+        </view>
+      </template>
+      <template v-else>
+        <view
+            class="warning-btn"
+            v-if="[WorkOrderStat.UN_HANDLE.value].includes(state.orderInfo.status )"
+            @click="state.showDisableModal=true"
+        >
+          作废
+        </view>
+        <view
+            class="def-btn"
+            v-if="[WorkOrderStat.IN_HANDLE.value].includes(state.orderInfo.status )"
+            @click="state.handleForm = true"
+        >
+          处理
+        </view>
+        <view
+            class="def-btn"
+            v-if="[WorkOrderStat.UN_HANDLE.value,WorkOrderStat.IN_HANDLE.value].includes(state.orderInfo.status )"
+        >
+          指派
+        </view>
+        <view
+            class="def-btn"
+            v-if="[WorkOrderStat.UN_HANDLE.value].includes(state.orderInfo.status )"
+            @click="state.showAcceptModal=true"
+        >
+          受理
+        </view>
+      </template>
     </up-tabbar>
+    <up-modal
+        :show="state.showDisableModal"
+        title="确认作废"
+        :closeOnClickOverlay="true"
+        :showCancelButton="true"
+        @close="state.showDisableModal = false"
+        @cancel="state.showDisableModal = false"
+        @confirm="onConfirmDisable"
+    >
+      <view class="modal-content">
+        确定作废这个工单?
+      </view>
+    </up-modal>
+    <up-modal
+        :show="state.showAcceptModal"
+        title="确认受理"
+        :closeOnClickOverlay="true"
+        :showCancelButton="true"
+        @close="state.showAcceptModal = false"
+        @cancel="state.showAcceptModal = false"
+        @confirm="onConfirmAccept"
+    >
+      <view class="modal-content">
+        确定受理这个工单?
+      </view>
+    </up-modal>
+    <up-action-sheet
+        :show="state.handleForm"
+        @close="state.handleForm = false"
+        title="报废设备"
+        :round="10"
+    >
+      <view class="action-content common-form">
+        <up-form
+            labelPosition="left"
+            :model="state.model"
+            :rules="state.rules"
+            ref="formRef"
+            labelWidth="120"
+        >
+          <up-form-item
+              label="工单名称"
+              borderBottom
+              :required="true"
+          >
+            <up-input
+                :modelValue="state.orderInfo.name"
+                border="none"
+                disabled
+            ></up-input>
+          </up-form-item>
+          <up-form-item
+              label="产生原因"
+              borderBottom
+          >
+            <up-input
+                v-model="state.model.order.reason"
+                border="none"
+            ></up-input>
+          </up-form-item>
+          <up-form-item
+              label="解决方案"
+              borderBottom
+          >
+            <up-input
+                v-model="state.model.order.solution"
+                border="none"
+            ></up-input>
+          </up-form-item>
+          <up-form-item
+              label="费用/材料"
+              borderBottom
+          >
+            <up-input
+                v-model="state.model.order.consumables"
+                border="none"
+            ></up-input>
+          </up-form-item>
+
+          <up-form-item
+              label="是否已解决"
+              borderBottom
+          >
+            <up-switch v-model="state.model.order.isSolve"></up-switch>
+          </up-form-item>
+          <up-form-item
+              v-if="!state.model.order.isSolve"
+              label="是否补充材料"
+              borderBottom
+          >
+            <up-switch v-model="state.model.order.rewrite"></up-switch>
+          </up-form-item>
+
+          <up-button @click="submit" style="margin-top: 20rpx;">提交</up-button>
+        </up-form>
+      </view>
+    </up-action-sheet>
+    <up-toast ref="uToastRef"></up-toast>
   </view>
 </template>
 
@@ -139,24 +268,38 @@ import LabelText from "@/components/labeltext/index.vue";
 import Steps from "@/components/steps/index.vue";
 import {onMounted, reactive, ref} from 'vue';
 import {onLoad} from "@dcloudio/uni-app";
-import {getWorkOrderDetail, getWorkOrderSteps} from "@/api/workorder.js";
+import {getWorkOrderDetail, getWorkOrderSteps, handleWorkOrder, scrapWorkOrder} from "@/api/workorder.js";
 import {valueToConst} from "@/common/consts/CommonConst.js";
-import {WorkOrderLevel, WorkOrderTypes} from "@/common/consts/WorkOrderConst.js";
+import {WorkOrderLevel, WorkOrderStat, WorkOrderTypes} from "@/common/consts/WorkOrderConst.js";
 import {formatTxt, getImgs, getStepInfo} from "@/util/index.js";
 import ImagesH from "@/components/imagesh/index.vue";
 
 const order = ref('')
 const state = reactive({
+  showDisableModal: false,
+  showAcceptModal: false,
+  handleForm: false,
   orderInfo: {
     problemImg: [],
     solveImg: []
   },
+  model: {
+    order: {
+      isSolve: true,
+      rewrite: false,
+    }
+  },
   steps: []
 })
+const uToastRef = ref(null)
 onLoad((option) => {
   order.value = option.id
 });
 onMounted(() => {
+  refresh()
+})
+
+const refresh = () => {
   getWorkOrderDetail(order.value).then((data) => {
     state.orderInfo = data
     state.orderInfo.statusMsg = getDeviceStatus(data)
@@ -167,7 +310,7 @@ onMounted(() => {
   getWorkOrderSteps(order.value).then((data) => {
     state.steps = data
   })
-})
+}
 const getDeviceStatus = (dataDetail) => {
   let statusMsg = []
   if (dataDetail.status === 1 && isLessThanNow(dataDetail.estimatedStartTime)) {
@@ -184,7 +327,33 @@ const isLessThanNow = (date) => {
   // 小于0则str1时间小,大于0则str1时间大
   return str1 - str2 < 0
 }
-
+const onConfirmDisable = () => {
+  scrapWorkOrder(order.value).then(() => {
+    state.handleForm = false;
+    uToastRef.value.show({
+      type: 'default',
+      message: "操作成功",
+      complete() {
+        uni.$emit('refreshData', {refresh: true});
+        uni.navigateBack({
+          delta: 1
+        })
+      }
+    });
+  })
+}
+const onConfirmAccept = () => {
+  handleWorkOrder(order.value).then(() => {
+    state.showAcceptModal = false;
+    uToastRef.value.show({
+      type: 'default',
+      message: "操作成功",
+      complete() {
+        refresh()
+      }
+    });
+  })
+}
 </script>
 
 
@@ -250,5 +419,9 @@ const isLessThanNow = (date) => {
       background-color: $uni-color-primary;
     }
   }
+
+  .action-content {
+    padding: 0 $uni-pop-padding;
+  }
 }
 </style>

+ 0 - 1
src/pages/workbenchsub/workorder/list.vue

@@ -40,7 +40,6 @@
               </view>
               <view>
                 <up-text :lines="1" :text="`工单号:${item.code}`" size="24rpx"/>
-
               </view>
               <view>
                 <up-text :lines="1" :text="`提交时间:${item.createTime}`" size="24rpx"/>