index.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <template>
  2. <view class="container">
  3. <uni-forms ref="baseForm" :modelValue="formData" :label-width="100">
  4. <uni-forms-item v-for="item in fileds" :label="item.title" :name="item.name" :key="item.name">
  5. <uni-easyinput v-if="!item.formatter && !item.type" type="text" v-model="formData[item.name]" :placeholder="`请输入${item.title}`" />
  6. <uni-data-checkbox v-model="formData[item.name]" v-if="item.formatter && item.type == 'checkbox'" :multiple="item.multiple || false" :localdata="item.dict" />
  7. </uni-forms-item>
  8. </uni-forms>
  9. <button :disabled="btnText == '已报道'" class="btn" type="primary" @click="submitForm">{{ btnText }}</button>
  10. </view>
  11. </template>
  12. <script>
  13. import request from '../../api/report.js';
  14. export default {
  15. data() {
  16. return {
  17. btnText: '提交',
  18. formData: {},
  19. fileds: [
  20. { name: 'name', title: '姓名' },
  21. { name: 'sex', title: '性别', formatter: 'dict:user_sex_type', type: 'checkbox' },
  22. { name: 'workUnit', title: '工作单位' },
  23. { name: 'baobaoloudong', title: '包保楼栋' },
  24. { name: 'phone', title: '联系电话' },
  25. { name: 'jianrensanzhang', title: '是否兼任三长', formatter: 'dict:jianrensanzhang_type', type: 'checkbox' },
  26. ]
  27. }
  28. },
  29. async mounted() {
  30. const res = await request.getGbStatus();
  31. if (res.data) {
  32. this.formData = { ...res.data, sex: String(res.data.sex), jianrensanzhang: String(res.data.jianrensanzhang) };
  33. this.btnText = '已报道';
  34. }
  35. await this.setDict();
  36. },
  37. onShow() {},
  38. methods: {
  39. async setDict() {
  40. this.fileds = await Promise.all(this.fileds.map(async e => {
  41. if (e.formatter && e.formatter.includes('dict')) {
  42. const dictType = e.formatter.split(':')[1];
  43. const res = await request.getDict(dictType);
  44. if (res.code == 200) e.dict = res.data.map(l => ({ ...l, value: l.dictValue, text: l.dictLabel }));
  45. }
  46. return e;
  47. }));
  48. },
  49. async submitForm() {
  50. const res = await request.submitgb(this.formData);
  51. if (res.code == 200) {
  52. uni.showToast({
  53. title: '提交成功',
  54. icon: 'success',
  55. duration: 2000,
  56. });
  57. setTimeout(() => {
  58. uni.navigateBack();
  59. }, 1000)
  60. }
  61. }
  62. },
  63. // 页面生命周期中onReachBottom(页面滚动到底部的事件)
  64. onReachBottom() {}
  65. }
  66. </script>
  67. <style>
  68. .uni-forms {
  69. width: 90%;
  70. margin: 10px auto;
  71. }
  72. .btn {
  73. width: 90%;
  74. margin: 0 auto;
  75. }
  76. </style>