|
@@ -12,36 +12,70 @@
|
|
|
</ion-toolbar>
|
|
|
</ion-header>
|
|
|
<ion-content>
|
|
|
- <ion-item class="search-item">
|
|
|
- <ion-input type="date" mode="md" v-model="searchParamsState.workStartDate" style="width: 105px;"></ion-input>
|
|
|
- <ion-label style="margin:0px 5px 0px 5px">至</ion-label>
|
|
|
- <ion-input type="date" mode="md" v-model="searchParamsState.workEndDate" style="width: 105px;"></ion-input>
|
|
|
+ <ion-item style="font-size: 10px;--border-style: none;">
|
|
|
+ <label>日期:</label>
|
|
|
+ <ion-datetime-button datetime="reportDateBegin"></ion-datetime-button>
|
|
|
+ <span style="margin:0 5px">至</span>
|
|
|
+ <ion-modal :keep-contents-mounted="true">
|
|
|
+ <ion-datetime id="reportDateBegin" placeholder="日期"
|
|
|
+ v-model="searchParamsState.workStartDate"
|
|
|
+ dataformatas="YYYY-MM-DD" presentation="date" cancel-text="取消" done-text="确定"
|
|
|
+ @ionChange="onSearch"
|
|
|
+ :show-default-buttons="true">
|
|
|
+ </ion-datetime>
|
|
|
+ </ion-modal>
|
|
|
+ <ion-datetime-button datetime="reportDateEnd"></ion-datetime-button>
|
|
|
+ <ion-modal :keep-contents-mounted="true">
|
|
|
+ <ion-datetime id="reportDateEnd" placeholder="日期"
|
|
|
+ v-model="searchParamsState.workEndDate"
|
|
|
+ dataformatas="YYYY-MM-DD" presentation="date" cancel-text="取消" done-text="确定"
|
|
|
+ @ionChange="onSearch"
|
|
|
+ :show-default-buttons="true">
|
|
|
+ </ion-datetime>
|
|
|
+ </ion-modal>
|
|
|
<ion-button slot="end" style="height: 33px;width:70px;margin-left: 10px;--box-shadow: none;--border-radius: 14px;" @click="onSearch">搜索</ion-button>
|
|
|
</ion-item>
|
|
|
- <ion-list class="list-content">
|
|
|
- <ion-item v-for="(record,key) in dataList" :key="key" detail>
|
|
|
- <ion-grid @click="onDetail(record.doWorkID)" >
|
|
|
- <ion-row>
|
|
|
- <ion-col>
|
|
|
- <ion-label style="display: flex;justify-content: space-between;">
|
|
|
- <ion-text>
|
|
|
- {{ record.workTime }}工作日志
|
|
|
- </ion-text>
|
|
|
- </ion-label>
|
|
|
- </ion-col>
|
|
|
- </ion-row>
|
|
|
- <ion-row>
|
|
|
- <ion-col>
|
|
|
- <ion-label>
|
|
|
- <p>
|
|
|
- 日志类型:{{ record.logTypeName }}
|
|
|
- </p>
|
|
|
- </ion-label>
|
|
|
- </ion-col>
|
|
|
- </ion-row>
|
|
|
- </ion-grid>
|
|
|
- </ion-item>
|
|
|
- </ion-list>
|
|
|
+ <!-- 滑动数据列表 -->
|
|
|
+ <div class="panel-content" v-if="!loading">
|
|
|
+ <div v-for="(record,key) in dataList" :key="key" style="border: 1px solid rgb(242, 242, 245); margin: 10px; border-radius: 10px">
|
|
|
+ <ion-item-sliding>
|
|
|
+ <ion-item>
|
|
|
+ <ion-grid @click="onDetail(record.doWorkID)">
|
|
|
+ <ion-row>
|
|
|
+ <ion-col>
|
|
|
+ <ion-label style="display: flex;justify-content: space-between;">
|
|
|
+ <ion-text>
|
|
|
+ {{ record.workTime }}工作日志
|
|
|
+ </ion-text>
|
|
|
+ </ion-label>
|
|
|
+ </ion-col>
|
|
|
+ </ion-row>
|
|
|
+ <ion-row>
|
|
|
+ <ion-col>
|
|
|
+ <ion-label>
|
|
|
+ <p>
|
|
|
+ 日志类型:{{ record.logTypeName }}
|
|
|
+ </p>
|
|
|
+ </ion-label>
|
|
|
+ </ion-col>
|
|
|
+ </ion-row>
|
|
|
+ </ion-grid>
|
|
|
+ <span @click="onDetail(record.doWorkID)">
|
|
|
+ <ion-icon :icon="chevronForwardOutline" slots="end"></ion-icon>
|
|
|
+ </span>
|
|
|
+ </ion-item>
|
|
|
+
|
|
|
+ <ion-item-options>
|
|
|
+ <ion-item-option @click="onEdit(record.doWorkID)">
|
|
|
+ <ion-icon :icon="buildOutline"></ion-icon>
|
|
|
+ </ion-item-option>
|
|
|
+ <ion-item-option color="danger" @click="setDelAlertOpen(true, record.doWorkID)">
|
|
|
+ <ion-icon :icon="trashOutline"></ion-icon>
|
|
|
+ </ion-item-option>
|
|
|
+ </ion-item-options>
|
|
|
+ </ion-item-sliding>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
<b-empty v-if="dataList.length<=0" :loading="loading"/>
|
|
|
<ion-infinite-scroll threshold="100px" @ionInfinite="onScroll($event)">
|
|
|
<ion-infinite-scroll-content
|
|
@@ -50,18 +84,41 @@
|
|
|
</ion-infinite-scroll-content>
|
|
|
</ion-infinite-scroll>
|
|
|
</ion-content>
|
|
|
+
|
|
|
+ <ion-alert
|
|
|
+ :is-open="delAlertOpen"
|
|
|
+ header="删除确认"
|
|
|
+ message="确定要删除该工作日志吗?"
|
|
|
+ :buttons="delAlertButtons"
|
|
|
+ @didDismiss="setDelAlertOpen(false, null)"
|
|
|
+ ></ion-alert>
|
|
|
+
|
|
|
+ <ion-alert
|
|
|
+ :is-open="infoAlertOpen"
|
|
|
+ :header="infoAlterData.title"
|
|
|
+ :message="infoAlterData.message"
|
|
|
+ :buttons="infoAlertButtons"
|
|
|
+ @didDismiss="setInfoAlertOpen(false)"
|
|
|
+ ></ion-alert>
|
|
|
+
|
|
|
+ <ion-loading
|
|
|
+ :is-open="delLoading"
|
|
|
+ message="删除中..."
|
|
|
+ @didDismiss="setDelLoadingOpen(false)" >
|
|
|
+ </ion-loading>
|
|
|
</ion-page>
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts">
|
|
|
|
|
|
import {useRouter} from "vue-router";
|
|
|
-import {defineComponent, reactive, ref} from 'vue';
|
|
|
-import {arrowBackOutline, ellipse, addCircleOutline} from 'ionicons/icons';
|
|
|
+import {defineComponent, onMounted, reactive, ref} from 'vue';
|
|
|
+import {arrowBackOutline, addCircleOutline} from 'ionicons/icons';
|
|
|
import {IonIcon, onIonViewDidEnter} from '@ionic/vue';
|
|
|
-import {getWorkLogList} from '@/api/workLog';
|
|
|
+import {deleteWorkLog, getWorkLogList} from '@/api/workLog';
|
|
|
import BEmpty from "@/components/empty.vue";
|
|
|
import dayjs from "dayjs";
|
|
|
+import {chevronForwardOutline,buildOutline,trashOutline} from 'ionicons/icons';
|
|
|
|
|
|
export default defineComponent({
|
|
|
name: 'WorkLogList',
|
|
@@ -79,6 +136,61 @@ export default defineComponent({
|
|
|
const router = useRouter();
|
|
|
const colors = ref(["secondary", "tertiary", "success", "warning"]);
|
|
|
|
|
|
+ // 删除警告弹窗按钮定义
|
|
|
+ const delAlertButtons = [
|
|
|
+ {
|
|
|
+ text: '取消',
|
|
|
+ role: 'cancel',
|
|
|
+ handler: () => {
|
|
|
+ console.log('Alert canceled');
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ text: '确定',
|
|
|
+ role: 'confirm',
|
|
|
+ handler: () => {
|
|
|
+ delLoading.value = true
|
|
|
+ deleteWorkLog(delWorkIds.value).then((res) => {
|
|
|
+ infoAlterData.title = "提示";
|
|
|
+ infoAlterData.message = "删除成功";
|
|
|
+ setInfoAlertOpen(true);
|
|
|
+ }).finally(()=>{
|
|
|
+ delLoading.value = false
|
|
|
+ })
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ];
|
|
|
+ // 删除警告弹窗开关
|
|
|
+ const delAlertOpen = ref(false);
|
|
|
+ // 删除数据
|
|
|
+ const delWorkIds = ref<Array<any>>([])
|
|
|
+ // 删除加载
|
|
|
+ const delLoading = ref(false);
|
|
|
+ // 信息弹窗开关
|
|
|
+ const infoAlertOpen = ref(false);
|
|
|
+ // 信息弹窗内容
|
|
|
+ const infoAlterData = reactive({
|
|
|
+ title:"",
|
|
|
+ message:""
|
|
|
+ })
|
|
|
+ // 删除警告弹窗按钮定义
|
|
|
+ const infoAlertButtons = [
|
|
|
+ {
|
|
|
+ text: '确定',
|
|
|
+ role: 'confirm',
|
|
|
+ handler: () => {
|
|
|
+ loading.value = true;
|
|
|
+ getWorkLogList(searchParamsState).then(res=>{
|
|
|
+ dataList.value = res.list;
|
|
|
+ searchParamsState.total = res.total;
|
|
|
+ }).finally(() => {
|
|
|
+ loading.value = false;
|
|
|
+ })
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ];
|
|
|
+
|
|
|
+
|
|
|
const loadData = async function () {
|
|
|
loading.value = true;
|
|
|
const result: any = await getWorkLogList(searchParamsState);
|
|
@@ -103,23 +215,29 @@ export default defineComponent({
|
|
|
router.push({path: './edit', query: {reload: 1, doWorkID: null}});
|
|
|
}
|
|
|
|
|
|
+ const onEdit = (doWorkID: string) => {
|
|
|
+ router.push({path: './edit', query: {reload: 1, doWorkID: doWorkID}});
|
|
|
+ }
|
|
|
+
|
|
|
const onBack =()=>{
|
|
|
router.push('../');
|
|
|
}
|
|
|
|
|
|
const onDetail = (doWorkID:string) =>{
|
|
|
- router.push({path: './edit', query: {reload:1, doWorkID: doWorkID}});
|
|
|
+ router.push({path: './detail', query: {reload:1, doWorkID: doWorkID}});
|
|
|
}
|
|
|
|
|
|
const reload = () => {
|
|
|
+ // 设置查询初始截止日期为当天
|
|
|
const firstDay = new Date();
|
|
|
- firstDay.setMonth(firstDay.getMonth());
|
|
|
- firstDay.setDate(1);
|
|
|
- const lastDay = new Date(firstDay.getFullYear(), firstDay.getMonth() + 1, 0);
|
|
|
+ // 设置查询初始开始时间为当天的一个月前
|
|
|
+ const lastDay = new Date();
|
|
|
+ lastDay.setDate(firstDay.getDate() - 30);
|
|
|
+
|
|
|
dataList.value = [];
|
|
|
searchParamsState.pageIndex = 1;
|
|
|
- searchParamsState.workStartDate=dayjs(firstDay.toLocaleDateString()).format('YYYY-MM-DD');
|
|
|
- searchParamsState.workEndDate = dayjs(lastDay.toLocaleDateString()).format('YYYY-MM-DD');
|
|
|
+ searchParamsState.workStartDate=dayjs(lastDay.toLocaleDateString()).format('YYYY-MM-DD');
|
|
|
+ searchParamsState.workEndDate = dayjs(firstDay.toLocaleDateString()).format('YYYY-MM-DD');
|
|
|
loadData();
|
|
|
}
|
|
|
|
|
@@ -129,9 +247,31 @@ export default defineComponent({
|
|
|
loadData();
|
|
|
}
|
|
|
|
|
|
- onIonViewDidEnter(() => {
|
|
|
+ // 设置要删除的日志
|
|
|
+ function setDelAlertOpen(value: boolean, doWorkId: any) {
|
|
|
+ delAlertOpen.value = value;
|
|
|
+ if(doWorkId != null) {
|
|
|
+ delWorkIds.value = new Array(doWorkId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置删除弹窗开启关闭
|
|
|
+ function setDelLoadingOpen(value: boolean) {
|
|
|
+ delLoading.value = value
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置信息提示弹窗开关
|
|
|
+ function setInfoAlertOpen(value: boolean) {
|
|
|
+ infoAlertOpen.value = value;
|
|
|
+ }
|
|
|
+
|
|
|
+ // onIonViewDidEnter(() => {
|
|
|
+ // reload();
|
|
|
+ // });
|
|
|
+
|
|
|
+ onMounted(() => {
|
|
|
reload();
|
|
|
- });
|
|
|
+ })
|
|
|
|
|
|
return {
|
|
|
router,
|
|
@@ -148,6 +288,19 @@ export default defineComponent({
|
|
|
reload,
|
|
|
arrowBackOutline,
|
|
|
addCircleOutline,
|
|
|
+ chevronForwardOutline,
|
|
|
+ buildOutline,
|
|
|
+ trashOutline,
|
|
|
+ onEdit,
|
|
|
+ delAlertButtons,
|
|
|
+ delAlertOpen,
|
|
|
+ setDelAlertOpen,
|
|
|
+ delLoading,
|
|
|
+ setDelLoadingOpen,
|
|
|
+ infoAlertOpen,
|
|
|
+ infoAlterData,
|
|
|
+ setInfoAlertOpen,
|
|
|
+ infoAlertButtons
|
|
|
}
|
|
|
}
|
|
|
});
|