humingbo 2 лет назад
Родитель
Сommit
8096ff9173
2 измененных файлов с 538 добавлено и 3 удалено
  1. 535 0
      src/views/dashboard/index_bak.vue
  2. 3 3
      src/views/enforceflow/enforceflow.vue

+ 535 - 0
src/views/dashboard/index_bak.vue

@@ -0,0 +1,535 @@
+<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>
+        </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-col>
+      <el-col :span="6">
+        <el-card class="card" style="background-color:steelblue">
+          <div style="color: white;">
+            <h2>出勤状态:上班</h2>
+          </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-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>
+    </el-dialog>
+
+    <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";
+
+export default {
+  name: 'Dashboard',
+  components: {
+    MeetingDetail,
+    Pagination
+  },
+  computed: {
+    ...mapGetters([
+      'name'
+    ]),
+    todoNum() {
+      return this.tableData.length + this.todoMeetings.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
+    }
+  },
+  mounted() {
+    this.getTaskList();
+    this.getTodoMeetingList();
+    this.getDeptUserTrees();
+    this.fileAction = uploadFileUrl()
+
+  },
+  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
+      })
+    },
+    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 = {
+          meetingId: row.id,
+          weeks: row.weeks
+        }
+        this.$router.push({path: '/meeting/weeklyRecords', query: params});
+        return
+      }
+      this.meetingForm = row
+
+    },
+    test(){
+      alert(1)
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.dashboard {
+  &-container {
+    margin: 30px;
+  }
+
+  &-text {
+    font-size: 30px;
+    line-height: 46px;
+  }
+}
+
+.card {
+  width: 300px;
+  height: 150px;
+  background-color: #1ab394;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+.el-form-item--mini.el-form-item, .el-form-item--small.el-form-item {
+  margin-bottom: 10px;
+}
+</style>

+ 3 - 3
src/views/enforceflow/enforceflow.vue

@@ -394,12 +394,12 @@
               <el-table :data="enforceRemindData" stripe  size="mini" style="width: 100%;margin-top: 15px" >
                 <el-table-column type="index" label="序号" width="60"></el-table-column>
                 <el-table-column prop="msg" label="提醒信息" width="250">
-                  <template scope="scope">
+                  <template slot-scope="scope">
                     <el-input size="mini" v-model="scope.row.msg"></el-input>
                   </template>
                 </el-table-column>
                 <el-table-column prop="term" label="有限期限" width="180">
-                  <template scope="scope">
+                  <template slot-scope="scope">
                     <el-select v-model="scope.row.term"   placeholder="请选择提醒时间" >
                       <el-option label="3个月" :value="90" key="90">3个月</el-option>
                       <el-option label="6个月" :value="180" key="180">6个月</el-option>
@@ -409,7 +409,7 @@
                   </template>
                 </el-table-column>
                 <el-table-column prop="op" label="操作">
-                  <template scope="scope">
+                  <template slot-scope="scope">
                     <el-button type="primary" size="mini" v-if="scope.row.id!==null" @click="addenforceRemind((scope.row))">修改</el-button>
                     <el-button type="primary" size="mini" v-if="scope.row.id===null" @click="addenforceRemind(scope.row)">确认</el-button>
                     <el-button type="danger" size="mini" @click="deleteEnforceRemind(scope.$index, scope.row)">删除</el-button>