knowledgeForm.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <template>
  2. <uni-section title="新增知识库" type="line">
  3. <view class="example">
  4. <!-- 自定义表单校验 -->
  5. <uni-forms ref="customForm" :rules="rules" :modelValue="customFormData" label-align="center">
  6. <uni-forms-item label="标题" required name="titleName">
  7. <uni-easyinput v-model="customFormData.titleName" placeholder="请输入标题" />
  8. </uni-forms-item>
  9. <uni-forms-item label="正文" required name="textDetails">
  10. <uni-easyinput v-model="customFormData.textDetails" placeholder="请输入正文" />
  11. </uni-forms-item>
  12. <uni-forms-item label="图片" required name="url">
  13. <upload :imgArr="imgUrlList" :fileSize="1" :limit="3" @updateImg="updateImg" />
  14. </uni-forms-item>
  15. <uni-forms-item label="是否热门" required name="integral">
  16. <switch v-model="customFormData.popular" />
  17. </uni-forms-item>
  18. <uni-forms-item label="付费积分" required name="integral">
  19. <uni-number-box v-model="customFormData.integral" />
  20. </uni-forms-item>
  21. </uni-forms>
  22. <button type="primary" @click="submit('customForm')">提交</button>
  23. </view>
  24. </uni-section>
  25. </template>
  26. <script>
  27. import {
  28. addKnowledge
  29. } from "@/api/knowledge/knowledge";
  30. import upload from '../../components/upload/index.vue'
  31. export default {
  32. components: {
  33. upload
  34. },
  35. data() {
  36. return {
  37. html: '<div>Hello World!</div>',
  38. // 基础表单数据
  39. baseFormData: {
  40. titleName: '',
  41. textDetails: '',
  42. integral: '',
  43. popular: '',
  44. url: []
  45. },
  46. // 校验规则
  47. rules: {
  48. titleName: {
  49. rules: [{
  50. required: true,
  51. errorMessage: '标题不能为空'
  52. }]
  53. },
  54. textDetails: {
  55. rules: [{
  56. required: true,
  57. errorMessage: '正文不能为空'
  58. }]
  59. }
  60. },
  61. imgUrlList: [],
  62. customFormData: {},
  63. }
  64. },
  65. onLoad() {},
  66. onReady() {
  67. // 设置自定义表单校验规则,必须在节点渲染完毕后执行
  68. this.$refs.customForm.setRules(this.rules)
  69. },
  70. created() {},
  71. methods: {
  72. submit(ref) {
  73. this.$refs[ref].validate().then(res => {
  74. if (res) {
  75. if (this.imgUrlList != null && this.imgUrlList != [] && this.imgUrlList.length > 1) {
  76. uni.showToast({
  77. title: '图片只能上传一张'
  78. })
  79. } else {
  80. this.customFormData.imgUrlList = this.imgUrlList.join(',')
  81. addKnowledge(this.customFormData).then(response => {
  82. this.$modal.msgSuccess('提交成功');
  83. this.customFormData = {
  84. ...this.baseFormData
  85. };
  86. this.imgUrlList = [];
  87. uni.navigateTo({
  88. url: '../knowledge/knowledge'
  89. });
  90. }).catch(err => {
  91. console.log('err', err);
  92. })
  93. }
  94. }
  95. })
  96. },
  97. updateImg(imgUrlList) {
  98. this.imgUrlList = imgUrlList;
  99. }
  100. }
  101. }
  102. </script>
  103. <style lang="scss">
  104. .example {
  105. padding: 15px;
  106. background-color: #fff;
  107. }
  108. .segmented-control {
  109. margin-bottom: 15px;
  110. }
  111. .button-group {
  112. margin-top: 15px;
  113. display: flex;
  114. justify-content: space-around;
  115. }
  116. .form-item {
  117. display: flex;
  118. align-items: center;
  119. }
  120. .button {
  121. display: flex;
  122. align-items: center;
  123. height: 35px;
  124. margin-left: 10px;
  125. }
  126. </style>