social.ts 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. import {Component, Vue, Watch} from 'vue-property-decorator';
  2. import Utils from '@/extend/Utils';
  3. import Http from '@/extend/Http';
  4. import router from '@/router';
  5. import {MessageBox, Message} from 'element-ui';
  6. const serviceChargeData: any = [
  7. {
  8. monthly: '月付:50元/月', seasonal: '季付:135元/季', halfYearly: '半年付:240元/半年', yearly: '年付:300元/年',
  9. },
  10. {
  11. monthly: '月付:75元/月', seasonal: '季付:202.5元/季', halfYearly: '半年付:360元/半年', yearly: '年付:450元/年',
  12. }
  13. ];
  14. @Component({})
  15. export default class Social extends Vue {
  16. public data: any = {
  17. is_fund: 0,
  18. is_discounts: false,
  19. social_calc: null,
  20. service_calc: 0,
  21. fund_calc: 0,
  22. shouxu:0,
  23. subtotal_calc: 0,
  24. total_calc: 0,
  25. social_basic: {pension: 3400, fund: 3400},
  26. social_type: null,
  27. social_name:'',
  28. service_charge: null,
  29. discountList:'',
  30. // value:'',
  31. discount:0,
  32. freedom:0,
  33. hubie:'',
  34. month:'',
  35. mobile:'',
  36. citycode:'',
  37. cityname:'',
  38. sheng:'',
  39. shi:'',
  40. code:'11',
  41. codes:'1101',
  42. couponSelected:'',
  43. sociallist:[{id: 1, name: "本地城镇"}, {id: 2, name: "本地农村"}, {id: 3, name: "外埠城镇"}, {id: 4, name: "外埠农村"}],
  44. // 附加费用 残保金
  45. append_cost: [],
  46. // 是否是城镇户口 true-是城镇
  47. is_town: true,
  48. // 社保缴纳额度最小值显示
  49. // pensionMin: localStorage.getItem('pensionMin') || 3613,
  50. };
  51. private service_charge_type: string = 'monthly';
  52. async created() {
  53. let resisorder = await Http.getInstance().getIsOrder();
  54. if(resisorder.data.is_order == 1){
  55. MessageBox.alert( '您有未支付订单,请先支付或取消未支付订单', '温馨提示', {
  56. dangerouslyUseHTMLString: true,
  57. confirmButtonText: '确定',
  58. }).then(action =>{
  59. this.$router.push('/order/list')
  60. }).catch(() => {
  61. this.$router.push('/index')
  62. });
  63. }
  64. this.data.mobile = localStorage.getItem('mobile')
  65. this.data.citycode = localStorage.getItem('citycode')
  66. this.data.cityname = localStorage.getItem('cityname')
  67. this.data.is_town = localStorage.getItem('is_town')
  68. let res = await Http.getInstance().getProvinceList();
  69. this.data.sheng = res.data.prolist
  70. this.data.shi = res.data.citylist
  71. if(!localStorage.getItem('access_token')){
  72. router.replace('/login')
  73. }
  74. let params = Utils.getInstance().getParams(location.href);
  75. this.data.is_fund = Number(params.is_fund);
  76. this.data.social_type = localStorage.getItem('social_type');
  77. this.data.hubie = localStorage.getItem('social_name');
  78. if (this.data.social_type != null) {
  79. let res = await Http.getInstance().socialLimit({
  80. socialType: this.data.social_type,
  81. code: this.data.citycode
  82. });
  83. this.data.social_basic = res.data;
  84. console.log('缴费明细', res);
  85. // this.data.social_type = this.data.social_type - 1;
  86. localStorage.setItem('pensionMin', this.data.social_basic.pension[0])
  87. }
  88. this.data.service_charge = serviceChargeData[this.data.is_fund];
  89. this.getIsFund()
  90. }
  91. async chooseShi(){
  92. let res = await Http.getInstance().getCityList({
  93. code: this.data.code
  94. });
  95. this.data.shi = res.data
  96. console.log(res.data)
  97. }
  98. async chooseSocial(){
  99. let res = await Http.getInstance().getSociallist({
  100. code: this.data.codes
  101. });
  102. if(res.data){
  103. this.data.sociallist = res.data
  104. }
  105. }
  106. open() {
  107. // @ts-ignore
  108. MessageBox.alert('<a href="tel:' + Http.PHONE + '">' + Http.PHONE + '</a><p>手机号同步微信</p>', '请联系客服', {
  109. dangerouslyUseHTMLString: true,
  110. confirmButtonText: "拨打" ,
  111. }).then(action =>{
  112. window.location.href = 'tel://' +Http.PHONE;
  113. });
  114. }
  115. async updated() {
  116. if (this.data.social_calc == null) {
  117. this.calcBill();
  118. }
  119. }
  120. async saveInfo(event: any) {
  121. if(this.data.codes == ''){
  122. alert('请选择代缴城市')
  123. return false
  124. }
  125. let form = event.target.form;
  126. if (form.checkValidity() === false) {
  127. form.classList.add('was-validated');
  128. event.preventDefault();
  129. event.stopPropagation();
  130. return false;
  131. }
  132. let res = await Http.getInstance().saveBase(Utils.getInstance().serialize(form));
  133. // @ts-ignore
  134. this.data.social_type = res.data.social_type;
  135. this.data.social_name = res.data.social_name;
  136. this.data.citycode = res.data.city_code;
  137. this.data.cityname = res.data.city_name;
  138. this.data.service_charge = serviceChargeData[this.data.is_fund];
  139. localStorage.setItem('social_type', this.data.social_type);
  140. localStorage.setItem('social_name', this.data.social_name);
  141. localStorage.setItem('service_charge', this.data.service_charge);
  142. localStorage.setItem('access_token', res.data.access_token);
  143. localStorage.setItem('refresh_token', res.data.refresh_token);
  144. localStorage.setItem('citycode', res.data.city_code);
  145. localStorage.setItem('cityname', res.data.city_name);
  146. res = await Http.getInstance().socialLimit({
  147. socialType: this.data.social_type,
  148. code: this.data.codes
  149. });
  150. this.data.social_basic = res.data;
  151. return false;
  152. }
  153. async calcBill(event?: any) {
  154. let form = event ? event.target.form : document.getElementById('social-detail');
  155. // console.log('form.checkValidity()', form.checkValidity());
  156. if (form.checkValidity() === false) {
  157. form.classList.add('was-validated');
  158. return false;
  159. }
  160. // console.log('from', form)
  161. let res = await Http.getInstance().calcBill(Utils.getInstance().serialize(form));
  162. console.log('五险一金', res);
  163. this.data.social_calc = res.data.social;
  164. this.data.service_calc = res.data.service;
  165. this.data.discount = res.data.discount;
  166. this.data.freedom = res.data.freedom;
  167. this.data.fund_calc = res.data.fund;
  168. this.data.subtotal_calc = res.data.subtotal;
  169. this.data.total_calc = res.data.total;
  170. this.data.is_discounts = res.data.discounts;
  171. this.data.month = res.data.month;
  172. this.data.append_cost = res.data.append_cost
  173. let ress = await Http.getInstance().getDiscountListt();
  174. if(ress.data.length == 0){
  175. this.data.discountList= [{id: 0, money: "暂无优惠券"}]
  176. }else{
  177. this.data.discountList = ress.data;
  178. }
  179. }
  180. async saveOrder(event: any) {
  181. let date = new Date();
  182. let seperator1 = "-";
  183. let year = date.getFullYear();
  184. let month = date.getMonth() + 1;
  185. let strDate = date.getDate();
  186. if (strDate > 28 ) {
  187. if(this.data.is_fund == 0){
  188. MessageBox.alert('当月社保缴纳时间为1-29日,目前只能为您代缴下个月的社保,如需缴纳本月社保,请联系客服。', '溫馨提示', {
  189. dangerouslyUseHTMLString: true,
  190. showCancelButton: true,
  191. confirmButtonText: "联系客服" ,
  192. cancelButtonText: '继续缴费',
  193. }).then(action =>{
  194. window.location.href = 'tel://' +Http.PHONE;
  195. });
  196. }else {
  197. MessageBox.alert('当月社保/公积金缴纳时间为1-29日,目前只能为您代缴下个月的社保/公积金,如需缴纳本月社保/公积金,请联系客服。', '溫馨提示', {
  198. dangerouslyUseHTMLString: true,
  199. showCancelButton: true,
  200. confirmButtonText: "联系客服" ,
  201. cancelButtonText: '继续缴费',
  202. }).then(action =>{
  203. window.location.href = 'tel://' +Http.PHONE;
  204. });
  205. }
  206. }
  207. let form = event.target.form;
  208. if (form.checkValidity() === false) {
  209. form.classList.add('was-validated');
  210. event.preventDefault();
  211. event.stopPropagation();
  212. return false;
  213. }
  214. let res = await Http.getInstance().saveOrder(Utils.getInstance().serialize(form));
  215. localStorage.setItem('order_paying', JSON.stringify(res.data));
  216. router.replace({
  217. name: 'opayment',
  218. params: {
  219. order_sn: res.data.order_sn,
  220. type: '1'
  221. }
  222. });
  223. }
  224. // 监听,防止用户从微信快捷菜单点击进来
  225. getIsFund() {
  226. let path = window.location.href
  227. // console.log('path', path, this.data.is_town);
  228. if (path.indexOf('/social?is_fund=0') > -1 && this.data.is_town == 'true') {
  229. this.$router.push('/index')
  230. Message({
  231. message: '城镇户口只能交五险一金,不能交社保',
  232. type: 'warning'
  233. });
  234. }
  235. }
  236. // 微信快捷进入,登陆之后才可进入
  237. @Watch('$route', {immediate: true}) async isUserInfo(newVal: any, oldVal: any) {
  238. if(localStorage.getItem('access_token')){
  239. let res = await Http.getInstance().userinfo();
  240. console.log('token', res);
  241. localStorage.setItem("social_type", res.data.social_type);
  242. }
  243. let result = await Http.getInstance().userinfo();
  244. console.log('result',result);
  245. if (result && result.data) {
  246. localStorage.setItem("realname", result.data.realname);
  247. localStorage.setItem("id_card", result.data.id_card);
  248. }
  249. // 真实姓名
  250. const realname = localStorage.getItem('realname')
  251. const social_type = localStorage.getItem('social_type')
  252. const id_card = localStorage.getItem('id_card')
  253. console.log('realname1', realname);
  254. console.log('social_type', social_type);
  255. console.log('id_card', id_card);
  256. // console.log('newVal.path', newVal.path);
  257. if (newVal.path === '/social' && realname == 'null' || social_type == 'null' || id_card == '') {
  258. this.$router.replace('/user/info')
  259. // 提示
  260. Message({
  261. message: '请填写个人信息',
  262. type: 'warning'
  263. })
  264. }
  265. }
  266. // 监听社保缴纳额度是否有变化
  267. // @Watch('data.social_basic.pension') changSocalBasic(newVal: any) {
  268. // console.log('社保缴纳额度', newVal);
  269. // if (newVal[0] != '') {
  270. // this.data.isPensionMin = false
  271. // }
  272. // }
  273. }