|
|
@@ -14,20 +14,58 @@ defineOptions({ name: 'ConstructionDailyReport' })
|
|
|
|
|
|
const userStore = useUserStore()
|
|
|
const deptId = userStore.getUser.deptId
|
|
|
+const route = useRoute()
|
|
|
+
|
|
|
+const parseQueryNumber = (value: unknown) => {
|
|
|
+ if (Array.isArray(value)) {
|
|
|
+ return parseQueryNumber(value[0])
|
|
|
+ }
|
|
|
+ if (value === undefined || value === null || value === '') {
|
|
|
+ return undefined
|
|
|
+ }
|
|
|
+ const parsedValue = Number(value)
|
|
|
+ return Number.isNaN(parsedValue) ? undefined : parsedValue
|
|
|
+}
|
|
|
|
|
|
-const initQuery: ConstructionDailyReportQuery = {
|
|
|
+const resolveCreateTimeFromRoute = () => {
|
|
|
+ const createTime = route.query.createTime
|
|
|
+ if (Array.isArray(createTime)) {
|
|
|
+ const values = createTime.filter((item): item is string => typeof item === 'string')
|
|
|
+ return values.length === 2 ? values : undefined
|
|
|
+ }
|
|
|
+ if (typeof createTime === 'string') {
|
|
|
+ const values = createTime.split(',').filter(Boolean)
|
|
|
+ return values.length === 2 ? values : undefined
|
|
|
+ }
|
|
|
+ return undefined
|
|
|
+}
|
|
|
+
|
|
|
+const createDefaultQuery = (): ConstructionDailyReportQuery => ({
|
|
|
pageNo: 1,
|
|
|
pageSize: 10,
|
|
|
- deptId
|
|
|
-}
|
|
|
+ deptId: parseQueryNumber(route.query.deptId) ?? deptId,
|
|
|
+ projectDeptId: parseQueryNumber(route.query.projectDeptId),
|
|
|
+ teamId: parseQueryNumber(route.query.teamId),
|
|
|
+ createTime: resolveCreateTimeFromRoute()
|
|
|
+})
|
|
|
|
|
|
-const query = ref<ConstructionDailyReportQuery>({ ...initQuery })
|
|
|
+const query = ref<ConstructionDailyReportQuery>(createDefaultQuery())
|
|
|
const list = ref<ConstructionDailyReportRow[]>([])
|
|
|
const total = ref(0)
|
|
|
const loading = ref(false)
|
|
|
const visible = ref(false)
|
|
|
const formRef = ref<InstanceType<typeof ConstructionDailyReportDrawer>>()
|
|
|
-const route = useRoute()
|
|
|
+
|
|
|
+function syncQueryFromRoute() {
|
|
|
+ const nextQuery = createDefaultQuery()
|
|
|
+ query.value = {
|
|
|
+ ...query.value,
|
|
|
+ deptId: nextQuery.deptId,
|
|
|
+ projectDeptId: nextQuery.projectDeptId,
|
|
|
+ teamId: nextQuery.teamId,
|
|
|
+ createTime: nextQuery.createTime
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
const loadList = useDebounceFn(async () => {
|
|
|
loading.value = true
|
|
|
@@ -48,7 +86,7 @@ function handleQuery(setPage = true) {
|
|
|
}
|
|
|
|
|
|
function resetQuery() {
|
|
|
- query.value = { ...initQuery }
|
|
|
+ query.value = createDefaultQuery()
|
|
|
handleQuery()
|
|
|
}
|
|
|
|
|
|
@@ -69,6 +107,8 @@ function handleOpenForm(id: number, type: 'edit' | 'readonly') {
|
|
|
watch(
|
|
|
[
|
|
|
() => query.value.deptId,
|
|
|
+ () => query.value.projectDeptId,
|
|
|
+ () => query.value.teamId,
|
|
|
() => query.value.projectName,
|
|
|
() => query.value.wellName,
|
|
|
() => query.value.createTime
|
|
|
@@ -77,6 +117,13 @@ watch(
|
|
|
{ immediate: true }
|
|
|
)
|
|
|
|
|
|
+watch(
|
|
|
+ () => [route.query.deptId, route.query.projectDeptId, route.query.teamId, route.query.createTime],
|
|
|
+ () => {
|
|
|
+ syncQueryFromRoute()
|
|
|
+ }
|
|
|
+)
|
|
|
+
|
|
|
onMounted(() => {
|
|
|
if (route.query.id) {
|
|
|
handleOpenForm(Number(route.query.id), 'edit')
|