appeal.html 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. {extend name="public/base_jfm"/}
  2. {block name="css"}
  3. <style>
  4. .avatar {width:100px;height:100px;margin:0 auto;}
  5. </style>
  6. {/block}
  7. {block name="body"}
  8. <van-nav-bar
  9. class="nav-theme"
  10. :fixed="true"
  11. :placeholder="true"
  12. left-text="返回"
  13. left-arrow
  14. @click-left="onBack"
  15. >
  16. <template #title>
  17. <span class="text-white">诉求直通</span>
  18. </template>
  19. </van-nav-bar>
  20. <van-form @submit="onSubmit">
  21. <van-cell-group>
  22. <van-field
  23. v-model="form.company_name"
  24. required
  25. label="企业名称"
  26. placeholder="请输入企业名称"
  27. :rules="[{ required: true, message: '请输入企业名称' }]"
  28. ></van-field>
  29. <van-field
  30. v-model="form.company_contact"
  31. required
  32. label="联系人及职务"
  33. placeholder="请输入联系人及职务"
  34. :rules="[{ required: true, message: '请输入联系人及职务' }]"
  35. ></van-field>
  36. <van-field
  37. v-model="form.street"
  38. required
  39. readonly
  40. label="镇街"
  41. placeholder="请选择镇街"
  42. @click="toggleStreet(true)"
  43. :rules="[{ required: true, message: '请选择镇街' }]"
  44. ></van-field>
  45. <van-popup v-model:show="street_show" position="bottom">
  46. <van-picker
  47. :columns="street"
  48. title="镇街"
  49. @confirm="onStreet"
  50. @cancel="toggleStreet(false)"
  51. ></van-picker>
  52. </van-popup>
  53. <van-field
  54. v-model="form.half_output"
  55. required
  56. type="number"
  57. label="上半年产值"
  58. placeholder="请输入上半年产值(万元)"
  59. :rules="[{ required: true, message: '请输入上半年产值(万元)' }]"
  60. ></van-field>
  61. <van-field
  62. v-model="form.year_output"
  63. required
  64. type="number"
  65. label="全年产值"
  66. placeholder="请输入全年产值(万元)"
  67. :rules="[{ required: true, message: '请输入全年产值(万元)' }]"
  68. ></van-field>
  69. <van-field
  70. v-model="form.cate"
  71. required
  72. readonly
  73. label="需求类别"
  74. placeholder="请选择需求类别"
  75. @click="toggleCate(true)"
  76. :rules="[{ required: true, message: '请选择需求类别' }]"
  77. ></van-field>
  78. <van-popup v-model:show="cate_show" position="bottom">
  79. <van-picker
  80. :columns="cate"
  81. title="需求类别"
  82. @confirm="onCate"
  83. @cancel="toggleCate(false)"
  84. ></van-picker>
  85. </van-popup>
  86. <van-field
  87. v-model="form.content"
  88. rows="3"
  89. autosize
  90. label="内容"
  91. type="textarea"
  92. maxlength="1000"
  93. placeholder="请输入内容"
  94. show-word-limit
  95. required
  96. :rules="[{ required: true, message: '请输入内容' }]"
  97. ></van-field>
  98. <van-field
  99. v-model="form.filled_by"
  100. required
  101. label="填表人"
  102. placeholder="请输入填表人"
  103. :rules="[{ required: true, message: '请输入填表人' }]"
  104. ></van-field>
  105. <van-field
  106. v-model="form.mobile"
  107. required
  108. label="联系电话"
  109. placeholder="请输入联系电话"
  110. type="mobile"
  111. :rules="[{ required: true, message: '请输入联系电话' }]"
  112. ></van-field>
  113. </van-cell-group>
  114. <div style="margin: 16px;">
  115. <van-button round block type="primary" native-type="submit">
  116. 提交
  117. </van-button>
  118. </div>
  119. </van-form>
  120. {/block}
  121. {block name="script"}
  122. <script>
  123. function v_setup() {
  124. let base = {};
  125. //基础
  126. base.form = Vue.reactive({});
  127. base.onBack = () => {
  128. location.href = "{:url('jfm/index')}";
  129. };
  130. //镇街
  131. base.street = Vue.reactive({$street});
  132. base.street_show = Vue.ref(false);
  133. base.toggleStreet = (value) => {
  134. base.street_show.value = value;
  135. };
  136. base.onStreet = (value) => {
  137. base.form.street = value.selectedValues[0];
  138. base.street_show = false;
  139. };
  140. //类别
  141. base.cate = Vue.reactive({$cate});
  142. base.cate_show = Vue.ref(false);
  143. base.toggleCate = (value) => {
  144. base.cate_show.value = value;
  145. };
  146. base.onCate = (value) => {
  147. base.form.cate = value.selectedValues[0];
  148. base.cate_show = false;
  149. };
  150. //表单提交
  151. base.onSubmit = () => {
  152. if (base.form.avatar === '') {
  153. vant.showToast('请上传头像');
  154. }
  155. if (base.form.gender === 0) {
  156. vant.showToast('请选择性别');
  157. }
  158. postJson('/jfm/appealPost',base.form).then(({code,msg}) => {
  159. vant.showDialog({
  160. title: '提示',
  161. message: msg
  162. }).then(() => {
  163. if (code == 0) {
  164. location.href = "{:url('jfm/index')}";
  165. }
  166. });;
  167. });
  168. };
  169. return base;
  170. }
  171. </script>
  172. {/block}