DeviceModal.vue 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  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-if="addOredit=='hisRecord'">
  32. <NormalHisTable :columns="columnsHis"
  33. :downLoad="hisdownload" :list="hisList" designScope="device-tabel" title="报表历史记录管理"
  34. :showTab="false"/>
  35. </div>
  36. <!-- 报表编辑 -->
  37. <div v-else>
  38. <div id="fileEdit"></div>
  39. </div>
  40. </BasicModal>
  41. </template>
  42. <script lang="ts" setup>
  43. import { computed, unref, inject, reactive, ref, watch, defineProps } from 'vue';
  44. import NormalHisTable from '../comment/NormalHisTable.vue'
  45. import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
  46. import { BasicModal, useModalInner } from '/@/components/Modal';
  47. import { useUserStore } from '/@/store/modules/user';
  48. import { hisList ,hisdownload} from '../reportManager.api'
  49. import { columnsHis} from '../reportManager.data' ;
  50. let props = defineProps({
  51. addOredit: {
  52. type: String,
  53. default: '',
  54. },
  55. editID: {
  56. type: String,
  57. default: '',
  58. },
  59. fileType: {
  60. type: String,
  61. default: '',
  62. },
  63. reportLogHis:{
  64. type:String,
  65. default:''
  66. }
  67. });
  68. const userStore = useUserStore(); //获取用户信息
  69. let userId = unref(userStore.getUserInfo).id;
  70. let userName = unref(userStore.getUserInfo).username;
  71. console.log(userId, '用户id');
  72. console.log(userName, '用户名');
  73. let formState = reactive({
  74. reportType: '',
  75. reportVersion: '',
  76. });
  77. //设置标题
  78. let title = computed(() => {
  79. if (props.addOredit == 'add') {
  80. return '报表新增';
  81. }else if(props.addOredit=='hisRecord'){
  82. return '历史记录'
  83. } else {
  84. return '报表编辑';
  85. }
  86. });
  87. //弹窗宽度
  88. let widthV = computed(() => {
  89. if (props.addOredit == 'add') {
  90. return '600px';
  91. } else {
  92. return '1000px';
  93. }
  94. });
  95. //弹窗是否全屏
  96. let defaultScreen = computed(() => {
  97. if (props.addOredit == 'add') {
  98. return false;
  99. } else {
  100. return true;
  101. }
  102. });
  103. // 声明Emits
  104. const emit = defineEmits(['saveOrUpdate', 'register']);
  105. //表单赋值
  106. const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
  107. //重置表单
  108. setModalProps({ confirmLoading: false });
  109. // Object.assign(deviceData, data.record);
  110. new DocsAPI.DocEditor(
  111. 'fileEdit', // 元素id
  112. {
  113. type: 'desktop',
  114. width: '100%',
  115. height: '860px',
  116. document: {
  117. title: '文档管理',
  118. url: 'http://182.92.126.35:9999/ventanaly-device/safety/reportInfo/onlyOffice/read?id=' + props.editID+'&type='+props.reportLogHis, //id表示文件id,后端接口用这个id来加载文件
  119. fileType: props.fileType == 'doc' ? 'docx' : props.fileType == 'xls' ? 'xlsx' : props.fileType == 'ppt' ? 'pptx' : props.fileType, //当文件类型为doc、xls、ppt时,对应用docx、xlsx、pptx否则会保存异常。
  120. key: '',
  121. lang: 'zh-CN',
  122. permissions: {
  123. download: true, //是否可下载
  124. edit: true,
  125. fillForms: true,
  126. print: true, //是否可打印
  127. },
  128. },
  129. editorConfig: {
  130. lang: 'zh-CN',
  131. mode: props.reportLogHis ? 'view' : 'edit', //view:只读且可复制内容,edit:可编辑
  132. callbackUrl: 'http://182.92.126.35:9999/ventanaly-device/safety/reportInfo/onlyOffice/save?id=' + props.editID+'&type='+ props.reportLogHis, //id表示文件id,后端接口用这个id来加载文件
  133. coEditing: {
  134. mode: 'fast',
  135. change: true,
  136. },
  137. customization: {
  138. toolbarNoTabs: true,
  139. autosave: false, //是否自动保存
  140. forcesave: true, //定义保存按钮是否显示
  141. hideRightMenu: true,
  142. },
  143. //用户信息
  144. user: {
  145. id: userId, //用户ID
  146. name: userName, //用户名称
  147. },
  148. },
  149. }
  150. );
  151. });
  152. //点击图标关闭弹框
  153. const closeModalFn = () => {
  154. formState.reportType = '';
  155. formState.reportVersion = '';
  156. closeModal();
  157. // emit('closeModal')
  158. };
  159. //新增保存
  160. let save = () => {
  161. emit('saveOrUpdate', formState);
  162. };
  163. </script>
  164. <style scoped lang="less">
  165. ::v-deep .suffix {
  166. height: 32px;
  167. line-height: 32px;
  168. margin-left: 5px;
  169. color: #fff;
  170. }
  171. .footer {
  172. width: 100%;
  173. text-align: center;
  174. padding-top: 30px;
  175. }
  176. </style>