index.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <template>
  2. <view class="container">
  3. <uni-card v-if="formData && formData.status == 1">
  4. <uni-section title="驳回原因" type="line">
  5. <text class="msg">{{ formData.rejectReason }}</text>
  6. </uni-section>
  7. </uni-card>
  8. <uni-forms ref="baseForm" :modelValue="formData" :label-width="110" :rules="rules">
  9. <uni-forms-item v-for="item in fileds" :label="item.title" :name="item.name" :key="item.name" required>
  10. <uni-easyinput v-if="!item.formatter && !item.type" type="text" v-model="formData[item.name]" :placeholder="`请输入${item.title}`" />
  11. <uni-data-checkbox v-model="formData[item.name]" v-if="item.formatter && item.type == 'checkbox'" :multiple="item.multiple || false" :localdata="item.dict" />
  12. <uni-data-select v-model="formData[item.name]" v-if="item.type == 'picker'" :localdata="item.dict" placeholder="请选择社区"></uni-data-select>
  13. </uni-forms-item>
  14. </uni-forms>
  15. <button :disabled="formData.status == 0 || formData.status == 2" class="btn" type="primary" @click="submitForm">{{ btnText }}</button>
  16. </view>
  17. </template>
  18. <script>
  19. import request from '../../api/report.js';
  20. export default {
  21. data() {
  22. return {
  23. pickerList: [],
  24. btnText: '提交',
  25. formData: {},
  26. fileds: [
  27. { name: 'name', title: '姓名' },
  28. { name: 'sex', title: '性别', formatter: 'dict:user_sex_type', type: 'checkbox' },
  29. { name: 'workUnit', title: '工作单位' },
  30. { name: 'deptId', title: '报到社区', type: 'picker' },
  31. { name: 'baobaoloudong', title: '包保楼栋' },
  32. { name: 'phone', title: '联系电话' },
  33. { name: 'jianrensanzhang', title: '是否兼任三长', formatter: 'dict:jianrensanzhang_type', type: 'checkbox' },
  34. ],
  35. rules: {
  36. name: {
  37. rules:[{ required: true, errorMessage: '请填写姓名' }]
  38. },
  39. sex: {
  40. rules:[{ required: true, errorMessage: '请选择性别' }]
  41. },
  42. phone: {
  43. rules:[{ required: true, errorMessage: '请填写联系电话' }]
  44. },
  45. workUnit: {
  46. rules:[{ required: true, errorMessage: '请填写工作单位' }]
  47. },
  48. baobaoloudong: {
  49. rules:[{ required: true, errorMessage: '请填写包保楼栋' }]
  50. },
  51. jianrensanzhang: {
  52. rules:[{ required: true, errorMessage: '请选择是否兼任三长' }]
  53. },
  54. deptId: {
  55. rules:[{ required: true, errorMessage: '请选择报到社区' }]
  56. },
  57. }
  58. }
  59. },
  60. async mounted() {
  61. const getCommunity = await request.getCommunity();
  62. this.pickerList = getCommunity.rows;
  63. const res = await request.getGbStatus();
  64. if (res.data) {
  65. this.formData = { ...res.data, sex: String(res.data.sex), jianrensanzhang: String(res.data.jianrensanzhang) };
  66. if (res.data.status == 0) this.btnText = '审核中';
  67. // if (res.data.status == 1) this.btnText = '已驳回';
  68. if (res.data.status == 2) this.btnText = '已报到';
  69. }
  70. await this.setDict();
  71. },
  72. onShow() {},
  73. methods: {
  74. async setDict() {
  75. this.fileds = await Promise.all(this.fileds.map(async e => {
  76. if (e.name == 'deptId') e.dict = this.pickerList.map(e => ({ ...e, text: e.deptName, value: e.deptId }));;
  77. if (e.formatter && e.formatter.includes('dict')) {
  78. const dictType = e.formatter.split(':')[1];
  79. const res = await request.getDict(dictType);
  80. if (res.code == 200) e.dict = res.data.map(l => ({ ...l, value: l.dictValue, text: l.dictLabel }));
  81. }
  82. return e;
  83. }));
  84. },
  85. async submitForm() {
  86. this.$refs.baseForm.validate().then(async valid=>{
  87. let res;
  88. if (this.formData.xiachenganbuId) {
  89. res = await request.updategb(this.formData);
  90. } else {
  91. res = await request.submitgb(this.formData);
  92. }
  93. if (res.code == 200) {
  94. uni.showToast({
  95. title: '提交成功',
  96. icon: 'success',
  97. duration: 2000,
  98. });
  99. setTimeout(() => {
  100. uni.navigateBack();
  101. }, 1000)
  102. }
  103. }).catch(err =>{
  104. console.log('表单错误信息:', err);
  105. })
  106. }
  107. },
  108. // 页面生命周期中onReachBottom(页面滚动到底部的事件)
  109. onReachBottom() {}
  110. }
  111. </script>
  112. <style>
  113. .uni-forms {
  114. width: 90%;
  115. margin: 10px auto;
  116. }
  117. .btn {
  118. width: 90%;
  119. margin: 0 auto;
  120. }
  121. .msg {
  122. color: red;
  123. font-size: 12px;
  124. }
  125. </style>