second.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551
  1. <template>
  2. <view class="content">
  3. <!-- <view class="tip">孝心缝帮扶:仅限服装行业从业者申请哦~</view> -->
  4. <view class="flex til-list" v-if="status == ''">
  5. <view class="" @click="navTo('/pages/applyHelp/index?id='+id)">基本信息</view>
  6. <view class="red">信息选择</view>
  7. <view class="" @click="navTo('/pages/applyHelp/third?id='+id)">家庭成员情况</view>
  8. <view class="" @click="navTo('/pages/applyHelp/fourth?id='+id)">详细情况</view>
  9. </view>
  10. <view class="flex til-list" v-if="status == 2">
  11. <view class="" @click="navTo('/pages/applyHelp/index?id='+id+'&status=2')">基本信息</view>
  12. <view class="red">信息选择</view>
  13. <view class="" @click="navTo('/pages/applyHelp/third?id='+id+'&status=2')">家庭成员情况</view>
  14. <view class="" @click="navTo('/pages/applyHelp/fourth?id='+id+'&status=2')">详细情况</view>
  15. </view>
  16. <view class="content_box">
  17. <view class="list-name">身份</view>
  18. <view class="uni-list">
  19. <radio-group @change="radioChange1">
  20. <view class="radio-list flex_item">
  21. <label class="uni-list-cell uni-list-cell-pd flex_item" v-for="(item, index) in identity" :key="item.name">
  22. <view><radio :disabled="disabled" style="transform:scale(0.7)" color='#FF727E' :value="item.name" :checked="index === current1" /></view>
  23. <view>{{item.name}}</view>
  24. </label>
  25. </view>
  26. </radio-group>
  27. </view>
  28. </view>
  29. <view class="content_box">
  30. <view class="list-name">婚姻状况</view>
  31. <view class="uni-list">
  32. <radio-group @change="radioChange2">
  33. <view class="radio-list flex_item">
  34. <label class="uni-list-cell uni-list-cell-pd flex_item" v-for="(item, index) in marital" :key="item.name">
  35. <view><radio :disabled="disabled" style="transform:scale(0.7)" color='#FF727E' :value="item.name" :checked="index === current2" /></view>
  36. <view>{{item.name}}</view>
  37. </label>
  38. </view>
  39. </radio-group>
  40. </view>
  41. </view>
  42. <view class="content_box">
  43. <view class="list-name">是否医保</view>
  44. <view class="uni-list">
  45. <radio-group @change="radioChange3">
  46. <view class="radio-list flex_item">
  47. <label class="uni-list-cell uni-list-cell-pd flex_item" v-for="(item, index) in insurance" :key="item.name">
  48. <view><radio :disabled="disabled" style="transform:scale(0.7)" color='#FF727E' :value="item.name" :checked="index === current3" /></view>
  49. <view>{{item.name}}</view>
  50. </label>
  51. </view>
  52. </radio-group>
  53. </view>
  54. </view>
  55. <view class="content_box">
  56. <view class="list-name">对象特征</view>
  57. <view class="uni-list">
  58. <radio-group @change="radioChange4">
  59. <view class="radio-list flex_item">
  60. <label class="uni-list-cell uni-list-cell-pd flex_item" v-for="(item, index) in characteristics" :key="item.name">
  61. <view><radio :disabled="disabled" style="transform:scale(0.7)" color='#FF727E' :value="item.name" :checked="index === current4" /></view>
  62. <view>{{item.name}}</view>
  63. </label>
  64. </view>
  65. </radio-group>
  66. </view>
  67. </view>
  68. <view class="content_box">
  69. <view class="list-name">致困原因(最多选三项)</view>
  70. <view class="uni-list">
  71. <checkbox-group @change="checkboxChange">
  72. <view class="radio-list flex_item">
  73. <label class="uni-list-cell uni-list-cell-pd flex_item" v-for="item in maleLike" :key="item.name">
  74. <view>
  75. <checkbox :disabled="disabled" :value="item.name" style="transform:scale(0.7)" color='#FF727E' :checked="item.checked" />
  76. </view>
  77. <view>{{item.name}}</view>
  78. </label>
  79. </view>
  80. </checkbox-group>
  81. </view>
  82. </view>
  83. <view class="add-btn" v-if="status == ''" @click="confirm">下一步</view>
  84. <view class="add-btn" v-if="status == 2" @click="Tosecond">下一步</view>
  85. </view>
  86. </template>
  87. <script>
  88. import uniList from '@/components/uni-list/uni-list.vue';
  89. import uniListItem from '@/components/uni-list-item/uni-list-item.vue';
  90. import LbPicker from '@/components/lb-picker/index.vue'
  91. import { upload,add_two_help } from '@/api/index.js';
  92. import { getList,helpdetail } from '@/api/applyHelp.js';
  93. export default {
  94. components: {
  95. uniList,
  96. uniListItem,
  97. LbPicker
  98. },
  99. data() {
  100. return {
  101. identity:[{//身份
  102. value: '1',
  103. name: '居民'
  104. },{
  105. value: '2',
  106. name: '村民'
  107. },{
  108. value: '3',
  109. name: '农民工'
  110. },{
  111. value: '4',
  112. name: '在岗'
  113. },{
  114. value: '5',
  115. name: '下岗'
  116. },{
  117. value: '6',
  118. name: '离退休'
  119. },{
  120. value: '7',
  121. name: '病退病休'
  122. }],
  123. current1: '',
  124. checked:'',
  125. marital:[{//婚姻状况
  126. value: '1',
  127. name: '已婚'
  128. },{
  129. value: '2',
  130. name: '未婚'
  131. },{
  132. value: '3',
  133. name: '离异'
  134. },{
  135. value: '4',
  136. name: '丧偶'
  137. }],
  138. current2: '',
  139. checked2:'',
  140. insurance:[{//医保
  141. value: '1',
  142. name: '是'
  143. },{
  144. value: '2',
  145. name: '否'
  146. }],
  147. current3: '',
  148. checked3:'',
  149. characteristics:[{//对象特征
  150. value: '1',
  151. name: '低保对象'
  152. },{
  153. value: '2',
  154. name: '重度残疾'
  155. },{
  156. value: '3',
  157. name: '低保边缘对象'
  158. },{
  159. value: '4',
  160. name: '孤儿、孤寡老人'
  161. },{
  162. value: '5',
  163. name: '因灾、因病致穷家庭'
  164. },{
  165. value: '6',
  166. name: '其它'
  167. }],
  168. current4:'',
  169. checked4:'',
  170. maleLike:[{//致困原因(最多选三项)
  171. value: '1',
  172. name: '意外灾害'
  173. },{
  174. value: '2',
  175. name: '本人大病'
  176. },{
  177. value: '3',
  178. name: '子女上学'
  179. },{
  180. value: '4',
  181. name: '收入低无法维持基本生活'
  182. },{
  183. value: '5',
  184. name: '残疾'
  185. },{
  186. value: '6',
  187. name: '供养直系亲属大病'
  188. },{
  189. value: '7',
  190. name: '下岗失业',
  191. },{
  192. value: '8',
  193. name: '其它'
  194. }],
  195. currentArr: [], // 当前用户想要的选项,最大为5
  196. hasPass: false, // 用户之前是否选择过,是为true
  197. oldArr: [], // 上一次的返回值
  198. status:'',//审核通过
  199. disabled:false,
  200. };
  201. },
  202. onLoad(option) {
  203. if(option.id){
  204. this.id = option.id;
  205. this.helpDetail();
  206. }
  207. if(option.status){
  208. this.status = option.status;
  209. this.disabled = true;
  210. }
  211. },
  212. onUnload() {
  213. uni.navigateTo({
  214. url: '/pages/applyHelp/cation'
  215. });
  216. },
  217. methods: {
  218. //申请详情
  219. helpDetail(){
  220. let obj = this;
  221. helpdetail({
  222. id:obj.id
  223. }).then(({ data }) => {
  224. obj.id = data.id;
  225. console.log(data)
  226. if(data.capacity){
  227. obj.checked = data.capacity;
  228. obj.type = 2;
  229. if(obj.checked == '居民'){
  230. obj.current1 = 0;
  231. }
  232. if(obj.checked == '村民'){
  233. obj.current1 = 1;
  234. }
  235. if(obj.checked == '农民工'){
  236. obj.current1 = 2;
  237. }
  238. if(obj.checked == '在岗'){
  239. obj.current1 = 3;
  240. }
  241. if(obj.checked == '下岗'){
  242. obj.current1 = 4;
  243. }
  244. if(obj.checked == '离退休'){
  245. obj.current1 = 5;
  246. }
  247. if(obj.checked == '病退病休'){
  248. obj.current1 = 6;
  249. }
  250. }
  251. if(data.matrimonial){
  252. obj.checked2 = data.matrimonial;
  253. if(obj.checked2 == '已婚'){
  254. obj.current2 = 0;
  255. }
  256. if(obj.checked2 == '未婚'){
  257. obj.current2 = 1;
  258. }
  259. if(obj.checked2 == '离异'){
  260. obj.current2 = 2;
  261. }
  262. if(obj.checked2 == '丧偶'){
  263. obj.current2 = 3;
  264. }
  265. }
  266. if(data.medical){
  267. obj.checked3 = data.medical;
  268. if(obj.checked3 == '是'){
  269. obj.current3 = 0;
  270. }
  271. if(obj.checked3 == '否'){
  272. obj.current3 = 1;
  273. }
  274. }
  275. if(data.aspect){
  276. obj.checked4 = data.aspect;
  277. if(obj.checked4 == '低保对象'){
  278. obj.current4 = 0;
  279. }
  280. if(obj.checked4 == '重度残疾'){
  281. obj.current4 = 1;
  282. }
  283. if(obj.checked4 == '低保边缘对象'){
  284. obj.current4 = 2;
  285. }
  286. if(obj.checked4 == '孤儿、孤寡老人'){
  287. obj.current4 = 3;
  288. }
  289. if(obj.checked4 == '因灾、因病致穷家庭'){
  290. obj.current4 = 4;
  291. }
  292. if(obj.checked4 == '其它'){
  293. obj.current4 = 5;
  294. }
  295. if(obj.checked4 == '病退病休'){
  296. obj.current4 = 6;
  297. }
  298. }
  299. if(data.poverty){
  300. let poverty = data.poverty.split(",");
  301. let values = poverty;
  302. let items = obj.maleLike;
  303. for (let i = 0, lenI = items.length; i < lenI; ++i) {
  304. let item = items[i]
  305. if(values.includes(item.name)){
  306. obj.$set(item,'checked',true)
  307. }else{
  308. obj.$set(item,'checked',false)
  309. }
  310. }
  311. obj.oldArr = values;
  312. }
  313. }).catch(err => {
  314. console.log(err);
  315. });
  316. },
  317. //提交
  318. confirm() {
  319. let obj = this;
  320. if(obj.oldArr == ''){
  321. this.$api.msg('请选择致困原因!');
  322. return;
  323. }
  324. if(obj.oldArr.length > 3){
  325. this.$api.msg('致困原因最多选三项!');
  326. return;
  327. }
  328. add_two_help({
  329. id:obj.id,
  330. capacity:obj.checked,
  331. matrimonial:obj.checked2,
  332. medical:obj.checked3,
  333. aspect:obj.checked4,
  334. poverty:obj.oldArr.toString(),
  335. }).then(function(e) {
  336. obj.$api.msg(e.msg);
  337. setTimeout(function(){
  338. uni.navigateTo({
  339. url:'/pages/applyHelp/third?id='+obj.id
  340. })
  341. }, 2000);
  342. })
  343. .catch(e => {
  344. obj.$api.msg(e.message);
  345. });
  346. },
  347. Tosecond(){
  348. uni.navigateTo({
  349. url:'/pages/applyHelp/third?id='+this.id+'&status=2'
  350. })
  351. },
  352. radioChange1(evt){
  353. this.checked = evt.detail.value;
  354. console.log(this.checked)
  355. },
  356. radioChange2(evt){
  357. this.checked2 = evt.detail.value;
  358. console.log(this.checked2)
  359. },
  360. radioChange3(evt){
  361. this.checked3 = evt.detail.value;
  362. console.log(this.checked3)
  363. },
  364. radioChange4(evt){
  365. this.checked4 = evt.detail.value;
  366. console.log(this.checked4)
  367. },
  368. checkboxChange: function (e) {
  369. if (e.detail.value.length > 3) { // 如果选择的个数超过3个
  370. if (!this.hasPass) { // 当用户选择数量是第一次超过3
  371. this.hasPass = true
  372. if (e.detail.value.length > this.oldArr.length) { // 如果当前选择总数大于上一次选择总数(用户没有取消过选择)
  373. this.currentArr = e.detail.value.slice(0, 3)
  374. uni.showToast({
  375. title: '最多3个',
  376. icon: 'none'
  377. })
  378. } else { // 如果当前选择总数小于上一次选择总数(用户取消部分选择)
  379. let arr = []
  380. for (var i = 0; i < this.currentArr.length; i++) {
  381. for (var j = 0; j < 3; j++) {
  382. if (this.currentArr[i] === e.detail.value[j]) {
  383. arr.push(this.currentArr[i])
  384. } else {
  385. continue
  386. }
  387. }
  388. }
  389. this.currentArr = arr
  390. }
  391. } else { // 当用户选择数量不是第一次超过3(这时候change事件的返回值里有不一定是用户想要的值,所以需要做判断)
  392. if (e.detail.value.length > this.oldArr.length) { // 用户又增加了选项
  393. let n = e.detail.value.length
  394. if (this.currentArr.length < 3) {
  395. this.currentArr.push(e.detail.value[n - 1])
  396. } else {
  397. uni.showToast({
  398. title: '最多3个',
  399. icon: 'none'
  400. })
  401. }
  402. } else { // 用户取消了部分选项
  403. let arr = []
  404. for (var i = 0; i < this.currentArr.length; i++) {
  405. let n = e.detail.value.indexOf(this.currentArr[i])
  406. if (n !== -1) {
  407. arr.push(this.currentArr[i])
  408. } else {
  409. continue
  410. }
  411. }
  412. this.currentArr = arr
  413. }
  414. }
  415. } else { // 如果选择的个数小于等于3
  416. if (this.hasPass) { // 不是第一次小于3,即之前多选过,后来又取消选择
  417. if (e.detail.value.length < this.oldArr.length) { // 用户取消了部分选择
  418. let arr = []
  419. for (var i = 0; i < this.currentArr.length; i++) {
  420. let n = e.detail.value.indexOf(this.currentArr[i])
  421. if (n !== -1) {
  422. arr.push(this.currentArr[i])
  423. } else {
  424. continue
  425. }
  426. }
  427. this.currentArr = arr
  428. } else { // 用户增加选择,增加的新选项在数组最后
  429. let n = e.detail.value.length
  430. this.currentArr.push(e.detail.value[n - 1])
  431. }
  432. } else { // 是第一次小于3,这个最简单了,直接选了什么就给什么
  433. this.currentArr = e.detail.value
  434. }
  435. if (e.detail.value.length === 0) { // 如果用户取消了全部选择,让hasPass为false,即下一次再选时就会判断为第一次选择
  436. this.hasPass = false
  437. }
  438. }
  439. for (var i = 0, lenI = this.maleLike.length; i < lenI; ++i) { // 给用户的选项添加样式
  440. this.maleLike[i].isChecked = false;
  441. for (var j = 0, lenJ = this.currentArr.length; j < lenJ; ++j) {
  442. if (String(this.maleLike[i].value) === String(this.currentArr[j])) {
  443. this.maleLike[i].isChecked = true
  444. break
  445. }
  446. }
  447. }
  448. this.oldArr = e.detail.value // 把当前返回值赋值给上一次的返回值
  449. console.log(this.oldArr,88)
  450. },
  451. navTo(url) {
  452. uni.navigateTo({
  453. url
  454. });
  455. }
  456. }
  457. };
  458. </script>
  459. <style lang="scss">
  460. page {
  461. background: $page-color-base;
  462. min-height: 100%;
  463. }
  464. .content{
  465. padding-bottom: 100rpx;
  466. }
  467. .tip{
  468. color: #DE2412;
  469. background-color: #FEE2E3;
  470. font-size: 24rpx;
  471. padding: 25rpx 35rpx;
  472. }
  473. .til-list{
  474. padding: 35rpx 50rpx;
  475. font-size: 28rpx;
  476. color: #666666;
  477. .red{
  478. color: #E62129 !important;
  479. }
  480. }
  481. .content_box {
  482. background-color: #ffffff;
  483. padding: 0rpx 25rpx;
  484. margin: 25rpx auto;
  485. .list-name{
  486. padding-top: 25rpx;
  487. font-size: 35rpx;
  488. padding-left: 15rpx;
  489. padding-bottom: 10rpx;
  490. }
  491. }
  492. .row {
  493. display: flex;
  494. align-items: center;
  495. // position: relative;
  496. padding: 0 30rpx;
  497. height: 110rpx;
  498. background: #fff;
  499. border-bottom: 1rpx solid #f8f6f6;
  500. .tit {
  501. flex-shrink: 0;
  502. width: 180rpx;
  503. font-size: 30rpx;
  504. color: $font-color-dark;
  505. }
  506. .value{
  507. width: 100%;
  508. text-align: right;
  509. }
  510. .input {
  511. flex: 1;
  512. font-size: 30rpx;
  513. color: $font-color-dark;
  514. text-align: right;
  515. }
  516. .iconlocation {
  517. font-size: 36rpx;
  518. color: $font-color-light;
  519. }
  520. }
  521. .radio-list{
  522. display: flex;
  523. flex-wrap: wrap;
  524. font-size: 28rpx;
  525. padding-top: 30rpx;
  526. .uni-label-pointer{
  527. padding-right: 25rpx;
  528. padding-bottom: 30rpx;
  529. }
  530. }
  531. .add-btn{
  532. position: fixed;
  533. bottom: 0rpx;
  534. left: 0rpx;
  535. width: 100%;
  536. height: 100rpx;
  537. font-size: 28rpx;
  538. color: #FFFFFF;
  539. background-color: #FF727E;
  540. line-height: 100rpx;
  541. text-align: center;
  542. }
  543. </style>