瀏覽代碼

文件审核

zhuliu 10 月之前
父節點
當前提交
9616da2a53

+ 4 - 0
src/api/newApi/file.js

@@ -32,5 +32,9 @@ export default {
   //强制保存
   onlyOffice_forceSave(data){
     return axios.post('/myOnlyOffice/onlyOffice/forceSave', data)
+  },
+  //保存新文件
+  saveNewFile(data){
+    return axios.post('/myOnlyOffice/onlyOffice/saveNewFile', data)
   }
 };

+ 0 - 50
src/components/VabOnlyOffice/addNewFile.vue

@@ -1,50 +0,0 @@
-<template>
-  <div>
-    <el-dialog title="保存新文件" :visible.sync="visible" width="500px" append-to-body destroy-on-close
-      :close-on-click-modal="false" :before-close="handleClose">
-      <el-form :model="form" ref="form" label-width="80px" label-position="left">
-        <el-form-item label="新文件名称" prop="referencesName">
-          <el-input v-model="form.referencesName" placeholder="请输入新文件名称"></el-input>
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" placeholder="请输入备注" type="textarea"></el-input>
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="handleClose">取 消</el-button>
-        <el-button type="primary" @click="submit">确 定</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-export default {
-  components: {},
-  props: {},
-  data() {
-    return {
-        visible:false,
-        form:{},
-    };
-  },
-  watch: {},
-  computed: {},
-  created() {},
-  mounted() {},
-  methods: {
-    open(form = {}){
-        this.form = form
-        this.visible = true
-    },
-    handleClose(){
-        this.visible = false
-    },
-    submit(){
-
-    },
-  },
-};
-</script>
-<style lang="scss" scoped>
-</style>

+ 0 - 25
src/components/VabOnlyOffice/index.js

@@ -30,31 +30,6 @@ export default{
             return encodedSource
         },
 
-
-        //调用强制保存
-        async forceSave(){
-            var params = {
-                c:'forcesave',
-                key:this.option.key,
-            }
-            var data = null
-            await this.$api.onlyOffice_forceSave(params).then(response=>{
-                if(response.code == 200){
-                    data = response.data
-                }
-            })
-            return data
-        },
-        //保存新文件
-        async saveNewFile(){
-            var data = await this.forceSave()
-            if(data==1){
-                var form = {
-                    referencesName:this.option.title + '(1)'
-                }
-                this.$refs.addNewFile.open(form)
-            }
-        },
     },
 }
 

+ 8 - 84
src/components/VabOnlyOffice/index.vue

@@ -1,23 +1,16 @@
 <!--onlyoffice 编辑器-->
 <template>
   <div style="height:100%;width:100%" v-loading="loading">
-    <div class="menu_btn">
-      <el-button size="small" type="primary" @click="saveNewFile">保存新文件</el-button>
-    </div>
-    
     <div id='vabOnlyOffice' v-if="show"></div>
-    <addNewFile ref="addNewFile"></addNewFile>
   </div>
  
 </template>
 
 <script>
-import addNewFile from './addNewFile.vue'
 import mixins from './index.js'
   export default {
     name: 'VabOnlyOffice',
     components:{
-      addNewFile
     },
     mixins:[mixins],
     props: {
@@ -59,73 +52,6 @@ import mixins from './index.js'
       }
     },
     methods: {
-      async insetText(){
-        console.log(this.docEditor,this.docEditor.connector())
-        return
-        // document.execCommand('insertText', true, '插入的文本')
-        // return
-        // this.docEditor.blurFocus('要复制的文本内容')
-        // this.setClipboardText('要复制的文本内容').then(() => {
-        //   console.log('复制成功');
-        //   document.execCommand('paste');
-        //   console.log(document.execCommand('paste'))
-        // }).catch(err => {
-        //   console.error('复制失败', err);
-        // })
-        // await navigator.clipboard.writeText('插入的文本')
-        // var dom = Api.createParagraph();
-        //   dom.addText('插入的文本')
-        var connector = this.docEditor.createConnector()
-        console.log(connector)
-        connector.callCommand(function(){
-          var dom = Api.createParagraph();
-          dom.addText('插入的文本')
-        },function(){
-          console.log('123')
-        })
-        console.log(window.AscEmbed.initWorker)
-        window.Asc.plugin.callCommand(function() {
-          var oWorksheet = Api.createParagraph();
-          oWorksheet.addText('插入的文本')
-        }, true);
-       
-      },
-      setClipboardText(text) {
-        return new Promise((resolve, reject) => {
-          const clipboard = navigator.clipboard;
-          if (clipboard && clipboard.writeText) {
-            clipboard.writeText(text)
-              .then(() => resolve())
-              .catch(error => reject(error));
-          } else {
-            const textArea = document.createElement('textarea');
-            textArea.value = text;
-            // 防止元素显示在屏幕上
-            textArea.style.position = 'fixed';
-            textArea.style.top = '0';
-            textArea.style.left = '0';
-            textArea.style.width = '2em';
-            textArea.style.height = '2em';
-            textArea.style.padding = '0';
-            textArea.style.border = 'none';
-            textArea.style.outline = 'none';
-            textArea.style.boxShadow = 'none';
-            textArea.style.background = 'transparent';
-            document.body.appendChild(textArea);
-            textArea.select();
-        
-            try {
-              const successful = document.execCommand('copy');
-              successful ? resolve() : reject();
-            } catch (err) {
-              reject(err);
-            }
-        
-            document.body.removeChild(textArea);
-          }
-        });
-      },
-
       async setEditor(option) {
         if (this.docEditor !== null) {
           this.docEditor.destroyEditor();
@@ -179,7 +105,13 @@ import mixins from './index.js'
               about:false,
               autosave: true,//是否自动保存
               forcesave:true,
-              
+              review: {
+                hideReviewDisplay: false,
+                showReviewChanges: false,
+                reviewDisplay: "original",
+                trackChanges: true,
+                hoverMode: true,
+            },
               help: false,
               // "hideRightMenu": false,//定义在第一次加载时是显示还是隐藏右侧菜单。 默认值为false
               //是否显示插件
@@ -376,12 +308,4 @@ import mixins from './index.js'
 }
 </style>
 
-<style lang="scss" scoped>
-  .menu_btn{
-    height: 45px;
-    padding: 0 20px;
-    display: flex;
-    align-items: center;
-    flex-direction: row-reverse;
-  }
-</style>
+

+ 178 - 0
src/views/components/onlyOffice/addNewFile.vue

@@ -0,0 +1,178 @@
+<template>
+  <div>
+    <el-dialog title="提交审核" :visible.sync="visible" width="500px" append-to-body destroy-on-close
+      :close-on-click-modal="false" :before-close="handleClose">
+      <div>
+        文件信息
+        <hr>
+        <el-form :model="fileForm" ref="fileForm" label-width="120px" >
+          <el-form-item label="文件名称:" prop="referencesName">
+            <el-input v-model="fileForm.referencesName" placeholder="请输入文件名称"></el-input>
+          </el-form-item>
+          <el-form-item label="备注:" prop="remark">
+            <el-input v-model="fileForm.remark" placeholder="请输入备注" type="textarea"></el-input>
+          </el-form-item>
+        </el-form>
+      </div>
+      <div>
+        任务信息
+        <hr>
+        <el-form :model="taskForm" :rules="TaskRules" ref="form" label-width="120px">
+          <el-form-item label="任务名称:" prop="name">
+            <el-input v-model="taskForm.name" type="text" placeholder="请输入任务名称" />
+          </el-form-item>
+          <el-form-item label="审核人:" prop="handlerName">
+            <el-autocomplete v-model="taskForm.handlerName" value-key="name" v-SelectLazyLoading="personnelLoad"
+                :fetch-suggestions="querySearchPersonnel" placeholder="请输入审核人(外部审核人请直接输入邮箱)" :trigger-on-focus="false"
+                @select="handleSelectPersonnel" @blur="handleBlur(taskForm.handlerName)" style="width: 100%;"></el-autocomplete>
+          </el-form-item>
+          <el-form-item label="截止日期:" prop="deadLineTime">
+            <el-date-picker style="width:100%" v-model="taskForm.deadLineTime" value-format="yyyy-MM-dd HH:mm:ss"
+              type="datetime" placeholder="选择日期">
+            </el-date-picker>
+          </el-form-item>
+          <el-form-item label="备注:" prop="description">
+            <el-input v-model="taskForm.description" type="textarea" placeholder="输入备注" />
+          </el-form-item>
+        </el-form>
+      </div>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="handleClose">取 消</el-button>
+        <el-button type="primary" :loading="btnLoading" @click="submit">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  components: {},
+  props: {},
+  data() {
+    const isTime = (rule, value, callback) => {
+      if (this.isEndTime) {
+        this.isEndTimes = Date.parse(new Date)
+      }
+
+      let b = Date.parse(value)
+      if (value) {
+        if (b < this.isEndTimes) {
+          callback(new Error('禁止选择现在及以前时间,请重新选择'))
+        } else {
+          callback()
+        }
+      } else {
+        callback(new Error('请选择时间'))
+      }
+    }
+    return {
+        visible:false,
+        fileForm:{},
+        btnLoading:false,
+        taskForm:{},
+        isEndTime: true,
+        isEndTimes: null,
+        // 任务表单校验
+        TaskRules: {
+          name: [{ required: true, message: '请输入任务名称', trigger: 'blur' },],
+          handlerName: [{ required: true, message: '请选择审核人', trigger: 'change' },],
+          deadLineTime: [{ required: true, validator: isTime, trigger: 'change' }],
+        },
+        //人员列表懒加载
+        personnelList: {
+          queryParams: {
+            current: 1,
+            size: 10
+          },
+          loading: false,
+          name: '',
+          data: [],
+        },
+    };
+  },
+  watch: {},
+  computed: {},
+  created() {},
+  mounted() {},
+  methods: {
+    open(form = {}){
+        this.fileForm = form
+        if(this.fileForm.referencesName){
+          this.$set(this.taskForm,'name',this.fileForm.referencesName+'文件审核')
+        }
+        this.visible = true
+    },
+    handleClose(){
+      this.$refs.form.resetFields()
+      this.visible = false
+      this.taskForm = {}
+    },
+    submit(){
+      this.btnLoading = true
+      if (this.taskForm.handlerName.includes('@')) {//是邮箱为1
+        this.taskForm.handlerType = 1
+      } else {//是id为0
+        this.taskForm.handlerType = 0
+      }
+      var params = {
+        fileForm:this.fileForm,
+        taskForm:this.taskForm
+      }
+      this.$api.saveNewFile(params).then(response=>{
+        if(response.code == 200){
+          this.$message.success('新文件保存成功')
+          this.btnLoading = false
+          this.handleClose()
+        }
+      }).catch(error=>{
+        this.btnLoading = false
+      })
+    },
+     /**
+    * 人员
+    */
+    // 懒加载人员方法
+    personnelLoad() {
+      if (this.personnelList.queryParams.current * this.personnelList.queryParams.size >= this.personnelList.queryParams.total) {
+        return false
+      }
+      this.personnelList.queryParams.current++
+      this.questionPersonnel()
+    },
+    // 查询人员
+    async questionPersonnel() {
+      let params = {
+        ...this.personnelList.queryParams,
+        name:this.personnelList.name
+      }
+      await this.$api.getPermissionPersonnel(params).then(res => {
+        if (res.code == 200) {
+          this.personnelList.data.push(...res.data)
+          this.personnelList.queryParams.total = res.pageColumn.total
+          this.personnelList.cb(this.personnelList.data);
+        }
+      })
+    },
+    //获取下拉建议人员数据
+    async querySearchPersonnel(queryString, cb) {
+      this.personnelList.queryParams.current = 1
+      this.personnelList.name = queryString
+      this.personnelList.data = []
+      this.personnelList.cb = cb
+      await this.questionPersonnel()
+    },
+    // 人员输入框失焦
+    handleBlur(val) {
+      if (this.taskForm.handlerName && this.taskForm.handlerName.includes('@')) {
+        this.taskForm.handler = val
+      }
+    },
+    // 人员输入框选择
+    handleSelectPersonnel(val) {
+      this.taskForm.handler=val.id
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+</style>

+ 45 - 0
src/views/components/onlyOffice/index.js

@@ -0,0 +1,45 @@
+
+import addNewFile from "./addNewFile.vue"
+export default{
+    components:{
+        addNewFile
+    },
+    methods: {
+        //调用强制保存
+        async forceSave(){
+            var params = {
+                c:'forcesave',
+                key:this.option.key,
+            }
+            var data = null
+            await this.$api.onlyOffice_forceSave(params).then(response=>{
+                if(response.code == 200){
+                    data = response.data
+                }
+            })
+            return data
+        },
+        //保存新文件
+        async examine(){
+            var data = await this.forceSave()
+            if(data==1){
+                var title = this.option.title
+                if(title.endsWith('.'+this.option.fileType)){
+                    title = title.slice(0, -(this.option.fileType.length+1))
+                }
+                title = title + '-' + this.option.user.name + '.' + this.option.fileType
+                var form = {
+                    referencesName:title,
+                    guid:this.option.id,
+                    projectId:this.file.projectId,
+                    fileType:this.option.fileType
+                }
+                this.$refs.addNewFile.open(form)
+            }
+        },
+    },
+}
+
+
+
+

文件差異過大導致無法顯示
+ 15 - 16
src/views/components/onlyOffice/index.vue