20200619-zlp-1
首页-一日流程学习树
This commit is contained in:
		| @@ -13,6 +13,10 @@ | ||||
|       <template v-if="device!=='mobile'"> | ||||
|         <search id="header-search" class="right-menu-item" /> | ||||
|  | ||||
|         <el-tooltip content="系统使用文档" effect="dark" placement="bottom"> | ||||
|           <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" /> | ||||
|         </el-tooltip> | ||||
|  | ||||
|         <screenfull id="screenfull" class="right-menu-item hover-effect" /> | ||||
|  | ||||
|         <el-tooltip content="布局大小" effect="dark" placement="bottom"> | ||||
| @@ -51,6 +55,7 @@ import Hamburger from "@/components/Hamburger"; | ||||
| import Screenfull from "@/components/Screenfull"; | ||||
| import SizeSelect from "@/components/SizeSelect"; | ||||
| import Search from "@/components/HeaderSearch"; | ||||
| import RuoYiDoc from '@/components/BenYi/Doc' | ||||
| import { getDeptsInfo } from "@/api/system/dept"; | ||||
|  | ||||
| export default { | ||||
| @@ -59,7 +64,8 @@ export default { | ||||
|     Hamburger, | ||||
|     Screenfull, | ||||
|     SizeSelect, | ||||
|     Search | ||||
|     Search, | ||||
|     RuoYiDoc | ||||
|   }, | ||||
|   computed: { | ||||
|     ...mapGetters(["sidebar", "avatar", "device"]), | ||||
|   | ||||
| @@ -3,14 +3,14 @@ | ||||
|     <el-row :gutter="20"> | ||||
|       <el-col :span="4" :xs="24"> | ||||
|         <div class="head-container"> | ||||
|           <!-- <el-input | ||||
|           <el-input | ||||
|             v-model="name" | ||||
|             placeholder="请输入课程名称" | ||||
|             placeholder="请输入名称" | ||||
|             clearable | ||||
|             size="small" | ||||
|             prefix-icon="el-icon-search" | ||||
|             style="margin-bottom: 20px" | ||||
|           /> --> | ||||
|           /> | ||||
|         </div> | ||||
|         <div class="head-container"> | ||||
|           <el-tree | ||||
| @@ -23,235 +23,49 @@ | ||||
|             @node-click="handleNodeClick" | ||||
|           /> | ||||
|         </div> | ||||
|       </el-col>   | ||||
|       <el-col :span="20" :xs="24"> | ||||
|         <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px"> | ||||
|           <el-form-item label="流程类型" prop="flowType"> | ||||
|             <el-select v-model="queryParams.flowType" placeholder="请选择类型" clearable size="small"> | ||||
|               <el-option | ||||
|                 v-for="dict in dayflowtypeOptions" | ||||
|                 :key="dict.dictValue" | ||||
|                 :label="dict.dictLabel" | ||||
|                 :value="dict.dictValue" | ||||
|               /> | ||||
|             </el-select> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="流程名称" prop="name"> | ||||
|             <el-input | ||||
|               v-model="queryParams.name" | ||||
|               placeholder="请输入名称" | ||||
|               clearable | ||||
|               size="small" | ||||
|               @keyup.enter.native="handleQuery" | ||||
|             /> | ||||
|           </el-form-item> | ||||
|           <el-form-item> | ||||
|             <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> | ||||
|             <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> | ||||
|           </el-form-item> | ||||
|         </el-form> | ||||
|  | ||||
|         <el-row :gutter="10" class="mb8"> | ||||
|           <el-col :span="1.5"> | ||||
|             <el-button | ||||
|               type="primary" | ||||
|               icon="el-icon-plus" | ||||
|               size="mini" | ||||
|               @click="handleAdd" | ||||
|               v-hasPermi="['benyi:dayflowmanger:add']" | ||||
|             >新增</el-button> | ||||
|           </el-col> | ||||
|           <el-col :span="1.5"> | ||||
|             <el-button | ||||
|               type="success" | ||||
|               icon="el-icon-edit" | ||||
|               size="mini" | ||||
|               :disabled="single" | ||||
|               @click="handleUpdate" | ||||
|               v-hasPermi="['benyi:dayflowmanger:edit']" | ||||
|             >修改</el-button> | ||||
|           </el-col> | ||||
|           <el-col :span="1.5"> | ||||
|             <el-button | ||||
|               type="danger" | ||||
|               icon="el-icon-delete" | ||||
|               size="mini" | ||||
|               :disabled="multiple" | ||||
|               @click="handleDelete" | ||||
|               v-hasPermi="['benyi:dayflowmanger:remove']" | ||||
|             >删除</el-button> | ||||
|           </el-col> | ||||
|         </el-row> | ||||
|  | ||||
|         <el-table v-loading="loading" :data="detailList" @selection-change="handleSelectionChange"> | ||||
|           <el-table-column type="selection" width="55" align="center" /> | ||||
|           <el-table-column label="流程ID" align="center" prop="id" /> | ||||
|           <el-table-column label="流程名称" align="center" :show-overflow-tooltip="true"> | ||||
|             <template slot-scope="scope"> | ||||
|               <router-link | ||||
|                 :to="'/dayflow/dayflowmanger/dayflowtask/' + scope.row.id" | ||||
|                 class="link-dayflow" | ||||
|               > | ||||
|                 <span>{{ scope.row.name }}</span> | ||||
|               </router-link> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|           <el-table-column label="流程序号" align="center" prop="sortNumber" /> | ||||
|           <el-table-column label="流程任务数量" align="center" prop="targetCount" /> | ||||
|           <el-table-column label="类型" align="center" prop="flowType" :formatter="dayflowtypeFormat" /> | ||||
|           <el-table-column label="创建时间" align="center" prop="createTime" width="180"> | ||||
|             <template slot-scope="scope"> | ||||
|               <span>{{ parseTime(scope.row.createTime) }}</span> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|           <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> | ||||
|             <template slot-scope="scope"> | ||||
|               <el-button | ||||
|                 size="mini" | ||||
|                 type="text" | ||||
|                 icon="el-icon-edit" | ||||
|                 @click="handleUpdate(scope.row)" | ||||
|                 v-hasPermi="['benyi:dayflowmanger:edit']" | ||||
|               >修改</el-button> | ||||
|               <el-button | ||||
|                 size="mini" | ||||
|                 type="text" | ||||
|                 icon="el-icon-delete" | ||||
|                 @click="handleDelete(scope.row)" | ||||
|                 v-hasPermi="['benyi:dayflowmanger:remove']" | ||||
|               >删除</el-button> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|         </el-table> | ||||
|  | ||||
|         <pagination | ||||
|           v-show="total>0" | ||||
|           :total="total" | ||||
|           :page.sync="queryParams.pageNum" | ||||
|           :limit.sync="queryParams.pageSize" | ||||
|           @pagination="getList" | ||||
|         /> | ||||
|       </el-col>   | ||||
|       </el-col> | ||||
|       <el-col :span="20" :xs="24">test</el-col> | ||||
|     </el-row> | ||||
|     <!-- 添加或修改一日流程对话框 --> | ||||
|     <el-dialog :title="title" :visible.sync="open" width="1024px"> | ||||
|       <el-form ref="form" :model="form" :rules="rules" label-width="80px"> | ||||
|         <el-form-item label="名称" prop="name"> | ||||
|           <el-input v-model="form.name" placeholder="请输入内容" /> | ||||
|         </el-form-item> | ||||
|         <el-form-item label="流程序号" prop="sortNumber"> | ||||
|           <el-input-number v-model="form.sortNumber" controls-position="right" :min="0" /> | ||||
|         </el-form-item> | ||||
|         <el-form-item label="类型" prop="flowType"> | ||||
|           <el-select v-model="form.flowType" placeholder="请选择类型"> | ||||
|             <el-option | ||||
|               v-for="dict in dayflowtypeOptions" | ||||
|               :key="dict.dictValue" | ||||
|               :label="dict.dictLabel" | ||||
|               :value="dict.dictValue" | ||||
|             /> | ||||
|           </el-select> | ||||
|         </el-form-item> | ||||
|         <el-form-item label="导言" prop="content">           | ||||
|            <Editor v-model="form.content" /> | ||||
|         </el-form-item> | ||||
|  | ||||
|         <el-form-item label="目的" prop="note"> | ||||
|           <Editor v-model="form.note" /> | ||||
|         </el-form-item> | ||||
|       </el-form> | ||||
|       <div slot="footer" class="dialog-footer"> | ||||
|         <el-button type="primary" @click="submitForm">确 定</el-button> | ||||
|         <el-button @click="cancel">取 消</el-button> | ||||
|       </div> | ||||
|     </el-dialog> | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import { | ||||
|   listDetail, | ||||
|   getDetail, | ||||
|   delDetail, | ||||
|   addDetail, | ||||
|   updateDetail | ||||
| } from "@/api/benyi/dayflow/dayflowmanger"; | ||||
| import Editor from "@/components/Editor"; | ||||
| import { listDetail, getDetail } from "@/api/benyi/dayflow/dayflowmanger"; | ||||
| import { treeselect } from "@/api/benyi/dayflow/dayflowmanger"; | ||||
| import Treeselect from "@riophae/vue-treeselect"; | ||||
| import "@riophae/vue-treeselect/dist/vue-treeselect.css"; | ||||
|  | ||||
| export default { | ||||
|   name: "Detail", | ||||
|   components: { | ||||
|     Editor | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       // 遮罩层 | ||||
|       loading: true, | ||||
|       // 选中数组 | ||||
|       ids: [], | ||||
|       // 非单个禁用 | ||||
|       single: true, | ||||
|       // 非多个禁用 | ||||
|       multiple: true, | ||||
|       // 总条数 | ||||
|       total: 0, | ||||
|       // 一日流程表格数据 | ||||
|       detailList: [], | ||||
|       // 弹出层标题 | ||||
|       title: "", | ||||
|       // 是否显示弹出层 | ||||
|       open: false, | ||||
|       //一日流程类型 | ||||
|       dayflowtypeOptions: [], | ||||
|       // 一日流程名称 | ||||
|       name: undefined, | ||||
|       // 树状显示类型 | ||||
|       treeOptions: [], | ||||
|       // 查询参数 | ||||
|       queryParams: { | ||||
|         pageNum: 1, | ||||
|         pageSize: 10, | ||||
|         name: undefined, | ||||
|         flowType: undefined, | ||||
|         createUser: undefined, | ||||
|         updateUser: undefined | ||||
|       }, | ||||
|       // 表单参数 | ||||
|       form: {}, | ||||
|       //树结构 | ||||
|       defaultProps: { | ||||
|         children: "children", | ||||
|         label: "label" | ||||
|       }, | ||||
|       // 表单校验 | ||||
|       rules: { | ||||
|         name: [{ required: true, message: "名称不能为空", trigger: "blur" }], | ||||
|         content: [{ required: true, message: "导言不能为空", trigger: "blur" }], | ||||
|         note: [{ required: true, message: "目的不能为空", trigger: "blur" }], | ||||
|         sortNumber: [ | ||||
|           { required: true, message: "流程序号不能为空", trigger: "blur" } | ||||
|         ], | ||||
|         flowType: [ | ||||
|           { required: true, message: "流程类型不能为空", trigger: "blur" } | ||||
|         ] | ||||
|       } | ||||
|     }; | ||||
|   }, | ||||
|   watch: { | ||||
|     // 根据名称筛选部门树 | ||||
|     name(val) { | ||||
|       this.$refs.tree.filter(val); | ||||
|     } | ||||
|   }, | ||||
|   created() { | ||||
|     this.getList(); | ||||
|     this.getTreeselect(); | ||||
|     this.getDicts("sys_dayflow_type").then(response => { | ||||
|       this.dayflowtypeOptions = response.data; | ||||
|        | ||||
|     }); | ||||
|   }, | ||||
|   methods: { | ||||
|     /** 查询部门下拉树结构 */ | ||||
|     getTreeselect() { | ||||
|       treeselect().then(response => { | ||||
|         this.treeOptions = response.data; | ||||
|         console.log(this.treeOptions); | ||||
|       }); | ||||
|     }, | ||||
|     // 筛选节点 | ||||
| @@ -261,124 +75,6 @@ export default { | ||||
|     }, | ||||
|     // 节点单击事件 | ||||
|     handleNodeClick(data) { | ||||
|       this.queryParams.id = data.id; | ||||
|       this.getList(); | ||||
|     }, | ||||
|     /** 查询一日流程列表 */ | ||||
|     getList() { | ||||
|       this.loading = true; | ||||
|       listDetail(this.queryParams).then(response => { | ||||
|         this.detailList = response.rows; | ||||
|         this.total = response.total; | ||||
|         this.loading = false; | ||||
|       }); | ||||
|     }, | ||||
|     // 流程类型--字典状态字典翻译 | ||||
|     dayflowtypeFormat(row, column) { | ||||
|       return this.selectDictLabel(this.dayflowtypeOptions, row.flowType); | ||||
|     }, | ||||
|     // 取消按钮 | ||||
|     cancel() { | ||||
|       this.open = false; | ||||
|       this.reset(); | ||||
|     }, | ||||
|     // 表单重置 | ||||
|     reset() { | ||||
|       this.form = { | ||||
|         id: undefined, | ||||
|         sortNumber: 0, | ||||
|         targetCount: undefined, | ||||
|         name: undefined, | ||||
|         content: undefined, | ||||
|         note: undefined, | ||||
|         flowType: undefined, | ||||
|         createUser: undefined, | ||||
|         updateUser: undefined, | ||||
|         createTime: undefined, | ||||
|         updateTime: undefined | ||||
|       }; | ||||
|       this.resetForm("form"); | ||||
|     }, | ||||
|     /** 搜索按钮操作 */ | ||||
|     handleQuery() { | ||||
|       this.queryParams.pageNum = 1; | ||||
|       this.getList(); | ||||
|     }, | ||||
|     /** 重置按钮操作 */ | ||||
|     resetQuery() { | ||||
|       this.resetForm("queryForm"); | ||||
|       this.handleQuery(); | ||||
|     }, | ||||
|     // 多选框选中数据 | ||||
|     handleSelectionChange(selection) { | ||||
|       this.ids = selection.map(item => item.id); | ||||
|       this.single = selection.length != 1; | ||||
|       this.multiple = !selection.length; | ||||
|     }, | ||||
|     /** 新增按钮操作 */ | ||||
|     handleAdd() { | ||||
|       this.reset(); | ||||
|       this.open = true; | ||||
|       this.title = "添加一日流程"; | ||||
|     }, | ||||
|     /** 修改按钮操作 */ | ||||
|     handleUpdate(row) { | ||||
|       this.reset(); | ||||
|       const id = row.id || this.ids; | ||||
|       getDetail(id).then(response => { | ||||
|         this.form = response.data; | ||||
|         this.open = true; | ||||
|         this.title = "修改一日流程"; | ||||
|       }); | ||||
|     }, | ||||
|     /** 提交按钮 */ | ||||
|     submitForm: function() { | ||||
|       this.$refs["form"].validate(valid => { | ||||
|         if (valid) { | ||||
|           if (this.form.id != undefined) { | ||||
|             updateDetail(this.form).then(response => { | ||||
|               if (response.code === 200) { | ||||
|                 this.msgSuccess("修改成功"); | ||||
|                 this.open = false; | ||||
|                 this.getList(); | ||||
|               } else { | ||||
|                 this.msgError(response.msg); | ||||
|               } | ||||
|             }); | ||||
|           } else { | ||||
|             addDetail(this.form).then(response => { | ||||
|               if (response.code === 200) { | ||||
|                 this.msgSuccess("新增成功"); | ||||
|                 this.open = false; | ||||
|                 this.getList(); | ||||
|               } else { | ||||
|                 this.msgError(response.msg); | ||||
|               } | ||||
|             }); | ||||
|           } | ||||
|         } | ||||
|       }); | ||||
|     }, | ||||
|     /** 删除按钮操作 */ | ||||
|     handleDelete(row) { | ||||
|       const ids = row.id || this.ids; | ||||
|       this.$confirm( | ||||
|         '是否确认删除一日流程编号为"' + ids + '"的数据项?', | ||||
|         "警告", | ||||
|         { | ||||
|           confirmButtonText: "确定", | ||||
|           cancelButtonText: "取消", | ||||
|           type: "warning" | ||||
|         } | ||||
|       ) | ||||
|         .then(function() { | ||||
|           return delDetail(ids); | ||||
|         }) | ||||
|         .then(() => { | ||||
|           this.getList(); | ||||
|           this.msgSuccess("删除成功"); | ||||
|         }) | ||||
|         .catch(function() {}); | ||||
|     } | ||||
|   } | ||||
| }; | ||||
|   | ||||
| @@ -1,95 +1,147 @@ | ||||
| <template> | ||||
|   <div :class="className" :style="{height:height,width:width}" /> | ||||
|   <div :class="className" :style="{height:height,width:width}"> | ||||
|     <el-row :gutter="24"> | ||||
|       <el-col :span="24" :xs="24"> | ||||
|         <div> | ||||
|           <FullCalendar | ||||
|             ref="fullCalendar" | ||||
|             defaultView="dayGridMonth" | ||||
|             locale="zh-cn"  | ||||
|             :buttonText="buttonText" | ||||
|             :plugins="calendarPlugins" | ||||
|             :events="calendarEvents" | ||||
|             :eventLimit="true" | ||||
|             :displayEventEnd="true" | ||||
|             eventLimitText="更多" | ||||
|             @eventClick="handleEventClick" | ||||
|           /> | ||||
|         </div> | ||||
|       </el-col> | ||||
|     </el-row> | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import echarts from 'echarts' | ||||
| require('echarts/theme/macarons') // echarts theme | ||||
| import resize from './mixins/resize' | ||||
|  | ||||
| const animationDuration = 6000 | ||||
|  | ||||
| import FullCalendar from "@fullcalendar/vue"; | ||||
| import dayGridPlugin from "@fullcalendar/daygrid"; | ||||
| import timeGridPlugin from "@fullcalendar/timegrid"; | ||||
| import interactionPlugin from "@fullcalendar/interaction"; | ||||
| import listPlugin from "@fullcalendar/list"; | ||||
| import { getAllSchoolCalendars } from "@/api/benyi/calendar"; | ||||
| export default { | ||||
|   mixins: [resize], | ||||
|   name: "fullcalendar_page", | ||||
|   components: { | ||||
|     FullCalendar | ||||
|   }, | ||||
|   props: { | ||||
|     className: { | ||||
|       type: String, | ||||
|       default: 'chart' | ||||
|       default: "chart" | ||||
|     }, | ||||
|     width: { | ||||
|       type: String, | ||||
|       default: '100%' | ||||
|       default: "100%" | ||||
|     }, | ||||
|     height: { | ||||
|       type: String, | ||||
|       default: '300px' | ||||
|       default: "480px" | ||||
|     } | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       chart: null | ||||
|        header: { | ||||
|         left: "prev,next today", | ||||
|         center: "title", | ||||
|         right: "dayGridMonth, listWeek" | ||||
|       }, | ||||
|       buttonText: { | ||||
|         today: "今天", | ||||
|         month: "月", | ||||
|         list: "周列表" | ||||
|       }, | ||||
|       calendarPlugins: [ | ||||
|         // plugins must be defined in the JS | ||||
|         dayGridPlugin, | ||||
|         //timeGridPlugin, | ||||
|         //interactionPlugin, // needed for dateClick | ||||
|         listPlugin | ||||
|       ], | ||||
|       calendarWeekends: true, | ||||
|       calendarEvents: [ | ||||
|         // initial event data | ||||
|         // { | ||||
|         //   title: 'Event Now', | ||||
|         //   start: new Date(), | ||||
|         //   color: '#A61000' | ||||
|         // } | ||||
|       ], | ||||
|       calendarApi: null, | ||||
|       calendarData: [], | ||||
|       queryParams: {} | ||||
|     }; | ||||
|   }, | ||||
|   created() { | ||||
|     getAllSchoolCalendars(this.queryParams).then(response => { | ||||
|       this.calendarEvents = response.calendarData; | ||||
|     }); | ||||
|   }, | ||||
|   methods: { | ||||
|     handleEventClick(info) { | ||||
|       this.msgSuccess("活动: " + info.event.title); | ||||
|     } | ||||
|   }, | ||||
|   mounted() { | ||||
|     this.$nextTick(() => { | ||||
|       this.initChart() | ||||
|     }) | ||||
|   }, | ||||
|   beforeDestroy() { | ||||
|     if (!this.chart) { | ||||
|       return | ||||
|     } | ||||
|     this.chart.dispose() | ||||
|     this.chart = null | ||||
|   }, | ||||
|   methods: { | ||||
|     initChart() { | ||||
|       this.chart = echarts.init(this.$el, 'macarons') | ||||
|     this.calendarApi = this.$refs.fullCalendar.getApi(); | ||||
|   } | ||||
| }; | ||||
| </script> | ||||
|  | ||||
|       this.chart.setOption({ | ||||
|         tooltip: { | ||||
|           trigger: 'axis', | ||||
|           axisPointer: { // 坐标轴指示器,坐标轴触发有效 | ||||
|             type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' | ||||
|           } | ||||
|         }, | ||||
|         grid: { | ||||
|           top: 10, | ||||
|           left: '2%', | ||||
|           right: '2%', | ||||
|           bottom: '3%', | ||||
|           containLabel: true | ||||
|         }, | ||||
|         xAxis: [{ | ||||
|           type: 'category', | ||||
|           data: ['班级A', '班级B', '班级C', '班级D', '班级E', '班级F', '班级G'], | ||||
|           axisTick: { | ||||
|             alignWithLabel: true | ||||
|           } | ||||
|         }], | ||||
|         yAxis: [{ | ||||
|           type: 'value', | ||||
|           axisTick: { | ||||
|             show: false | ||||
|           } | ||||
|         }], | ||||
|         series: [{ | ||||
|           name: '幼儿出勤率', | ||||
|           type: 'bar', | ||||
|           stack: 'vistors', | ||||
|           barWidth: '60%', | ||||
|           data: [30, 29, 28, 31, 33, 18, 20], | ||||
|           animationDuration | ||||
|         }, { | ||||
|           name: '教师出勤率', | ||||
|           type: 'bar', | ||||
|           stack: 'vistors', | ||||
|           barWidth: '60%', | ||||
|           data: [3, 3, 3, 3, 2, 3, 3], | ||||
|           animationDuration | ||||
|         }] | ||||
|       }) | ||||
| <style  lang="scss" scope> | ||||
| // you must include each plugins' css | ||||
| // paths prefixed with ~ signify node_modules | ||||
| @import "~@fullcalendar/core/main.css"; | ||||
| @import "~@fullcalendar/daygrid/main.css"; | ||||
| @import "~@fullcalendar/timegrid/main.css"; | ||||
| @import "~@fullcalendar/list/main.css"; | ||||
| .calendar { | ||||
|   width: 820px; | ||||
|   height: 100%; | ||||
| } | ||||
| .fc-widget-content { | ||||
|   .fc-sun, | ||||
|   .fc-sat { | ||||
|     background: rgba(245, 246, 248, 0.6); | ||||
|     //background: rgba(109, 113, 121, 0.6); | ||||
|   } | ||||
| } | ||||
| .xs-btns-style { | ||||
|   @media screen and (max-width: 768px) { | ||||
|     display: flex; | ||||
|     flex-wrap: wrap; | ||||
|     .el-col { | ||||
|       width: auto; | ||||
|     } | ||||
|   } | ||||
|   @media screen and (min-width: 769px) { | ||||
|   } | ||||
|   .el-col { | ||||
|     margin-bottom: 10px; | ||||
|     text-align: center; | ||||
|   } | ||||
| } | ||||
| .btn { | ||||
|   width: 96px; | ||||
| } | ||||
| .no-border-btn { | ||||
|   border: none; | ||||
| } | ||||
| .fc-header-toolbar { | ||||
|   @media screen and (max-width: 768px) { | ||||
|     .fc-left > .fc-today-button, | ||||
|     .fc-right > .fc-listWeek-button { | ||||
|       display: none; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
| </style> | ||||
|  | ||||
|   | ||||
| @@ -23,7 +23,7 @@ export default { | ||||
|     }, | ||||
|     height: { | ||||
|       type: String, | ||||
|       default: "300px" | ||||
|       default: "480px" | ||||
|     } | ||||
|   }, | ||||
|   data() { | ||||
|   | ||||
| @@ -1,116 +1,75 @@ | ||||
| <template> | ||||
|   <div :class="className" :style="{height:height,width:width}" /> | ||||
|   <el-card :class="className" :style="{height:height,width:width}"> | ||||
|     <div slot="header" class="clearfix"> | ||||
|       <span>欢迎来到 {{deptName}} 管理系统</span> | ||||
|     </div> | ||||
|     <div class="text item">班级总数:{{classTotal}}</div> | ||||
|     <div class="text item">教职工总数:{{userTotal}}</div> | ||||
|     <div class="text item">幼儿总数:0</div> | ||||
|     <div class="text item">今日园历活动数:0</div> | ||||
|     <div class="text item">学习视频数:0</div> | ||||
|   </el-card> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import echarts from 'echarts' | ||||
| require('echarts/theme/macarons') // echarts theme | ||||
| import resize from './mixins/resize' | ||||
|  | ||||
| const animationDuration = 3000 | ||||
| import { listUser, getUserProfile } from "@/api/system/user"; | ||||
| import { listClass } from "@/api/system/class"; | ||||
|  | ||||
| export default { | ||||
|   mixins: [resize], | ||||
|   props: { | ||||
|     className: { | ||||
|       type: String, | ||||
|       default: 'chart' | ||||
|       default: "chart" | ||||
|     }, | ||||
|     width: { | ||||
|       type: String, | ||||
|       default: '100%' | ||||
|       default: "100%" | ||||
|     }, | ||||
|     height: { | ||||
|       type: String, | ||||
|       default: '300px' | ||||
|       default: "480px" | ||||
|     } | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       chart: null | ||||
|     } | ||||
|       deptName: {}, | ||||
|       classTotal: 0, | ||||
|       userTotal: 0 | ||||
|     }; | ||||
|   }, | ||||
|   mounted() { | ||||
|     this.$nextTick(() => { | ||||
|       this.initChart() | ||||
|     }) | ||||
|   }, | ||||
|   beforeDestroy() { | ||||
|     if (!this.chart) { | ||||
|       return | ||||
|     } | ||||
|     this.chart.dispose() | ||||
|     this.chart = null | ||||
|   created() { | ||||
|     this.getDeptName(); | ||||
|     this.getClassCount(); | ||||
|     this.getUserCount(); | ||||
|   }, | ||||
|   methods: { | ||||
|     initChart() { | ||||
|       this.chart = echarts.init(this.$el, 'macarons') | ||||
|  | ||||
|       this.chart.setOption({ | ||||
|         tooltip: { | ||||
|           trigger: 'axis', | ||||
|           axisPointer: { // 坐标轴指示器,坐标轴触发有效 | ||||
|             type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' | ||||
|           } | ||||
|         }, | ||||
|         radar: { | ||||
|           radius: '66%', | ||||
|           center: ['50%', '42%'], | ||||
|           splitNumber: 8, | ||||
|           splitArea: { | ||||
|             areaStyle: { | ||||
|               color: 'rgba(127,95,132,.3)', | ||||
|               opacity: 1, | ||||
|               shadowBlur: 45, | ||||
|               shadowColor: 'rgba(0,0,0,.5)', | ||||
|               shadowOffsetX: 0, | ||||
|               shadowOffsetY: 15 | ||||
|             } | ||||
|           }, | ||||
|           indicator: [ | ||||
|             { name: 'Sales', max: 10000 }, | ||||
|             { name: 'Administration', max: 20000 }, | ||||
|             { name: 'Information Techology', max: 20000 }, | ||||
|             { name: 'Customer Support', max: 20000 }, | ||||
|             { name: 'Development', max: 20000 }, | ||||
|             { name: 'Marketing', max: 20000 } | ||||
|           ] | ||||
|         }, | ||||
|         legend: { | ||||
|           left: 'center', | ||||
|           bottom: '10', | ||||
|           data: ['Allocated Budget', 'Expected Spending', 'Actual Spending'] | ||||
|         }, | ||||
|         series: [{ | ||||
|           type: 'radar', | ||||
|           symbolSize: 0, | ||||
|           areaStyle: { | ||||
|             normal: { | ||||
|               shadowBlur: 13, | ||||
|               shadowColor: 'rgba(0,0,0,.2)', | ||||
|               shadowOffsetX: 0, | ||||
|               shadowOffsetY: 10, | ||||
|               opacity: 1 | ||||
|             } | ||||
|           }, | ||||
|           data: [ | ||||
|             { | ||||
|               value: [5000, 7000, 12000, 11000, 15000, 14000], | ||||
|               name: 'Allocated Budget' | ||||
|             }, | ||||
|             { | ||||
|               value: [4000, 9000, 15000, 15000, 13000, 11000], | ||||
|               name: 'Expected Spending' | ||||
|             }, | ||||
|             { | ||||
|               value: [5500, 11000, 12000, 15000, 12000, 12000], | ||||
|               name: 'Actual Spending' | ||||
|             } | ||||
|           ], | ||||
|           animationDuration: animationDuration | ||||
|         }] | ||||
|       }) | ||||
|     getDeptName() { | ||||
|       getUserProfile().then(response => { | ||||
|         this.deptName = response.data.dept.deptName; | ||||
|       }); | ||||
|     }, | ||||
|     /** 查询班级信息列表 */ | ||||
|     getClassCount() { | ||||
|       listClass(null).then(response => { | ||||
|         this.classTotal = response.total; | ||||
|       }); | ||||
|     }, | ||||
|     /** 查询用户列表 */ | ||||
|     getUserCount() { | ||||
|       listUser(null).then(response => { | ||||
|         this.userTotal = response.total; | ||||
|       }); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| }; | ||||
| </script> | ||||
|  | ||||
| <style> | ||||
| .text { | ||||
|   font-size: 14px; | ||||
| } | ||||
|  | ||||
| .item { | ||||
|   margin-bottom: 18px; | ||||
| } | ||||
| </style> | ||||
|   | ||||
| @@ -477,7 +477,7 @@ export default { | ||||
|     getTreeselect() { | ||||
|       treeselect().then(response => { | ||||
|         this.deptOptions = response.data; | ||||
|         console.log(this.deptOptions); | ||||
|         //console.log(this.deptOptions); | ||||
|       }); | ||||
|     }, | ||||
|     // 筛选节点 | ||||
|   | ||||
| @@ -44,7 +44,7 @@ public class ByDayFlowDetailController extends BaseController | ||||
|     { | ||||
|         startPage(); | ||||
|         List<ByDayFlowDetail> list = byDayFlowDetailService.selectByDayFlowDetailList(byDayFlowDetail); | ||||
|         System.out.println("-------------------------------"+list); | ||||
|         //System.out.println("-------------------------------"+list); | ||||
|         return getDataTable(list); | ||||
|     } | ||||
|  | ||||
| @@ -76,7 +76,7 @@ public class ByDayFlowDetailController extends BaseController | ||||
|      */ | ||||
|     @GetMapping("/treeselect") | ||||
|     public AjaxResult treeselect(ByDayFlowDetail byDayFlowDetail) { | ||||
|         List<ByDayFlowDetail> byDayFlowDetails = byDayFlowDetailService.selectByDayFlowDetailList(byDayFlowDetail); | ||||
|         List<ByDayFlowDetail> byDayFlowDetails = byDayFlowDetailService.selectByDayFlowDetailListTree(byDayFlowDetail); | ||||
|         return AjaxResult.success(byDayFlowDetailService.buildDayFlowDetailTreeSelect(byDayFlowDetails)); | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -22,7 +22,7 @@ public class ByDayFlowDetail extends BaseEntity | ||||
|     private Long id; | ||||
|  | ||||
|     /** 树状父类ID */ | ||||
|     private Long parentid; | ||||
|     private Long parentId; | ||||
|  | ||||
|     /** 树状子类 */ | ||||
|     private List<ByDayFlowDetail> children = new ArrayList<ByDayFlowDetail>(); | ||||
| @@ -155,16 +155,16 @@ public class ByDayFlowDetail extends BaseEntity | ||||
|             .append("updateUser", getUpdateUser()) | ||||
|             .append("createTime", getCreateTime()) | ||||
|             .append("updateTime", getUpdateTime()) | ||||
|             .append("parentid", getParentid()) | ||||
|             .append("parentid", getParentId()) | ||||
|             .toString(); | ||||
|     } | ||||
|  | ||||
|     public Long getParentid() { | ||||
|         return parentid; | ||||
|     public Long getParentId() { | ||||
|         return parentId; | ||||
|     } | ||||
|  | ||||
|     public void setParentid(Long parentid) { | ||||
|         this.parentid = parentid; | ||||
|     public void setParentId(Long parentId) { | ||||
|         this.parentId = parentId; | ||||
|     } | ||||
|  | ||||
|     public List<ByDayFlowDetail> getChildren() { | ||||
|   | ||||
| @@ -27,6 +27,14 @@ public interface ByDayFlowDetailMapper | ||||
|      */ | ||||
|     public List<ByDayFlowDetail> selectByDayFlowDetailList(ByDayFlowDetail byDayFlowDetail); | ||||
|  | ||||
|     /** | ||||
|      * 查询一日流程树 | ||||
|      * | ||||
|      * @param byDayFlowDetail 一日流程 | ||||
|      * @return 一日流程树集合 | ||||
|      */ | ||||
|     public List<ByDayFlowDetail> selectByDayFlowDetailListTree(ByDayFlowDetail byDayFlowDetail); | ||||
|  | ||||
|     /** | ||||
|      * 根据ID查询所有子部门 | ||||
|      * | ||||
|   | ||||
| @@ -29,6 +29,14 @@ public interface IByDayFlowDetailService | ||||
|      */ | ||||
|     public List<ByDayFlowDetail> selectByDayFlowDetailList(ByDayFlowDetail byDayFlowDetail); | ||||
|  | ||||
|     /** | ||||
|      * 查询一日流程列表树 | ||||
|      * | ||||
|      * @param byDayFlowDetail 一日流程 | ||||
|      * @return 一日流程树集合 | ||||
|      */ | ||||
|     public List<ByDayFlowDetail> selectByDayFlowDetailListTree(ByDayFlowDetail byDayFlowDetail); | ||||
|  | ||||
|     /** | ||||
|      * 构建前端所需要树结构 | ||||
|      * | ||||
|   | ||||
| @@ -50,6 +50,18 @@ public class ByDayFlowDetailServiceImpl implements IByDayFlowDetailService | ||||
|         return byDayFlowDetailMapper.selectByDayFlowDetailList(byDayFlowDetail); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 查询一日流程列表树 | ||||
|      * | ||||
|      * @param byDayFlowDetail 一日流程 | ||||
|      * @return 一日流程树集合 | ||||
|      */ | ||||
|     @Override | ||||
|     public List<ByDayFlowDetail> selectByDayFlowDetailListTree(ByDayFlowDetail byDayFlowDetail) | ||||
|     { | ||||
|         return byDayFlowDetailMapper.selectByDayFlowDetailListTree(byDayFlowDetail); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 构建前端所需要树结构 | ||||
|      * | ||||
| @@ -58,17 +70,19 @@ public class ByDayFlowDetailServiceImpl implements IByDayFlowDetailService | ||||
|      */ | ||||
|     @Override | ||||
|     public List<ByDayFlowDetail> buildDayFlowDetailTree(List<ByDayFlowDetail> byDayFlowDetails) { | ||||
|         System.out.println("start---"); | ||||
|         List<ByDayFlowDetail> returnList = new ArrayList<ByDayFlowDetail>(); | ||||
|         List<Long> tempList = new ArrayList<Long>(); | ||||
|         for (ByDayFlowDetail byDayFlowDetail : byDayFlowDetails) | ||||
|         { | ||||
|             tempList.add(byDayFlowDetail.getParentid()); | ||||
|             tempList.add(byDayFlowDetail.getId()); | ||||
|         } | ||||
|         for (Iterator<ByDayFlowDetail> iterator = byDayFlowDetails.iterator(); iterator.hasNext();) | ||||
|         { | ||||
|             ByDayFlowDetail byDayFlowDetail = (ByDayFlowDetail) iterator.next(); | ||||
|             System.out.println("test==="+!tempList.contains(byDayFlowDetail.getParentId())); | ||||
|             // 如果是顶级节点, 遍历该父节点的所有子节点 | ||||
|             if (!tempList.contains(byDayFlowDetail.getParentid())) | ||||
|             if (!tempList.contains(byDayFlowDetail.getParentId())) | ||||
|             { | ||||
|                 recursionFn(byDayFlowDetails, byDayFlowDetail); | ||||
|                 returnList.add(byDayFlowDetail); | ||||
| @@ -127,8 +141,9 @@ public class ByDayFlowDetailServiceImpl implements IByDayFlowDetailService | ||||
|         while (it.hasNext()) | ||||
|         { | ||||
|             ByDayFlowDetail n = (ByDayFlowDetail) it.next(); | ||||
|             if (StringUtils.isNotNull(n.getParentid()) && n.getParentid().longValue() == t.getId().longValue()) | ||||
|             if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getId().longValue()) | ||||
|             { | ||||
|                 //System.out.println("parentid="+n.getParentId().longValue()+"---"+t.getId().longValue()); | ||||
|                 tlist.add(n); | ||||
|             } | ||||
|         } | ||||
|   | ||||
| @@ -42,7 +42,7 @@ public class ByClassController extends BaseController { | ||||
|     /** | ||||
|      * 查询班级信息列表 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:class:list')") | ||||
|     @PreAuthorize("@ss.hasPermi('system:class:list')"+ "||@ss.hasPermi('system:school:list')") | ||||
|     @GetMapping("/list") | ||||
|     public TableDataInfo list(ByClass byClass) { | ||||
|         startPage(); | ||||
|   | ||||
| @@ -65,7 +65,7 @@ public class ByTeacherJbxxController extends BaseController | ||||
|     /** | ||||
|      * 查询教师基本信息列表 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:teacher:list')") | ||||
|     @PreAuthorize("@ss.hasPermi('system:teacher:list')"+ "||@ss.hasPermi('system:user:list')") | ||||
|     @GetMapping("/listgroupxw") | ||||
|     public TableDataInfo listGroupXw(ByTeacherJbxx byTeacherJbxx) | ||||
|     { | ||||
|   | ||||
| @@ -7,6 +7,7 @@ | ||||
|     <resultMap type="ByDayFlowDetail" id="ByDayFlowDetailResult"> | ||||
|         <result property="id" column="id"/> | ||||
|         <result property="sortNumber" column="sort_number"/> | ||||
|         <result property="parentId" column="parent_id"/> | ||||
|         <result property="targetCount" column="target_count"/> | ||||
|         <result property="name" column="name"/> | ||||
|         <result property="content" column="content"/> | ||||
| @@ -23,6 +24,13 @@ | ||||
|         from by_day_flow_detail | ||||
|     </sql> | ||||
|  | ||||
|     <sql id="selectByDayFlowDetailsVo"> | ||||
|         select * from( | ||||
| select dict_value+9999 id,dict_label name,0 parent_id,dict_sort sort_number from sys_dict_data where dict_type='sys_dayflow_type' | ||||
| union all | ||||
| select id,name,flow_type+9999,sort_number from by_day_flow_detail ) t | ||||
|     </sql> | ||||
|  | ||||
|     <select id="selectByDayFlowDetailList" parameterType="ByDayFlowDetail" resultMap="ByDayFlowDetailResult"> | ||||
|         <include refid="selectByDayFlowDetailVo"/> | ||||
|         <where> | ||||
| @@ -37,6 +45,20 @@ | ||||
|         </where> | ||||
|     </select> | ||||
|  | ||||
|     <select id="selectByDayFlowDetailListTree" parameterType="ByDayFlowDetail" resultMap="ByDayFlowDetailResult"> | ||||
|         <include refid="selectByDayFlowDetailsVo"/> | ||||
|         <where> | ||||
|             <if test="sortNumber != null ">and sort_number = #{sortNumber}</if> | ||||
|             <if test="targetCount != null ">and target_count = #{targetCount}</if> | ||||
|             <if test="name != null  and name != ''">and name like concat('%', #{name}, '%')</if> | ||||
|             <if test="content != null  and content != ''">and content = #{content}</if> | ||||
|             <if test="note != null  and note != ''">and note = #{note}</if> | ||||
|             <if test="flowType != null ">and flow_type = #{flowType}</if> | ||||
|             <if test="createUser != null ">and create_user = #{createUser}</if> | ||||
|             <if test="updateUser != null ">and update_user = #{updateUser}</if> | ||||
|         </where> | ||||
|     </select> | ||||
|  | ||||
|     <select id="selectByDayFlowDetailById" parameterType="Long" resultMap="ByDayFlowDetailResult"> | ||||
|         <include refid="selectByDayFlowDetailVo"/> | ||||
|         where id = #{id} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user