DeviceModal.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <template>
  2. <BasicModal :defaultFullscreen="defaultScreen" v-bind="$attrs" @register="registerModal" :title="title" :width="widthV"
  3. :showCancelBtn="false" :showOkBtn="false" :footer="null" destroyOnClose :mask-closable="false" @cancel="closeModalFn">
  4. <!-- 报表新增 -->
  5. <div v-if="addOredit == 'add'">
  6. <a-form :model="formState" :label-col="{ style: { width: '130px' } }" :wrapper-col="{ span: 14 }">
  7. <a-form-item label="报表版本:">
  8. <JDictSelectTag v-model:value="formState.reportType" placeholder="请选择报表类型..." dictCode="reportType" />
  9. </a-form-item>
  10. <a-form-item label="报表类型:">
  11. <JDictSelectTag v-model:value="formState.reportVersion" placeholder="请选择报表版本..." dictCode="reportVersion" />
  12. </a-form-item>
  13. <div class="footer">
  14. <a-button type="primary" style="margin-right: 20px;" @click="save">保存</a-button>
  15. <a-button type="primar" @click="closeModalFn">取消</a-button>
  16. </div>
  17. </a-form>
  18. </div>
  19. <!-- 报表编辑 -->
  20. <div v-else>
  21. <div id="fileEdit"></div>
  22. </div>
  23. </BasicModal>
  24. </template>
  25. <script lang="ts" setup>
  26. import { computed, unref, inject, reactive, ref, watch, defineProps } from 'vue';
  27. import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
  28. import { BasicModal, useModalInner } from '/@/components/Modal';
  29. import { useUserStore } from '/@/store/modules/user';
  30. let props = defineProps({
  31. addOredit: {
  32. type: String,
  33. default: ''
  34. },
  35. editID: {
  36. type: String,
  37. default: '',
  38. },
  39. })
  40. const userStore = useUserStore(); //获取用户信息
  41. let userId = unref(userStore.getUserInfo).id;
  42. let userName = unref(userStore.getUserInfo).username;
  43. console.log(userId, '用户id');
  44. console.log(userName, '用户名');
  45. let formState = reactive({
  46. reportType: '',
  47. reportVersion: ''
  48. })
  49. //设置标题
  50. let title = computed(() => {
  51. if (props.addOredit == 'add') {
  52. return '报表新增'
  53. } else {
  54. return '报表编辑'
  55. }
  56. })
  57. //弹窗宽度
  58. let widthV = computed(() => {
  59. if (props.addOredit == 'add') {
  60. return '600px'
  61. } else {
  62. return '1000px'
  63. }
  64. })
  65. //弹窗是否全屏
  66. let defaultScreen = computed(() => {
  67. if (props.addOredit == 'add') {
  68. return false
  69. } else {
  70. return true
  71. }
  72. })
  73. // 声明Emits
  74. const emit = defineEmits(['saveOrUpdate', 'register',]);
  75. //表单赋值
  76. const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
  77. //重置表单
  78. setModalProps({ confirmLoading: false });
  79. // Object.assign(deviceData, data.record);
  80. new DocsAPI.DocEditor(
  81. 'fileEdit', // 元素id
  82. {
  83. type: 'desktop',
  84. width: '100%',
  85. height: '100%',
  86. document: {
  87. title: '文档管理',
  88. // url: 'http://182.92.126.35:9999/ventanaly-sharefile/fileServer/onlyOffice/read?id=' + props.editID, //id表示文件id,后端接口用这个id来加载文件
  89. url: `${window.location.origin}:9999/ventanaly-device/safety/reportInfo/onlyOffice/read?id=${props.editID}`, //id表示文件id,后端接口用这个id来加载文件
  90. fileType: props.fileType == 'doc' ? 'docx' : props.fileType == 'xls' ? 'xlsx' : props.fileType == 'ppt' ? 'pptx' : props.fileType, //当文件类型为doc、xls、ppt时,对应用docx、xlsx、pptx否则会保存异常。
  91. key: '',
  92. lang: 'zh-CN',
  93. permissions: {
  94. download: true, //是否可下载
  95. edit: true,
  96. fillForms: true,
  97. print: true, //是否可打印
  98. },
  99. },
  100. editorConfig: {
  101. lang: 'zh-CN',
  102. mode: 'edit', //view:只读且可复制内容,edit:可编辑
  103. // callbackUrl: 'http://182.92.126.35:9999/ventanaly-sharefile/fileServer/onlyOffice/save?id=' + props.editID, //id表示文件id,后端接口用这个id来加载文件
  104. callbackUrl: `${window.location.origin}:9999/ventanaly-device/safety/reportInfo/onlyOffice/save?id=${props.editID}`, //id表示文件id,后端接口用这个id来加载文件
  105. coEditing: {
  106. mode: 'fast',
  107. change: true,
  108. },
  109. customization: {
  110. toolbarNoTabs: true,
  111. autosave: false, //是否自动保存
  112. forcesave: true, //定义保存按钮是否显示
  113. hideRightMenu: true,
  114. },
  115. //用户信息
  116. user: {
  117. id: userId, //用户ID
  118. name: userName, //用户名称
  119. },
  120. },
  121. }
  122. );
  123. });
  124. //点击图标关闭弹框
  125. const closeModalFn = () => {
  126. formState.reportType = ''
  127. formState.reportVersion = ''
  128. closeModal()
  129. // emit('closeModal')
  130. }
  131. //新增保存
  132. let save = () => {
  133. emit('saveOrUpdate', formState)
  134. }
  135. </script>
  136. <style scoped lang="less">
  137. ::v-deep .suffix {
  138. height: 32px;
  139. line-height: 32px;
  140. margin-left: 5px;
  141. color: #fff;
  142. }
  143. .footer {
  144. width: 100%;
  145. text-align: center;
  146. padding-top: 30px;
  147. }
  148. </style>