forms.vue 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. <template>
  2. <view class="container">
  3. <uni-card :is-shadow="false" is-full class="top"></uni-card>
  4. <!-- <image class="image" src="../../static/banner.png" mode="heightFix" ></image> -->
  5. <view >
  6. <uni-forms ref="form" :rules="rules" :model="baseFormData" labelWidth="130px" class="form">
  7. <uni-forms-item label="姓名" name="customerName" required>
  8. <uni-easyinput :clearable="false" :inputBorder="false" v-model="baseFormData.customerName" maxlength="20" placeholder="请输入姓名" />
  9. </uni-forms-item>
  10. <uni-forms-item label="联系电话" name="telephone" required>
  11. <uni-easyinput :clearable="false" maxlength="11" :inputBorder="false" type="number" v-model="baseFormData.telephone" placeholder="请填写能联系到您的电话" />
  12. </uni-forms-item>
  13. <uni-forms-item label="职务">
  14. <uni-easyinput :clearable="false" :inputBorder="false" v-model="baseFormData.duties" maxlength="20" placeholder="请输入职务" />
  15. </uni-forms-item>
  16. <uni-forms-item label="公司/牧场名称" required name="company">
  17. <uni-easyinput :clearable="false" maxlength="20" :inputBorder="false" v-model="baseFormData.company" placeholder="请输入公司/牧场名称" />
  18. </uni-forms-item>
  19. <uni-forms-item label="畜牧类别" required name="cowTypeId">
  20. <uni-data-select :clear="false" :key="baseFormData.cowTypeId" v-model="baseFormData.cowTypeId" :localdata="animalType" placeholder="请选择" @change="changeCowType"></uni-data-select>
  21. </uni-forms-item>
  22. <uni-forms-item label="所在地区" required name="region">
  23. <view class="input selectcity" @tap="openPicker">
  24. <uni-easyinput :clearable="false" :inputBorder="false" v-model="baseFormData.region" placeholder="省市区县、乡镇等" @focus="heidden" />
  25. </view>
  26. </uni-forms-item>
  27. <uni-forms-item label="详细地址">
  28. <uni-easyinput :clearable="false" maxlength="60" type="textarea" :inputBorder="false" v-model="baseFormData.address" placeholder="街道、门牌号等" />
  29. </uni-forms-item>
  30. <uni-forms-item label="存栏">
  31. <uni-easyinput :clearable="false" maxlength="20" :inputBorder="false" v-model="baseFormData.cowCount" placeholder="请输入存栏" type="number" />
  32. </uni-forms-item>
  33. <uni-forms-item label="需求" required name="demandId">
  34. <uni-data-select :clear="false" v-model="baseFormData.demandId" :localdata="demandList" placeholder="请选择" @change="changedDmand"></uni-data-select>
  35. </uni-forms-item>
  36. <uni-forms-item label="备注">
  37. <uni-easyinput :clearable="false" maxlength="320" type="textarea" :inputBorder="false" v-model="baseFormData.remark" placeholder="请填写您其他特别说明" />
  38. </uni-forms-item>
  39. </uni-forms>
  40. <view class="tip">以上信息只用于联系到您,不做其他任何用途,请放心填写</view>
  41. <view class="btn">
  42. <button type="primary" @click="submit">提交</button>
  43. </view>
  44. </view>
  45. <cc-selectDity :show="show" @sureSelectArea="onsetCity" @hideShow="onhideShow"></cc-selectDity>
  46. </view>
  47. </template>
  48. <script>
  49. import utils from "../../utils/utils.js"
  50. export default {
  51. data() {
  52. return {
  53. baseFormData: {
  54. customerName: '',telephone: '',duties: '',company: '',cowTypeId: '',region: '',address: '',cowCount: '',demandId: '',remark: ''
  55. },
  56. animalType:[],
  57. demandList:[],
  58. show: false,
  59. isShow: true,
  60. rules:{
  61. customerName: {
  62. rules: [{
  63. required: true,
  64. errorMessage: '请输入姓名',
  65. }]
  66. },
  67. company:{
  68. rules:[{
  69. required: true,
  70. errorMessage: '请输入公司/牧场名称',
  71. }]
  72. },
  73. region:{
  74. rules:[{
  75. required: true,
  76. errorMessage: '请选择所在地区',
  77. }]
  78. },
  79. cowTypeId:{
  80. rules:[{
  81. required: true,
  82. errorMessage: '请选择畜牧类别',
  83. }]
  84. },
  85. demandId:{
  86. rules:[{
  87. required: true,
  88. errorMessage: '请选择需求',
  89. }]
  90. },
  91. telephone:{
  92. rules: [{
  93. required: true,
  94. errorMessage: '请填写能联系到您的电话',
  95. },
  96. {
  97. pattern:'(^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$)',
  98. errorMessage: '请输入正确的手机号',
  99. }
  100. ]
  101. }
  102. }
  103. }
  104. },
  105. onLoad() {
  106. this.get_animalTypeList()
  107. },
  108. onReady() {
  109. // 设置自定义表单校验规则,必须在节点渲染完毕后执行
  110. // this.$refs.customForm.setRules(this.customRules)
  111. },
  112. methods: {
  113. heidden(){
  114. var interval = setInterval(function(){
  115. uni.hideKeyboard();//隐藏软键盘
  116. console.log('刷新')
  117. },60);
  118. setTimeout(() => {
  119. clearInterval(interval);
  120. console.log('停止刷新')
  121. },2000);
  122. },
  123. get_animalTypeList(){
  124. let url = 'GetDataByNameOther'
  125. let data = {
  126. name:'getDictListSelect',
  127. parammaps:{
  128. pid:73
  129. }
  130. }
  131. utils.postJson(url, utils.combineFromParamForNull(data)).then((res)=> {
  132. if (res.data.list !== null) {
  133. this.animalType = res.data.list
  134. for(var i=0;i<this.animalType.length;i++){
  135. this.animalType[i].text = this.animalType[i].name;
  136. this.animalType[i].value = this.animalType[i].id;
  137. }
  138. } else {
  139. this.animalType = []
  140. }
  141. console.log(this.animalType,'this.animalType')
  142. })
  143. },
  144. changeCowType(item){
  145. this.baseFormData.cowTypeId = item
  146. if(this.baseFormData.cowTypeId !== ''){
  147. this.get_demandList()
  148. }
  149. },
  150. changedDmand(item){
  151. this.baseFormData.demandId = item
  152. },
  153. get_demandList(){
  154. let url = 'GetDataByNameOther'
  155. let data = {
  156. name:'getDemandByCowTypeId',
  157. parammaps:{
  158. cowTypeId:this.baseFormData.cowTypeId
  159. }
  160. }
  161. utils.postJson(url, utils.combineFromParamForNull(data)).then((res)=> {
  162. if (res.data.list !== null) {
  163. this.demandList = res.data.list
  164. for(var i=0;i<this.demandList.length;i++){
  165. this.demandList[i].text = this.demandList[i].name;
  166. this.demandList[i].value = this.demandList[i].id;
  167. }
  168. } else {
  169. this.demandList = []
  170. }
  171. })
  172. },
  173. openPicker() {
  174. console.log('执行打开地址选择器')
  175. this.show = true
  176. },
  177. onhideShow() {
  178. this.show = false
  179. console.log('执行了关闭地址选择器')
  180. },
  181. //选中省市区
  182. onsetCity(e) {
  183. let data = e.detail.target.dataset;
  184. let region = data.province + data.city + data.area;
  185. this.show = false
  186. this.baseFormData.region = region
  187. },
  188. submit(){
  189. // uni.navigateTo({
  190. // url:'/pages/submit/submit'
  191. // });
  192. this.$refs.form.validate().then(res=>{
  193. console.log('表单数据信息:', res);
  194. let url = "PostDataByNameOther"
  195. let data = {
  196. name:'insertCustomerinfo',
  197. parammaps:{
  198. customerName:this.baseFormData.customerName,
  199. telephone:this.baseFormData.telephone,
  200. duties:this.baseFormData.duties,
  201. company:this.baseFormData.company,
  202. cowTypeId:this.baseFormData.cowTypeId,
  203. region:this.baseFormData.region,
  204. address:this.baseFormData.address,
  205. cowCount:this.baseFormData.cowCount,
  206. demandId:this.baseFormData.demandId,
  207. remark:this.baseFormData.remark
  208. }
  209. }
  210. // data.parammaps = this.baseFormData
  211. utils.postJson(url, utils.combineFromParamForNull(data)).then((res)=> {
  212. if(res.msg == 'ok'){
  213. uni.navigateTo({
  214. url:'/pages/submit/submit'
  215. });
  216. }else{
  217. uni.showToast({
  218. title:'提交失败',
  219. duration: 2000
  220. })
  221. }
  222. })
  223. }).catch(err =>{
  224. console.log('表单错误信息:', err);
  225. uni.showToast({
  226. title:err[0].errorMessage,
  227. duration: 2000
  228. })
  229. })
  230. },
  231. }
  232. }
  233. </script>
  234. <style lang="scss">
  235. // .image{
  236. // height: 300rpx;
  237. // }
  238. .top{
  239. height: 300rpx;
  240. background: url(../../static/banner.png) no-repeat;
  241. background-size: auto 100%;
  242. }
  243. .form{
  244. background: #fff;
  245. }
  246. .uni-forms-item{
  247. border-bottom: 1px solid #ccc;
  248. padding-left: 20rpx;
  249. margin-bottom: 0;
  250. }
  251. // .uni-forms-item
  252. /deep/ .uni-select{
  253. border: none!important;
  254. }
  255. .tip{text-align: center; padding-top: 40rpx;}
  256. .btn{
  257. // position: fixed;
  258. margin-top: 30rpx;
  259. padding-bottom: 30rpx;
  260. width: 90%;
  261. margin-left: 5%;
  262. }
  263. /deep/ .uni-easyinput__content-input{
  264. height: 90rpx;
  265. font-size: 32rpx;
  266. }
  267. /deep/ .uni-forms-item__label{
  268. height: 90rpx;
  269. font-size: 32rpx;
  270. }
  271. /deep/ .uni-easyinput__placeholder-class{
  272. font-size: 32rpx;
  273. }
  274. /deep/ .uni-select__input-placeholder{
  275. font-size: 32rpx;
  276. }
  277. /deep/ .uni-select{
  278. height: 90rpx;
  279. font-size: 32rpx;
  280. }
  281. /deep/ .uni-forms-item__error.msg--active{
  282. opacity: 0;
  283. }
  284. .uni-select__input-placeholder{
  285. padding-left: 30rpx;
  286. }
  287. /deep/ .uni-textarea-placeholder{
  288. padding-left:24rpx
  289. }
  290. /deep/ .uni-textarea-textarea{
  291. padding-left:24rpx;
  292. font-size: 32rpx;
  293. }
  294. </style>