Переглянути джерело

Merge branch 'lrh' of yinet2020/YinetOASystemWeb into master

吕瑞涵 4 роки тому
батько
коміт
aba9451764

+ 21 - 16
src/api/activiti/form/fw.js

@@ -3,23 +3,25 @@ import request from '@/utils/request'
 * author:changliang
 * date:2020.7.24
 * */
+
 // 发文件提交
-export function  submitApply(query) {
+export function submitApply(query) {
   return request({
     url: '/fw/submitapply',
     method: 'post',
     params: query
   })
 }
+
 // 发文待办列表
-export function  listInfo(query) {
+export function listInfo(query) {
   return request({
     url: '/fw/toDoFwList',
     method: 'get',
     params: query
   })
 }// 待办列表
-export function  toDoItemListInfo(query) {
+export function toDoItemListInfo(query) {
   return request({
     url: '/fw/toDoAllList',
     method: 'get',
@@ -28,7 +30,7 @@ export function  toDoItemListInfo(query) {
 }
 
 //已办工作列表
-export function  havedInfo(query) {
+export function havedInfo(query) {
   return request({
     // url: '/fw/doneFwList',
     url: '/fw/doneAllList',
@@ -36,33 +38,36 @@ export function  havedInfo(query) {
     params: query
   })
 }
+
 //提交待办
-export function  submitToDoItem(processInstanceId) {
+export function submitToDoItem(processInstanceId, params) {
   return request({
-    url: '/fw/submitToDoItem/'+processInstanceId,
-    method: 'get',
+    url: '/fw/submitToDoItem/' + processInstanceId,
+    method: 'put',
+    data: params
   })
 }
+
 //结束待办
-export function  deleteToDoItem(processInstanceId) {
+export function deleteToDoItem(processInstanceId) {
   return request({
-    url: '/fw/deleteToDoItem/'+processInstanceId,
-    method: 'get',
+    url: '/fw/deleteToDoItem/' + processInstanceId,
+    method: 'get'
   })
 }
+
 //获取详情数据
-export function  getFormData(key) {
+export function getFormData(key) {
   return request({
-    url: '/fw/getFormData?formkey='+key,
-    method: 'get',
+    url: '/fw/getFormData?formkey=' + key,
+    method: 'get'
   })
 }
 
-
 //获取详情数据
-export function  getFile(url) {
+export function getFile(url) {
   return request({
     url: url,
-    method: 'get',
+    method: 'get'
   })
 }

+ 8 - 0
src/api/activiti/process/startprocess.js

@@ -22,3 +22,11 @@ export function getStartFormKey(key) {
   })
 }
 
+//通过key来得到表单路径
+export function getCurrentFlowFormKey(id) {
+  return request({
+    url: '/activiti/act/getCurrentFlowFormKey/' + id,
+    method: 'get'
+  })
+}
+

+ 311 - 0
src/views/system/actform/fawen/write2.vue

@@ -0,0 +1,311 @@
+<template>
+  <div class="app-container">
+    <el-form ref="form" :model="form" label-width="130px" border>
+      <table width="100%" border="1">
+        <tr>
+          <td colspan="2"><p class="title">发文起草</p></td>
+        </tr>
+        <tr>
+          <td>
+            <el-form-item label="缓急" prop="urgency">
+              <el-select v-model="form.ponderance" placeholder="请选择">
+                <el-option label="一般" value="4"></el-option>
+                <el-option label="平急" value="3"></el-option>
+                <el-option label="加急" value="2"></el-option>
+                <el-option label="特急" value="1"></el-option>
+                <el-option label="特提" value="0"></el-option>
+              </el-select>
+            </el-form-item>
+          </td>
+          <td>
+            <el-form-item label="密级" prop="encryption">
+              <el-select v-model="form.securityClass" placeholder="请选择">
+                <el-option label="一般" value="3"></el-option>
+                <el-option label="秘密" value="2"></el-option>
+                <el-option label="机密" value="1"></el-option>
+                <el-option label="绝密" value="0"></el-option>
+              </el-select>
+            </el-form-item>
+          </td>
+        </tr>
+
+        <tr>
+          <td colspan="2">
+            <el-form-item label="标题:" prop="fwtitle">
+              <el-input v-model="form.fwtitle" type="text" placeholder=""/>
+            </el-form-item>
+          </td>
+        </tr>
+        <tr>
+          <td colspan="2">
+            <el-form-item label="部门:" prop="fwdept">
+              <el-input title="选择部门" v-model="form.fwdept" placeholder="请选择部门" prop="avtiveSend" :disabled="true">
+              </el-input>
+            </el-form-item>
+          </td>
+        </tr>
+        <tr>
+          <td colspan="2">
+            <el-form-item label="主送:" :disabled="true">
+              <el-input v-model="form.avtiveSend" placeholder="请选择主送人" prop="avtiveSend" :disabled="true">
+              </el-input>
+            </el-form-item>
+          </td>
+        </tr>
+        <tr>
+          <td colspan="2">
+            <el-form-item label=" 抄送:" :disabled="true">
+              <el-input v-model="form.copyTo" placeholder="请选择抄送人" prop="copyTo" :disabled="true">
+              </el-input>
+            </el-form-item>
+          </td>
+        </tr>
+        <tr>
+          <td colspan="2">
+            <el-form-item label="附件:" prop="accessory">
+            </el-form-item>
+          </td>
+        </tr>
+        <tr>
+          <td colspan="2">
+            <el-form-item label="正文:" prop="content">
+              <el-button size="small" type="primary" @click="openIweboffice">打开正文</el-button>
+              <el-input v-model="form.content" type="primary" placeholder=""/>
+            </el-form-item>
+          </td>
+        </tr>
+        <tr v-show="false">
+          <td>
+            <el-form-item label="actkey:" prop="mailTheme">
+              <el-input v-model="form.actkey" type="textarea" placeholder=""/>
+            </el-form-item>
+          </td>
+        </tr>
+        <tr v-if="postForm.SelectUserType!=null&&postForm.SelectUserType.includes('custom')">
+          <td colspan="2">
+            <el-form-item label="选择下一步处理人:" :disabled="true">
+              <el-input v-model="postForm.sendUserRealName" placeholder="请选择下一步处理人"
+                        prop="avtiveSend" :disabled="true">
+                <template slot="append">
+                  <el-button
+                    type="primary"
+                    icon="el-icon-plus"
+                    size="mini"
+                    @click="handleSelect()">
+                    选择人员
+                  </el-button>
+                </template>
+              </el-input>
+            </el-form-item>
+          </td>
+        </tr>
+      </table>
+    </el-form>
+    <div slot="footer" class="dialog-footer" v-show="open4">
+      <el-button type="primary" @click="submitToDo()">同意</el-button>
+      <el-button type="primary" @click="deleteToDo()">拒绝</el-button>
+      <el-button @click="cancel">取 消</el-button>
+    </div>
+    <el-dialog id="content" title="正文修改" :visible.sync="contentOpen" :before-close="cancel" append-to-body
+               width="80%"
+               top="10" height="800px">
+      <!-- 动态引入组件-->
+      <i-web-office @func="getcontent" :fileData="fileData"></i-web-office>
+    </el-dialog>
+
+    <select-user-by-dept ref="selectUserByDept" :title="title" :open="Renopen" @ok="selectOK"/>
+
+
+  </div>
+</template>
+
+<script>
+  import SelectUserByDept from '@/components/SelectRen/selectUserByDept'
+  import iWebOffice from './iWebOffice'
+  import SelectRen from '@/components/SelectRen'
+  import { treeselect } from '@/api/system/dept'
+  import { submitApply, getFormData, deleteToDoItem, submitToDoItem } from '@/api/activiti/form/fw'
+  import Treeselect from '@riophae/vue-treeselect'
+  import { getToken } from '@/utils/auth'
+
+  export default {
+
+    components: {
+      SelectUserByDept, iWebOffice, SelectRen,
+      Treeselect
+    },
+
+    props: {
+      data: '',
+      actOpen: false
+    },
+    data() {
+      return {
+        Renopen: false,
+        contentOpen: false,
+        //正文的文件地址
+        fileData: {
+          filePath: '/profile/doc/inche.doc',
+          user: 'xxx'
+        },
+        // 弹出层标题
+        title: '',
+        // 是否显示弹出层
+        open: false,
+        // 表单参数
+        form: {
+          actkey: '',
+          content: '',
+          fwdept: '',
+          ponderance: '',
+          securityClass: '',
+          copyTo: '',
+          accessory: '',
+          avtiveSend: ''
+        },  // 表单参数
+        postForm: {
+          SelectUserType: '',
+          sendUserRealName: '',
+          sendUser: ''
+        },
+        flg: '',
+        // 判断是否为提交,还是添加
+        open4: false,
+        openSelectUser: false,
+        // 部门
+        deptOpen: false,
+        // 部门树选项
+        deptOptions: [],
+        // 部门id
+        depid: [],
+        depname: [],
+        // 上传参数
+        upload: {
+          // 上传的文件列表
+          fileList: []
+        }
+      }
+    },
+    created() {
+
+      this.flg = this.data.flg
+      this.form.actkey = this.data.getactkey
+      if (this.flg == '1') {
+        this.form = this.data
+        this.getDetails()
+        this.open4 = true
+      } else {
+        this.form = this.data
+        this.getDetails()
+      }
+    },
+    methods: {
+      /** 写 选择人员 按钮弹窗操作 */
+      handleSelect() {
+        this.$refs.selectUserByDept.childOpen = true
+        this.Renopen = true
+      },
+      // 取消按钮
+      cancel() {
+        this.$emit('getList')
+        this.contentOpen = false
+        this.open = false
+        this.reset()
+
+      },
+      selectOK(zh, xm) {
+        this.postForm.sendUser = zh
+        this.postForm.sendUserRealName = xm
+        this.Renopen = false
+      },
+
+      //返回正文
+      getcontent(data) {
+        this.form.content = data
+        this.contentOpen = false
+      },
+
+      //获取详细信息,修改用到
+      getDetails() {
+        getFormData(this.form.formId).then(response => {
+          this.form = response.data
+          this.postForm.SelectUserType = response.data.SelectUserType
+          this.fileData.filePath = this.form.content
+          this.fileData.user = this.form.user
+          this.upload.fileList = [{
+            name: this.form.accessory,
+            url: process.env.VUE_APP_BASE_API + this.form.accessory
+          }]
+        })
+      },
+
+      //打开weboffice 页面添加正文
+      openIweboffice() {
+        // this.$router.push({path:'/actwork/fw/iweboffice'})
+        this.contentOpen = true
+      },
+      //同意
+      submitToDo() {
+        this.loading = true
+        submitToDoItem(this.form.taskid, this.postForm).then(response => {
+          this.msgSuccess('提交成功')
+          this.$emit('getList')
+        })
+      },
+      //拒绝按钮
+      deleteToDo() {
+        this.$confirm('是否确认拒绝这这个申请吗?', '警告', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          deleteToDoItem(this.form.taskid).then(response => {
+            this.msgSuccess('拒绝成功')
+            this.$emit('getList')
+          })
+
+        }).catch(() => {
+        })
+
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+  .apple {
+    width: 150px;
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+  }
+
+  .title {
+    font-size: 30px;
+    text-align: center;
+    margin-top: 30px;
+  }
+
+  .bottom10 {
+    margin-bottom: 20px;
+  }
+
+  .el-dialog__title {
+    text-align: center;
+    font-weight: bold;
+  }
+
+  table {
+    border-collapse: collapse;
+  }
+
+  .el-form-item {
+    margin-bottom: 10px !important;
+    margin-top: 10px;
+  }
+
+  .dialog-footer {
+    text-align: center;
+    margin-top: 20px;
+  }
+</style>

+ 72 - 71
src/views/system/actwork/todo.vue

@@ -39,37 +39,38 @@
         </el-form>
       </el-col>
     </el-row>
-    <el-table border  :data="infoList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
+    <el-table border :data="infoList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center"/>
       <el-table-column label="序号" type="index" width="55" align="center"></el-table-column>
-      <el-table-column label="流程名称" width="180" align="center"prop="taskName"  >
+      <el-table-column label="流程名称" width="180" align="center" prop="taskName">
       </el-table-column>
-      <el-table-column label="标题" align="center" prop="title" />
-      <el-table-column label="当前处理" width="180" align="center" prop="name" />
-      <el-table-column label="到达时间" width="180" align="center" prop="createTime" >
+      <el-table-column label="标题" align="center" prop="title"/>
+      <el-table-column label="当前处理" width="180" align="center" prop="name"/>
+      <el-table-column label="到达时间" width="180" align="center" prop="createTime">
         <template slot-scope="scope">
           <span>{{scope.row.createTime | format('yyyy-MM-dd hh:mm')}}</span>
         </template>
       </el-table-column>
-     <!-- <el-table-column label="到达时间" width="180" align="center" prop="updateTime" >
-        <template slot-scope="scope">
-          <span>{{scope.row.updateTime | format('yyyy-MM-dd hh:mm')}}</span>
-        </template>
-      </el-table-column>-->
-      <el-table-column label="操作" width="200" align="center" class-name="small-padding fixed-width" >
+      <!-- <el-table-column label="到达时间" width="180" align="center" prop="updateTime" >
+         <template slot-scope="scope">
+           <span>{{scope.row.updateTime | format('yyyy-MM-dd hh:mm')}}</span>
+         </template>
+       </el-table-column>-->
+      <el-table-column label="操作" width="200" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
             size="small"
             type="text"
             icon="el-icon-edit"
-            @click="openactform(scope.row.processDfinitionId,scope.row.businessKey)"
-          >办理</el-button>
-        <!--  <el-button
-            size="small"
-            type="text"
-            icon="el-icon-share"
-            @click="details(scope.row)"
-          >审批进度</el-button>-->
+            @click="openactform(scope.row.processInstanceId,scope.row.businessKey)"
+          >办理
+          </el-button>
+          <!--  <el-button
+              size="small"
+              type="text"
+              icon="el-icon-share"
+              @click="details(scope.row)"
+            >审批进度</el-button>-->
         </template>
       </el-table-column>
     </el-table>
@@ -84,29 +85,31 @@
     <el-dialog id="actform" title="流程详情" :visible.sync="actOpen" :before-close="cancel" append-to-body width="80%"
                top="10" height="90%">
       <!-- 动态引入组件-->
-      <component :is="actForm" :data="details":actOpen="actOpen" @getList="getList" ></component>
+      <component :is="actForm" :data="details" :actOpen="actOpen" @getList="getList"></component>
     </el-dialog>
 
   </div>
 </template>
 
 <script>
-  import {toDoItemListInfo} from "@/api/activiti/form/fw";
-  import {getStartFormKey } from '@/api/activiti/process/startprocess'
+  import { toDoItemListInfo } from '@/api/activiti/form/fw'
+  import { getCurrentFlowFormKey } from '@/api/activiti/process/startprocess'
+
   export default {
     name: 'todo',
 
-    data(){
+    data() {
       return {
         //流程遮罩层
         actOpen: false,
         //传入到下一页面的值
-        details:{getactkey: '',
-        formId:'',
-        flg:'1',
+        details: {
+          getactkey: '',
+          formId: '',
+          flg: '1'
         },
-        dialogVisible:false,
-        tabPosition:'left',
+        dialogVisible: false,
+        tabPosition: 'left',
         // 遮罩层
         loading: true,
         // 选中数组
@@ -119,10 +122,9 @@
         // 总条数
         total: 0,
         // 【请填写功能名称】表格数据
-        infoList: [
-        ],
+        infoList: [],
         // 弹出层标题
-        title: "",
+        title: '',
         // 是否显示弹出层
         open: false,
         actForm: null,
@@ -130,33 +132,32 @@
         toDoParams: {
           pageNum: 1,
           pageSize: 10,
-          orderByColumn: "createTime",
-          isAsc:"desc",//排序方式
+          orderByColumn: 'createTime',
+          isAsc: 'desc'//排序方式
         },
         // 表单参数
         form: {},
         // 表单校验
-        rules: {
-        }
-      };
+        rules: {}
+      }
     },
     created() {
-      this.getList();
+      this.getList()
     },
     methods: {
 
-        detern(row){
-            this.reset();
-            const actkey = row.actkey || this.ids
-            this.$router.push({path:'/actwork/todo/tododetails',query: {id:actkey }})
-        },
+      detern(row) {
+        this.reset()
+        const actkey = row.actkey || this.ids
+        this.$router.push({ path: '/actwork/todo/tododetails', query: { id: actkey } })
+      },
       //通过流程key查询启动的表单fromkey
-      openactform(actkey,id) {
+      openactform(actkey, id) {
         let vue = this
-        actkey=actkey.split(":")[0];
+        actkey = actkey.split(':')[0]
         this.details.getactkey = actkey//动态传参到下面的页面
         this.details.formId = id//动态传参到下面的页面
-        getStartFormKey(actkey).then(response => {
+        getCurrentFlowFormKey(actkey).then(response => {
           var path = response.msg
           this.actForm = () => Promise.resolve().then(() => require(`@/views/${path}`))
         })
@@ -164,23 +165,23 @@
         return vue.actForm = this.actForm
       },
       // 详情
-      details(){
+      details() {
         this.dialogVisible = true
       },
       /** 查询列表 */
       getList() {
-        this.loading = true;
+        this.loading = true
         toDoItemListInfo(this.toDoParams).then(response => {
-          this.infoList = response.rows;
-          this.total = response.total;
-          this.loading = false;
-          this.actOpen=false;
-        });
+          this.infoList = response.rows
+          this.total = response.total
+          this.loading = false
+          this.actOpen = false
+        })
       },
       // 取消按钮
       cancel() {
-        this.dialogVisible = false;
-        this.actOpen = false;
+        this.dialogVisible = false
+        this.actOpen = false
       },
       // 表单重置
       reset() {
@@ -193,49 +194,49 @@
           mailTheme: undefined,
           mailContent: undefined,
           createTime: undefined,
-          status: "0",
+          status: '0',
           deleteTime: undefined
-        };
-        this.resetForm("form");
+        }
+        this.resetForm('form')
       },
       /** 搜索按钮操作 */
       handleQuery() {
-        this.toDoParams.pageNum = 1;
-        this.getList();
+        this.toDoParams.pageNum = 1
+        this.getList()
       },
       /** 重置按钮操作 */
       resetQuery() {
-        this.resetForm("queryForm");
-        this.handleQuery();
+        this.resetForm('queryForm')
+        this.handleQuery()
       },
       // 多选框选中数据
       handleSelectionChange(selection) {
         this.ids = selection.map(item => item.mailGuid)
         this.flgs = selection.map(item => item.flg)
-        this.single = selection.length!=1
+        this.single = selection.length != 1
         this.multiple = !selection.length
-      },
-
-
-
+      }
 
     }
   }
 </script>
 
 <style scoped>
-  .el-dialog__header{
+  .el-dialog__header {
     border-bottom: 1px solid #e8e8e8 !important;
   }
-  .dear{
+
+  .dear {
     border-top: 1px solid #e8e8e8;
   }
-  .dad{
+
+  .dad {
     margin: 30px 20px 20px;
     border: 1px solid #e8e8e8;
     padding: 30px;
   }
-  .dac{
+
+  .dac {
     margin: 30px 20px 20px;
     border: 1px solid #e8e8e8;
     padding: 25px 0;