xm-composite-database-publish-form.vue 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. <template>
  2. <span>
  3. <audit-form-top-banner
  4. :handel-save-form="saveForm"
  5. :handel-publish="handelPublish"
  6. :form-data="mode"
  7. :hiden-or-show="hidenOR0Show"
  8. @handelSaveForm="saveForm"
  9. @handelPublish="handelPublish"
  10. >
  11. <sd-detail-form
  12. ref="docform"
  13. page-id="audit/spiccompositedatabase/spicCompositeDatabasePublish"
  14. :record-id="this.$route.query.record ? parseInt(this.$route.query.record) : null"
  15. :class="$style.form"
  16. :read-only="readOnly"
  17. @close="close(true)"
  18. @saved="saved"
  19. @sdFormReady="sdFormReady"
  20. >
  21. <template v-slot="{ model, fields }">
  22. <table>
  23. <tr>
  24. <sd-form-item-td name="title" />
  25. <sd-form-item-td name="reportYear">
  26. <a-date-picker
  27. v-model="model.reportYear"
  28. mode="year"
  29. picker="YYYY"
  30. format="YYYY"
  31. :allow-clear="false"
  32. placeholder="选择年度"
  33. :input-read-only="true"
  34. :open="endOpen"
  35. :value="year"
  36. @panelChange="yearChange"
  37. @openChange="handleEndOpenChange"
  38. ></a-date-picker>
  39. </sd-form-item-td>
  40. </tr>
  41. <tr>
  42. <!-- 上报单位 -->
  43. <sd-form-item-td name="reportUnitCode" />
  44. <!-- 在线反馈截至时间 -->
  45. <sd-form-item-td name="endTime" />
  46. </tr>
  47. <!-- 附件 -->
  48. <!-- <tr>
  49. <sd-form-item-td name="attachment" :colspan="3" />
  50. </tr> -->
  51. <tr>
  52. <!-- 参考模板 -->
  53. <sd-form-item-td name="referenceTemplate" :colspan="3" />
  54. </tr>
  55. <tr>
  56. <!-- 资料描述 -->
  57. <sd-form-item-td name="infoDesc" :colspan="3">
  58. <a-textarea v-model="model.infoDesc" :rowspan="4" />
  59. </sd-form-item-td>
  60. </tr>
  61. <tr>
  62. <sd-form-item-td name="remark" :colspan="3">
  63. <a-textarea v-model="model.remark" :rowspan="3" />
  64. </sd-form-item-td>
  65. </tr>
  66. <tr>
  67. <!-- 查看人员 -->
  68. <sd-form-item-td name="viewRanges" :colspan="3" />
  69. </tr>
  70. <tr>
  71. <!-- 编制人员 -->
  72. <sd-form-item-td name="creatorName" />
  73. <!-- 编制日期 -->
  74. <sd-form-item-td name="creationTime" />
  75. </tr>
  76. <tr>
  77. <sd-form-item-td name="uuid" hidden="true" />
  78. </tr>
  79. </table>
  80. </template>
  81. </sd-detail-form>
  82. </audit-form-top-banner>
  83. </span>
  84. </template>
  85. <script>
  86. import { Message, Modal } from 'ant-design-vue'
  87. import axios from '@/common/services/axios-instance'
  88. import crossWindowWatcher from '@/common/services/cross-window-watcher'
  89. import auditFormTopBanner from '@product/iam/components/audit-form-top-banner'
  90. import { getUserInfo } from '@/common/store-mixin'
  91. import auditAdvancedGroupMixins from '@product/iam/components/audit-advanced-group-mixins'
  92. import components from './_import-components/xm-composite-database-publish-form-import'
  93. export default {
  94. name: 'XmCompositeDatabasePublishForm',
  95. metaInfo() {
  96. return {
  97. title: '综合资料下发',
  98. }
  99. },
  100. components: { auditFormTopBanner, ...components },
  101. mixins: [auditAdvancedGroupMixins],
  102. data() {
  103. return {
  104. endOpen: false,
  105. year: null,
  106. mode: null,
  107. hidenOR0Show: true,
  108. readOnly: false,
  109. publish: 0, // 为1 时是发布
  110. }
  111. },
  112. created() {},
  113. mounted() {},
  114. methods: {
  115. // 页面加载完成后
  116. sdFormReady() {
  117. const ini = setInterval(() => {
  118. if (
  119. this.$refs.docform &&
  120. (this.$refs.docform.$refs.form || this.$refs.docform.$refs.sdForm)
  121. ) {
  122. clearInterval(ini)
  123. this.mode = this.$refs.docform.formData.mode
  124. if (this.$refs.docform.formData.pageFormData.beanId) {
  125. const docStatus = this.$refs.docform.getFieldValue('docStatus')
  126. if (docStatus === '已发布') {
  127. this.hidenOR0Show = false
  128. this.readOnly = true
  129. this.mode = 'VIEW'
  130. } else {
  131. const creatorAccount = this.$refs.docform.getFieldValue('creatorAccount')
  132. if (creatorAccount !== getUserInfo().account) {
  133. this.hidenOR0Show = false
  134. this.readOnly = true
  135. this.mode = 'VIEW'
  136. }
  137. }
  138. }
  139. }
  140. }, 100)
  141. axios({
  142. url: 'api/xcoa-mobile/v1/spicannualreportpublish/createSpicAnnualUuid',
  143. method: 'post',
  144. }).then((res) => {
  145. const uuid = res.data
  146. this.$refs.docform.setFieldValue('uuid', uuid)
  147. })
  148. },
  149. yearChange(value) {
  150. this.year = value
  151. this.$refs.docform.setFieldValue('reportYear', value.format('YYYY'))
  152. this.$refs.docform.validateField('reportYear').then((res) => {
  153. console.log(res)
  154. })
  155. if (document.getElementsByClassName('ant-calendar-picker-container').length > 0) {
  156. document.getElementsByClassName('ant-calendar-picker-container')[0].style.display = 'none'
  157. }
  158. },
  159. handleEndOpenChange(open) {
  160. this.endOpen = open
  161. },
  162. handelPublish() {
  163. this.$refs.docform.validateFields().then(() => {
  164. Modal.confirm({
  165. title: '提示',
  166. content: '请确认是否发布当前数据',
  167. onOk: () => {
  168. // 发布,保存
  169. this.$refs.docform.setFieldValue('docStatus', '已发布')
  170. this.publish = 1
  171. this.$refs.docform.save().then((res) => {
  172. const id = this.$refs.docform.getFieldValue('id')
  173. const uuid = this.$refs.docform.getFieldValue('uuid')
  174. axios({
  175. url:
  176. 'api/xcoa-mobile/v1/spiccompositedatabasepublish/createSpicCompositeDatabaseFlow',
  177. method: 'post',
  178. data: { uuid: uuid },
  179. })
  180. .then((res) => {
  181. if (res.data.isRequestSuccess === 'false') {
  182. Message.error('年度资料下发失败,请联系系统管理员')
  183. } else {
  184. Message.success('发布成功', 1).then((res) => {
  185. this.close(true)
  186. })
  187. }
  188. })
  189. .catch(() => {
  190. Message.error('服务异常')
  191. })
  192. })
  193. },
  194. onCancel: () => {},
  195. })
  196. })
  197. },
  198. // 保存
  199. saveForm() {
  200. // debugger
  201. if (this.publish !== 1) {
  202. this.$refs.docform.setFieldValue('docStatus', '起草中')
  203. }
  204. this.$refs.docform.saveBtnClick()
  205. },
  206. saved() {
  207. if (this.publish === 1) {
  208. Message.success('发布成功', 1).then((res) => {
  209. this.close(true)
  210. })
  211. } else {
  212. Message.success('保存成功', 1).then((res) => {
  213. this.close(true)
  214. })
  215. }
  216. },
  217. close(flag) {
  218. crossWindowWatcher.notifyChange(this.$route.path, flag)
  219. window.close()
  220. },
  221. },
  222. }
  223. </script>
  224. <style module lang="scss">
  225. @import '@/webflow/sd-flow-form.scss';
  226. .ant-card-body {
  227. padding: 12px;
  228. :global(.buttons_sd-detail-form_common) {
  229. :global(.ant-form-item-control-wrapper) {
  230. padding-top: 4%;
  231. padding-left: 24%;
  232. }
  233. }
  234. .tr_border {
  235. box-sizing: border-box;
  236. border-right: 1px solid #e8e8e8;
  237. border-left: 1px solid #e8e8e8;
  238. }
  239. :global(.title_sd-detail-form_common) {
  240. font-size: 1.5em;
  241. text-align: center;
  242. }
  243. }
  244. .btnselect {
  245. position: relative;
  246. top: 4px;
  247. right: 200px;
  248. float: right;
  249. .batchselect {
  250. z-index: 100;
  251. margin-left: 10px;
  252. }
  253. }
  254. </style>