previewTemp.vue 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <template>
  2. <div>
  3. <!-- <el-dialog
  4. v-model="props.showPreview"
  5. width="30%"
  6. @close="close"
  7. title="11"
  8. > -->
  9. <jjtOnlyOffice :option="obj" :usersArr="usersArr" />
  10. <!-- </el-dialog> -->
  11. </div>
  12. </template>
  13. <script setup>
  14. import jjtOnlyOffice from "@/components/OnlyOffice/index.vue";
  15. import { ref, toRaw, onMounted, inject, onActivated, watch } from "vue";
  16. import { useRouter, useRoute, onBeforeRouteUpdate } from "vue-router";
  17. import { getTemplateUsers } from "@/api/biz/template.js";
  18. import { ElMessage } from "element-plus";
  19. import useUserStore from "@/store/modules/user";
  20. const props = defineProps({
  21. option: {
  22. type: Object,
  23. default: () => {},
  24. },
  25. showPreview: {
  26. type: Boolean,
  27. default: false,
  28. },
  29. });
  30. const usersArr = ref([])
  31. const obj = ref({
  32. key: "",
  33. url: "", //在线文档地址
  34. isEdit: true, //是否允许编辑
  35. fileType: "", //文件扩展名
  36. title: "", //文件标题
  37. user: {
  38. id: null, //用户ID
  39. name: "", //用户姓名
  40. },
  41. userdata: "",
  42. editUrl: "", //回调地址
  43. });
  44. const close = () => {};
  45. function handleOpen(itemObj) {
  46. // console.log('isEdit',isEdit);
  47. obj.value.isEdit = false;
  48. obj.value.isCopy = true;
  49. obj.value.url = `${window.location.origin}${
  50. import.meta.env.VITE_APP_BASE_API
  51. }/api/view/${itemObj.fileId}`;
  52. obj.value.title = itemObj.tmplName;
  53. obj.value.key = itemObj.fileId;
  54. switch (itemObj.tmplType) {
  55. case "word":
  56. obj.value.fileType = "docx";
  57. break;
  58. case "excel":
  59. obj.value.fileType = "xlsx";
  60. break;
  61. case "ppt":
  62. obj.value.fileType = "pptx";
  63. break;
  64. }
  65. obj.value.editUrl = `${window.location.origin}${
  66. import.meta.env.VITE_APP_BASE_API
  67. }/only-office/tmpl/callback/${itemObj.tmplId}?name=${useUserStore().uname}`;
  68. // option.value.editUrl = `http://8.142.173.95:19527/only-office/callback/${obj.docId}?name=${useUserStore().uname}`;
  69. obj.value.user = {
  70. id: useUserStore().uid, //用户ID
  71. name: useUserStore().uname, //用户姓名
  72. };
  73. }
  74. const getUsers = async () => {
  75. const res = await getTemplateUsers();
  76. console.log("res",res.data);
  77. usersArr.value = res.data
  78. };
  79. onMounted(() => {
  80. let route = useRoute();
  81. getUsers()
  82. console.log("route", route.query);
  83. if (route.query.str) {
  84. const objPre = JSON.parse(route.query.str);
  85. // console.log("objPre", objPre);
  86. obj.value = objPre;
  87. } else if (route.query.itemStr) {
  88. const itemObj = JSON.parse(route.query.itemStr);
  89. // console.log("itemObj", itemObj);
  90. handleOpen(itemObj);
  91. } else {
  92. obj.value = props.option;
  93. // console.log("obj", obj.value);
  94. }
  95. });
  96. </script>
  97. <style lang="scss" scoped>
  98. </style>