ysc 2 лет назад
Родитель
Сommit
8e3ab4b352
1 измененных файлов с 123 добавлено и 461 удалено
  1. 123 461
      src/views/dashboard/index.vue

+ 123 - 461
src/views/dashboard/index.vue

@@ -1,494 +1,128 @@
 <template>
   <div class="app-container">
-    <el-row :gutter="10">
-      <el-col :span="6">
-        <el-card class="card">
-          <div style="color: white;">
-            <h2>我的待办事项:{{ todoNum }}</h2>
+    <div class="head-tips">
+      <el-card class="card">
+        <div class="card-text" @click="">
+          <div class="card-left"><i class="el-icon-s-order"></i></div>
+          <div class="card-right">
+            <div class="card-text-title">待进行会议</div>
+            <div class="card-text-val">3</div>
           </div>
-        </el-card>
-      </el-col>
-      <el-col :span="6">
-        <el-card class="card" style="background-color: indianred">
-          <div style="color: white">
-            <h2>我的项目</h2>
+        </div>
+      </el-card>
+      <el-card class="card">
+        <div class="card-text" @click="">
+          <div class="card-left"><i class="el-icon-s-order"></i></div>
+          <div class="card-right">
+            <div class="card-text-title">待确认会议</div>
+            <div class="card-text-val">3</div>
           </div>
-        </el-card>
-      </el-col>
-      <el-col :span="6">
-        <el-card class="card" style="background-color:steelblue">
-          <div style="color: white;">
-            <h2>出勤状态:上班</h2>
+        </div>
+      </el-card>
+      <el-card class="card">
+        <div class="card-text" @click="newTaskOpen=!newTaskOpen">
+          <div class="card-left"><i class="el-icon-s-order"></i></div>
+          <div class="card-right">
+            <div class="card-text-title">新任务</div>
+            <div class="card-text-val">{{ newTaskNum }}</div>
           </div>
-        </el-card>
-      </el-col>
-      <el-col :span="6">
-        <el-card class="card" style="background-color:goldenrod">
-          <div style="color: white;">
-            <h2>其他事项</h2>
+        </div>
+      </el-card>
+      <el-card class="card" v-hasPermi="['task:task:audit']">
+        <div class="card-text" @click="">
+          <div class="card-left"><i class="el-icon-s-order"></i></div>
+          <div class="card-right">
+            <div class="card-text-title">待审核任务</div>
+            <div class="card-text-val">{{ auditTaskNum }}</div>
           </div>
-        </el-card>
-      </el-col>
-    </el-row>
-
-    <el-row :gutter="20" style="margin-top: 50px">
-      <el-col :span="24">
-        <h3>我的待办列表</h3>
-        <el-table
-          :data="tableData"
-          style="width: 100%" border stripe size="small">
-          <el-table-column label="实施待办">
-            <el-table-column type="index" label="序号" width="50" align="center">
-            </el-table-column>
-            <el-table-column
-              prop="name"
-              label="任务名称" align="center"
-              width="180">
-            </el-table-column>
-            <el-table-column
-              prop="hname"
-              label="实施医院" align="center"
-              width="180">
-            </el-table-column>
-            <el-table-column
-              prop="hsytem"
-              label="实施系统" align="center"
-              width="160">
-            </el-table-column>
-            <el-table-column
-              prop="content"
-              label="实施内容" align="center"
-              min-width="250">
-            </el-table-column>
-            <el-table-column
-              prop="taskName"
-              label="当前处理步骤" align="center"
-              width="150">
-            </el-table-column>
-            <el-table-column
-              prop="flowType"
-              label="流程类型" align="center"
-              width="100">
-            </el-table-column>
-            <el-table-column align="center"
-                             prop="createTime"
-                             label="创建时间" width="140">
-              <template scope="scope">
-                <span>{{parseTime(scope.row.createTime)}}</span>
-              </template>
-            </el-table-column>
-            <el-table-column prop="op" width="180" label="操作" align="center">
-              <template scope="scope">
-                <el-button size="mini" type="success" @click="searchWorkFlow(scope.row)">查阅流程</el-button>
-                <el-button size="mini" type="primary" @click="auditFlow(scope.row)">明细</el-button>
-              </template>
-            </el-table-column>
-          </el-table-column>
-        </el-table>
-
-        <br/>
-        <el-table
-          :data="todoMeetings"
-          border
-          stripe
-          size="mini"
-          style="width: 100%">
-          <el-table-column label="待办会议">
-            <el-table-column type="index" label="序号" width="50" align="center">
-            </el-table-column>
-            <el-table-column label="会议主题" prop="meetingName" align="center">
-            </el-table-column>
-            <el-table-column label="会议类型" prop="meetingType" width="100" align="center">
-              <template scope="scope">
-                <!--会议类型(1-周例会,2-项目会议,3-实施会议,4-其他会议)-->
-                <div v-if="scope.row.meetingType===1">周例会</div>
-                <div v-else-if="scope.row.meetingType===2">项目会议</div>
-                <div v-else-if="scope.row.meetingType===3">实施会议</div>
-                <div v-else>其他会议</div>
-              </template>
-            </el-table-column>
-            <el-table-column label="会议地点" prop="meetingPlace" width="120" align="center">
-            </el-table-column>
-            <el-table-column prop="status" label="会议状态" width="100" align="center">
-              <template scope="scope">
-                <!--会议状态,0待开始,1进行中,2已结束-->
-                <div v-if="scope.row.status===0" style="color: green">待开始</div>
-                <div v-else-if="scope.row.status===1" style="color: #3A71A8">进行中</div>
-                <div v-else>已结束</div>
-              </template>
-            </el-table-column>
-            <el-table-column prop="name" label="会议时间" width="255" align="center">
-              <template scope="scope">
-                <div>{{ scope.row.beginTime + '至' + scope.row.endTime }}</div>
-              </template>
-            </el-table-column>
-            <el-table-column prop="innerAttendees" label="参会人员" :show-overflow-tooltip="true" align="center">
-              <template scope="scope">
-                <span>{{ scope.row.outAttendees }}</span>
-                <span v-if="scope.row.outAttendees!=''">、</span>
-                <span v-for="(item,index) in JSON.parse(scope.row.innerAttendees) ">
-             <template v-if="index > 0">,</template>
-             <span>{{ item.name }}</span>
-           </span>
-              </template>
-            </el-table-column>
-            <el-table-column prop="createTime" label="创建时间" width="130" align="center">
-              <template slot-scope="scope">
-                <span>{{ parseTime(scope.row.createTime) }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column label="操作" width="110" align="center">
-              <template slot-scope="scope">
-                <el-button v-if="scope.row.status===2" type="primary" size="mini" @click="confirmMeeting(scope.row)">
-                  结果确认
-                </el-button>
-              </template>
-            </el-table-column>
-          </el-table-column>
-
-        </el-table>
-
-      </el-col>
-    </el-row>
-
-    <el-dialog :visible.sync="workFlowVisble" width="75%" style="height: 500px" title="实施流程明细" :close-on-click-modal="false">
-      <el-steps :active="activeFlow" finish-status="success" align-center>
-        <el-step title="开始"> </el-step>
-        <el-step title="项目启动会"/>
-        <el-step title="发货"/>
-        <el-step title="物流签收"/>
-        <el-step title="进入现场"/>
-        <el-step title="设备安装"/>
-        <el-step title="系统调试"/>
-        <el-step title="操作培训"/>
-        <el-step title="现场值守"/>
-        <el-step title="离场"/>
-        <el-step title="实施复盘"/>
-        <el-step title="文件归档"/>
-        <el-step title="运维维护"/>
-        <el-step title="结束"/>
-      </el-steps>
-    </el-dialog>
-
-    <!--处理实施工作任务--->
-    <el-dialog title="审批处理" :visible.sync="editEnforceFormVisible" width="65%" :close-on-click-modal="false">
-      <el-form label-width="120px" :model="enforceForm" size="mini">
-        <el-descriptions title="" :column="2" border size="mini">
-          <el-descriptions-item>
-            <template slot="label">
-              项目名称
-            </template>
-            {{ enforceFlow.name }}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label">
-              项目总负责人
-            </template>
-            {{ enforceFlow.enforcer }}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label">
-              实施医院
-            </template>
-            {{ enforceFlow.hno }}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label">
-              实施系统
-            </template>
-            {{ enforceFlow.hsytem }}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label">
-              实施时间
-            </template>
-            {{ enforceFlow.time }}
-          </el-descriptions-item>
-          <el-descriptions-item>
-            <template slot="label">
-              实施状态
-            </template>
-            <span style="color: darkred" v-if="enforceFlow.status===0">待开始</span>
-            <span style="color: green" v-else-if="enforceFlow.status===1">进行中</span>
-            <span style="color: darkblue" v-else="enforceFlow.status===2">已结束</span>
-          </el-descriptions-item>
-          <el-descriptions-item :span="2">
-            <template slot="label">
-              当前任务
-            </template>
-            {{ enforceFlow.flowType }}
-          </el-descriptions-item>
-          <el-descriptions-item :span="2">
-            <template slot="label">
-              实施内容
-            </template>
-            {{ enforceFlow.content }}
-          </el-descriptions-item>
-          <el-descriptions-item :span="2">
-            <template slot="label">
-              下个步骤负责人
-            </template>
-            <el-input size="small" v-model="enforceForm.director" :disabled="true" @keyup.enter.native="openUsers()">
-              <el-button @click="openUsers" icon="el-icon-search" slot="append"></el-button>
-            </el-input>
-          </el-descriptions-item>
-          <el-descriptions-item :span="2">
-            <template slot="label">
-              备注说明
-            </template>
-            <el-input size="small" v-model="enforceForm.remark" type="textarea" :rows="4"></el-input>
-          </el-descriptions-item>
-
-          <el-descriptions-item :span="2">
-            <template slot="label">
-              文件列表
-            </template>
-            <el-upload
-              ref="upload"
-              :action="fileAction"
-              :on-remove="handleRemove"
-              :on-success="handleSuccess"
-              :on-error="handleError"
-              name="file">
-              <el-button slot="trigger" size="mini" type="primary">选取文件</el-button>
-            </el-upload>
-          </el-descriptions-item>
-          <el-descriptions-item :span="2">
-            <template slot="label">
-              其他说明
-            </template>
-            <div id="editorElem" style="text-align:left" >
-            </div>
-          </el-descriptions-item>
-        </el-descriptions>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button size="mini" @click="closeEnforceDialog">取消</el-button>
-        <el-button size="mini" type="primary" class="title" @click="submitEnforceForm('editForm')">确定处理</el-button>
-      </div>
-    </el-dialog>
-
-
-    <el-dialog title="选择人员" :visible.sync="usersVisble" width="30%" @click="closeUserDialog"
-               :close-on-click-modal="false">
-      <el-tree
-        ref="dept"
-        :data="userList"
-        node-key="id"
-        :props="{label:'name'}" default-expand-all="true">
-      </el-tree>
-      <div slot="footer" class="dialog-footer">
-        <el-button size="small" @click="closeUserDialog">取消</el-button>
-        <el-button size="small" type="primary" class="title" @click="submitUserForm('editForm')">确定</el-button>
-      </div>
+        </div>
+      </el-card>
+      <el-card class="card">
+        <div class="card-text" @click="">
+          <div class="card-left"><i class="el-icon-s-order"></i></div>
+          <div class="card-right">
+            <div class="card-text-title">实施待办</div>
+            <div class="card-text-val">3</div>
+          </div>
+        </div>
+      </el-card>
+
+      <el-card class="card">
+        <div class="card-text" @click="">
+          <div class="card-left"><i class="el-icon-s-order"></i></div>
+          <div class="card-right">
+            <div class="card-text-title">运维提醒</div>
+            <div class="card-text-val">3</div>
+          </div>
+        </div>
+      </el-card>
+    </div>
+
+    <el-dialog title="新任务" :visible.sync="newTaskOpen" append-to-body :close-on-click-modal="false">
+      <el-table :data="newTasks" size="mini">
+        <el-table-column label="任务名称" prop="taskName" min-width="150" :show-overflow-tooltip="true"/>
+        <el-table-column label="执行(负责)人" prop="executorName"/>
+        <el-table-column label="任务起止时间" width="170">
+          <template slot-scope="scope">
+            <span>{{ scope.row.beginDate + ' 至 ' + scope.row.endDate }}</span>
+          </template>
+        </el-table-column>
+      </el-table>
     </el-dialog>
 
-    <meeting-detail :detail-form="meetingForm" @getTodoMeetingList="getTodoMeetingList"></meeting-detail>
+    <!--        <meeting-detail :detail-form="meetingForm" @getTodoMeetingList="getTodoMeetingList"></meeting-detail>-->
   </div>
 </template>
 
 <script>
-import E from 'wangeditor';
-let editor;
+
 import {mapGetters} from 'vuex'
 import Pagination from '@/components/Page/Pagination'
-import {completeTask, getPersonalTaskList} from '@/api/meeting/enforce'
-import {confirmMeetings, getTodoMeetings} from '@/api/meeting/meeting'
-import {getDeptUserTree} from '@/api/system/user'
-import {deleteFile, uploadFileUrl} from '@/api/file/file'
-import MeetingDetail from "@/views/meeting/components/meetingDetail";
+import {toDoTaskList} from "@/api/task/task";
+// import {completeTask, getPersonalTaskList} from '@/api/meeting/enforce'
+// import {confirmMeetings, getTodoMeetings} from '@/api/meeting/meeting'
 
 export default {
   name: 'Dashboard',
-  components: {
-    MeetingDetail,
-    Pagination
-  },
+  components: {},
   computed: {
     ...mapGetters([
       'name'
     ]),
-    todoNum() {
-      return this.tableData.length + this.todoMeetings.length
+    newTaskNum() {
+      return this.newTasks.length
+    },
+    auditTaskNum() {
+      return this.auditTasks.length
     }
   },
   data() {
     return {
-      usersVisble: false,
-      userList: [],
-      pageparm: {
-        current: 1,
-        size: 10,
-        total: 0
-      },
-      tableData: [],
-      todoMeetings: [],
-      meetingForm: {},
-      auditWin: false,
-      formData: {},
-      workFlowVisble: false,
-      activeFlow: 0,
-      editEnforceFormVisible: false,
-      enforceForm: {
-        id: null,
-        enforceId: null,
-        director: null,
-        directorId: null,
-        remark: null,
-        taskId: null,
-        currentStep: null,
-        filess: [],
-        content:null
-      },
-      enforceFlow: {
-        name: '',
-        enforcer: '',
-        time: null,
-        hno: null,
-        hsytem: null,
-        content: '',
-        status: 0,
-        flowType: null
-      },
-      fileAction: '',
-      editorContent:null
+      newTasks: [],
+      auditTasks: [],
+      newTaskOpen: false,
+      auditTaskOpen: false,
+
     }
   },
   mounted() {
-    this.getTaskList();
-    this.getTodoMeetingList();
-    this.getDeptUserTrees();
-    this.fileAction = uploadFileUrl()
-
+    this.getTodoTask();
   },
   methods: {
-    createwangeditor(){
-      editor = new E('#editorElem');
-      editor.config.height = 300
-      editor.create()
-      editor.config.onchange = (html) => {
-        this.enforceForm.content=editor.txt.html()
-      };
-    },
-    getDeptUserTrees() {
-      getDeptUserTree('').then(res => {
-        this.userList = res.data
-      });
-    },
-    // 分页插件事件
-    callFather(parm) {
-      this.formInline.current = parm.current
-      this.formInline.size = parm.size
-
-    },
-    getTaskList() {
-      getPersonalTaskList().then(res => {
-        this.tableData = res.data
+    getTodoTask() {
+      toDoTaskList().then(res => {
+        this.newTasks = res.data.newTasks
+        this.auditTasks = res.data.auditTasks
       })
+
     },
+
     getTodoMeetingList() {
       getTodoMeetings().then(res => {
         this.todoMeetings = res.data
       })
     },
-    searchWorkFlow(row) {
-      this.workFlowVisble = true
-      this.activeFlow = row.step
-    },
-    closeEnforceDialog() {
-      this.editEnforceFormVisible = false
-    },
-    auditFlow(row) {
-      this.enforceFlow.name = row.name
-      this.enforceFlow.enforcer = row.enforcer
-      this.enforceFlow.hno = row.hname
-      this.enforceFlow.hsytem = row.hsytem
-      this.enforceFlow.content = row.content
-      this.enforceFlow.time = row.beginTime + "至" + row.endTime
-      this.enforceFlow.status = row.status
-      this.enforceFlow.flowType = row.taskName
-      this.enforceForm.taskId = row.taskId
-      this.enforceForm.currentStep = row.step
-      this.enforceForm.enforceId = row.id
-     //
-      this.editEnforceFormVisible = true
-      this.$nextTick(()=>{
-        if (editor==null){
-          this.createwangeditor()
-        }else {
-          editor.destroy();//这里做了一次判断,判断编辑器是否被创建,如果创建了就先销毁。
-          this.createwangeditor()
-        }
-      });
 
-    },
-    openUsers() {
-      this.usersVisble = true
-    },
-    submitUserForm() {
-      //获取选中的节点
-      let node = this.$refs.dept.getCurrentNode();
-      if (node === undefined || node === null) {
-        this.$message({
-          message: '请选择数据!',
-          type: 'warning'
-        });
-        return;
-      }
-      if (node.type !== 'u') {
-        this.$message({
-          message: '请选择人员!',
-          type: 'warning'
-        });
-        return;
-      }
-      this.enforceForm.director = node.name
-      this.enforceForm.directorId = node.id
-      this.closeUserDialog();
-    },
-    closeUserDialog() {
-      this.usersVisble = false
-    },
-    handleRemove(file, fileList) {
-      let url = file.response.data.url;
-      deleteFile(url).then(res => {
-        this.$message({
-          message: '操作成功!',
-          type: 'success'
-        });
-      });
-      this.enforceForm.filess.splice(url);
-    },
-    handleSuccess(response, file, fileList) {
-      let fileUrl = response.data.url
-      this.enforceForm.filess.push(fileUrl)
-    },
-    handleError() {
-      this.$message({
-        message: '上传失败,请稍候再试!',
-        type: 'warning'
-      });
-    },
-    submitEnforceForm() {
-      let data = this.enforceForm;
-      if (data.director === '' || data.remark === null || data.remark === '') {
-        this.$message({
-          message: '请将表单信息填写完整!',
-          type: 'warning'
-        });
-        return
-      }
-
-      completeTask(data).then(res => {
-        this.$message({
-          message: '操作成功!',
-          type: 'success'
-        });
-        this.closeEnforceDialog();
-        this.getTaskList();
-      });
-
-    },
     confirmMeeting(row) {
       if (row.meetingType === 1) {
         let params = {
@@ -501,9 +135,6 @@ export default {
       this.meetingForm = row
 
     },
-    test(){
-      alert(1)
-    }
   }
 }
 </script>
@@ -520,13 +151,44 @@ export default {
   }
 }
 
+.head-tips {
+  display: flex;
+  flex-wrap: wrap;
+}
+
 .card {
-  width: 300px;
-  height: 150px;
-  background-color: #1ab394;
+  width: 200px;
+  height: 100px;
+  //background-color: #3F71A4;
+  margin: 10px;
   display: flex;
-  justify-content: center;
-  align-items: center;
+
+  .card-text {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+
+    .card-left {
+      font-size: 60px;
+      text-align: left;
+      color: #f7b51c;
+    }
+
+    .card-right {
+      margin-left: 20px;
+      text-align: center;
+    }
+
+    .card-text-title {
+      font-size: 13px;
+      margin-bottom: 10px;
+    }
+
+    .card-text-val {
+      font-size: 28px;
+      color: #9da0a3;
+    }
+  }
 }
 
 .el-form-item--mini.el-form-item, .el-form-item--small.el-form-item {