|
- <template>
- <view class="page">
- <!-- 主列表页 -->
- <view :class="sideOpen ? 'show' : ''" class="mainpage" style="padding-top: 80rpx">
- <!-- 顶部条目/分页信息栏 -->
- <l-customlist-banner @buttonClick="sideOpen = true">{{
- tips
- }}</l-customlist-banner>
-
- <!-- 滚动列表,跨端支持上拉/下拉 -->
- <l-scroll-list v-if="ready" @pullDown="pullDown" @toBottom="fetchList()" ref="list">
- <l-customlist :tips="loadState" showTips>
- <!-- 单条记录 -->
- <view class="customlist-item" v-for="item of list" :key="item.Id">
-
-
- <view class="customlist-item-field">
- <text class="customlist-item-field-title">审核状态:</text>
- {{ CheckStatusitem(displayListItem(item, "CheckStatus")) }}
- </view>
-
- <view class="customlist-item-field">
- <text class="customlist-item-field-title">审核备注:</text>
- {{ displayListItem(item, "CheckRemark") }}
- </view>
-
- <view class="customlist-item-field">
- <text class="customlist-item-field-title">审核人:</text>
- {{ displayListItem(item, "CheckUserNo") }}
- </view>
-
- <view class="customlist-item-field">
- <text class="customlist-item-field-title">请假类型:</text>
- {{ displayListItem(item, "LeaveType") }}
- </view>
-
- <view class="customlist-item-field">
- <text class="customlist-item-field-title">开始时间:</text>
- {{ itmeDel(displayListItem(item, "StartTime")) }}
- </view>
-
- <view class="customlist-item-field">
- <text class="customlist-item-field-title">结束时间:</text>
- {{ itmeDel(displayListItem(item, "EndTime")) }}
- </view>
-
- <view class="customlist-item-field">
- <text class="customlist-item-field-title">请假天数:</text>
- {{ displayListItem(item, "LeaveDay") }}
- </view>
-
- <view class="customlist-item-field">
- <text class="customlist-item-field-title">请假事由:</text>
- {{ displayListItem(item, "LeaveReason") }}
- </view>
-
- <view class="customlist-item-field">
- <text class="customlist-item-field-title">学号:</text>
- {{ displayListItem(item, "CreateUserNo") }}
- </view>
-
- <view class="customlist-item-field">
- <text class="customlist-item-field-title">姓名:</text>
- {{ displayListItem(item, "CreateUserName") }}
- </view>
-
- <view class="customlist-item-field">
- <text class="customlist-item-field-title">申请时间:</text>
- {{ displayListItem(item, "CreateTime") }}
- </view>
-
- <view class="customlist-item-field">
- <text class="customlist-item-field-title">班级:</text>
- {{ displayListItem(item, "ClassNo") }}
- </view>
-
- <view class="customlist-item-field">
- <text class="customlist-item-field-title">系部:</text>
- {{ displayListItem(item, "DeptNo") }}
- </view>
-
- <view class="customlist-item-field">
- <text class="customlist-item-field-title">专业:</text>
- {{ displayListItem(item, "MajorNo") }}
- </view>
-
- <view class="customlist-item-field">
- <text class="customlist-item-field-title">班主任:</text>
- {{ displayListItem(item, "ClassDiredctorNo") }}
- </view>
-
- <view class="customlist-item-field">
- <text class="customlist-item-field-title">辅导员:</text>
- {{ displayListItem(item, "ClassTutorNo") }}
- </view>
-
- <l-customlist-action @join="action('join', item.Id)" :showEdit="!item.CheckStatus"
- @edit="action('edit', item.Id)" :showDelete="!item.CheckStatus"
- @delete="action('delete', item.Id)" @view="action('view', item.Id)" />
- </view>
- </l-customlist>
- </l-scroll-list>
- </view>
-
- <!-- 关闭侧边抽屉按钮 -->
- <view @click="sideOpen = false" :class="sideOpen ? 'show' : ''" class="sideclose">
- <l-icon type="pullright" color="blue" />
- </view>
-
- <!-- 侧边栏,用于设置查询条件 -->
- <scroll-view :class="sideOpen ? 'show' : ''" class="sidepage" scroll-y>
- <view v-if="ready" class="padding">
- <l-select v-model="queryData.LeaveType" @change="searchChange" :range="dataSource.LeaveType"
- title="请假类型" placeholder="按请假类型查询" />
- <l-select v-model="queryData.CheckStatus" @change="searchChange" :range="dataSource.CheckStatus"
- title="审核状态" placeholder="按审核状态查询" />
- <!-- 重置查询条件按钮 -->
- <view class="padding-tb">
- <l-button @click="reset" line="orange" class="block" block>重置查询条件</l-button>
- </view>
- </view>
- </scroll-view>
-
- <l-customlist-add v-if="!sideOpen" @click="action('add')" />
- </view>
- </template>
-
-
- <script>
- /*
- * 版 本 Learun-ADMS V7.0.3 力软敏捷开发框架(http://www.learun.cn)
- * Copyright (c) 2013-2021 上海力软信息技术有限公司
- * 创建人:超级管理员
- * 日 期:2021-02-21 10:07
- * 描 述:会议管理
- */
-
- /**
- * 本段代码由移动端代码生成器输出,移动端须 2.2.0 版本及以上可以使用
- * 请在移动端 /pages.json 中的 pages 字段中添加一条记录:
- * { "path": "pages/PersonnelManagement/MeetingManagement/list", "style": { "navigationBarTitleText": "表单列表页" } }
- *
- * (navigationBarTitleText 字段为本页面的标题文本,可以修改)
- * (必须自行操作该步骤,力软代码生成器不会自动帮您修改 /pages.json 文件)
- */
- import moment from "moment";
- import get from "lodash/get";
- import set from "lodash/set";
- import pickBy from "lodash/pickBy";
- import mapValues from "lodash/mapValues";
-
- export default {
- data() {
- return {
- // 数据项的数据类型、结构
- scheme: {
- CheckStatus: {
- type: "text"
- },
- CheckRemark: {
- type: "text"
- },
- CheckTime: {
- type: "text"
- },
- CheckUserNo: {
- type: "select",dataSource: '1', dataSourceId: 'CheckUserNo'
- },
- LeaveType: {
- type: "select",dataSource: '1', dataSourceId: 'LeaveType'
- },
- StartTime: {
- type: "text"
- },
- EndTime: {
- type: "text"
- },
- LeaveDay: {
- type: "text"
- },
- LeaveReason: {
- type: "text"
- },
- CreateUserNo: {
- type: "text"
- },
- CreateUserName: {
- type: "text"
- },
- CreateTime: {
- type: "text"
- },
- ClassNo: {
- type: "select",dataSource: '1', dataSourceId: 'ClassNo'
- },
- DeptNo: {
- type: "select",dataSource: '1', dataSourceId: 'DeptNo'
- },
- MajorNo: {
- type: "select",dataSource: '1', dataSourceId: 'MajorNo'
- },
- ClassDiredctorNo: {
- type: "select",dataSource: '1', dataSourceId: 'ClassDiredctorNo'
- },
- ClassTutorNo: {
- type: "checkbox",dataSource: '1', dataSourceId: 'ClassTutorNo'
- }
- },
-
- // 查询条件
- searchData: {},
- defaultQueryData: {},
- queryData: {
- LeaveType: "",
- CheckStatus: '',
- // CreateUser: "",
- },
-
- // 数据源
- dataSource: {
- ClassNo:[],
- DeptNo:[],
- MajorNo:[],
- ClassDiredctorNo:[],
- CheckUserNo:[],
- ClassTutorNo:[],
- LeaveType: Object.values(this.GET_GLOBAL('dataDictionary').LeaveType).map(t => ({
- value: t.value,
- text: t.text
- })),
- CheckStatus: Object.values(this.GET_GLOBAL('dataDictionary').LeaveCheck).map(t => ({
- value: t.value,
- text: t.text
- })),
- },
-
- // 页面相关参数
- ready: false,
- tips: "加载中...",
- loadState: "向下翻以加载更多",
- sideOpen: false,
-
- // 列表与分页信息
- page: 1,
- total: 2,
- list: [],
- user: null,
- };
- },
-
- async onLoad() {
- await this.init();
- },
- onUnload() {
- this.OFF("EducationalAdministrationStuLeaveManagement-list-change");
- },
-
- methods: {
- // 页面初始化
- async init() {
- this.ON(
- "EducationalAdministrationStuLeaveManagement-list-change",
- this.refreshList
- );
-
- // 拉取加载列表和数据源
- await Promise.all([
- this.FETCH_DATASOURCE('bjsj').then(result => {
- this.dataSource.ClassNo = result.data.sort((a,b)=>{return b.classno-a.classno}).map(t => ({ text: t.classname, value: t.classno }))
- }),
- this.FETCH_DATASOURCE('EmpInfo').then(result => {
- this.dataSource.ClassDiredctorNo = result.data.sort((a,b)=>{return b.classno-a.classno}).map(t => ({ text: t.empname, value: t.empno }));
- }),
- this.FETCH_DATASOURCE('EmpInfo').then(result => {
- this.dataSource.ClassTutorNo = result.data.sort((a,b)=>{return b.classno-a.classno}).map(t => ({ text: t.empname, value: t.empno }));
- }),
- this.FETCH_DATASOURCE('EmpInfo').then(result => {
- this.dataSource.CheckUserNo = result.data.sort((a,b)=>{return b.classno-a.classno}).map(t => ({ text: t.empname, value: t.empno }));
- }),
- this.FETCH_DATASOURCE('CdDeptInfo').then(result => {
- this.dataSource.DeptNo = result.data.map(t => ({ text: t.deptname, value: t.deptno }));
- }),
- this.FETCH_DATASOURCE('CdMajorInfo').then(result => {
- this.dataSource.MajorNo = result.data.map(t => ({ text: t.majorname, value: t.majorno }));
- }),
-
-
- ]);
- await this.fetchList();
- // 初始化查询条件
- this.defaultQueryData = this.COPY(this.queryData);
- this.ready = true;
- },
-
- // 拉取列表
- async fetchList(isConcat = true) {
- if (this.page > this.total) {
- return;
- }
-
- const result = await this.HTTP_GET(
- "/Learun/adms/EducationalAdministration/StuLeaveManagement/pagelist", {
- // 这里 sidx 表示排序字段,sord 表示排序方式(DESC=降序,ASC=升序)
- // 代码生成器生成时默认按照主键排序,您可以修改成按创建时间的字段降序
- pagination: {
- rows: 10,
- page: this.page,
- sidx: "CreateTime",
- sord: "DESC"
- },
- queryJson: JSON.stringify(Object.assign(this.searchData, {
- StuNo: this.user.account
- })),
- },
- "加载数据时出错"
- );
-
- if (!result) {
- return;
- }
-
- this.total = result.total;
- this.page = result.page + 1;
- this.list = isConcat ? this.list.concat(result.rows) : result.rows;
-
- this.tips = `已加载 ${Math.min(result.page, result.total)} / ${
- result.total
- } 页,共 ${result.records} 项`;
- this.loadState =
- result.page >= result.total ? "已加载所有项目" : "向下翻以加载更多";
- },
-
- // 刷新清空列表
- async refreshList(isConcat = true) {
- this.page = 1;
- this.total = 2;
- this.list = [];
-
- await this.fetchList(isConcat);
- },
-
- // 列表下拉
- pullDown() {
- this.refreshList().then(() => {
- this.$refs.list.stopPullDown();
- });
- },
-
- // 设置搜索条件
- async searchChange() {
- const result = {};
-
- // 将其他查询项添加到查询 JSON 中
- const queryObj = pickBy(this.queryData, (t) =>
- Array.isArray(t) ? t.length > 0 : t
- );
- Object.assign(
- result,
- mapValues(queryObj, (t) => (Array.isArray(t) ? t.join(",") : t))
- );
-
- this.searchData = result;
- await this.refreshList(false);
- },
-
- // 点击「清空查询条件」按钮
- reset() {
- this.queryData = this.COPY(this.defaultQueryData);
- this.searchChange();
- },
-
- // 点击「编辑」、「查看」、「添加」、「删除」按钮
- async action(type, id = "") {
- switch (type) {
- case "view":
- this.NAV_TO(`./single?type=view&id=${id}`);
- return;
-
- case "add":
- this.NAV_TO("./single?type=create");
- return;
-
- case "edit":
- this.NAV_TO(`./single?type=edit&id=${id}`);
- return;
- case "join":
- // console.log(123);
- this.NAV_TO(`/pages/EducationalAdministration/StuLeaveManagement/list?meetId=${id}`);
- return;
-
- case "delete":
- if (!(await this.CONFIRM("删除项目", "确定要删除该项吗?", true))) {
- return;
- }
-
- this.HTTP_POST(
- "/Learun/adms/EducationalAdministration/StuLeaveManagement/delete",
- id,
- "删除失败"
- ).then((success) => {
- if (!success) {
- return;
- }
- this.TOAST("删除成功", "success");
- this.refreshList();
- });
- return;
-
- default:
- return;
- }
- },
-
- // 显示列表中的标题项
- displayListItem(item, field) {
- const fieldItem = this.scheme[field];
- const value = item[field];
-
- switch (fieldItem.type) {
- case "currentInfo":
- case "organize":
- return fieldItem.dataType === "time" ?
- value :
- get(this.GET_GLOBAL(fieldItem.dataType), `${value}.name`, "");
-
- case "radio":
- case "select":
- const selectItem = this.dataSource[field].find(
- (t) => t.value === String(value)
- );
- return get(selectItem, "text", "");
-
- case "checkbox":
- if (!value || value.split(",").length <= 0) {
- return "";
- }
- const checkboxItems = value.split(",");
- return this.dataSource[field]
- .filter((t) => checkboxItems.includes(t.value))
- .map((t) => t.text)
- .join(",");
-
- case "datetime":
- if (!value) {
- return "";
- }
- return moment(value).format(
- Number(fieldItem.dateformat) === 0 ?
- "YYYY年 M月 D日" :
- "YYYY-MM-DD HH:mm"
- );
-
- default:
- return value === null || value === undefined ? "" : value;
- }
- },
- // 审核状态
- CheckStatusitem(data) {
- if (data) {
- return data == '1' ? '通过' : '不通过'
- } else {
- return '申请中'
- }
- },
- // 请假类型审核
- LeaveTypeItem(data) {
-
- },
- itmeDel(data){
- var newDate = /\d{4}-\d{1,2}-\d{1,2}/g.exec(data)
- return newDate[0]
- }
- },
- created() {
- this.user = this.GET_GLOBAL('loginUser');
- }
- };
- </script>
-
-
- <style lang="less" scoped>
- @import "~@/common/css/sidepage.less";
- @import "~@/common/css/customlist.less";
- </style>
|