DeviceModal.vue 5.1 KB

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