移动端
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

811 rader
33 KiB

  1. <template>
  2. <div class="app-container">
  3. <van-nav-bar
  4. left-arrow
  5. fixed
  6. placeholder
  7. @click-left="$router.back(-1)"
  8. >
  9. <template #title>
  10. <p style="font-weight: bold;">有偿退出</p>
  11. </template>
  12. </van-nav-bar>
  13. <div class="main_box">
  14. <!-- <van-field v-model="circulation.sqrxm" label="申请人姓名" placeholder="申请人姓名" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>-->
  15. <van-field readonly v-model="circulation.sqrxm" label="申请人姓名" placeholder="申请人姓名" input-align="right" label-width="auto" :rules="[{ required: true }]" required @input="remoteTransfereeMethod" />
  16. <div id="dropList" v-show="showDropList" style="width: 92vw; position: absolute; z-index: 99; left: 50%; margin-left: -46vw; border: 1px solid #E2E0E0;" >
  17. <van-cell id="vanCell" v-for="(item, index) in getObligeeOptions" :key="index" @click="shyqrdmxmChange(item)" style="position: relative; z-index: 999;">
  18. {{item.sqrxm}}
  19. </van-cell>
  20. </div>
  21. <!-- <van-field-->
  22. <!-- readonly-->
  23. <!-- clickable-->
  24. <!-- v-model="circulation.zjddm"-->
  25. <!-- label="宅基地代码"-->
  26. <!-- placeholder="请选择"-->
  27. <!-- @click="remoteProposerMethod"-->
  28. <!-- input-align="right"-->
  29. <!-- right-icon="arrow-down" :rules="[{ required: true }]" required-->
  30. <!-- />-->
  31. <!-- <van-popup v-model="showzjddm" position="bottom">-->
  32. <!-- <van-picker-->
  33. <!-- show-toolbar-->
  34. <!-- :columns="zjdDictionaries"-->
  35. <!-- value-key="zjddm"-->
  36. <!-- @confirm="onConfirmZjddm"-->
  37. <!-- @cancel="showzjddm = false"-->
  38. <!-- />-->
  39. <!-- </van-popup>-->
  40. <van-field
  41. readonly
  42. v-model="circulation.zjddm"
  43. label="宅基地代码"
  44. input-align="right"
  45. >
  46. <template #button>
  47. <van-button size="small" @click="mapLook" type="primary">选择宅基地</van-button>
  48. </template>
  49. </van-field>
  50. <field-select
  51. readonly
  52. v-model="circulation.xb"
  53. label="性別"
  54. value-key="dictLabel"
  55. data-key="dictValue"
  56. placeholder="选择现状"
  57. :rules="[{ required: true }]"
  58. required
  59. remote-url="/system/dict/data/type/sys_user_sex"
  60. :on-remote-response="'data'"
  61. />
  62. <van-field readonly v-model="circulation.sqrzjhm" label="申请人证件号码" placeholder="申请人证件号码" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>
  63. <van-field readonly v-model="circulation.lxdh" label="联系电话" placeholder="联系电话" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>
  64. <field-select
  65. readonly
  66. v-model="circulation.gyqk"
  67. label="共有情况"
  68. value-key="dictLabel"
  69. data-key="dictValue"
  70. placeholder="选择共有情况"
  71. :rules="[{ required: true }]"
  72. required
  73. remote-url="/system/dict/data/type/house_yes_no"
  74. :on-remote-response="'data'"
  75. />
  76. <van-field readonly v-model="circulation.hkszd" label="户口所在地" placeholder="户口所在地" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>
  77. </div>
  78. <div v-if="circulation.jtcyqkList">
  79. <p class="main_title">家庭成员情况</p>
  80. <div >
  81. <van-tabs v-if="circulation.jtcyqkList && circulation.jtcyqkList.length > 0" v-model="familyMembersActive" ref="memberTabs">
  82. <van-tab :title="(index + 1) + '. ' + item.xm" v-for="(item , index) in circulation.jtcyqkList" :key="index" swipeable>
  83. <div class="familyList">
  84. <div class="main_box" style="margin-bottom: 20px">
  85. <!-- <van-button icon="minus" size="mini" type="danger" class="deleteFamily" native-type="button" v-if="index!=0" @click="deleteFamily(index)" />-->
  86. <van-field readonly required v-model="item.xm" label="姓名" placeholder="姓名" input-align="right" :rules="[{ required: true }]"/>
  87. <van-field readonly required v-model="item.nl" label="年龄" placeholder="年龄" input-align="right" :rules="[{ required: true }]"/>
  88. <field-select
  89. v-model="item.yhzgx"
  90. readonly
  91. label="与户主关系"
  92. value-key="dictLabel"
  93. data-key="dictValue"
  94. placeholder="选择与户主关系"
  95. :rules="[{ required: true }]"
  96. required
  97. remote-url="/system/dict/data/type/family_status"
  98. :on-remote-response="'data'"
  99. />
  100. <van-field readonly required v-model="item.sfzh" label="身份证号" placeholder="身份证号" input-align="right" :rules="[{pattern: /^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/}]" @input="updateMemberInfo(index)"/>
  101. <van-field readonly required v-model="item.hkszd" label="户口所在地" placeholder="户口所在地" input-align="right" :rules="[{ required: true }]"/>
  102. </div>
  103. </div>
  104. </van-tab>
  105. </van-tabs>
  106. </div>
  107. </div>
  108. <div v-if="circulation.gyrqkList">
  109. <p class="main_title">共有人情况</p>
  110. <div >
  111. <van-tabs v-if="circulation.gyrqkList && circulation.gyrqkList.length > 0" v-model="familyMembersActive" ref="memberTabs">
  112. <van-tab :title="(index + 1) + '. ' + item.xm" v-for="(item , index) in circulation.gyrqkList" :key="index" swipeable>
  113. <div class="familyList">
  114. <div class="main_box" style="margin-bottom: 20px">
  115. <!-- <van-button icon="minus" size="mini" type="danger" class="deleteFamily" native-type="button" v-if="index!=0" @click="deleteFamily(index)" />-->
  116. <van-field readonly required v-model="item.xm" label="姓名" placeholder="姓名" input-align="right" :rules="[{ required: true }]"/>
  117. <van-field readonly required v-model="item.nl" label="年龄" placeholder="年龄" input-align="right" :rules="[{ required: true }]"/>
  118. <field-select
  119. v-model="item.yhzgx"
  120. label="与户主关系"
  121. value-key="dictLabel"
  122. data-key="dictValue"
  123. placeholder="选择与户主关系"
  124. :rules="[{ required: true }]"
  125. required
  126. readonly
  127. remote-url="/system/dict/data/type/family_status"
  128. :on-remote-response="'data'"
  129. />
  130. <van-field readonly required v-model="item.sfzh" label="身份证号" placeholder="身份证号" input-align="right" :rules="[{pattern: /^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/}]" @input="updateMemberInfo(index)"/>
  131. <van-field readonly required v-model="item.hkszd" label="户口所在地" placeholder="户口所在地" input-align="right" :rules="[{ required: true }]"/>
  132. </div>
  133. </div>
  134. </van-tab>
  135. </van-tabs>
  136. </div>
  137. </div>
  138. <p class="main_title">拟申请退出宅基地-面积</p>
  139. <van-field readonly v-model="circulation.tcmj" label="面积(㎡)" placeholder="请输入面积㎡" input-align="right" label-width="auto" :rules="[{ required: true }]" required type="number"/>
  140. <field-select
  141. readonly
  142. v-model="circulation.xz"
  143. label="现状"
  144. value-key="dictLabel"
  145. data-key="dictValue"
  146. placeholder="选择现状"
  147. :rules="[{ required: true }]"
  148. required
  149. remote-url="/system/dict/data/type/dsxz"
  150. :on-remote-response="'data'"
  151. />
  152. <p class="main_title">拟申请退出宅基地-四至</p>
  153. <van-field readonly v-model="circulation.zjdszd" label="东至" placeholder="东至" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>
  154. <van-field readonly v-model="circulation.zjdszn" label="南至" placeholder="南至" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>
  155. <van-field readonly v-model="circulation.zjdszx" label="西至" placeholder="西至" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>
  156. <van-field readonly v-model="circulation.zjdszb" label="北至" placeholder="北至" input-align="right" label-width="auto" :rules="[{ required: true }]" required/>
  157. <p class="main_title">拟申请退出宅基地情况-地类</p>
  158. <field-select
  159. readonly
  160. v-model="circulation.dldm"
  161. label="地类"
  162. value-key="dictLabel"
  163. data-key="dictValue"
  164. placeholder="选择现状"
  165. :rules="[{ required: true }]"
  166. required
  167. remote-url="/system/dict/data/type/geographic_type"
  168. :on-remote-response="'data'"
  169. />
  170. <p class="main_title">退出宅基地情况</p>
  171. <van-field readonly v-model="circulation.tcmj" label="退出面积(㎡)" placeholder="请输入退出面积㎡" input-align="right" label-width="auto" :rules="[{ required: true }]" required type="number"/>
  172. <van-field readonly v-model="circulation.jzmj" label="建筑面积(㎡)" placeholder="请输入建筑面积㎡" input-align="right" label-width="auto" :rules="[{ required: true }]" required type="number"/>
  173. <div class="main_box">
  174. <van-field
  175. readonly
  176. clickable
  177. v-model="tcqllx"
  178. label="退出权利类型"
  179. placeholder="请选择退出权利类型"
  180. input-align="right"
  181. right-icon="arrow-down"
  182. label-width="auto" :rules="[{ required: true }]" required
  183. />
  184. <van-popup v-model="showtcqllx" position="bottom">
  185. <van-picker
  186. show-toolbar
  187. :columns="tcqllxDictionaries"
  188. @cancel="showtcqllx = false"
  189. />
  190. </van-popup>
  191. <!--<van-field
  192. readonly
  193. clickable
  194. v-model="tclx"
  195. label="退出类型"
  196. placeholder="请选择退出类型"
  197. @click="showtclx = true"
  198. input-align="right"
  199. right-icon="arrow-down"
  200. label-width="auto" :rules="[{ required: true }]" required
  201. />
  202. <van-popup v-model="showtclx" position="bottom">
  203. <van-picker
  204. show-toolbar
  205. :columns="tclxDictionaries"
  206. @confirm="onConfirmTclx"
  207. @cancel="showtclx = false"
  208. />
  209. </van-popup>-->
  210. <van-field
  211. readonly
  212. clickable
  213. v-model="tcfs"
  214. label="退出方式"
  215. placeholder="请选择退出方式"
  216. input-align="right"
  217. right-icon="arrow-down"
  218. label-width="auto" :rules="[{ required: true }]" required
  219. />
  220. <van-popup v-model="showtcfs" position="bottom">
  221. <van-picker
  222. show-toolbar
  223. :columns="tcfsDictionaries"
  224. @cancel="showtcfs = false"
  225. />
  226. </van-popup>
  227. <van-field v-model="circulation.tcqszsh" label="权属证书号" placeholder="请输入权属证书号" input-align="right" label-width="auto" />
  228. </div>
  229. <p class="main_title">现居住情况</p>
  230. <van-field readonly v-model="circulation.xjzmj" label="建筑面积(㎡)" placeholder="请输入建筑面积㎡" input-align="right" label-width="auto" :rules="[{ required: true }]" required type="number"/>
  231. <van-field readonly v-model="circulation.xqszsh" label="权属证书号" placeholder="请输入权属证书号" input-align="right" label-width="auto" />
  232. <van-field readonly v-model="circulation.xjzdd" label="居住地点" placeholder="请输入居住地点" input-align="right" label-width="auto" />
  233. <p class="main_title">其他</p>
  234. <van-field readonly v-model="circulation.sqly" label="申请理由" placeholder="请输入申请理由" input-align="right" label-width="auto"/>
  235. <field-date-picker
  236. readonly
  237. v-model="circulation.sqrq"
  238. label="申请日期"
  239. placeholder="选择日期"
  240. :rules="[{ required: true }]"
  241. formatter="yyyy-MM-dd"
  242. required
  243. />
  244. <van-field readonly v-model="circulation.jbrxm" label="经办人姓名" placeholder="请输入经办人姓名" input-align="right" label-width="auto"/>
  245. <field-date-picker
  246. readonly
  247. v-model="circulation.pzrq"
  248. label="批准日期"
  249. placeholder="选择日期"
  250. :rules="[{ required: true }]"
  251. formatter="yyyy-MM-dd"
  252. required
  253. />
  254. <field-date-picker
  255. v-model="circulation.barq"
  256. label="备案日期"
  257. placeholder="选择日期"
  258. :rules="[{ required: true }]"
  259. formatter="yyyy-MM-dd"
  260. required
  261. />
  262. <van-dialog v-model="mapShow" show-cancel-button>
  263. <MapGisObtainTc ref="zjdProductResh" :shqrxm="circulation.sqrxm" :landStatus="landStatus" :deptId="circulation.deptId" @closeMoule="closeMoule"></MapGisObtainTc>
  264. </van-dialog>
  265. <!-- 3组附件 -->
  266. <van-popup
  267. v-model="attachmentVisible"
  268. closeable
  269. position="top"
  270. :style="{ height: '61.8%' }"
  271. :close-on-click-overlay="proposerStatus == 1"
  272. :lazy-render="false"
  273. >
  274. <van-tabs type="card" style="padding-top: 1.35rem;" color="#1D6FE9" :lazy-render="false" v-model="attachmentActive" ref="attachmentDialog">
  275. <van-tab title="退出附件" key="0">
  276. <home-apply-upload-comp
  277. :business-type="houseApplyUploadComp.businessType"
  278. :house-apply-status="houseApplyUploadComp.homeApplyStatus"
  279. :process-key="houseApplyUploadComp.processKey"
  280. :proposer-id="houseApplyUploadComp.proposerId"
  281. :table-name="houseApplyUploadComp.tableName"
  282. :readonly="houseApplyUploadComp.readonly"
  283. :userName="houseApplyUploadComp.createBy"
  284. :full="houseApplyUploadComp.full"
  285. >
  286. </home-apply-upload-comp>
  287. </van-tab>
  288. </van-tabs>
  289. </van-popup>
  290. <!-- 审批 -->
  291. <div class="main_box examine_box" v-if="showCjt">
  292. <van-row type="flex" justify="space-between" align="center">
  293. <van-col span="5">村集体<br/>经济组<br/>织或村<br/>民委员<br/>会意见</van-col>
  294. <van-col span="19">
  295. <van-field required :readonly="approval.type !== 'todo' || !cjtspOperation" v-model="circulation.cjzzscyj" rows="2" autosize type="textarea" placeholder="审核意见"/>
  296. <van-cell title="负责人:" :rules="[{ required: true }]">
  297. <van-image
  298. v-if="circulation.cjzzscr !='' && circulation.cjzzscr !=null && circulation.cjzzscr.endsWith('png')"
  299. width="100"
  300. height="50"
  301. :src="$store.getters.baseRoutingUrl+circulation.cjzzscr"
  302. ></van-image>
  303. <div v-if="circulation.cjzzscr !='' && circulation.cjzzscr !=null && !circulation.cjzzscr.endsWith('png')">{{circulation.cjzzscr}}</div>
  304. </van-cell>
  305. <field-date-picker
  306. v-model="circulation.cjzzscsj"
  307. label="审批日期"
  308. placeholder="选择日期"
  309. :readonly="approval.type !== 'todo' || !cjtspOperation"
  310. :rules="[{ required: true }]"
  311. formatter="yyyy-MM-dd"
  312. required
  313. />
  314. </van-col>
  315. </van-row>
  316. </div>
  317. <div class="main_box examine_box" v-if="showZjsp">
  318. <van-row type="flex" justify="space-between" align="center">
  319. <van-col span="5">镇级人<br/>民镇府<br/>意见</van-col>
  320. <van-col span="19">
  321. <van-field required :readonly="approval.type !== 'todo'" v-model="circulation.xzzfshpzyj" rows="2" autosize type="textarea" placeholder="审核意见"/>
  322. <van-cell title="负责人:" :rules="[{ required: true }]">
  323. <van-image
  324. v-if="circulation.xzzfshpzrxm !='' && circulation.xzzfshpzrxm !=null && circulation.xzzfshpzrxm.endsWith('png')"
  325. width="100"
  326. height="50"
  327. :src="$store.getters.baseRoutingUrl+circulation.xzzfshpzrxm"
  328. ></van-image>
  329. <div v-if="circulation.xzzfshpzrxm !='' && circulation.xzzfshpzrxm !=null && !circulation.xzzfshpzrxm.endsWith('png')">{{circulation.xzzfshpzrxm}}</div>
  330. </van-cell>
  331. <field-date-picker
  332. v-model="circulation.xzzfshpzsj"
  333. label="审批日期"
  334. placeholder="选择日期"
  335. :rules="[{ required: true }]"
  336. :readonly="approval.type !== 'todo'"
  337. formatter="yyyy-MM-dd"
  338. required
  339. />
  340. </van-col>
  341. </van-row>
  342. </div>
  343. <div class="clear"></div>
  344. <van-goods-action style="z-index: 999;">
  345. <van-goods-action-icon icon="label-o" text="附件" @click="openAttachment" color="#1D6FE9" />
  346. <van-goods-action-button type="info" text="同意" v-if="approval.type == 'todo'" @click="complete(true)" />
  347. <van-goods-action-button type="danger" text="驳回" v-if="approval.type == 'todo'" @click="complete(false)"/>
  348. </van-goods-action>
  349. </div>
  350. </template>
  351. <script>
  352. import { getZyyctc,getShyqrs,zyyctcEdit,zyyctcApply,getByLyZjddm,listHomesteadnmfw} from "@/api/sunVillage_info/homestead/paidExit";
  353. import HomeApplyUploadComp from "@/components/home/HomeApplyUploadComp";
  354. import FieldSelect from "@/components/form/FieldSelect";
  355. import FieldDatePicker from "@/components/form/FieldDatePicker";
  356. import {formatDate} from "element-ui/src/utils/date-util.js";
  357. import { } from "@/api/onlineHome/homestead/paidExit";
  358. import {Notify} from "vant";
  359. import MapGisObtainTc from "@/components/Map/MapGisObtainTc";
  360. import request from '@/utils/request';
  361. const PROPOSER_VIEW = 1;
  362. // 工作流名称
  363. const PROPOSER_STAGE_BASE_APPLY_ACTIVITY = 'home_usetc';
  364. // 附件表名
  365. const PROPOSER_STAGE_BASE_APPLY_TABLE = 't_homeuse_zyyctc';
  366. // 其他
  367. const PROPOSER_MODULE = 'home';
  368. export default {
  369. name: "paidExitDetail",
  370. components: { MapGisObtainTc,FieldSelect,FieldDatePicker,HomeApplyUploadComp },
  371. data() {
  372. return {
  373. tcqllxDictionaries:[],//退出权利类型
  374. tclxDictionaries:[],//退出类型
  375. tcfsDictionaries:[],//退出方式
  376. xbDictionaries:[],//申请人证件类型
  377. zjlxDictionaries:[],
  378. bcfsDictionaries:[],//补偿方式
  379. zjdDictionaries:[],//宅基地代码
  380. getObligeeOptions:[],//下拉框列表
  381. tcqllx:'',
  382. tclx:'',
  383. tcfs:'',
  384. xb:'',
  385. bcfs:'',
  386. zjddm:'',
  387. landStatus:"1",
  388. nickName:this.$route.query.nickName,
  389. electronicSignature:this.$route.query.electronicSignature,
  390. showtcqllx: false,
  391. showtclx: false,
  392. showtcfs: false,
  393. showxb: false,
  394. showbcfs: false,
  395. showzjddm: false,
  396. showZjsp: false,
  397. showCjt:false,
  398. cjtspOperation:false,
  399. showDropList: false,//是否显示下拉框
  400. mapShow: false,
  401. attachmentVisible:false,
  402. // 家庭成员tab
  403. familyMembersActive: 0,
  404. active: 0,
  405. // 表单意图
  406. proposerStatus: PROPOSER_VIEW,
  407. circulation:{},
  408. // 当前附件tab
  409. attachmentActive: 0,
  410. // 申请附件树
  411. houseApplyUploadComp: {
  412. businessType: PROPOSER_MODULE,
  413. proposerId: this.$route.query.id,
  414. homeApplyStatus: "11",
  415. processKey: PROPOSER_STAGE_BASE_APPLY_ACTIVITY,
  416. tableName: PROPOSER_STAGE_BASE_APPLY_TABLE,
  417. attachmentList: [],
  418. readonly: true,
  419. full: false,
  420. },
  421. approval: {
  422. taskId: null,
  423. instanceId: null,
  424. type: null,
  425. id: null,
  426. comment: '',
  427. },
  428. };
  429. },
  430. created() {
  431. this.approval.id = this.$route.query.id;
  432. this.approval.instanceId = this.$route.query.instanceId;
  433. this.approval.type = this.$route.query.type;
  434. this.approval.taskId = this.$route.query.taskId;
  435. this.getDetail();
  436. },
  437. methods: {
  438. // 获取日期, yyyy-MM-dd
  439. getDate(d) {
  440. return formatDate(d ? d : new Date(), 'yyyy-MM-dd');
  441. },
  442. getDetail(){
  443. getZyyctc(this.$route.query.id).then(response => {
  444. this.circulation = response.data;
  445. if(this.circulation.jtcyqkList != null){
  446. for(let i = 0; i < this.circulation.jtcyqkList.length; i++)
  447. {
  448. this.updateMemberInfo(i);
  449. }
  450. }
  451. if(this.circulation.gyrqkList != null){
  452. for(let i = 0; i < this.circulation.gyrqkList.length; i++)
  453. {
  454. this.updateMemberInfoGy(i);
  455. }
  456. }
  457. if(this.approval.type === "todo"){
  458. if(response.data.auditStatus === "1" || response.data.auditStatus === "2"){
  459. if(this.electronicSignature != null){
  460. this.$set(this.circulation, "cjzzscr", this.electronicSignature);
  461. }else{
  462. this.$set(this.circulation, "cjzzscr", this.nickName);
  463. }
  464. let handlerTime = this.getDate();
  465. this.$set(this.circulation, "cjzzscsj", handlerTime);
  466. this.cjtspOperation = true;
  467. this.showCjt = true;
  468. }else if(response.data.auditStatus === "3"){
  469. this.showZjsp = true;
  470. this.showCjt = true;
  471. if(this.electronicSignature != null){
  472. this.zzfdzqmShow = true;
  473. this.$set(this.circulation, "xzzfshpzrxm", this.electronicSignature);
  474. }else{
  475. this.$set(this.circulation, "xzzfshpzrxm", this.nickName);
  476. }
  477. let handlerTime = this.getDate();
  478. this.$set(this.circulation, "xzzfshpzsj", handlerTime);
  479. }
  480. }else{
  481. if(response.data.auditStatus === "4" ){
  482. this.showCjt = true;
  483. this.showZjsp = true;
  484. }else if(response.data.auditStatus === "0" || response.data.auditStatus === "1"){
  485. this.showCjt = false;
  486. }else{
  487. this.showCjt = true;
  488. }
  489. }
  490. //退出权利类型
  491. this.houseGetDicts("tcqllx").then((res) => {
  492. for (var i = 0; i < res.data.length; i++) {
  493. this.tcqllxDictionaries.push({text: res.data[i].dictLabel, value: res.data[i].dictValue});
  494. }
  495. this.tcqllx = this.selectDictLabel(res.data, response.data.tcqllx);
  496. });
  497. //退出方式
  498. this.houseGetDicts("tcfs").then((res) => {
  499. for (var i = 0; i < res.data.length; i++) {
  500. this.tcfsDictionaries.push({text: res.data[i].dictLabel, value: res.data[i].dictValue});
  501. }
  502. this.tcfs = this.selectDictLabel(res.data, response.data.tcfs);
  503. });
  504. //审核状态
  505. this.houseGetDicts("audit_status").then((res) => {
  506. this.circulation.auditStatus = this.selectDictLabel(res.data, response.data.auditStatus);
  507. });
  508. });
  509. },
  510. parseIDCard(idcard) {
  511. if(!idcard)
  512. return false;
  513. if(idcard.length !== 18)
  514. return false;
  515. if(!/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test(idcard))
  516. return false;
  517. let sex = (parseInt(idcard.substr(16, 1)) % 2) ^ 1;
  518. let now = new Date().getFullYear();
  519. let y = parseInt(idcard.substr(6, 4));
  520. let age = Math.max(now - y, 0);
  521. return [sex, age];
  522. },
  523. updateMemberInfo(index) {
  524. let res = this.parseIDCard(this.circulation.jtcyqkList[index].sfzh);
  525. if(res)
  526. {
  527. this.$set(this.circulation.jtcyqkList[index], 'nl', res[1]);
  528. }
  529. },
  530. updateMemberInfoGy(index) {
  531. let res = this.parseIDCard(this.circulation.gyrqkList[index].sfzh);
  532. if(res)
  533. {
  534. this.$set(this.circulation.gyrqkList[index], 'nl', res[1]);
  535. }
  536. },
  537. remoteProposerMethod() {
  538. this.showzjddm = true;
  539. this.zjdDictionaries = [];
  540. if (this.circulation.sqrxm) {
  541. getShyqrs({shyqrdbxm:this.circulation.sqrxm}).then(response => {
  542. this.zjdDictionaries = response.data.map(item => {
  543. return {
  544. zjddm: item.zjddm,
  545. shyqrdbxm: item.shyqrdbxm,
  546. shyqrdbzjlx: item.shyqrdbzjlx,
  547. shyqrdbzjhm: item.shyqrdbzjhm
  548. }
  549. });
  550. });
  551. } else {
  552. this.zjdDictionaries = [];
  553. }
  554. },
  555. /** 模糊查询人员信息 */
  556. remoteTransfereeMethod(query) {
  557. if (query !== "") {
  558. getShyqrs({shyqrdbxm:query,status:1}).then((response) => {
  559. if (response.code == 200) {
  560. this.getObligeeOptions = response.rows.map(function (item) {
  561. return {
  562. sqrxm:item.shyqrdbxm,
  563. sqrxb:item.xb,
  564. sqrzjhm:item.shyqrdbzjhm,
  565. sqrzjlx:item.shyqrdbzjlx,
  566. sqrdh:item.dh,
  567. gyfs:item.gyfs,
  568. dz:item.dz,
  569. deptId:item.deptId,
  570. deptName:item.deptName,
  571. }
  572. })
  573. //设置模糊查询的下拉框和滚动条
  574. if (this.getObligeeOptions.length > 0) {
  575. this.showDropList = true; // div显示会阻挡下边的选择框和输入框,showDropList控制下拉框是否显示
  576. //设置模糊查询的和滚动条
  577. this.$nextTick(() => {
  578. if (this.getObligeeOptions.length > 4) {
  579. let height = document.getElementById("vanCell").offsetHeight * 4;
  580. document.getElementById("dropList").style.height = height + "px";
  581. document.getElementById("dropList").style.overflow = "scroll";
  582. } else {
  583. document.getElementById("dropList").style.height = "";
  584. document.getElementById("dropList").style.overflow = "visible";
  585. }
  586. });
  587. } else {
  588. this.showDropList = false;
  589. }
  590. }
  591. });
  592. } else {
  593. this.getObligeeOptions = [];
  594. this.showDropList = false;
  595. }
  596. },
  597. shyqrdmxmChange(val){
  598. console.info(val);
  599. this.$set(this.circulation, "sqrxm", val.sqrxm);
  600. this.$set(this.circulation, "deptId", val.deptId);
  601. this.$set(this.circulation, "deptName", val.deptId);
  602. this.$set(this.circulation, "sqrzjhm", val.sqrzjhm);
  603. this.$set(this.circulation, "sqrzjlx", val.sqrzjlx);
  604. this.$set(this.circulation, "gyqk", val.gyfs);
  605. this.$set(this.circulation, "xb", val.sqrxb);
  606. this.$set(this.circulation, "lxdh", val.sqrdh);
  607. this.$set(this.circulation, "hkszd", val.dz);
  608. this.getObligeeOptions=[];
  609. this.showDropList = false;
  610. },
  611. /** 查找地图中宅基地 */
  612. closeMoule: function (data) {
  613. this.circulation.zjddm = data;
  614. let _this = this;
  615. let handlerTime = this.getDate();
  616. this.$set(this.circulation, "sqrq", handlerTime);
  617. this.$set(this.circulation, "pzrq", handlerTime);
  618. this.$set(this.circulation, "barq", handlerTime);
  619. getByLyZjddm(data).then((response) => {
  620. this.$set(this.circulation, "ntcmj", response.data.zdmj);
  621. this.$set(this.circulation, "tcmj", response.data.zdmj);
  622. this.$set(this.circulation, "zjdszd", response.data.zdszd);
  623. this.$set(this.circulation, "zjdszn", response.data.zdszn);
  624. this.$set(this.circulation, "zjdszx", response.data.zdszx);
  625. this.$set(this.circulation, "zjdszb", response.data.zdszb);
  626. this.$set(this.circulation, "theGeomJson", response.data.theGeomJson);
  627. this.$set(this.circulation, "tcqszsh", response.data.zsh);
  628. listHomesteadnmfw({zjddm: data}).then((response) => {
  629. response.rows.map(function(item){
  630. _this.$set(_this.circulation, "jzmj", Number(_this.circulation.jzmj) + Number(item.jzmj));
  631. _this.$set(_this.circulation, "xjzmj", Number(_this.circulation.xjzmj) + Number(item.jzmj));
  632. });
  633. });
  634. // const baseImgUrl = this.$store.getters.baseRoutingUrl;
  635. if(response.rows[0].zdt != null && response.rows[0].zdt !== ""){
  636. this.$set(this.form, "xzzp", response.rows[0].zdt);
  637. }
  638. });
  639. },
  640. mapLook(){
  641. this.mapShow = true;
  642. setTimeout(() => {
  643. this.$refs.zjdProductResh.drawingLyPaceCountryDarw();
  644. },1000);
  645. },
  646. // 打开附件树
  647. openAttachment() {
  648. this.attachmentVisible = true;
  649. if(this.attachmentActive == this.active)
  650. this.$nextTick(() => {
  651. this.$refs.attachmentDialog.scrollTo(this.active);
  652. });
  653. },
  654. complete(pass) {
  655. if(this.circulation.auditStatus === "1" || this.circulation.auditStatus === "2"){
  656. this.approval.comment = this.circulation.cjzzscyj;
  657. }else{
  658. this.approval.comment = this.circulation.xzzfshpzyj;
  659. }
  660. if(!this.approval.taskId || !this.approval.instanceId || this.approval.type !== 'todo')
  661. {
  662. console.error("无效操作");
  663. return false;
  664. }
  665. if(!this.approval.comment)
  666. {
  667. this.notify("请填写审批意见", 'danger');
  668. return false;
  669. }
  670. /*let data = {
  671. taskId: this.approval.taskId,
  672. instanceId: this.approval.instanceId,
  673. variables: JSON.stringify({
  674. pass: pass ? "true" : "false",
  675. comment: this.approval.comment ? this.approval.comment : (pass ? '同意' : '驳回'),
  676. }),
  677. };
  678. request({
  679. url: "/activiti/process/complete",
  680. method: "post",
  681. params: data,
  682. }).then((response) => {
  683. this.notify("操作成功", 'success');
  684. this.$router.back();
  685. }).catch(e => {
  686. this.notify("操作失败!", 'danger');
  687. });*/
  688. if (pass) {
  689. let data = {
  690. taskId: this.approval.taskId,
  691. instanceId: this.approval.instanceId,
  692. variables: JSON.stringify({
  693. pass: "true",
  694. comment: this.approval.comment ? this.approval.comment : "同意",
  695. }),
  696. };
  697. zyyctcEdit(this.circulation).then(response => {
  698. request({
  699. url: "/activiti/process/complete",
  700. method: "post",
  701. params: data,
  702. }).then((response) => {
  703. this.notify("操作成功", 'success');
  704. this.$router.back();
  705. }).catch(e => {
  706. this.notify("操作失败!", 'danger');
  707. });
  708. });
  709. } else {
  710. let _this = this;
  711. _this.$dialog.confirm({
  712. message: '是否确认驳回此条申请',
  713. }).then(() => {
  714. let data = {
  715. taskId: _this.approval.taskId,
  716. instanceId: _this.approval.instanceId,
  717. variables: JSON.stringify({
  718. pass: "false",
  719. comment: _this.approval.comment ? _this.approval.comment : "驳回",
  720. }),
  721. };
  722. zyyctcEdit(this.circulation).then(response => {
  723. request({
  724. url: "/activiti/process/complete",
  725. method: "post",
  726. params: data,
  727. }).then((response) => {
  728. _this.notify("操作成功", 'success');
  729. _this.$router.back();
  730. }).catch(e => {
  731. _this.notify("操作失败!", 'danger');
  732. });
  733. });
  734. });
  735. }
  736. return true;
  737. },
  738. notify(message, type) {
  739. Notify.clear();
  740. Notify({ type: type || 'primary', message: message });
  741. },
  742. },
  743. }
  744. </script>
  745. <style scoped lang="scss">
  746. .app-container {
  747. padding: 2% 0;
  748. }
  749. .main_title{
  750. font-size: 0.4rem;
  751. color: #1D6FE9;
  752. margin: 0.2rem 6%;
  753. position: relative;
  754. }
  755. .main_box{
  756. width: 96%;
  757. margin: 0 auto;
  758. border-radius: 6px;
  759. box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);
  760. overflow: hidden;
  761. background-color: #FFF;
  762. }
  763. .submitButton{
  764. width: 80%;
  765. margin: 0 auto;
  766. background-color: #1D6FE9;
  767. }
  768. .clear{
  769. height: 80px;
  770. }
  771. .examine_box{
  772. background-color: #1D6FE9!important;
  773. padding: 0.18rem!important;
  774. padding-left: 0!important;
  775. border-radius: 0.15rem!important;
  776. margin-top: 0.3rem!important;
  777. .van-col:first-child{
  778. color: #FFF!important;
  779. font-size: 0.45rem!important;
  780. text-align: center!important;
  781. }
  782. .van-col:last-child{
  783. background-color: #FFF!important;
  784. border-radius: 0.15rem!important;
  785. overflow: hidden!important;
  786. .van-radio-group--horizontal{
  787. padding: 0.2rem 0;
  788. border-bottom: 1px solid #eee;
  789. }
  790. }
  791. }
  792. </style>