massesInfo.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. <template>
  2. <view class="main">
  3. <view class="u-padding-left-40 u-padding-right-40" style="background: #fff;">
  4. <u-form :model="form" ref="uForm" label-width="130">
  5. <u-form-item label="姓名" prop="name" required>
  6. <u-input placeholder="请输入您的姓名" v-model="form.name" />
  7. </u-form-item>
  8. <u-form-item label="联系方式" prop="phone" required>
  9. <u-input type="number" maxlength="11" placeholder="请输入您的联系方式" v-model="form.phone" />
  10. <u-button open-type="getPhoneNumber" :custom-style="customBtn" @getphonenumber="getPhone"
  11. slot="right" type="success" hover-class="none" size="mini">获取手机号</u-button>
  12. </u-form-item>
  13. </u-form>
  14. </view>
  15. <view class="textArea">
  16. <view class="bodystyle">
  17. <textarea placeholder="*请填写留言内容" maxlength="500" @input="input"
  18. style="font-size: 28rpx;color: #666666;height: 250rpx;width: 100%;padding-left: 15rpx;" />
  19. <view
  20. style="height: 68rpx;width: 100%;color:#999999;padding: 20rpx 30rpx;font-size: 28rpx;text-align: right;">
  21. <text>{{problem_lenght}}</text>/500
  22. </view>
  23. </view>
  24. </view>
  25. <view class="u-padding-left-40 u-padding-right-40 u-margin-top-20" style="background: #fff;">
  26. <u-form label-width="130">
  27. <u-form-item label="你是" required>
  28. <u-input @click="selectCalendar = true" :disabled="true" v-model="menmber" placeholder="请选择身份" />
  29. </u-form-item>
  30. </u-form>
  31. </view>
  32. <u-picker @confirm="seleSheng" v-model="selectCalendar" :default-selector="[0]" :range="selector"
  33. mode="selector"></u-picker>
  34. <u-button hover-class="none" @click="submitForm" :custom-style="customStyle">提交</u-button>
  35. <lyg-popup @popupState="popupState" :nodeContent="nodeContent" title="使用须知"></lyg-popup>
  36. </view>
  37. </template>
  38. <script>
  39. import util from '@/common/util.js'
  40. import lyg_popup from '@/components/lyg-popup/lyg-popup.vue';
  41. export default {
  42. components: {
  43. lyg_popup
  44. },
  45. data() {
  46. return {
  47. customStyle: {
  48. width: '694rpx',
  49. height: '88rpx',
  50. backgroundColor: '#1721F4',
  51. color: '#fff',
  52. marginTop: '190rpx'
  53. },
  54. selector: ['人大代表', '政协委员', '人民监督员', '普通群众'],
  55. problem_lenght: '0',
  56. problem: '',
  57. form: {
  58. name: '',
  59. phone: ''
  60. },
  61. selectCalendar: false,
  62. menmber: '',
  63. customBtn: {
  64. backgroundColor: '#1721F4',
  65. color: '#fff'
  66. },
  67. nodeContent: '',
  68. rules: {
  69. name: [{
  70. required: true,
  71. message: '请输入您的姓名',
  72. // 可以单个或者同时写两个触发验证方式
  73. trigger: ['change', 'blur'],
  74. }, {
  75. validator: (rule, value, callback) => {
  76. return this.$u.test.chinese(value);
  77. },
  78. message: '请输入汉字',
  79. trigger: ['change', 'blur'],
  80. }],
  81. phone: [{
  82. required: true,
  83. min: 11,
  84. message: '请输入联系方式',
  85. trigger: ['change', 'blur'],
  86. },
  87. {
  88. validator: (rule, value, callback) => {
  89. return this.$u.test.mobile(value);
  90. },
  91. message: '手机号码不正确',
  92. trigger: ['change', 'blur'],
  93. }
  94. ],
  95. },
  96. }
  97. },
  98. onReady() {
  99. this.$refs.uForm.setRules(this.rules);
  100. },
  101. onLoad() {
  102. this.getServiceContent()
  103. },
  104. methods: {
  105. getPhone(e) {
  106. uni.login({
  107. success: (res) => {
  108. util.getPhoneData(res.code, e.detail).then(data => {
  109. this.form.phone = data
  110. })
  111. }
  112. })
  113. },
  114. input(e) {
  115. this.problem = e.detail.value
  116. this.problem_lenght = e.detail.value.length
  117. },
  118. seleSheng(e) {
  119. this.menmber = this.selector[e]
  120. },
  121. popupState(value) {
  122. if (!value) {
  123. uni.navigateBack()
  124. return false
  125. }
  126. },
  127. async getServiceContent() {
  128. let res = await this.$u.get('/home/xieyi', {
  129. id: 9
  130. })
  131. this.nodeContent = res.content
  132. },
  133. submitForm() {
  134. this.$refs.uForm.validate(valid => {
  135. if (valid) {
  136. if (this.problem == '') {
  137. uni.showToast({
  138. title: "请填写留言内容",
  139. icon: "none"
  140. })
  141. return false
  142. }
  143. if (this.menmber == '') {
  144. uni.showToast({
  145. title: "请选择身份",
  146. icon: "none"
  147. })
  148. return false
  149. }
  150. this.submitMassesForm()
  151. }
  152. });
  153. },
  154. async submitMassesForm() {
  155. let res = await this.$u.post('/form-input/masses', {
  156. name: this.form.name,
  157. contact: this.form.phone,
  158. content: this.problem,
  159. youare: this.menmber
  160. })
  161. uni.showModal({
  162. title: "温馨提示",
  163. content: "您的建议我们已经收悉,将尽快安排工作人员办理",
  164. showCancel: false,
  165. success: (res) => {
  166. if (res.confirm) {
  167. uni.navigateBack()
  168. }
  169. }
  170. })
  171. }
  172. }
  173. }
  174. </script>
  175. <style lang="scss">
  176. .textArea {
  177. height: auto;
  178. width: 100%;
  179. // padding: 0 30rpx;
  180. // background-color: #FFFFFF;
  181. margin-top: 25rpx;
  182. .bodystyle {
  183. width: 100%;
  184. height: auto;
  185. padding: 35rpx 20rpx;
  186. word-break: break-all;
  187. word-wrap: break-word;
  188. background: #FFFFFF;
  189. border-radius: 10rpx;
  190. }
  191. }
  192. </style>