|
|
@@ -24,35 +24,19 @@
|
|
|
|
|
|
<!-- 筛选条件栏 -->
|
|
|
<view class="filter-bar">
|
|
|
- <view class="filter-row">
|
|
|
- <view
|
|
|
- v-for="(item, index) in rightTypeList"
|
|
|
- :key="item.id"
|
|
|
- class="filter-item"
|
|
|
- @click="handleRightRefresh(item.id)"
|
|
|
- >
|
|
|
- <view class="checkbox-wrapper" :style="{ marginLeft: index === 0 ? '0' : '15px' }">
|
|
|
- <view class="checkbox radio-style">
|
|
|
- <view class="radio-inner" :class="{ 'radio-checked': rightType === item.id }"></view>
|
|
|
- </view>
|
|
|
- <text class="checkbox-text">{{ item.value }}</text>
|
|
|
- </view>
|
|
|
- </view>
|
|
|
- </view>
|
|
|
-
|
|
|
- <view class="filter-item" @click="handleShowTodayOnly">
|
|
|
- <view class="checkbox-wrapper">
|
|
|
- <view class="checkbox square-style" :class="{ checked: showTodayOnly }">
|
|
|
- <image
|
|
|
- v-if="showTodayOnly"
|
|
|
- class="check-icon"
|
|
|
- :src="iconMap.WhiteCheck"
|
|
|
- mode="aspectFit"
|
|
|
- />
|
|
|
- </view>
|
|
|
- <text class="checkbox-text">仅看今天</text>
|
|
|
- </view>
|
|
|
- </view>
|
|
|
+ <RadioFilterBar
|
|
|
+ v-model="rightType"
|
|
|
+ :options="rightTypeList"
|
|
|
+ type="radio"
|
|
|
+ @change="handleRightRefresh"
|
|
|
+ />
|
|
|
+ <RadioFilterBar
|
|
|
+ v-model="showTodayOnly"
|
|
|
+ :options="todayOnlyOptions"
|
|
|
+ type="checkbox"
|
|
|
+ :margin-left="'15px'"
|
|
|
+ @change="handleShowTodayOnly"
|
|
|
+ />
|
|
|
</view>
|
|
|
|
|
|
<!-- 列表 -->
|
|
|
@@ -77,37 +61,22 @@
|
|
|
</scroll-view>
|
|
|
|
|
|
<!-- 修改联系人弹窗 -->
|
|
|
- <view v-if="showUpdateContactPopup" class="popup-mask" @click="closeUpdateContactPopup">
|
|
|
- <view class="popup-content" @click.stop>
|
|
|
- <UpdateContactPopup
|
|
|
- :popup-data="currentOrderInfo"
|
|
|
- @hide="closeUpdateContactPopup"
|
|
|
- @refresh="refreshList"
|
|
|
- />
|
|
|
- </view>
|
|
|
- </view>
|
|
|
-
|
|
|
- <!-- Tips 弹窗 -->
|
|
|
- <view v-if="showTipsPopup" class="popup-mask" @click="closeTipsPopup">
|
|
|
- <view class="popup-content" @click.stop>
|
|
|
- <TipsPopup
|
|
|
- :text="tipsPopupData.text"
|
|
|
- :confirm="tipsPopupData.confirm"
|
|
|
- @hide="closeTipsPopup"
|
|
|
- />
|
|
|
- </view>
|
|
|
- </view>
|
|
|
+ <UpdateContactPopup
|
|
|
+ v-if="showUpdateContactPopup"
|
|
|
+ :popup-data="currentOrderInfo"
|
|
|
+ @hide="closeUpdateContactPopup"
|
|
|
+ @refresh="refreshList"
|
|
|
+ />
|
|
|
</view>
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
import { ref, reactive, onMounted, onUnmounted } from 'vue'
|
|
|
-import iconMap from '@/utils/imagesMap'
|
|
|
import dayjs from 'dayjs'
|
|
|
import QueryView from './components/query/QueryView.vue'
|
|
|
import TaskItem from './components/TaskItem.vue'
|
|
|
import UpdateContactPopup from './components/UpdateContactPopup.vue'
|
|
|
-import TipsPopup from '@/components/popup/components/TipsPopup.vue'
|
|
|
+import RadioFilterBar from '@/components/RadioFilterBar/RadioFilterBar.vue'
|
|
|
import { useConfigStore } from '@/store/config'
|
|
|
import { TaskOrderFuncName, requestFunc } from '@/api/ApiRouter/taskOrder'
|
|
|
import {
|
|
|
@@ -138,15 +107,12 @@ const rightTypeList = [
|
|
|
{ value: '待认领', id: '100' },
|
|
|
{ value: '已认领', id: '400' },
|
|
|
]
|
|
|
+const todayOnlyOptions = [{ value: '仅看今天', id: 'today' }]
|
|
|
const defaultTypeValue = {}
|
|
|
const itemRefs = reactive<Record<string, any>>({})
|
|
|
const showUpdateContactPopup = ref(false)
|
|
|
const currentOrderInfo = ref<any>({})
|
|
|
|
|
|
-// 弹窗相关
|
|
|
-const showTipsPopup = ref(false)
|
|
|
-const tipsPopupData = ref<any>({})
|
|
|
-
|
|
|
const configStore = useConfigStore()
|
|
|
const equipType = configStore.getEquipType()
|
|
|
|
|
|
@@ -219,17 +185,17 @@ const queryAction = () => {
|
|
|
refreshList()
|
|
|
}
|
|
|
|
|
|
-// 切换仅看今天
|
|
|
-const handleShowTodayOnly = () => {
|
|
|
- showTodayOnly.value = !showTodayOnly.value
|
|
|
- params.showTodayOnly = showTodayOnly.value
|
|
|
+// 筛选刷新
|
|
|
+const handleRightRefresh = (value: string | number | boolean) => {
|
|
|
+ rightType.value = value as string
|
|
|
+ params.taskStatus = rightType.value
|
|
|
refreshList()
|
|
|
}
|
|
|
|
|
|
-// 筛选刷新
|
|
|
-const handleRightRefresh = (id: string) => {
|
|
|
- rightType.value = id
|
|
|
- params.taskStatus = id
|
|
|
+// 切换仅看今天
|
|
|
+const handleShowTodayOnly = (value: string | number | boolean) => {
|
|
|
+ showTodayOnly.value = value as boolean
|
|
|
+ params.showTodayOnly = showTodayOnly.value
|
|
|
refreshList()
|
|
|
}
|
|
|
|
|
|
@@ -324,12 +290,6 @@ const closeUpdateContactPopup = () => {
|
|
|
currentOrderInfo.value = {}
|
|
|
}
|
|
|
|
|
|
-// 关闭 Tips 弹窗
|
|
|
-const closeTipsPopup = () => {
|
|
|
- showTipsPopup.value = false
|
|
|
- tipsPopupData.value = {}
|
|
|
-}
|
|
|
-
|
|
|
// PDF 详情(告知单/服务单/受理单)
|
|
|
const handlePdfDetail = (businessType: number, signFilePdf: string, orderId: string) => {
|
|
|
const businessTypeTitle = businessType === 200 ? '告知单' : '服务单/受理单'
|
|
|
@@ -372,80 +332,6 @@ defineExpose({
|
|
|
flex-shrink: 0;
|
|
|
}
|
|
|
|
|
|
-.filter-bar {
|
|
|
- display: flex;
|
|
|
- flex-direction: row;
|
|
|
- align-items: center;
|
|
|
- justify-content: space-between;
|
|
|
- padding: 10px 15px;
|
|
|
- background-color: #fff;
|
|
|
- border-bottom: 1px solid #eee;
|
|
|
-}
|
|
|
-
|
|
|
-.filter-row {
|
|
|
- display: flex;
|
|
|
- flex-direction: row;
|
|
|
-}
|
|
|
-
|
|
|
-.filter-item {
|
|
|
- display: flex;
|
|
|
- flex-direction: row;
|
|
|
- align-items: center;
|
|
|
-}
|
|
|
-
|
|
|
-.checkbox-wrapper {
|
|
|
- display: flex;
|
|
|
- flex-direction: row;
|
|
|
- align-items: center;
|
|
|
-}
|
|
|
-
|
|
|
-.checkbox {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- justify-content: center;
|
|
|
- width: 15px;
|
|
|
- height: 15px;
|
|
|
- margin-right: 6px;
|
|
|
- background-color: rgb(255, 255, 255);
|
|
|
- border: 1px solid rgb(187, 187, 187);
|
|
|
-}
|
|
|
-
|
|
|
-.radio-style {
|
|
|
- border-radius: 7.5px;
|
|
|
-}
|
|
|
-
|
|
|
-.square-style {
|
|
|
- width: 18px;
|
|
|
- height: 18px;
|
|
|
- border-radius: 3px;
|
|
|
-}
|
|
|
-
|
|
|
-.radio-inner {
|
|
|
- width: 9.5px;
|
|
|
- height: 9.5px;
|
|
|
- background-color: transparent;
|
|
|
- border-radius: 4.75px;
|
|
|
-}
|
|
|
-
|
|
|
-.radio-checked {
|
|
|
- background-color: rgb(47, 142, 255);
|
|
|
-}
|
|
|
-
|
|
|
-.square-style.checked {
|
|
|
- background-color: #2f8eff;
|
|
|
- border-width: 0;
|
|
|
-}
|
|
|
-
|
|
|
-.check-icon {
|
|
|
- width: 12px;
|
|
|
- height: 12px;
|
|
|
-}
|
|
|
-
|
|
|
-.checkbox-text {
|
|
|
- font-size: 14px;
|
|
|
- color: #333;
|
|
|
-}
|
|
|
-
|
|
|
.list-scroll {
|
|
|
flex: 1;
|
|
|
overflow: hidden;
|
|
|
@@ -469,21 +355,10 @@ defineExpose({
|
|
|
color: #999;
|
|
|
}
|
|
|
|
|
|
-.popup-mask {
|
|
|
- position: fixed;
|
|
|
- top: 0;
|
|
|
- right: 0;
|
|
|
- bottom: 0;
|
|
|
- left: 0;
|
|
|
- z-index: 999;
|
|
|
+.filter-bar {
|
|
|
display: flex;
|
|
|
- align-items: flex-end;
|
|
|
- justify-content: center;
|
|
|
- background-color: rgba(0, 0, 0, 0.5);
|
|
|
-}
|
|
|
-
|
|
|
-.popup-content {
|
|
|
- width: 100%;
|
|
|
- max-width: 500px;
|
|
|
+ justify-content: space-between;
|
|
|
+ flex-shrink: 0;
|
|
|
+ background-color: white;
|
|
|
}
|
|
|
</style>
|