liuQiang hace 2 años
padre
commit
b7ad2681e1

+ 19 - 0
src/api/biz/template.js

@@ -42,3 +42,22 @@ export function delTemplate(tmplId) {
     method: 'delete'
   })
 }
+// 查询使用文档模板的人员
+export function getTemplateUsers() {
+  return request({
+    url: '/biz/template/users',
+    method: 'get'
+  })
+}
+// 上传文档模板-多文件
+export function uploadTemplates(data) {
+  return request({
+    url: '/biz/template/uploadFiles',
+    method: 'post',
+    data: data,
+    timeout: 10*60*1000,//配置超时时间
+		headers: {
+		    'Content-Type': 'multipart/form-data'
+		},
+  })
+}

+ 10 - 2
src/components/previewTemp/previewTemp.vue

@@ -6,7 +6,7 @@
       @close="close"
       title="11"
     > -->
-    <jjtOnlyOffice :option="obj" />
+    <jjtOnlyOffice :option="obj" :usersArr="usersArr" />
     <!-- </el-dialog> -->
   </div>
 </template>
@@ -15,6 +15,7 @@
 import jjtOnlyOffice from "@/components/OnlyOffice/index.vue";
 import { ref, toRaw, onMounted, inject, onActivated, watch } from "vue";
 import { useRouter, useRoute, onBeforeRouteUpdate } from "vue-router";
+import { getTemplateUsers } from "@/api/biz/template.js";
 import { ElMessage } from "element-plus";
 import useUserStore from "@/store/modules/user";
 const props = defineProps({
@@ -27,6 +28,7 @@ const props = defineProps({
     default: false,
   },
 });
+const usersArr = ref([])
 const obj = ref({
   key: "",
   url: "", //在线文档地址
@@ -71,8 +73,14 @@ function handleOpen(itemObj) {
     name: useUserStore().uname, //用户姓名
   };
 }
+const getUsers = async () => {
+  const res = await getTemplateUsers();
+  console.log("res",res.data);
+  usersArr.value = res.data
+};
 onMounted(() => {
   let route = useRoute();
+  getUsers()
   console.log("route", route.query);
   if (route.query.str) {
     const objPre = JSON.parse(route.query.str);
@@ -81,7 +89,7 @@ onMounted(() => {
   } else if (route.query.itemStr) {
     const itemObj = JSON.parse(route.query.itemStr);
     // console.log("itemObj", itemObj);
-    handleOpen(itemObj)
+    handleOpen(itemObj);
   } else {
     obj.value = props.option;
     // console.log("obj", obj.value);

+ 4 - 1
src/permission.js

@@ -53,7 +53,10 @@ router.beforeEach((to, from, next) => {
       // 在免登录白名单,直接进入
       next()
     } else {
-      next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
+      // if (window!=top){
+        top.location.href = `/login?redirect=${to.fullPath}`;
+      // }
+      // next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
       NProgress.done()
     }
   }

+ 97 - 5
src/views/biz/template/index.vue

@@ -32,6 +32,11 @@
         </el-button>
       </el-col>
       <el-col :span="1.5">
+        <el-button type="info" plain icon="Upload" @click="handleUpload" v-hasPermi="['biz:template:add']">
+          上传
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
         <el-button
           type="success"
           plain
@@ -63,21 +68,23 @@
       <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="templateList" @selection-change="handleSelectionChange">
+    <el-table v-loading="loading" :data="templateList"  @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="模板ID" align="center" prop="tmplId" />
       <el-table-column label="模板类型" align="center" prop="tmplType" />
-      <el-table-column label="模板名称" align="center" prop="tmplName" />
+      <el-table-column label="模板名称" align="center" prop="tmplName" :show-overflow-tooltip="true" />
       <el-table-column label="创建人" align="center" prop="createBy" />
       <el-table-column label="创建时间" align="center" prop="createTime" width="180">
         <template #default="scope">
-          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
+          <!-- <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> -->
+          <span>{{scope.row.createTime}}</span>
         </template>
       </el-table-column>
       <el-table-column label="更新人" align="center" prop="updateBy" />
       <el-table-column label="更新时间" align="center" prop="updateTime" width="180">
         <template #default="scope">
-          <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
+          <!-- <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span> -->
+          <span>{{ scope.row.updateTime }}</span>
         </template>
       </el-table-column>
       <el-table-column label="备注" align="center" prop="remark" />
@@ -161,13 +168,35 @@
      height="800px" class="iframeBox" ></iframe>
     </el-dialog>
   </div>
+    <!-- 文件上传 -->
+  <div>
+      <el-dialog v-model="uploadModal" title="上传文件模板" :close-on-click-modal="false" width="30%" @close="closeUpload">
+          <el-upload class="upload-demo" accept=".docx,.doc,.wps,.xls,.et,.xlsx,.ppt,.pptx,.dps" :file-list="fileArr" :limit="10"  drag :http-request="onSuccess" multiple :on-remove="handleRemove"  
+          element-loading-text="上传中..."
+          element-loading-background="rgba(255, 255, 255, 0.8)"
+          v-loading="loadingUpload" >
+              <el-icon class="el-icon--upload"><upload-filled /></el-icon>
+              <div class="el-upload__text">拖入或<em>点击上传</em></div>
+              <template #tip>
+                  <div class="el-upload__tip">请选择或拖入文件(一次最多上传10个文件)</div>
+              </template>
+          </el-upload>
+          <template #footer>
+              <span class="dialog-footer">
+                  <el-button @click="closeUpload">取消</el-button>
+                  <el-button type="primary" @click="throttleSureUpload">确认</el-button>
+              </span>
+          </template>
+      </el-dialog>
+  </div>
 </template>
 
 <script setup name="Template">
-import { listTemplate, getTemplate, delTemplate, addTemplate, updateTemplate } from '@/api/biz/template'
+import { listTemplate, getTemplate, delTemplate, addTemplate, updateTemplate,uploadTemplates } from '@/api/biz/template'
 import jjtOnlyOffice from '@/components/OnlyOffice/index.vue'
 import previewTemp from '@/components/previewTemp/previewTemp.vue'
 import useUserStore from "@/store/modules/user";
+import { ElMessage} from 'element-plus'
 const { proxy } = getCurrentInstance()
 
 const templateList = ref([])
@@ -181,6 +210,10 @@ const total = ref(0)
 const title = ref('')
 const showPreview = ref(false)
 const fullscreen = ref(false)
+const uploadModal = ref(false)
+const fileArr = ref([])
+const loadingUpload = ref(false)
+const throttled = ref(false)
 const preUrl = ref('')
   let option = ref({
     key: '',
@@ -270,7 +303,66 @@ function handleAdd() {
   open.value = true
   title.value = '添加文档模板'
 }
+/** 上传按钮操作 */
+function handleUpload() {
+  uploadModal.value = true
+}
+const closeUpload = ()=>{
+  uploadModal.value = false
+}
+function onSuccess(files, val) {
+        fileArr.value.push(files.file)
+}
+// 移除上传的某些文件
+const handleRemove = (file,rawFile) => {
+    fileArr.value = rawFile.map(item=>{
+        if(item.raw){
+            return item.raw
+        }else{
+            return item
+        }
+    })
+}
+const throttleSureUpload = ()=>{
+  console.log('fileArr',fileArr.value);
+  if (!throttled.value) {
+        sureUpload();
+        throttled.value = true;
+        setTimeout(() => {
+            throttled.value = false;
+        }, 1000); // 设置节流的时间间隔为 1000 毫秒(1秒)
+    }
+}
+// 确认上传
+function sureUpload() {
+    loadingUpload.value = true;
+
+  if (fileArr.value.length > 0) {
+    let form=new FormData();
+    for (var i = 0; i < fileArr.value.length; i++) {
+      form.append("files",fileArr.value[i]);
+    }
+    // console.error(fileArr.value);
+    uploadTemplates(form).then(res => {
+            ElMessage({
+                message: "上传文件成功",
+                type: "success"
+            })
+            // getAllTop()
+            uploadModal.value = false
+            loadingUpload.value = false;
+            fileArr.value = []
+            resetQuery()
+    }).catch(err => {
+        loadingUpload.value = false;
+        fileArr.value = []
+    })
+  } else {
+      loadingUpload.value = false;
+      return ElMessage({ message: "请选择文件", type: "error" })
+  }
 
+}
 /** 修改按钮操作 */
 function handleUpdate(row) {
   reset()