km-knowledage-commentmodal.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <template>
  2. <div :class="$style.recommend">
  3. <a-form-model
  4. ref="recommendRuleForm"
  5. :rules="rules"
  6. :model="recommendForm"
  7. :label-col="labelCol"
  8. :wrapper-col="wrapperCol"
  9. >
  10. <a-form-model-item label="推荐方式:" prop="type" :class="$style.recomentRadio">
  11. <a-checkbox-group v-model="recommendForm.type" @change="onChange">
  12. <a-checkbox value="1" name="type" :disabled="commentHome">
  13. 推荐到门户
  14. </a-checkbox>
  15. <a-checkbox value="2" name="type">
  16. 推荐到个人
  17. </a-checkbox>
  18. </a-checkbox-group>
  19. </a-form-model-item>
  20. <a-form-model-item v-if="showPerson" label="推荐对象:" prop="person">
  21. <sd-user-picker
  22. v-model="recommendForm.person"
  23. :single="false"
  24. :read-only="false"
  25. @change="recomentChange"
  26. /> </a-form-model-item
  27. ><a-form-model-item label="推荐原因:" prop="desc">
  28. <a-input v-model="recommendForm.desc" type="textarea" />
  29. </a-form-model-item>
  30. <div :class="$style.btn">
  31. <a-button type="primary" @click="onSubmit">
  32. 确定
  33. </a-button>
  34. <a-button :class="$style.padd" @click="resetForm">
  35. 取消
  36. </a-button>
  37. </div>
  38. </a-form-model>
  39. </div>
  40. </template>
  41. <script>
  42. import { Message } from 'ant-design-vue'
  43. import KmKnowledageService from '../km-knowledage-service'
  44. import components from './_import-components/km-knowledage-commentmodal-import'
  45. export default {
  46. name: 'KmKnowledageCommentmodal',
  47. metaInfo: {
  48. title: 'OaKnowledageCommentmodal',
  49. },
  50. components,
  51. props: {
  52. commentHome: {
  53. type: Boolean,
  54. default: false,
  55. },
  56. showModal: {
  57. type: Boolean,
  58. default: false,
  59. },
  60. success: {
  61. type: Function,
  62. default: () => {},
  63. },
  64. },
  65. data() {
  66. return {
  67. labelCol: { span: 4 },
  68. wrapperCol: { span: 14 },
  69. // 推荐
  70. recommendForm: {
  71. resource: '',
  72. person: [],
  73. desc: '',
  74. },
  75. showPerson: false,
  76. rules: {
  77. type: [
  78. {
  79. type: 'array',
  80. required: true,
  81. message: '推荐方式不能为空!',
  82. trigger: 'change',
  83. },
  84. ],
  85. person: [
  86. {
  87. required: true,
  88. message: '推荐对象不能为空!',
  89. trigger: ['change', 'blur'],
  90. },
  91. ],
  92. },
  93. }
  94. },
  95. created() {},
  96. methods: {
  97. recomentChange(values) {},
  98. onChange(checkedValues) {
  99. if (checkedValues.length !== 0 && checkedValues.find((n) => n === '2')) {
  100. this.showPerson = true
  101. } else {
  102. this.showPerson = false
  103. }
  104. },
  105. // 推荐到门户
  106. recommendHome() {
  107. let recommenArea = ''
  108. recommenArea = '推荐到门户'
  109. window.open(
  110. `#/km-flow-guide?code=PROJECT_ZSGL_ZSTJ&knowledgeId=${this.$route.query.id}&title=${this.$route.query.title}&type=${recommenArea}&reason=${this.recommendForm.desc}`,
  111. '_blank'
  112. )
  113. this.recommendForm.desc = ''
  114. },
  115. // 推荐到个人
  116. recommendPerson() {
  117. const params = {
  118. beanId: Number(this.$route.query.id),
  119. title: this.$route.query.title,
  120. applyPerson: this.recommendForm.person,
  121. reason: this.recommendForm.desc,
  122. }
  123. KmKnowledageService.kmRecommendPerson(params).then((res) => {
  124. if (res.status === 200) {
  125. Message.success('推荐个人成功!')
  126. this.success()
  127. }
  128. })
  129. },
  130. onSubmit() {
  131. this.$refs.recommendRuleForm.validate((valid) => {
  132. if (valid) {
  133. if (
  134. this.recommendForm.type.indexOf('2') > -1 &&
  135. this.recommendForm.type.indexOf('1') > -1
  136. ) {
  137. this.recommendPerson()
  138. setTimeout(() => {
  139. this.recommendHome()
  140. }, 1000)
  141. } else if (this.recommendForm.type.indexOf('1') > -1) {
  142. this.recommendHome()
  143. } else {
  144. this.recommendPerson()
  145. }
  146. this.$emit('showModal', false)
  147. this.recommendForm.person = []
  148. this.recommendForm.type = []
  149. } else {
  150. return false
  151. }
  152. })
  153. },
  154. resetForm() {
  155. this.$emit('showModal', false)
  156. this.recommendForm.desc = ''
  157. this.recommendForm.person = []
  158. this.recommendForm.type = []
  159. },
  160. },
  161. }
  162. </script>
  163. <style module lang="scss">
  164. @use '@/common/design' as *;
  165. .recommend {
  166. padding: 20px;
  167. .recommend-li {
  168. height: 35px;
  169. margin-bottom: 0;
  170. line-height: $heading-2-size;
  171. span {
  172. padding-right: 20px;
  173. }
  174. }
  175. .btn {
  176. text-align: right;
  177. .padd {
  178. margin-left: 20px;
  179. }
  180. }
  181. }
  182. </style>