移动端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2854 lines
140 KiB

  1. <template>
  2. <div class="app-container">
  3. <van-nav-bar
  4. title="用地建房申请"
  5. left-arrow
  6. fixed
  7. placeholder
  8. @click-left="goBack()"
  9. z-index="998"
  10. >
  11. <template #right>
  12. <van-icon name="../../../static/images/icon/icon_flow.png" size="20" @click="goFlow"/>
  13. </template>
  14. </van-nav-bar>
  15. <van-steps :active="active" active-color="#38f" @click-step="onStepClicked">
  16. <van-step>申请</van-step>
  17. <van-step>开工</van-step>
  18. <van-step>验收</van-step>
  19. </van-steps>
  20. <div class="main" style="padding-bottom: 1rem;">
  21. <van-form ref="form">
  22. <template v-if="selectedTabName == 0 && formVisible.baseApplyFormVisible"> <!-- 申请 -->
  23. <div :class="active == 0 ? '' : 'noModify'">
  24. <p class="topTit">农村宅基地和建房(规划许可)申请表</p>
  25. <template v-if="formVisible.baseApplyForm.baseFormVisible"> <!-- 申请 基本信息 -->
  26. <div>
  27. <p class="main_title">申请户主信息</p>
  28. <div class="main_box">
  29. <van-field :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyProposer.memberName" label="姓名" placeholder="姓名" input-align="right" required :rules="[{ required: true }]"/>
  30. <field-select
  31. v-model="applicationDetail.tHouseApplyProposer.sex"
  32. label="性别"
  33. value-key="dictLabel"
  34. data-key="dictValue"
  35. placeholder="选择性别"
  36. :rules="[{ required: true }]"
  37. required
  38. :readonly="!formEnabled.baseApplyForm.baseFormEnabled"
  39. remote-url="/system/dict/data/type/sys_user_sex"
  40. :on-remote-response="'data'"
  41. />
  42. <van-field required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyProposer.age" label="年龄" placeholder="年龄" input-align="right" type="digit" :rules="[{ required: true }]"/>
  43. <van-field required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyProposer.phone" label="联系电话" placeholder="联系电话" input-align="right" type="digit" :rules="[{pattern: /(^\d{7}(\d{4})?$)/}]"/>
  44. <van-field required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyProposer.idcard" 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]$/}]"/>
  45. <van-field required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyProposer.householdRegister" label="户口所在地" placeholder="户口所在地" input-align="right" :rules="[{ required: true }]"/>
  46. <van-field required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyProposer.familyAddress" label="家庭住址" placeholder="家庭住址" input-align="right" :rules="[{ required: true }]"/>
  47. <van-field required readonly v-model="applicationDetail.tHouseApplyProposer.members" label="家庭人口数" placeholder="家庭人口数" type="digit" input-align="right"/>
  48. <field-radio
  49. v-model="applicationDetail.tHouseApplyProposer.existHomestead"
  50. label="是否已有宅基地"
  51. value-key="dictLabel"
  52. data-key="dictValue"
  53. :rules="[{ required: true }]"
  54. required
  55. :readonly="!formEnabled.baseApplyForm.baseFormEnabled"
  56. :columns="yesNoOptions"
  57. @change="existHomesteadChange"
  58. />
  59. </div>
  60. </div>
  61. <div v-if="applicationDetail.tHouseApplyFamilyMembers">
  62. <p class="main_title">家庭成员信息<van-button icon="plus" size="mini" type="info" native-type="button" class="addFamily" @click="addFamily" v-if="formEnabled.baseApplyForm.baseFormEnabled" /></p>
  63. <van-collapse v-model="activeNames" v-if="!formEnabled.baseApplyForm.baseFormEnabled">
  64. <van-collapse-item class="collapse" v-for="(item , index) in applicationDetail.tHouseApplyFamilyMembers" :key="index" :name="index+1">
  65. <template #title>
  66. <van-row>
  67. <van-col span="8">{{item.memberName}}</van-col>
  68. <van-col span="8">{{item.age}}</van-col>
  69. <van-col span="8">{{item.familyStatusName}}</van-col>
  70. </van-row>
  71. </template>
  72. <van-field readonly v-model="item.memberName" label="姓名" placeholder="姓名" input-align="right"/>
  73. <van-field readonly v-model="item.age" label="年龄" placeholder="年龄" input-align="right"/>
  74. <van-field readonly v-model="item.familyStatusName" label="与户主关系" placeholder="与户主关系" input-align="right"/>
  75. <van-field readonly v-model="item.idcard" label="身份证号" placeholder="身份证号" input-align="right"/>
  76. <van-field readonly v-model="item.householdRegister" label="户口所在地" placeholder="户口所在地" input-align="right"/>
  77. </van-collapse-item>
  78. </van-collapse>
  79. <div v-else>
  80. <van-tabs v-if="applicationDetail.tHouseApplyFamilyMembers && applicationDetail.tHouseApplyFamilyMembers.length > 0" v-model="familyMembersActive" ref="memberTabs">
  81. <van-tab :title="(index + 1) + '. ' + item.memberName" v-for="(item , index) in applicationDetail.tHouseApplyFamilyMembers" :key="index" swipeable>
  82. <div class="familyList">
  83. <div class="main_box" style="margin-bottom: 20px">
  84. <van-button icon="minus" size="mini" type="danger" class="deleteFamily" native-type="button" v-if="index!=0" @click="deleteFamily(index)" />
  85. <van-field required v-model="item.memberName" label="姓名" placeholder="姓名" input-align="right" :rules="[{ required: true }]"/>
  86. <van-field required v-model="item.age" label="年龄" placeholder="年龄" input-align="right" :rules="[{ required: true }]"/>
  87. <van-field required v-model="item.familyStatusName" label="与户主关系" placeholder="与户主关系" input-align="right" :rules="[{ required: true }]"/>
  88. <van-field required v-model="item.idcard" 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]$/}]"/>
  89. <van-field required v-model="item.householdRegister" label="户口所在地" placeholder="户口所在地" input-align="right" :rules="[{ required: true }]"/>
  90. </div>
  91. </div>
  92. </van-tab>
  93. </van-tabs>
  94. </div>
  95. </div>
  96. <div v-if="applicationDetail.tHouseApplyProposer.existHomestead === 'Y'">
  97. <p class="main_title">现宅基地及农房状况</p>
  98. <div class="main_box">
  99. <van-field :rules="[{ required: true }]" required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyCurrentSituation.landArea" label="宅基地面积" placeholder="宅基地面积" input-align="right" type="number"><template #right-icon>㎡</template></van-field>
  100. <van-field :rules="[{ required: true }]" required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyCurrentSituation.landPerArea" label="人均宅基地面积" placeholder="人均宅基地面积" input-align="right" label-width="auto" type="number"><template #right-icon>㎡</template></van-field>
  101. <van-field :rules="[{ required: true }]" required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyCurrentSituation.landCertificateNo" label="不动产单元号" placeholder="不动产单元号" input-align="right"/>
  102. <van-field :rules="[{ required: true }]" required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyCurrentSituation.buildingArea" label="建筑面积" placeholder="建筑面积㎡" input-align="right" type="number"><template #right-icon>㎡</template></van-field>
  103. <van-field :rules="[{ required: true }]" required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyCurrentSituation.buildingPerArea" label="人均建筑面积" placeholder="人均建筑面积" input-align="right" label-width="auto" type="number"><template #right-icon>㎡</template></van-field>
  104. <van-field :rules="[{ required: true }]" required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyCurrentSituation.houseCertificateNo" label="宅基地证书号" placeholder="宅基地证书号" input-align="right"/>
  105. <field-select
  106. v-model="applicationDetail.tHouseApplyCurrentSituation.landIsposal"
  107. label="处置情况"
  108. value-key="dictLabel"
  109. data-key="dictValue"
  110. placeholder="选择宅基地处置情况"
  111. :rules="[{ required: true }]"
  112. required
  113. :readonly="!formEnabled.baseApplyForm.baseFormEnabled"
  114. remote-url="/system/dict/data/type/land_isposal"
  115. :on-remote-response="'data'"
  116. />
  117. <template v-if="applicationDetail.tHouseApplyProposer.existHomestead ==='Y'">
  118. <van-field v-if="applicationDetail.tHouseApplyCurrentSituation.landIsposal == '1'" :rules="[{ required: true }]" :required="applicationDetail.tHouseApplyProposer.existHomestead ==='Y' && applicationDetail.tHouseApplyCurrentSituation.landIsposal == '1'" :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyCurrentSituation.reservedArea" label="保留面积" placeholder="保留面积" input-align="right" type="number"/>
  119. <van-field v-else-if="applicationDetail.tHouseApplyCurrentSituation.landIsposal == '3'" :rules="[{ required: true }]" :required="applicationDetail.tHouseApplyProposer.existHomestead ==='Y' && applicationDetail.tHouseApplyCurrentSituation.landIsposal == '3'" :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyCurrentSituation.otherRemark" label="处置情况" placeholder="处置情况" input-align="right"/>
  120. </template>
  121. </div>
  122. </div>
  123. <div v-if="applicationDetail.tHouseApplyProposedSituation">
  124. <p class="main_title">拟申请宅基地及建房情况</p>
  125. <div class="main_box">
  126. <van-field :rules="[{ required: true }]" required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyProposedSituation.location" label="拟建位置" placeholder="拟建位置" input-align="right"/>
  127. <van-field :rules="[{ required: true }]" required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyProposedSituation.landArea" label="宅基地面积" placeholder="宅基地面积" input-align="right" type="number"><template #right-icon>㎡</template></van-field>
  128. <van-field :rules="[{ required: true }]" required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyProposedSituation.east" label="东至" placeholder="东至" input-align="right"/>
  129. <van-field :rules="[{ required: true }]" required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyProposedSituation.west" label="西至" placeholder="西至" input-align="right"/>
  130. <van-field :rules="[{ required: true }]" required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyProposedSituation.south" label="南至" placeholder="南至" input-align="right"/>
  131. <van-field :rules="[{ required: true }]" required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyProposedSituation.north" label="北至" placeholder="北至" input-align="right"/>
  132. <van-field :rules="[{ required: true }]" required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyProposedSituation.buildingArea" label="住房建筑面积" placeholder="住房建筑面积" input-align="right" type="number"><template #right-icon>㎡</template></van-field>
  133. <van-field :rules="[{ required: true }]" required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyProposedSituation.buildingLandArea" label="房基占地面积" placeholder="房基占地面积" input-align="right" type="number"><template #right-icon>㎡</template></van-field>
  134. <van-field :rules="[{ required: true }]" required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyProposedSituation.buildingFloors" label="建筑层数" placeholder="建筑层数" input-align="right" type="digit"><template #right-icon>层</template></van-field>
  135. <van-field :rules="[{ required: true }]" required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyProposedSituation.buildingHight" label="建筑高度" placeholder="建筑高度" input-align="right" type="number"><template #right-icon>m</template></van-field>
  136. <field-radio
  137. v-model="applicationDetail.tHouseApplyProposedSituation.isAdvice"
  138. label="是否征求相邻权利人意见"
  139. value-key="dictLabel"
  140. data-key="dictValue"
  141. :rules="[{ required: true }]"
  142. required
  143. :readonly="!formEnabled.baseApplyForm.baseFormEnabled"
  144. :columns="[{dictLabel: '是', dictValue: '1'}, {dictLabel: '否', dictValue: '2'}]"
  145. @change="existHomesteadChange"
  146. />
  147. <field-select
  148. v-model="applicationDetail.tHouseApplyProposedSituation.housingStructure"
  149. label="房屋构造"
  150. value-key="dictLabel"
  151. data-key="dictValue"
  152. placeholder="选择房屋构造"
  153. :rules="[{ required: true }]"
  154. required
  155. :readonly="!formEnabled.baseApplyForm.baseFormEnabled"
  156. remote-url="/system/dict/data/type/housing_structure"
  157. :on-remote-response="'data'"
  158. />
  159. <field-select
  160. v-model="applicationDetail.tHouseApplyProposedSituation.buildingType"
  161. label="建房类型"
  162. value-key="dictLabel"
  163. data-key="dictValue"
  164. placeholder="选择建房类型"
  165. :rules="[{ required: true }]"
  166. required
  167. :readonly="!formEnabled.baseApplyForm.baseFormEnabled"
  168. remote-url="/system/dict/data/type/building_type"
  169. :on-remote-response="'data'"
  170. />
  171. <field-radio
  172. v-model="applicationDetail.tHouseApplyProposedSituation.designPaper"
  173. label="设计图纸"
  174. value-key="dictLabel"
  175. data-key="dictValue"
  176. :rules="[{ required: true }]"
  177. required
  178. :readonly="!formEnabled.baseApplyForm.baseFormEnabled"
  179. remote-url="/system/dict/data/type/design_paper"
  180. :on-remote-response="'data'"
  181. />
  182. <field-select
  183. v-if="applicationDetail.tHouseApplyProposedSituation.designPaper == '2'"
  184. v-model="applicationDetail.tHouseApplyProposedSituation.houseTypeId"
  185. label="户型图"
  186. value-key="name"
  187. data-key="id"
  188. placeholder="选择户型图"
  189. :rules="[{ required: true }]"
  190. required
  191. :readonly="!formEnabled.baseApplyForm.baseFormEnabled"
  192. :remote-url="getHouseList"
  193. :on-remote-response="'rows'"
  194. />
  195. <field-select
  196. v-model="applicationDetail.tHouseApplyProposedSituation.geographicType"
  197. label="土地类型"
  198. value-key="dictLabel"
  199. data-key="dictValue"
  200. placeholder="选择土地类型"
  201. :rules="[{ required: true }]"
  202. required
  203. :readonly="!formEnabled.baseApplyForm.baseFormEnabled"
  204. remote-url="/system/dict/data/type/geographic_type"
  205. :on-remote-response="'data'"
  206. />
  207. <template>
  208. <van-field v-if="applicationDetail.tHouseApplyProposedSituation.geographicType == '10'" :rules="[{ required: true }]" required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyProposedSituation.constructionLandArea" label="建设用地面积" placeholder="建设用地面积" input-align="right" type="number"><template #right-icon>㎡</template></van-field>
  209. <van-field v-else-if="applicationDetail.tHouseApplyProposedSituation.geographicType == '20'" :rules="[{ required: true }]" required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyProposedSituation.unusedLandArea" label="未利用地面积" placeholder="未利用地面积" input-align="right" type="number"><template #right-icon>㎡</template></van-field>
  210. <van-field v-else-if="applicationDetail.tHouseApplyProposedSituation.geographicType && applicationDetail.tHouseApplyProposedSituation.geographicType != '10' && applicationDetail.tHouseApplyProposedSituation.geographicType != '20'" :rules="[{ required: true }]" required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyProposedSituation.agriculturalLandArea" label="农用地面积" placeholder="农用地面积" input-align="right" type="number"><template #right-icon>㎡</template></van-field>
  211. </template>
  212. </div>
  213. <div class="mapBox">
  214. <common-map ref="pointDarwMap" style="height:200px;"
  215. :allowDraw="formEnabled.baseApplyForm.baseFormEnabled"
  216. @drawReseted="onMapDrawReseted"
  217. @drawFinished="onMapDrawFinished"
  218. >
  219. </common-map>
  220. </div>
  221. </div>
  222. <div v-if="applicationDetail.tHouseApplyProposer">
  223. <p class="main_title">申请理由</p>
  224. <div class="main_box">
  225. <van-field
  226. rows="3"
  227. autosize
  228. type="textarea"
  229. placeholder="申请理由"
  230. input-align="left"
  231. v-model="applicationDetail.tHouseApplyProposer.applyReasion"
  232. :readonly="!formEnabled.baseApplyForm.baseFormEnabled"
  233. :rules="[{ required: true }]" required
  234. />
  235. <van-row>
  236. <van-col span="12"><van-field :rules="[{ required: true }]" required :readonly="!formEnabled.baseApplyForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyProposer.memberName" label="申请人" placeholder="申请人" input-align="left" label-width="auto"/></van-col>
  237. <van-col span="12">
  238. <field-date-picker
  239. v-model="applicationDetail.tHouseApplyProposer.applyTime"
  240. label=""
  241. placeholder="选择日期"
  242. :rules="[{ required: true }]"
  243. formatter="yyyy-MM-dd"
  244. required
  245. :readonly="!formEnabled.baseApplyForm.baseFormEnabled"
  246. />
  247. </van-col>
  248. </van-row>
  249. </div>
  250. </div>
  251. </template>
  252. <!-- 申请::村级审批 -->
  253. <template v-if="formVisible.baseApplyForm.villageFormVisible">
  254. <div class="main_box examine_box">
  255. <van-row type="flex" justify="space-between" align="center">
  256. <van-col span="5">村级<br/>审核<br/>意见</van-col>
  257. <van-col span="19">
  258. <van-field required :readonly="!formEnabled.baseApplyForm.villageFormEnabled" v-model="applicationDetail.tHouseApproveVillageOptions.villageOption" rows="2" autosize type="textarea" placeholder="同意申请宅基地" :rules="[{ required: true }]"/>
  259. </van-col>
  260. </van-row>
  261. </div>
  262. </template>
  263. <!-- 申请::农业部门 -->
  264. <template v-if="formVisible.baseApplyForm.townFormVisible">
  265. <div class="main_box examine_box">
  266. <van-row type="flex" justify="space-between" align="center">
  267. <van-col span="5">农业<br/>农村<br/>部门<br/>审查<br/>意见</van-col>
  268. <van-col span="19">
  269. <field-radio
  270. v-model="applicationDetail.tHouseApproveAgricultureOptions.isMembership"
  271. label="成员资格审查"
  272. value-key="dictLabel"
  273. data-key="dictValue"
  274. :rules="[{ required: true }]"
  275. required
  276. :readonly="!formEnabled.baseApplyForm.townFormEnabled"
  277. :columns="[{dictLabel: '通过', dictValue: '1'}, {dictLabel: '不通过', dictValue: '2'}]"
  278. />
  279. <field-radio
  280. v-model="applicationDetail.tHouseApproveAgricultureOptions.isOnehouse"
  281. label="一户一宅情况"
  282. value-key="dictLabel"
  283. data-key="dictValue"
  284. :rules="[{ required: true }]"
  285. required
  286. :readonly="!formEnabled.baseApplyForm.townFormEnabled"
  287. :columns="[{dictLabel: '符合', dictValue: '1'}, {dictLabel: '不符合', dictValue: '2'}]"
  288. />
  289. <field-radio
  290. v-model="applicationDetail.tHouseApproveAgricultureOptions.isReviewmaterials"
  291. label="村委审查资料"
  292. value-key="dictLabel"
  293. data-key="dictValue"
  294. :rules="[{ required: true }]"
  295. required
  296. :readonly="!formEnabled.baseApplyForm.townFormEnabled"
  297. :columns="[{dictLabel: '齐全', dictValue: '1'}, {dictLabel: '不齐全', dictValue: '2'}]"
  298. />
  299. <van-field required :readonly="!formEnabled.baseApplyForm.townFormEnabled" rows="2" v-model="applicationDetail.tHouseApproveAgricultureOptions.approveOption" autosize type="textarea" placeholder="审查意见" :rules="[{ required: true }]"/>
  300. </van-col>
  301. </van-row>
  302. </div>
  303. </template>
  304. <!-- 申请::自然资源部门 -->
  305. <template v-if="formVisible.baseApplyForm.townFormVisible">
  306. <div class="main_box examine_box">
  307. <van-row type="flex" justify="space-between" align="center">
  308. <van-col span="5">自然<br/>资源<br/>部门<br/>意见</van-col>
  309. <van-col span="19">
  310. <van-field required :readonly="!formEnabled.baseApplyForm.townFormEnabled" v-model="applicationDetail.tHouseApproveNatureOptions.landArea" label="用地面积" placeholder="请输入" input-align="right"><template #right-icon>㎡</template></van-field>
  311. <field-select
  312. v-model="applicationDetail.tHouseApproveNatureOptions.rightsType"
  313. label="土地权属"
  314. value-key="dictLabel"
  315. data-key="dictValue"
  316. placeholder="请选择土地权属"
  317. :rules="[{ required: true }]"
  318. required
  319. :readonly="!formEnabled.baseApplyForm.townFormEnabled"
  320. remote-url="/system/dict/data/type/rights_type"
  321. :on-remote-response="'data'"
  322. />
  323. <van-field required :readonly="!formEnabled.baseApplyForm.townFormEnabled" v-model="applicationDetail.tHouseApproveNatureOptions.east" label="东至" placeholder="请输入" input-align="right" :rules="[{ required: true }]"/>
  324. <van-field required :readonly="!formEnabled.baseApplyForm.townFormEnabled" v-model="applicationDetail.tHouseApproveNatureOptions.west" label="西至" placeholder="请输入" input-align="right" :rules="[{ required: true }]"/>
  325. <van-field required :readonly="!formEnabled.baseApplyForm.townFormEnabled" v-model="applicationDetail.tHouseApproveNatureOptions.south" label="南至" placeholder="请输入" input-align="right" :rules="[{ required: true }]"/>
  326. <van-field required :readonly="!formEnabled.baseApplyForm.townFormEnabled" v-model="applicationDetail.tHouseApproveNatureOptions.north" label="北至" placeholder="请输入" input-align="right" :rules="[{ required: true }]"/>
  327. <div class="mapBox">
  328. <common-map ref="pointDarwNatureMap" style="height:200px;"
  329. :allowDraw="formEnabled.baseApplyForm.townFormEnabled"
  330. @drawReseted="onNatureMapDrawReseted"
  331. @drawFinished="onMapDrawFinished"
  332. >
  333. </common-map>
  334. </div>
  335. <van-field required :readonly="!formEnabled.baseApplyForm.townFormEnabled" v-model="applicationDetail.tHouseApproveNatureOptions.approveOption" rows="2" autosize type="textarea" placeholder="审查意见" :rules="[{ required: true }]"/>
  336. </van-col>
  337. </van-row>
  338. </div>
  339. </template>
  340. <!-- 申请::住建部门 -->
  341. <template v-if="formVisible.baseApplyForm.townFormVisible">
  342. <div class="main_box examine_box">
  343. <van-row type="flex" justify="space-between" align="center">
  344. <van-col span="5">其他<br/>部门<br/>意见<br/>(住宅<br/>部门)</van-col>
  345. <van-col span="19">
  346. <field-select
  347. v-model="applicationDetail.tHouseApproveOtherOptions.buildingType"
  348. label="建筑类型"
  349. value-key="dictLabel"
  350. data-key="dictValue"
  351. placeholder="请选择建筑类型"
  352. :rules="[{ required: true }]"
  353. required
  354. :readonly="!formEnabled.baseApplyForm.townFormEnabled"
  355. remote-url="/system/dict/data/type/building_type"
  356. :on-remote-response="'data'"
  357. />
  358. <field-select
  359. v-model="applicationDetail.tHouseApproveOtherOptions.designPaper"
  360. label="图纸类型"
  361. value-key="dictLabel"
  362. data-key="dictValue"
  363. placeholder="请选择图纸类型"
  364. :rules="[{ required: true }]"
  365. required
  366. :readonly="!formEnabled.baseApplyForm.townFormEnabled"
  367. remote-url="/system/dict/data/type/design_paper"
  368. :on-remote-response="'data'"
  369. />
  370. <van-field required :readonly="!formEnabled.baseApplyForm.townFormEnabled" v-model="applicationDetail.tHouseApproveOtherOptions.buildingLandArea" label="建筑占地面积" placeholder="请输入" input-align="right" type="number" :rules="[{ required: true }]"><template #right-icon>㎡</template></van-field>
  371. <van-field required :readonly="!formEnabled.baseApplyForm.townFormEnabled" v-model="applicationDetail.tHouseApproveOtherOptions.buildingArea" label="建筑面积" placeholder="请输入" input-align="right" type="number" :rules="[{ required: true }]"><template #right-icon>㎡</template></van-field>
  372. <van-field required :readonly="!formEnabled.baseApplyForm.townFormEnabled" v-model="applicationDetail.tHouseApproveOtherOptions.buildingFloors" label="建筑层数" placeholder="请输入" input-align="right" type="digit" :rules="[{ required: true }]"><template #right-icon>层</template></van-field>
  373. <van-field required :readonly="!formEnabled.baseApplyForm.townFormEnabled" v-model="applicationDetail.tHouseApproveOtherOptions.buildingHight" label="建筑高度" placeholder="请输入" input-align="right" type="number" :rules="[{ required: true }]"><template #right-icon>m</template></van-field>
  374. <van-field required :readonly="!formEnabled.baseApplyForm.townFormEnabled" v-model="applicationDetail.tHouseApproveOtherOptions.east" label="东至" placeholder="请输入" input-align="right" :rules="[{ required: true }]"/>
  375. <van-field required :readonly="!formEnabled.baseApplyForm.townFormEnabled" v-model="applicationDetail.tHouseApproveOtherOptions.west" label="西至" placeholder="请输入" input-align="right" :rules="[{ required: true }]"/>
  376. <van-field required :readonly="!formEnabled.baseApplyForm.townFormEnabled" v-model="applicationDetail.tHouseApproveOtherOptions.south" label="南至" placeholder="请输入" input-align="right" :rules="[{ required: true }]"/>
  377. <van-field required :readonly="!formEnabled.baseApplyForm.townFormEnabled" v-model="applicationDetail.tHouseApproveOtherOptions.north" label="北至" placeholder="请输入" input-align="right" :rules="[{ required: true }]"/>
  378. <van-field required :readonly="!formEnabled.baseApplyForm.townFormEnabled" v-model="applicationDetail.tHouseApproveOtherOptions.approveOption" rows="2" autosize type="textarea" placeholder="审批意见" :rules="[{ required: true }]"/>
  379. </van-col>
  380. </van-row>
  381. </div>
  382. </template>
  383. <!-- 申请::镇政府 -->
  384. <template v-if="formVisible.baseApplyForm.townFormVisible">
  385. <div class="main_box examine_box" v-if="formVisible.baseApplyForm.townFormVisible">
  386. <van-row type="flex" justify="space-between" align="center">
  387. <van-col span="5">镇级<br/>审核<br/>意见</van-col>
  388. <van-col span="19">
  389. <van-field required :readonly="!formEnabled.baseApplyForm.townFormEnabled" v-model="applicationDetail.tHouseApproveTownOptions.approveOption" rows="2" autosize type="textarea" placeholder="同意申请宅基地" :rules="[{ required: true }]"/>
  390. </van-col>
  391. </van-row>
  392. </div>
  393. </template>
  394. <!-- 申请::现场踏勘 -->
  395. <template v-if="formVisible.baseApplyForm.townFormVisible">
  396. <div class="main_box examine_box" v-if="formVisible.baseApplyForm.townFormVisible">
  397. <van-row type="flex" justify="space-between" align="center">
  398. <van-col span="5">现场<br/>踏勘</van-col>
  399. <van-col span="19">
  400. <house-location-plan-comp ref="pictureUploadApplying" :uploadDisabled="!formEnabled.baseApplyForm.townFormEnabled" :jsonData="uploadImg.fileList" :proposer-id="uploadImg.proposerId" tableName="t_house_approve_locationplan_options"
  401. @uploadFileChanged="(x) => {this.uploadImg.uploadFileList = x;}" @removeFileChanged="(x) => {this.uploadImg.removeFileList = x;}"
  402. />
  403. <van-row>
  404. <van-col span="12"><van-field :rules="[{ required: true }]" required :readonly="!formEnabled.baseApplyForm.townFormEnabled" v-model="applicationDetail.tHouseApproveLocationplanOptions.surveyPersonnel" label="踏勘" placeholder="现场踏勘人员" input-align="left" label-width="auto"/></van-col>
  405. <van-col span="12">
  406. <field-date-picker
  407. v-model="applicationDetail.tHouseApproveLocationplanOptions.suveyTime"
  408. label=""
  409. placeholder="选择日期"
  410. :rules="[{ required: true }]"
  411. formatter="yyyy-MM-dd"
  412. required
  413. :readonly="!formEnabled.baseApplyForm.townFormEnabled"
  414. />
  415. </van-col>
  416. </van-row>
  417. <van-row>
  418. <van-col span="12"><van-field :rules="[{ required: true }]" required :readonly="!formEnabled.baseApplyForm.townFormEnabled" v-model="applicationDetail.tHouseApproveLocationplanOptions.cartographer" label="制图" placeholder="制图人" input-align="left" label-width="auto"/></van-col>
  419. <van-col span="12">
  420. <field-date-picker
  421. v-model="applicationDetail.tHouseApproveLocationplanOptions.cartographicTime"
  422. label=""
  423. placeholder="选择日期"
  424. :rules="[{ required: true }]"
  425. formatter="yyyy-MM-dd"
  426. required
  427. :readonly="!formEnabled.baseApplyForm.townFormEnabled"
  428. />
  429. </van-col>
  430. </van-row>
  431. </van-col>
  432. </van-row>
  433. </div>
  434. </template>
  435. </div>
  436. </template>
  437. <template v-if="selectedTabName == 1 && formVisible.landscopeVisible"> <!-- 开工申请 -->
  438. <div :class="active == 1 ? '' : 'noModify'" v-if="formVisible.landscopeVisible">
  439. <p class="topTit">宅基地开工</p>
  440. <div class="main_box action-box">
  441. <van-cell>
  442. <template #right-icon>
  443. <field-date-picker
  444. v-model="applicationDetail.tHouseApplyStart.startDate"
  445. label="计划开工时间"
  446. placeholder="选择日期"
  447. :rules="[{ required: true }]"
  448. formatter="yyyy-MM-dd"
  449. required
  450. :readonly="!formEnabled.landscopeForm.baseFormEnabled"
  451. />
  452. </template>
  453. </van-cell>
  454. <van-cell>
  455. <template #right-icon>
  456. <field-date-picker
  457. v-model="applicationDetail.tHouseApplyStart.endDate"
  458. label="计划竣工时间"
  459. placeholder="选择日期"
  460. :rules="[{ required: true }]"
  461. formatter="yyyy-MM-dd"
  462. required
  463. :readonly="!formEnabled.landscopeForm.baseFormEnabled"
  464. />
  465. </template>
  466. </van-cell>
  467. </div>
  468. </div>
  469. </template>
  470. <template v-if="selectedTabName == 2 && formVisible.acceptingVisible"> <!-- 验收申请 -->
  471. <template v-if="formVisible.acceptingForm.baseFormVisible">
  472. <div :class="active == 2 ? '' : 'noModify'">
  473. <p class="topTit">宅基地验收申请</p>
  474. <div class="main_box check-box">
  475. <van-field required readonly v-model="applicationDetail.tHouseApplyEnd.memberName" label="申请户主姓名" placeholder="申请户主姓名" input-align="right" label-width="auto"/>
  476. <van-field required readonly v-model="applicationDetail.tHouseApplyEnd.idcard" label="身份证号" placeholder="身份证号" input-align="right" label-width="auto"/>
  477. <van-field required readonly v-model="applicationDetail.tHouseApplyEnd.location" label="用地建房位置" placeholder="用地建房位置" input-align="right" label-width="auto"/>
  478. <van-field required readonly v-model="applicationDetail.tHouseApplyEnd.licenseKey" label="乡村建设规划许可证号" placeholder="乡村建设规划许可证号" input-align="right" label-width="auto"/>
  479. <van-field required readonly v-model="applicationDetail.tHouseApplyEnd.approvalNumber" label="农村宅基地批准书号" placeholder="农村宅基地批准书号" input-align="right" label-width="auto"/>
  480. <field-date-picker
  481. v-model="applicationDetail.tHouseApplyEnd.startDate"
  482. label="开工日期"
  483. placeholder="选择开工日期"
  484. :rules="[{ required: true }]"
  485. formatter="yyyy-MM-dd"
  486. required
  487. :readonly="true"
  488. />
  489. <field-date-picker
  490. v-model="applicationDetail.tHouseApplyEnd.endDate"
  491. label="竣工日期"
  492. placeholder="选择竣工日期"
  493. :rules="[{ required: true }]"
  494. formatter="yyyy-MM-dd"
  495. required
  496. :readonly="true"
  497. />
  498. <van-field required :readonly="!formEnabled.acceptingForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyEnd.houseCertificateNo" label="权属证书号(不动产)" placeholder="权属证书号(不动产)" input-align="right" label-width="auto" :rules="[{ required: true }]"/>
  499. <van-field required :readonly="!formEnabled.acceptingForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyEnd.landCertificateNo" label="权属证书号(宅基地)" placeholder="权属证书号(宅基地)" input-align="right" label-width="auto" :rules="[{ required: true }]"/>
  500. <van-field required :readonly="!formEnabled.acceptingForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyEnd.buildingHight" label="批建高度" placeholder="批建高度" input-align="right" label-width="auto" type="number" :rules="[{ required: true }]"><template #right-icon>m</template></van-field>
  501. <van-field required :readonly="!formEnabled.acceptingForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyEnd.buildingFloors" label="批建层数" placeholder="批建层数" input-align="right" label-width="auto" type="digit" :rules="[{ required: true }]"><template #right-icon>层</template></van-field>
  502. <van-field required :readonly="!formEnabled.acceptingForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyEnd.actualBuildingHight" label="竣工高度" placeholder="竣工高度" input-align="right" label-width="auto" type="number" :rules="[{ required: true }]"><template #right-icon>m</template></van-field>
  503. <van-field required :readonly="!formEnabled.acceptingForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyEnd.actualBuildingFloors" label="竣工层数" placeholder="竣工层数" input-align="right" label-width="auto" type="digit" :rules="[{ required: true }]"><template #right-icon>层</template></van-field>
  504. <van-field required :readonly="!formEnabled.acceptingForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyEnd.buildingArea" label="建筑面积" placeholder="建筑面积" input-align="right" type="number" :rules="[{ required: true }]"><template #right-icon>㎡</template></van-field>
  505. <van-field required :readonly="!formEnabled.acceptingForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyEnd.buildingHouseArea" label="其中: 房屋建筑面积" placeholder="房屋建筑面积" input-align="right" label-width="auto" type="number" :rules="[{ required: true }]"><template #right-icon>㎡</template></van-field>
  506. <van-field required :readonly="!formEnabled.acceptingForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyEnd.buildingOtherArea" label="配套附属设施建筑面积" placeholder="配套附属设施建筑面积" input-align="right" label-width="auto" type="number" :rules="[{ required: true }]"><template #right-icon>㎡</template></van-field>
  507. <field-select
  508. v-model="applicationDetail.tHouseApplyEnd.designPaper"
  509. label="建筑风貌"
  510. value-key="dictLabel"
  511. data-key="dictValue"
  512. placeholder="选择建筑风貌"
  513. :rules="[{ required: true }]"
  514. required
  515. :readonly="!formEnabled.acceptingForm.baseFormEnabled"
  516. remote-url="/system/dict/data/type/design_paper"
  517. :on-remote-response="'data'"
  518. />
  519. <field-select
  520. v-model="applicationDetail.tHouseApplyEnd.oldHouseStatus"
  521. label="旧宅基地退还情况"
  522. value-key="dictLabel"
  523. data-key="dictValue"
  524. placeholder="选择旧宅基地退还情况"
  525. :rules="[{ required: true }]"
  526. required
  527. :readonly="!formEnabled.acceptingForm.baseFormEnabled"
  528. remote-url="/system/dict/data/type/old_house_status"
  529. :on-remote-response="'data'"
  530. />
  531. <van-field required :readonly="!formEnabled.acceptingForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyEnd.houseCost" label="住房造价" placeholder="住房造价" input-align="right" type="number" :rules="[{ required: true }]"><template #right-icon>万元</template></van-field>
  532. <van-field required :readonly="!formEnabled.acceptingForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyEnd.facadeColor" label="外立面颜色" placeholder="外立面颜色" input-align="right" label-width="auto" :rules="[{ required: true }]"/>
  533. <van-field required :readonly="!formEnabled.acceptingForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyEnd.fangjiArea" label="批准房基占地面积" placeholder="批准房基占地面积" input-align="right" label-width="auto" type="number" :rules="[{ required: true }]"><template #right-icon>㎡</template></van-field>
  534. <van-field required :readonly="!formEnabled.acceptingForm.baseFormEnabled" v-model="applicationDetail.tHouseApplyEnd.actualFangjiArea" label="实际房基占地面积" placeholder="实际房基占地面积" input-align="right" label-width="auto" type="number" :rules="[{ required: true }]"><template #right-icon>㎡</template></van-field>
  535. <field-radio
  536. v-model="applicationDetail.tHouseApplyEnd.isEnjoySubsidy"
  537. label="是否享受住房建设补助政策"
  538. value-key="dictLabel"
  539. data-key="dictValue"
  540. :rules="[{ required: true }]"
  541. required
  542. :readonly="!formEnabled.acceptingForm.baseFormEnabled"
  543. :columns="yesNoOptions"
  544. />
  545. <field-select
  546. v-if="applicationDetail.tHouseApplyEnd.isEnjoySubsidy === 'Y'"
  547. v-model="applicationDetail.tHouseApplyEnd.enjoySubsidyContent"
  548. label="住房建设补助政策"
  549. value-key="dictLabel"
  550. data-key="dictValue"
  551. placeholder="选择住房建设补助政策"
  552. :rules="[{ required: true }]"
  553. required
  554. :readonly="!formEnabled.acceptingForm.baseFormEnabled"
  555. remote-url="/system/dict/data/type/house_subsidy_policy"
  556. :on-remote-response="'data'"
  557. />
  558. <van-cell title="农房验收位置"></van-cell>
  559. <div class="mapBox">
  560. <common-map ref="pointDarwAcceptanceMap" style="height:200px;"
  561. :allowDraw="formEnabled.acceptingForm.baseFormEnabled"
  562. @drawReseted="onAcceptanceMapDrawReseted"
  563. @drawFinished="onMapDrawFinished"
  564. >
  565. </common-map>
  566. </div>
  567. <van-field rows="3" :autosize="true" type="textarea" readonly label="备注" label-width="auto" placeholder="" input-align="left" value="1.村民旧宅基地属于应退未退的,不得发放本验收意见表。
  568. 2.本验收意见表是向不动产登记部门申请办理不动产登记的要件之一,请妥善保管。"></van-field>
  569. </div>
  570. </div>
  571. </template>
  572. <template v-if="formVisible.acceptingForm.townFormVisible">
  573. <div class="main_box examine_box">
  574. <van-row type="flex" justify="space-between" align="center">
  575. <van-col span="5">竣工<br/>平面<br/>简图<br/>
  576. (标注<br/>长宽<br/>及四至)</van-col>
  577. <van-col span="19">
  578. <house-location-plan-comp ref="pictureUploadAccepting" :uploadDisabled="!formEnabled.acceptingForm.townFormEnabled" :jsonData="uploadImgAccepting.fileList" :proposer-id="uploadImgAccepting.proposerId" tableName="t_house_apply_end"
  579. @uploadFileChanged="(x) => {this.uploadImgAccepting.uploadFileList = x;}" @removeFileChanged="(x) => {this.uploadImgAccepting.removeFileList = x;}"
  580. />
  581. <van-field required :readonly="!formEnabled.acceptingForm.townFormEnabled" v-model="applicationDetail.tHouseApplyEnd.cartographer" placeholder="经办人" label="经办人" input-align="left" :rules="[{ required: true }]"/>
  582. </van-col>
  583. </van-row>
  584. </div>
  585. <div class="main_box examine_box">
  586. <van-row type="flex" justify="space-between" align="center">
  587. <van-col span="5">住房<br/>竣工<br/>验收<br/>内容</van-col>
  588. <van-col span="19">
  589. <field-checkbox
  590. v-model="applicationDetail.tHouseApplyEnd.isProjectFinished"
  591. label="1.是否已完成工程设计和合同约定的各项内容"
  592. true-label="Y"
  593. false-label="N"
  594. :rules="[{ required: true }]"
  595. :readonly="!formEnabled.acceptingForm.townFormEnabled"
  596. label-width="5.6rem"
  597. />
  598. <field-checkbox
  599. v-model="applicationDetail.tHouseApplyEnd.isQualifiedQuality"
  600. label="2.承揽人对完工住房质量自查是否合格"
  601. true-label="Y"
  602. false-label="N"
  603. :rules="[{ required: true }]"
  604. :readonly="!formEnabled.acceptingForm.townFormEnabled"
  605. label-width="5.6rem"
  606. />
  607. <field-checkbox
  608. v-model="applicationDetail.tHouseApplyEnd.hasBuildingRecord"
  609. label="3.是否有施工记录资料"
  610. true-label="Y"
  611. false-label="N"
  612. :rules="[{ required: true }]"
  613. :readonly="!formEnabled.acceptingForm.townFormEnabled"
  614. label-width="5.6rem"
  615. />
  616. <field-checkbox
  617. v-model="applicationDetail.tHouseApplyEnd.isSignWarranty"
  618. label="4.建房村民和承揽人是否已经共同签署农村住房质量保修书"
  619. true-label="Y"
  620. false-label="N"
  621. :rules="[{ required: true }]"
  622. :readonly="!formEnabled.acceptingForm.townFormEnabled"
  623. label-width="5.6rem"
  624. />
  625. <field-checkbox
  626. v-model="applicationDetail.tHouseApplyEnd.isHandleProblem"
  627. label="5.住房城乡建设行政主管部门或乡(镇)人民政府责令整改的问题是否全部整改完毕"
  628. true-label="Y"
  629. false-label="N"
  630. :rules="[{ required: true }]"
  631. :readonly="!formEnabled.acceptingForm.townFormEnabled"
  632. label-width="5.6rem"
  633. />
  634. <field-checkbox
  635. v-model="applicationDetail.tHouseApplyEnd.isDesignPaperSame"
  636. label="6.建筑风貌是否与设计图基本一致"
  637. true-label="Y"
  638. false-label="N"
  639. :rules="[{ required: true }]"
  640. :readonly="!formEnabled.acceptingForm.townFormEnabled"
  641. label-width="5.6rem"
  642. />
  643. <field-checkbox
  644. v-model="applicationDetail.tHouseApplyEnd.isOtherAcceptanceFinished"
  645. label="7.法律、法规规定的其他验收条件完成情况"
  646. true-label="Y"
  647. false-label="N"
  648. :rules="[{ required: true }]"
  649. :readonly="!formEnabled.acceptingForm.townFormEnabled"
  650. label-width="5.6rem"
  651. />
  652. </van-col>
  653. </van-row>
  654. </div>
  655. <div class="main_box examine_box">
  656. <van-row type="flex" justify="space-between" align="center">
  657. <van-col span="5">乡镇<br/>农业<br/>农村<br/>部门<br/>意见</van-col>
  658. <van-col span="19">
  659. <van-field required :readonly="!formEnabled.acceptingForm.townFormEnabled" rows="2" v-model="applicationDetail.tHouseApplyEnd.nongyeOption" :autosize="true" type="textarea" placeholder="乡镇农业农村部门意见" :rules="[{ required: true }]"/>
  660. </van-col>
  661. </van-row>
  662. </div>
  663. <div class="main_box examine_box">
  664. <van-row type="flex" justify="space-between" align="center">
  665. <van-col span="5">乡镇<br/>自然<br/>资源<br/>部门<br/>意见</van-col>
  666. <van-col span="19">
  667. <van-field required :readonly="!formEnabled.acceptingForm.townFormEnabled" rows="2" v-model="applicationDetail.tHouseApplyEnd.natureOption" :autosize="true" type="textarea" placeholder="乡镇自然资源部门意见" :rules="[{ required: true }]"/>
  668. </van-col>
  669. </van-row>
  670. </div>
  671. <div class="main_box examine_box">
  672. <van-row type="flex" justify="space-between" align="center">
  673. <van-col span="5">乡镇<br/>住建<br/>部门<br/>意见</van-col>
  674. <van-col span="19">
  675. <van-field required :readonly="!formEnabled.acceptingForm.townFormEnabled" rows="2" v-model="applicationDetail.tHouseApplyEnd.buildingOption" :autosize="true" type="textarea" placeholder="乡镇住建部门意见" :rules="[{ required: true }]"/>
  676. </van-col>
  677. </van-row>
  678. </div>
  679. <div class="main_box examine_box">
  680. <van-row type="flex" justify="space-between" align="center">
  681. <van-col span="5">乡镇<br/>政府<br/>验收<br/>意见</van-col>
  682. <van-col span="19">
  683. <van-field required :readonly="!formEnabled.acceptingForm.townFormEnabled" rows="2" v-model="applicationDetail.tHouseApplyEnd.zhenOption" :autosize="true" type="textarea" placeholder="乡镇政府验收意见" :rules="[{ required: true }]"/>
  684. </van-col>
  685. </van-row>
  686. </div>
  687. <van-field rows="3" :autosize="true" type="textarea" label="备注" label-width="auto" placeholder="备注" :readonly="!formEnabled.acceptingForm.townFormEnabled" v-model="applicationDetail.tHouseApplyEnd.remark" input-align="left" :rules="[{ required: true }]"></van-field>
  688. </template>
  689. </template>
  690. </van-form>
  691. </div>
  692. <!-- 底部按钮 -->
  693. <van-goods-action style="z-index: 999;">
  694. <van-goods-action-icon icon="label-o" text="附件" @click="openAttachment" color="#1D6FE9" />
  695. <template v-if="formVisible.editVisible">
  696. <van-goods-action-button type="primary" text="保存" @click="onSubmit('add')" :disabled="!formEnabled.baseApplyEnabled" v-if="formEnabled.baseApplyEnabled"/>
  697. <van-goods-action-button type="primary" :text="formEnabled.baseApplyEnabled ? '保存并提交' : '提交'" @click="onSubmit(formEnabled.baseApplyEnabled ? 'save_and_submit' : 'submit')" :disabled="!formEnabled.submitEnabled"/>
  698. </template>
  699. <template v-else-if="formEnabled.landscopeEnabled">
  700. <van-goods-action-button type="primary" text="提交开工" @click="onSubmit('start_and_submit')"/>
  701. </template>
  702. <template v-else-if="formEnabled.acceptingEnabled">
  703. <van-goods-action-button type="primary" text="提交验收" @click="onSubmit('end')"/>
  704. </template>
  705. <template v-else-if="formVisible.auditVisible">
  706. <van-goods-action-button type="primary" text="同意" @click="onSubmit('agree')"/>
  707. <van-goods-action-button type="danger" text="驳回" @click="onSubmit('reject')"/>
  708. </template>
  709. </van-goods-action>
  710. <!-- 3组附件 -->
  711. <van-popup
  712. v-model="attachmentVisible"
  713. closeable
  714. position="top"
  715. :style="{ height: '61.8%' }"
  716. :close-on-click-overlay="proposerStatus == 1"
  717. :lazy-render="false"
  718. >
  719. <van-tabs type="card" style="padding-top: 1.35rem;" color="#1D6FE9" :lazy-render="false" v-model="attachmentActive" ref="attachmentDialog">
  720. <van-tab title="申请" key="0">
  721. <house-apply-upload-comp
  722. :business-type="houseApplyUploadComp.businessType"
  723. :house-apply-status="houseApplyUploadComp.houseApplyStatus"
  724. :process-key="houseApplyUploadComp.processKey"
  725. :proposer-id="houseApplyUploadComp.proposerId"
  726. :table-name="houseApplyUploadComp.tableName"
  727. :readonly="houseApplyUploadComp.readonly"
  728. :full="houseApplyUploadComp.full"
  729. @uploadFinished="onUploadFinished"
  730. >
  731. </house-apply-upload-comp>
  732. </van-tab>
  733. <van-tab title="开工" key="1" :disabled="active < 1">
  734. <house-apply-upload-comp
  735. :business-type="houseApplyUploadCompStart.businessType"
  736. :house-apply-status="houseApplyUploadCompStart.houseApplyStatus"
  737. :process-key="houseApplyUploadCompStart.processKey"
  738. :proposer-id="houseApplyUploadCompStart.proposerId"
  739. :table-name="houseApplyUploadCompStart.tableName"
  740. :readonly="houseApplyUploadCompStart.readonly"
  741. :full="houseApplyUploadCompStart.full"
  742. >
  743. </house-apply-upload-comp>
  744. </van-tab>
  745. <van-tab title="验收" key="2" :disabled="active < 2">
  746. <house-apply-upload-comp
  747. :business-type="houseApplyUploadCompEnd.businessType"
  748. :house-apply-status="houseApplyUploadCompEnd.houseApplyStatus"
  749. :process-key="houseApplyUploadCompEnd.processKey"
  750. :proposer-id="houseApplyUploadCompEnd.proposerId"
  751. :table-name="houseApplyUploadCompEnd.tableName"
  752. :readonly="houseApplyUploadCompEnd.readonly"
  753. :full="houseApplyUploadCompEnd.full"
  754. >
  755. </house-apply-upload-comp>
  756. </van-tab>
  757. </van-tabs>
  758. </van-popup>
  759. <!-- 当前流程 -->
  760. <van-popup
  761. v-model="flowVisible"
  762. position="top"
  763. >
  764. <div class="flow_main_box">
  765. <van-row>
  766. <van-col span="8"><p class="tit" :style="{'background-color': applicationDetail.proposerActiveIndex >= 0 ? '' : '#ABABAB'}">01 申请</p></van-col>
  767. <van-col span="8"><p class="tit" :style="{'background-color': applicationDetail.startActiveIndex >= 0 ? '' : '#ABABAB'}">02 开工</p></van-col>
  768. <van-col span="8"><p class="tit" :style="{'background-color': applicationDetail.endActiveIndex >= 0 ? '' : '#ABABAB'}">03 验收</p></van-col>
  769. </van-row>
  770. <van-row>
  771. <van-col span="8">
  772. <van-steps direction="vertical" active-color="#1D6FE9" :active="applicationDetail.proposerActiveIndex" style="padding-left: 0.853333rem;">
  773. <van-step v-for="(item,index) in applicationDetail.applyStepList" :key="index">{{item}}</van-step>
  774. </van-steps>
  775. </van-col>
  776. <van-col span="8">
  777. <van-steps direction="vertical" active-color="#1D6FE9" :active="applicationDetail.startActiveIndex" style="padding-left: 0.853333rem;">
  778. <van-step v-for="(item,index) in applicationDetail.startStepList" :key="index">{{item}}</van-step>
  779. </van-steps>
  780. </van-col>
  781. <van-col span="8">
  782. <van-steps direction="vertical" active-color="#1D6FE9" :active="applicationDetail.endActiveIndex" style="padding-left: 0.853333rem;">
  783. <van-step v-for="(item,index) in applicationDetail.endStepList" :key="index">{{item}}</van-step>
  784. </van-steps>
  785. </van-col>
  786. </van-row>
  787. </div>
  788. </van-popup>
  789. </div>
  790. </template>
  791. <script>
  792. import HouseApplyUploadComp from "@/components/house/HouseApplyUploadComp";
  793. import HouseLocationPlanComp from "@/components/house/HouseLocationPlanComp";
  794. import FieldSelect from "@/components/form/FieldSelect";
  795. import { getQueryLand, saveHouseBaseInfo , houseList , getHouseMembers , allInformationWLHT, checkDuplicateBuilding, checkDuplicateBuildingQuery, customSubmitWLHT, submitStartWLHT, updateStart, updateEnd, submitEndWLHT, getWorkflow } from "@/api/onlineHome/homestead/application";
  796. import $ from "jquery";
  797. import CommonMap from "@/components/house/CommonMap";
  798. import FieldDatePicker from "@/components/form/FieldDatePicker";
  799. import FieldRadio from "@/components/form/FieldRadio";
  800. import FieldCheckbox from "@/components/form/FieldCheckbox";
  801. import {formatDate} from "element-ui/src/utils/date-util.js";
  802. import request from '@/utils/request'
  803. import {Notify} from "vant";
  804. // 意图
  805. const PROPOSER_VIEW = 1;
  806. const PROPOSER_EDIT = 2;
  807. const PROPOSER_ADD = 3;
  808. // 阶段
  809. const PROPOSER_STAGE_BASE_APPLY = 0;
  810. const PROPOSER_STAGE_START = 1;
  811. const PROPOSER_STAGE_END = 2;
  812. // 工作流名称
  813. const PROPOSER_STAGE_BASE_APPLY_ACTIVITY = 'baseApplyWLHT';
  814. const PROPOSER_STAGE_START_ACTIVITY = 'landscopeWLHT';
  815. const PROPOSER_STAGE_END_ACTIVITY = 'acceptingWLHT';
  816. // 附件表名
  817. const PROPOSER_STAGE_BASE_APPLY_TABLE = 't_house_apply_proposer';
  818. const PROPOSER_STAGE_START_TABLE = 't_house_apply_start';
  819. const PROPOSER_STAGE_END_TABLE = 't_house_apply_end';
  820. // 其他
  821. const PROPOSER_MODULE = 'house';
  822. export default {
  823. name: "applicationForm",
  824. components: {
  825. FieldCheckbox,
  826. FieldRadio, HouseApplyUploadComp, FieldDatePicker, CommonMap, FieldSelect, HouseLocationPlanComp},
  827. data() {
  828. return {
  829. // 当前流程步骤
  830. active: 0,
  831. // 申请ID
  832. id: '',
  833. // 表单数据
  834. applicationDetail: {},
  835. // 当前家庭成员展开
  836. activeNames:['1'],
  837. // 当前显示流程
  838. selectedTabName: 0,
  839. processKeyField: null,
  840. // 表单意图
  841. proposerStatus: PROPOSER_VIEW,
  842. // 显示控制
  843. formVisible: {
  844. baseApplyFormVisible: true,
  845. editVisible: false,
  846. baseApplyForm: {
  847. baseFormVisible: true,
  848. homesteadFormVisible: false,
  849. groupFormVisible: false,
  850. villageFormVisible: false,
  851. townFormVisible: false,
  852. homesteadForm: {
  853. keepVisible: false, // 是否显示宅基地保留输入
  854. otherVisible: false, // 是否显示宅基地其他输入
  855. }
  856. },
  857. landscopeVisible: false,
  858. landscopeForm: {
  859. baseFormVisible: false,
  860. },
  861. acceptingVisible: false,
  862. acceptingForm: {
  863. baseFormVisible: false,
  864. townFormVisible: false,
  865. },
  866. auditVisible: false,
  867. },
  868. // 表单启用控制
  869. formEnabled: {
  870. baseApplyEnabled: false,
  871. submitEnabled: false,
  872. baseApplyForm: {
  873. baseFormEnabled: false,
  874. homesteadFormEnabled: false,
  875. groupFormEnabled: false,
  876. villageFormEnabled: false,
  877. townFormEnabled: false,
  878. },
  879. landscopeEnabled: false,
  880. landscopeForm: {
  881. baseFormEnabled: false,
  882. },
  883. acceptingEnabled: false,
  884. acceptingForm: {
  885. baseFormEnabled: false,
  886. townFormEnabled: false,
  887. },
  888. },
  889. // 申请附件树
  890. houseApplyUploadComp: {
  891. businessType: PROPOSER_MODULE,
  892. proposerId: null,
  893. houseApplyStatus: null,
  894. processKey: PROPOSER_STAGE_BASE_APPLY_ACTIVITY,
  895. tableName: PROPOSER_STAGE_BASE_APPLY_TABLE,
  896. attachmentList: [],
  897. readonly: false,
  898. full: false,
  899. },
  900. // 开工附件树
  901. houseApplyUploadCompStart: {
  902. businessType: PROPOSER_MODULE,
  903. proposerId: null,
  904. houseApplyStatus: null,
  905. processKey: PROPOSER_STAGE_START_ACTIVITY,
  906. tableName: PROPOSER_STAGE_START_TABLE,
  907. attachmentList: [],
  908. readonly: false,
  909. full: false,
  910. },
  911. // 验收附件树
  912. houseApplyUploadCompEnd: {
  913. businessType: PROPOSER_MODULE,
  914. proposerId: null,
  915. houseApplyStatus: null,
  916. processKey: PROPOSER_STAGE_END_ACTIVITY,
  917. tableName: PROPOSER_STAGE_END_TABLE,
  918. attachmentList: [],
  919. readonly: false,
  920. full: false,
  921. },
  922. currentUserRole: null,
  923. // 当前位置信息
  924. tGeoOrganizationLat: null,
  925. tGeoOrganizationLng: null,
  926. // 表单默认值
  927. form: {
  928. villagerOpinion: "经审查,材料真实有效,符合建房安全、无纠纷,同意申报。",
  929. villageOption: "经审查,{memberName}宅基地和建房申请材料真实有效,拟用地{location}符合村庄规划,相邻人{isAdvice}无异议,同意其宅基地和建房申请。",
  930. // applicationDetail.tHouseApplyProposer.memberName, applicationDetail.tHouseApplyProposedSituation.location, null
  931. groupOption: "经讨论和公示无异议,{memberName}符合农村宅基地申请资格,同意{memberName}的农村宅基地和建房申请。",
  932. // applicationDetail.tHouseApplyProposer.memberName, applicationDetail.tHouseApplyProposer.memberName
  933. },
  934. // 工作流
  935. taskId: null,
  936. instanceId: null,
  937. // 申请镇政府审批平面图
  938. uploadImg: {
  939. proposerId: null,
  940. fileList: '',
  941. uploadFileList: [],
  942. removeFileList: [],
  943. },
  944. // 验收镇政府审批平面图
  945. uploadImgAccepting: {
  946. proposerId: null,
  947. fileList: '',
  948. uploadFileList: [],
  949. removeFileList: [],
  950. },
  951. // 地图绘制
  952. drawInsert: null,
  953. // 附件弹出框显示
  954. attachmentVisible: false,
  955. // 工作流弹出框显示
  956. flowVisible: false,
  957. // 是/否字典
  958. yesNoOptions: [
  959. {dictLabel: '是', dictValue: 'Y'},
  960. {dictLabel: '否', dictValue: 'N'},
  961. ],
  962. // 当前附件tab
  963. attachmentActive: 0,
  964. // 家庭成员tab
  965. familyMembersActive: 0,
  966. };
  967. },
  968. created() {
  969. this.id = this.$route.query.id;
  970. this.type = this.$route.query.type;
  971. this.taskId = this.$route.query.taskId;
  972. this.instanceId = this.$route.query.instanceId;
  973. this.getFormIntent();
  974. this.getLandCoord();
  975. this.getDetail();
  976. },
  977. methods: {
  978. // 打开工作流程
  979. goFlow(){
  980. this.flowVisible = true;
  981. //window.location='flowChart?id='+this.id + '&processKey=WLHT';
  982. },
  983. // 初始化当前数据, 有ID则查询, 否则新增
  984. getDetail(){
  985. this.reset();
  986. if(this.id)
  987. {
  988. allInformationWLHT(this.id).then(response => {
  989. this.init(response.data);
  990. });
  991. }
  992. else
  993. {
  994. this.init();
  995. this.getApplyerDetail();
  996. }
  997. },
  998. // 绘制申请地图
  999. pointDarw(data) {
  1000. this.$nextTick(() => {
  1001. let map = this.$refs.pointDarwMap;
  1002. if(data === null)
  1003. data = this.applicationDetail.tHouseApplyProposedSituation.theGeom;
  1004. this.setMapData(map, data);
  1005. });
  1006. },
  1007. // 绘制验收地图
  1008. pointWrapAcceptance(data) {
  1009. this.$nextTick(() => {
  1010. let map = this.$refs.pointDarwAcceptanceMap;
  1011. if(data === null)
  1012. if(data === null)
  1013. {
  1014. if(this.applicationDetail.tHouseApplyEnd && this.applicationDetail.tHouseApplyEnd.theGeom)
  1015. data = this.applicationDetail.tHouseApplyEnd.theGeom;
  1016. else {
  1017. if(this.applicationDetail.tHouseApproveNatureOptions && this.applicationDetail.tHouseApproveNatureOptions.theGeom)
  1018. data = this.applicationDetail.tHouseApproveNatureOptions.theGeom;
  1019. }
  1020. }
  1021. this.setMapData(map, data);
  1022. });
  1023. },
  1024. // 绘制开工地图
  1025. paintStartNatureMap(data) {
  1026. this.$nextTick(() => {
  1027. let map = this.$refs.startNatureMap;
  1028. if(data === null)
  1029. {
  1030. if(this.applicationDetail.tHouseApproveNatureOptions && this.applicationDetail.tHouseApproveNatureOptions.theGeom)
  1031. data = this.applicationDetail.tHouseApproveNatureOptions.theGeom;
  1032. else {
  1033. if(this.applicationDetail.tHouseApplyProposedSituation.theGeom)
  1034. data = this.applicationDetail.tHouseApplyProposedSituation.theGeom;
  1035. }
  1036. }
  1037. this.setMapData(map, data);
  1038. });
  1039. },
  1040. // 绘制自然资源部门地图
  1041. pointDarwNature(data) {
  1042. this.$nextTick(() => {
  1043. let map = this.$refs.pointDarwNatureMap;
  1044. if(data === null)
  1045. {
  1046. if(this.applicationDetail.tHouseApproveNatureOptions && this.applicationDetail.tHouseApproveNatureOptions.theGeom)
  1047. data = this.applicationDetail.tHouseApproveNatureOptions.theGeom;
  1048. else {
  1049. if(this.applicationDetail.tHouseApplyProposedSituation.theGeom)
  1050. data = this.applicationDetail.tHouseApplyProposedSituation.theGeom;
  1051. }
  1052. }
  1053. this.setMapData(map, data);
  1054. });
  1055. },
  1056. // 通用设置地图数据函数
  1057. setMapData(map, data) {
  1058. //console.log(map, data ? true : false);
  1059. if(!map) return;
  1060. if(data)
  1061. {
  1062. map.setLayer('pointDarwLayer', data);
  1063. }
  1064. else {
  1065. this.getLandCoord((lng, lat) => {
  1066. map.setCoord(this.tGeoOrganizationLng, this.tGeoOrganizationLat);
  1067. });
  1068. }
  1069. },
  1070. // 点击流程步骤条, 切换流程表单页
  1071. onStepClicked(index) {
  1072. this.selectTab(index);
  1073. },
  1074. // 全局初始化
  1075. init(value) {
  1076. const role = this.$store.getters.roles;
  1077. this.currentUserRole = role[0];
  1078. // 局部变量
  1079. let houseApplyStatus = value ? value.tHouseApplyProposer.houseApplyStatus : -1;
  1080. let proposerId = value ? value.tHouseApplyProposer.id : null;
  1081. let hasGroupLevel = false; //value.tHouseApplyProposer.hasOwnProperty('hasGroupLevel') ? value.tHouseApplyProposer.hasGroupLevel : this.isGroupLevel;
  1082. // 默认状态
  1083. this.formVisible.baseApplyForm.homesteadFormVisible = value ? value.tHouseApplyProposer.existHomestead ==='Y' : false;
  1084. this.formVisible.editVisible = false;
  1085. this.formVisible.baseApplyForm.groupFormVisible = false;
  1086. this.formVisible.baseApplyForm.villageFormVisible = false;
  1087. this.formVisible.baseApplyForm.townFormVisible = false;
  1088. this.formVisible.landscopeVisible = false;
  1089. this.formVisible.landscopeForm.baseFormVisible = false;
  1090. this.formVisible.acceptingVisible = false;
  1091. this.formVisible.acceptingForm.baseFormVisible = false;
  1092. this.formVisible.acceptingForm.townFormVisible = false
  1093. this.formVisible.auditVisible = false;
  1094. this.formEnabled.baseApplyEnabled = false;
  1095. this.formEnabled.submitEnabled = false;
  1096. this.formEnabled.baseApplyForm.baseFormEnabled = false;
  1097. this.formEnabled.baseApplyForm.homesteadFormEnabled = false;
  1098. this.formEnabled.baseApplyForm.groupFormEnabled = false;
  1099. this.formEnabled.baseApplyForm.villageFormEnabled = false;
  1100. this.formEnabled.baseApplyForm.townFormEnabled = false;
  1101. this.formEnabled.landscopeEnabled = false;
  1102. this.formEnabled.landscopeForm.baseFormEnabled = false;
  1103. this.formEnabled.acceptingEnabled = false;
  1104. this.formEnabled.acceptingForm.baseFormEnabled = false;
  1105. this.formEnabled.acceptingForm.townFormEnabled = false;
  1106. switch (this.proposerStatus) {
  1107. // 查看
  1108. case PROPOSER_VIEW:
  1109. this.formVisible.baseApplyForm.groupFormVisible = hasGroupLevel && this.isNotProposeStatus(houseApplyStatus, ["1", '32']);
  1110. this.formVisible.baseApplyForm.villageFormVisible = this.isNotProposeStatus(houseApplyStatus, ["1", "32", "2", "3", "31"]);
  1111. this.formVisible.baseApplyForm.townFormVisible = this.isNotProposeStatus(houseApplyStatus, ["1", "32", "2", "3", "31", '4', '5', '8']);
  1112. this.formVisible.landscopeVisible = this.isNotProposeStatus(houseApplyStatus, ["1", "32", "2", "3", "31", '4', '5', '6', '7', '8', '9', '10']);
  1113. this.formVisible.landscopeForm.baseFormVisible = this.isNotProposeStatus(houseApplyStatus, ["1", "32", "2", "3", "31", '4', '5', '6', '7', '8', '9', '10']);
  1114. this.formVisible.acceptingVisible = this.isProposeStatus(houseApplyStatus, ["18", "20", "21", "22", "23", "24", "25", "30", "29", "26"]);
  1115. this.formVisible.acceptingForm.baseFormVisible = this.isProposeStatus(houseApplyStatus, ["18", "20", "21", "22", "23", "24", "25", "30", "29", "26"]);
  1116. this.formVisible.acceptingForm.townFormVisible = this.isProposeStatus(houseApplyStatus, [/*"29", */"26"]);
  1117. this.formEnabled.submitEnabled = this.isProposeStatus(houseApplyStatus, ["1"]);
  1118. this.formVisible.editVisible = this.formEnabled.submitEnabled;
  1119. this.houseApplyUploadComp.full = true;
  1120. this.houseApplyUploadComp.readonly = true;
  1121. this.houseApplyUploadComp.proposerId = proposerId;
  1122. this.houseApplyUploadComp.houseApplyStatus = houseApplyStatus;
  1123. this.houseApplyUploadCompStart.full = true;
  1124. this.houseApplyUploadCompStart.readonly = true;
  1125. this.houseApplyUploadCompStart.proposerId = proposerId;
  1126. this.houseApplyUploadCompStart.houseApplyStatus = houseApplyStatus; // == '10' ? '12' : houseApplyStatus;
  1127. this.houseApplyUploadCompEnd.full = true;
  1128. this.houseApplyUploadCompEnd.readonly = true;
  1129. this.houseApplyUploadCompEnd.proposerId = proposerId;
  1130. this.houseApplyUploadCompEnd.houseApplyStatus = houseApplyStatus;
  1131. // 初始化申请平面图
  1132. this.uploadImg.fileList = value.tHouseApproveLocationplanOptions ? value.tHouseApproveLocationplanOptions.locationPlan : '';
  1133. this.uploadImg.proposerId = value.tHouseApplyProposer.id;
  1134. // 初始化验收平面图
  1135. this.uploadImgAccepting.fileList = value.tHouseApplyEnd ? value.tHouseApplyEnd.locationPlan : '';
  1136. this.uploadImgAccepting.proposerId = value.tHouseApplyProposer.id;
  1137. //地图查看
  1138. this.applicationDetail = value;
  1139. this.pointDarw(null);
  1140. this.pointDarwNature(null);
  1141. this.pointWrapAcceptance(null);
  1142. this.paintStartNatureMap(null);
  1143. break;
  1144. // 编辑/审批
  1145. case PROPOSER_EDIT:
  1146. let handlerName = this.$store.getters.nickName;
  1147. let handlerTime = this.getDate();
  1148. this.applicationDetail = value;
  1149. this.formVisible.auditVisible = this.type === 'done' || this.type === 'todo';
  1150. // 申请-组级审批 初始化表单
  1151. if(hasGroupLevel)
  1152. {
  1153. if(this.isProposeStatus(houseApplyStatus, ["32"]))
  1154. {
  1155. let defaultGroupOption = this.form.groupOption
  1156. .replaceAll('{memberName}', this.applicationDetail.tHouseApplyProposer.memberName)
  1157. ;
  1158. if(!value.tHouseApproveVillageOptions)
  1159. {
  1160. this.$set(this.applicationDetail, 'tHouseApproveVillageOptions', {
  1161. groupLeader: handlerName,
  1162. groupTime: handlerTime,
  1163. groupOption: defaultGroupOption
  1164. });
  1165. }
  1166. else {
  1167. if(!this.applicationDetail.tHouseApproveVillageOptions.groupLeader)
  1168. this.$set(this.applicationDetail.tHouseApproveVillageOptions, 'groupLeader', handlerName);
  1169. if(!this.applicationDetail.tHouseApproveVillageOptions.groupTime)
  1170. this.$set(this.applicationDetail.tHouseApproveVillageOptions, 'groupTime', handlerTime);
  1171. if(!this.applicationDetail.tHouseApproveVillageOptions.groupOption)
  1172. this.$set(this.applicationDetail.tHouseApproveVillageOptions, 'groupOption', defaultGroupOption);
  1173. }
  1174. }
  1175. }
  1176. // 申请-草稿
  1177. if(this.isProposeStatus(houseApplyStatus, ["1"]))
  1178. {
  1179. this.formEnabled.baseApplyForm.baseFormEnabled = true;
  1180. this.formEnabled.baseApplyEnabled = true;
  1181. this.formEnabled.submitEnabled = true;
  1182. this.formVisible.editVisible = true;
  1183. }
  1184. // 申请-村级审批
  1185. else if(this.isProposeStatus(houseApplyStatus, ["31"]))
  1186. {
  1187. let neighbor = [];
  1188. if(this.applicationDetail.tHouseApplyProposedSituation.east) neighbor.push(this.applicationDetail.tHouseApplyProposedSituation.east);
  1189. if(this.applicationDetail.tHouseApplyProposedSituation.west) neighbor.push(this.applicationDetail.tHouseApplyProposedSituation.west);
  1190. if(this.applicationDetail.tHouseApplyProposedSituation.south) neighbor.push(this.applicationDetail.tHouseApplyProposedSituation.south);
  1191. if(this.applicationDetail.tHouseApplyProposedSituation.north) neighbor.push(this.applicationDetail.tHouseApplyProposedSituation.north);
  1192. neighbor = neighbor.join('、');
  1193. let defaultVillageOption = this.form.villageOption
  1194. .replaceAll('{memberName}', this.applicationDetail.tHouseApplyProposer.memberName)
  1195. .replaceAll('{location}', this.applicationDetail.tHouseApplyProposedSituation.location)
  1196. .replaceAll('{isAdvice}', neighbor)
  1197. ; // this.form.villagerOpinion
  1198. if(!value.tHouseApproveVillageOptions) {
  1199. this.$set(this.applicationDetail, 'tHouseApproveVillageOptions', {
  1200. villageLeader: handlerName,
  1201. villageOption: defaultVillageOption,
  1202. villageTime: handlerTime,
  1203. });
  1204. }
  1205. else {
  1206. if(!this.applicationDetail.tHouseApproveVillageOptions.villageLeader)
  1207. this.$set(this.applicationDetail.tHouseApproveVillageOptions, 'villageLeader', handlerName);
  1208. if(!this.applicationDetail.tHouseApproveVillageOptions.villageTime)
  1209. this.$set(this.applicationDetail.tHouseApproveVillageOptions, 'villageTime', handlerTime);
  1210. if(!this.applicationDetail.tHouseApproveVillageOptions.villageOption || true) // always generate options
  1211. this.$set(this.applicationDetail.tHouseApproveVillageOptions, 'villageOption', defaultVillageOption);
  1212. }
  1213. }
  1214. // 申请-镇级审批
  1215. else if(this.isProposeStatus(houseApplyStatus, ["8"]))
  1216. {
  1217. // 自然资源部门
  1218. if(!value.tHouseApproveNatureOptions)
  1219. {
  1220. this.$set(this.applicationDetail, "tHouseApproveNatureOptions", {
  1221. landArea: null,
  1222. rightsType: null,
  1223. east: null, // 东至
  1224. west: null, // 西至
  1225. south: null, // 南至
  1226. north: null, // 北至
  1227. approveLeader: handlerName,
  1228. approveOption: null,
  1229. approveTime: handlerTime,
  1230. //theGeom: value.tHouseApplyProposedSituation.theGeom,
  1231. });
  1232. }
  1233. else {
  1234. if(!this.applicationDetail.tHouseApproveNatureOptions.approveLeader)
  1235. this.$set(this.applicationDetail.tHouseApproveNatureOptions, 'approveLeader', handlerName);
  1236. if(!this.applicationDetail.tHouseApproveNatureOptions.approveTime)
  1237. this.$set(this.applicationDetail.tHouseApproveNatureOptions, 'approveTime', handlerTime);
  1238. }
  1239. // 农村农业部门
  1240. if(!value.tHouseApproveAgricultureOptions)
  1241. {
  1242. this.$set(this.applicationDetail, "tHouseApproveAgricultureOptions", {
  1243. isMembership: null,
  1244. isOnehouse: null,
  1245. isReviewmaterials: null,
  1246. approveLeader: handlerName,
  1247. approveOption: null,
  1248. approveTime: handlerTime,
  1249. });
  1250. }
  1251. else {
  1252. if(!this.applicationDetail.tHouseApproveAgricultureOptions.approveLeader)
  1253. this.$set(this.applicationDetail.tHouseApproveAgricultureOptions, 'approveLeader', handlerName);
  1254. if(!this.applicationDetail.tHouseApproveAgricultureOptions.approveTime)
  1255. this.$set(this.applicationDetail.tHouseApproveAgricultureOptions, 'approveTime', handlerTime);
  1256. }
  1257. // 住建部
  1258. if(!value.tHouseApproveOtherOptions)
  1259. {
  1260. this.$set(this.applicationDetail, "tHouseApproveOtherOptions", {
  1261. buildingType: null,
  1262. buildingArea: null,
  1263. buildingFloors: null,
  1264. buildingHight: null,
  1265. buildingLandArea: null,
  1266. designPaper: "1",
  1267. east: null, // 东至
  1268. west: null, // 西至
  1269. south: null, // 南至
  1270. north: null, // 北至
  1271. approveLeader: handlerName,
  1272. approveOption: null,
  1273. approveTime: handlerTime,
  1274. });
  1275. }
  1276. else {
  1277. if(!this.applicationDetail.tHouseApproveOtherOptions.approveLeader)
  1278. this.$set(this.applicationDetail.tHouseApproveOtherOptions, 'approveLeader', handlerName);
  1279. if(!this.applicationDetail.tHouseApproveOtherOptions.approveTime)
  1280. this.$set(this.applicationDetail.tHouseApproveOtherOptions, 'approveTime', handlerTime);
  1281. }
  1282. // 镇政府
  1283. if(!value.tHouseApproveTownOptions)
  1284. {
  1285. this.$set(this.applicationDetail, 'tHouseApproveTownOptions', {
  1286. approveLeader: handlerName,
  1287. approveTime: handlerTime,
  1288. });
  1289. }
  1290. else {
  1291. if(!this.applicationDetail.tHouseApproveTownOptions.approveLeader)
  1292. this.$set(this.applicationDetail.tHouseApproveTownOptions, 'approveLeader', handlerName);
  1293. if(!this.applicationDetail.tHouseApproveTownOptions.approveTime)
  1294. this.$set(this.applicationDetail.tHouseApproveTownOptions, 'approveTime', handlerTime);
  1295. }
  1296. // 勘察
  1297. if(!value.tHouseApproveLocationplanOptions)
  1298. {
  1299. this.$set(this.applicationDetail, 'tHouseApproveLocationplanOptions', {
  1300. locationPlan: null,
  1301. cartographicUnit: null,
  1302. surveyPersonnel: handlerName,
  1303. suveyTime: handlerTime,
  1304. cartographer: handlerName,
  1305. cartographicTime: handlerTime,
  1306. });
  1307. }
  1308. else {
  1309. if(!this.applicationDetail.tHouseApproveLocationplanOptions.surveyPersonnel)
  1310. this.$set(this.applicationDetail.tHouseApproveLocationplanOptions, 'surveyPersonnel', handlerName);
  1311. if(!this.applicationDetail.tHouseApproveLocationplanOptions.suveyTime)
  1312. this.$set(this.applicationDetail.tHouseApproveLocationplanOptions, 'suveyTime', handlerTime);
  1313. if(!this.applicationDetail.tHouseApproveLocationplanOptions.cartographer)
  1314. this.$set(this.applicationDetail.tHouseApproveLocationplanOptions, 'cartographer', handlerName);
  1315. if(!this.applicationDetail.tHouseApproveLocationplanOptions.cartographicTime)
  1316. this.$set(this.applicationDetail.tHouseApproveLocationplanOptions, 'cartographicTime', handlerTime);
  1317. }
  1318. }
  1319. // 开工申请
  1320. else if(this.isProposeStatus(houseApplyStatus, ["10"]))
  1321. {
  1322. if(!this.applicationDetail.tHouseApplyStart)
  1323. {
  1324. this.$set(this.applicationDetail, 'tHouseApplyStart', {
  1325. startDate: null,
  1326. endDate: null,
  1327. });
  1328. }
  1329. }
  1330. // 验收
  1331. else if(this.isProposeStatus(houseApplyStatus, ["20"]))
  1332. {
  1333. if(!this.applicationDetail.tHouseApplyEnd)
  1334. {
  1335. this.$set(this.applicationDetail, 'tHouseApplyEnd', {
  1336. //TODO: 开工结束时后台必定生成
  1337. });
  1338. }
  1339. }
  1340. // 验收镇级审批
  1341. else if(this.isProposeStatus(houseApplyStatus, ["29"]))
  1342. {
  1343. if(!this.applicationDetail.tHouseApplyEnd.cartographer) this.applicationDetail.tHouseApplyEnd.cartographer = handlerName;
  1344. if(!this.applicationDetail.tHouseApplyEnd.zhenName) this.applicationDetail.tHouseApplyEnd.zhenName = handlerName;
  1345. if(!this.applicationDetail.tHouseApplyEnd.zhenTime) this.applicationDetail.tHouseApplyEnd.zhenTime = handlerTime;
  1346. if(!this.applicationDetail.tHouseApplyEnd.nongyeName) this.applicationDetail.tHouseApplyEnd.nongyeName = handlerName;
  1347. if(!this.applicationDetail.tHouseApplyEnd.nongyeTime) this.applicationDetail.tHouseApplyEnd.nongyeTime = handlerTime;
  1348. if(!this.applicationDetail.tHouseApplyEnd.natureName) this.applicationDetail.tHouseApplyEnd.natureName = handlerName;
  1349. if(!this.applicationDetail.tHouseApplyEnd.natureTime) this.applicationDetail.tHouseApplyEnd.natureTime = handlerTime;
  1350. if(!this.applicationDetail.tHouseApplyEnd.buildingName) this.applicationDetail.tHouseApplyEnd.buildingName = handlerName;
  1351. if(!this.applicationDetail.tHouseApplyEnd.buildingTime) this.applicationDetail.tHouseApplyEnd.buildingTime = handlerTime;
  1352. if(!this.applicationDetail.tHouseApplyEnd.isProjectFinished) this.applicationDetail.tHouseApplyEnd.isProjectFinished = 'Y';
  1353. if(!this.applicationDetail.tHouseApplyEnd.isQualifiedQuality) this.applicationDetail.tHouseApplyEnd.isQualifiedQuality = 'Y';
  1354. if(!this.applicationDetail.tHouseApplyEnd.hasBuildingRecord) this.applicationDetail.tHouseApplyEnd.hasBuildingRecord = 'Y';
  1355. if(!this.applicationDetail.tHouseApplyEnd.isSignWarranty) this.applicationDetail.tHouseApplyEnd.isSignWarranty = 'Y';
  1356. if(!this.applicationDetail.tHouseApplyEnd.isHandleProblem) this.applicationDetail.tHouseApplyEnd.isHandleProblem = 'Y';
  1357. if(!this.applicationDetail.tHouseApplyEnd.isDesignPaperSame) this.applicationDetail.tHouseApplyEnd.isDesignPaperSame = 'Y';
  1358. if(!this.applicationDetail.tHouseApplyEnd.isOtherAcceptanceFinished) this.applicationDetail.tHouseApplyEnd.isOtherAcceptanceFinished = 'Y';
  1359. }
  1360. this.formVisible.baseApplyForm.groupFormVisible = hasGroupLevel && this.isNotProposeStatus(houseApplyStatus, ["1"]);
  1361. this.formVisible.baseApplyForm.villageFormVisible = this.isNotProposeStatus(houseApplyStatus, ["1", "32", "2", "3"]);
  1362. this.formVisible.baseApplyForm.townFormVisible = this.isNotProposeStatus(houseApplyStatus, ["1", "32", "2", "3", "31", '4', '5']);
  1363. this.formVisible.landscopeVisible = this.isNotProposeStatus(houseApplyStatus, ["1", "32", "2", "3", "31", '4', '5', '6', '7', '8', '9']);
  1364. this.formVisible.landscopeForm.baseFormVisible = this.isNotProposeStatus(houseApplyStatus, ["1", "32", "2", "3", "31", '4', '5', '6', '7', '8', '9']);
  1365. this.formVisible.acceptingVisible = this.isProposeStatus(houseApplyStatus, ["18", "20", "21", "22", "23", "24", "25", "30", "29", "26"]);
  1366. this.formVisible.acceptingForm.baseFormVisible = this.isProposeStatus(houseApplyStatus, ["18", "20", "21", "22", "23", "24", "25", "30", "29", "26"]);
  1367. this.formVisible.acceptingForm.townFormVisible = this.isProposeStatus(houseApplyStatus, ["29", "26"]);
  1368. this.formEnabled.baseApplyForm.groupFormEnabled = hasGroupLevel && this.isProposeStatus(houseApplyStatus, ['32']) && this.isInRoles(role, 'village_group_leader');
  1369. this.formEnabled.baseApplyForm.villageFormEnabled = this.isProposeStatus(houseApplyStatus, ["31"]) && this.isInRoles(role, 'village_leader');
  1370. this.formEnabled.baseApplyForm.townFormEnabled = this.isProposeStatus(houseApplyStatus, ['8']) && this.isInRoles(role, 'town_leader');
  1371. //console.log(this.isProposeStatus(houseApplyStatus, ['8']) && this.isInRoles(role, 'town_leader')+'11111111');
  1372. this.formEnabled.landscopeEnabled = this.isProposeStatus(houseApplyStatus, ['10', '12']);
  1373. this.formEnabled.landscopeForm.baseFormEnabled = this.isProposeStatus(houseApplyStatus, ['10', '12']);
  1374. this.formEnabled.acceptingEnabled = this.isProposeStatus(houseApplyStatus, ['20']);
  1375. this.formEnabled.acceptingForm.baseFormEnabled = this.isProposeStatus(houseApplyStatus, ['20']);
  1376. this.formEnabled.acceptingForm.townFormEnabled = this.isProposeStatus(houseApplyStatus, ["29"]) && this.isInRoles(role, 'town_leader');
  1377. this.applicationDetail.tHouseApplyProposer = value.tHouseApplyProposer;
  1378. this.applicationDetail.tHouseApplyCurrentSituation = value.tHouseApplyCurrentSituation;
  1379. this.applicationDetail.tHouseApplyProposedSituation = value.tHouseApplyProposedSituation;
  1380. //this.formEnabled.landscopeEnabled = value.startDraft;
  1381. if (this.isLandscope()) {
  1382. this.houseApplyUploadComp.full = true;
  1383. this.houseApplyUploadCompStart.full = false;
  1384. this.houseApplyUploadCompEnd.full = false;
  1385. this.houseApplyUploadComp.readonly = true;
  1386. this.houseApplyUploadCompStart.readonly = false;
  1387. this.houseApplyUploadCompEnd.readonly = true;
  1388. } else if (this.isAccepting()) {
  1389. this.houseApplyUploadComp.full = true;
  1390. this.houseApplyUploadCompStart.full = true;
  1391. this.houseApplyUploadCompEnd.full = false;
  1392. this.houseApplyUploadComp.readonly = true;
  1393. this.houseApplyUploadCompStart.readonly = true;
  1394. this.houseApplyUploadCompEnd.readonly = false;
  1395. }
  1396. else { // this.isBaseApply()
  1397. this.houseApplyUploadComp.full = false;
  1398. this.houseApplyUploadCompStart.full = false;
  1399. this.houseApplyUploadCompEnd.full = false;
  1400. this.houseApplyUploadComp.readonly = false;
  1401. this.houseApplyUploadCompStart.readonly = houseApplyStatus == '10' ? false : true;
  1402. this.houseApplyUploadCompEnd.readonly = true;
  1403. }
  1404. this.houseApplyUploadComp.proposerId = proposerId;
  1405. this.houseApplyUploadComp.houseApplyStatus = houseApplyStatus;
  1406. this.houseApplyUploadCompStart.proposerId = proposerId;
  1407. this.houseApplyUploadCompStart.houseApplyStatus = houseApplyStatus == '10' ? '12' : houseApplyStatus; // 申请通过是10 被驳回是12
  1408. this.houseApplyUploadCompEnd.proposerId = proposerId;
  1409. this.houseApplyUploadCompEnd.houseApplyStatus = houseApplyStatus;
  1410. // 初始化申请平面图
  1411. this.applicationDetail.tHouseApproveLocationplanOptions = value.tHouseApproveLocationplanOptions;
  1412. this.uploadImg.fileList = value.tHouseApproveLocationplanOptions ? value.tHouseApproveLocationplanOptions.locationPlan : '';
  1413. this.uploadImg.proposerId = this.applicationDetail.tHouseApplyProposer.id;
  1414. this.uploadImgAccepting.fileList = value.tHouseApplyEnd ? value.tHouseApplyEnd.locationPlan : '';
  1415. this.uploadImgAccepting.proposerId = this.applicationDetail.tHouseApplyProposer.id;
  1416. //地图编辑
  1417. this.pointDarw(null);
  1418. this.pointDarwNature(null);
  1419. this.pointWrapAcceptance(null);
  1420. this.paintStartNatureMap(null);
  1421. break;
  1422. // 新建
  1423. case PROPOSER_ADD:
  1424. this.formEnabled.baseApplyEnabled = true;
  1425. this.formEnabled.baseApplyForm.baseFormEnabled = true;
  1426. this.formEnabled.submitEnabled = true;
  1427. this.formVisible.editVisible = true;
  1428. this.houseApplyUploadComp.full = false;
  1429. this.houseApplyUploadComp.readonly = false;
  1430. this.houseApplyUploadComp.houseApplyStatus = '1';
  1431. this.houseApplyUploadComp.proposerId = -1;
  1432. this.pointDarw();
  1433. getWorkflow().then((resp) => {
  1434. this.$set(this.applicationDetail, 'proposerActiveIndex', -1);
  1435. this.$set(this.applicationDetail, 'startActiveIndex', -1);
  1436. this.$set(this.applicationDetail, 'endActiveIndex', -1);
  1437. this.$set(this.applicationDetail, 'applyStepList', resp.data.applyStepList.name);
  1438. this.$set(this.applicationDetail, 'startStepList', resp.data.startStepList.name);
  1439. this.$set(this.applicationDetail, 'endStepList', resp.data.endStepList.name);
  1440. });
  1441. //this.initData();
  1442. break;
  1443. }
  1444. // 通用设置
  1445. if (this.isLandscope()) {
  1446. this.active = PROPOSER_STAGE_START;
  1447. this.selectedTabName = PROPOSER_STAGE_START;
  1448. this.processKeyField = PROPOSER_STAGE_START_ACTIVITY;
  1449. this.attachmentActive = PROPOSER_STAGE_START;
  1450. } else if (this.isAccepting()) {
  1451. this.active = PROPOSER_STAGE_END;
  1452. this.selectedTabName = PROPOSER_STAGE_END;
  1453. this.processKeyField = PROPOSER_STAGE_END_ACTIVITY;
  1454. this.attachmentActive = PROPOSER_STAGE_END;
  1455. }
  1456. else { // this.isBaseApply()
  1457. this.active = PROPOSER_STAGE_BASE_APPLY;
  1458. this.selectedTabName = PROPOSER_STAGE_BASE_APPLY;
  1459. this.attachmentActive = PROPOSER_STAGE_BASE_APPLY;
  1460. // 编辑时且为申请通过状态 -> 填写开工
  1461. if(this.proposerStatus == PROPOSER_EDIT && houseApplyStatus == '10')
  1462. {
  1463. this.active = PROPOSER_STAGE_START;
  1464. this.selectedTabName = PROPOSER_STAGE_START;
  1465. this.attachmentActive = PROPOSER_STAGE_START;
  1466. }
  1467. this.processKeyField = PROPOSER_STAGE_BASE_APPLY_ACTIVITY;
  1468. }
  1469. },
  1470. // 获取query的意图
  1471. getFormIntent() {
  1472. console.log(this.type);
  1473. switch (this.type) {
  1474. case 'done':
  1475. case 'view':
  1476. this.proposerStatus = PROPOSER_VIEW;
  1477. break;
  1478. case 'add':
  1479. this.proposerStatus = PROPOSER_ADD;
  1480. break;
  1481. case 'modify':
  1482. case 'audit':
  1483. case 'todo':
  1484. this.proposerStatus = PROPOSER_EDIT;
  1485. break;
  1486. default:
  1487. this.proposerStatus = PROPOSER_VIEW;
  1488. break;
  1489. }
  1490. return this.proposerStatus;
  1491. },
  1492. // 获取日期, yyyy-MM-dd
  1493. getDate(d) {
  1494. return formatDate(d ? d : new Date(), 'yyyy-MM-dd');
  1495. },
  1496. // 初始化基础表单
  1497. reset() {
  1498. this.$set(this.applicationDetail, 'tHouseApplyProposer', {
  1499. memberName: "",
  1500. sex: "",
  1501. age: "" /* 年龄*/,
  1502. phone: "",
  1503. idcard: "",
  1504. householdRegister: "",
  1505. familyAddress: "",
  1506. members: 0, // 家庭人口数
  1507. applyTime: this.getDate(),
  1508. applyReasion: "",
  1509. houseSource: "建房申请来源{农户自制,协管代办}", // 字典
  1510. houseApplyStatus: "", // 字典
  1511. auditStatus: "", // 字典
  1512. taskId: "",
  1513. taskName: "",
  1514. instanceId: "",
  1515. processKey: "",
  1516. existHomestead: "N",
  1517. });
  1518. this.$set(this.applicationDetail, "tHouseApplyCurrentSituation", {
  1519. landArea: null, //宅基地面积
  1520. landPerArea: null, //人均宅基地面积
  1521. landCertificateNo: null, //权属证书号
  1522. buildingPerArea: null, //人均建筑面积
  1523. houseCertificateNo: null, //权属证书号
  1524. landIsposal: null, // 现宅基地处置情况
  1525. reservedArea: null, // 保留m²
  1526. otherRemark: null, // 其他
  1527. });
  1528. this.$set(this.applicationDetail, "tHouseApplyFamilyMembers", []);
  1529. this.$set(this.applicationDetail, "tHouseApplyProposedSituation", {
  1530. location: null, // 拟建位置
  1531. landArea: null, // 宅基地面积
  1532. east: null, // 东至
  1533. west: null, // 西至
  1534. south: null, // 南至
  1535. north: null, // 北至
  1536. geographicType: null, // 地类
  1537. constructionLandArea: null, // 建设用地面积
  1538. unusedLandArea: null, // 未利用地面积
  1539. agriculturalLandArea: null, // 农用地面积
  1540. farmLandArea: null, //耕地面积
  1541. forestLandArea: null, // 林地面积
  1542. buildingArea: null, // 建筑面积
  1543. buildingFloors: null, // 建筑层数
  1544. buildingHight: null, // 建筑高度
  1545. designPaper: "1", // 设计图纸
  1546. housingStructure: null, // 房屋构造
  1547. isAdvice: "1", // 是否征求相邻权利人意见
  1548. buildingType: "4",
  1549. buildingLandArea:null, //房基占地面积
  1550. buildingDesign: "1",//是否有住房建设设计图
  1551. buildingAtlas: "1", //是否采用住建部门提供的图集
  1552. houseTypeId: null,
  1553. });
  1554. this.$set(this.applicationDetail, 'fileList', []);
  1555. },
  1556. //是否有宅基地选项改变
  1557. existHomesteadChange(name){
  1558. if (name == 'Y'){
  1559. if (!this.applicationDetail.tHouseApplyCurrentSituation){
  1560. //现宅基地情况
  1561. this.$set(this.applicationDetail, 'tHouseApplyCurrentSituation', {
  1562. //宅基地面积
  1563. landArea: null,
  1564. //人均宅基地面积
  1565. landPerArea: null,
  1566. //不动产单元号
  1567. landCertificateNo: null,
  1568. //农民房屋幢号
  1569. houseCertificateNo: null,
  1570. //建筑面积
  1571. buildingArea: null,
  1572. //人均建筑面积
  1573. buildingPerArea: null,
  1574. //现宅基地处置情况 字典 land_isposal
  1575. landIsposal: null
  1576. });
  1577. }
  1578. }
  1579. else
  1580. this.$set(this.applicationDetail, 'tHouseApplyCurrentSituation', null);
  1581. },
  1582. //添加家庭成员
  1583. addFamily(){
  1584. this.applicationDetail.tHouseApplyProposer.members++;
  1585. this.applicationDetail.tHouseApplyFamilyMembers.push({
  1586. //applyProposerId: this.applicationDetail.tHouseApplyFamilyMembers[0].applyProposerId,
  1587. memberName:null,
  1588. age:null,
  1589. familyStatusName:null,
  1590. idcard :null,
  1591. householdRegister:null,
  1592. });
  1593. this.$nextTick(() => {
  1594. this.$refs.memberTabs.scrollTo(this.applicationDetail.tHouseApplyFamilyMembers.length - 1);
  1595. });
  1596. },
  1597. //删除家庭成员
  1598. deleteFamily(index){
  1599. this.applicationDetail.tHouseApplyProposer.members--;
  1600. this.applicationDetail.tHouseApplyFamilyMembers.splice(index,1)
  1601. this.$nextTick(() => {
  1602. this.$refs.memberTabs.scrollTo(Math.max(index - 1, 0));
  1603. });
  1604. },
  1605. // 获取户型配置
  1606. getHouseList() {
  1607. return houseList();
  1608. },
  1609. //返回上一步操作
  1610. goBack(){
  1611. this.$router.push({name: this.$router.back(-1)});
  1612. },
  1613. // 当地图绘制完成时
  1614. onMapDrawFinished(data) {
  1615. this.drawInsert = data;
  1616. },
  1617. // 当申请地图被重置时
  1618. onMapDrawReseted() {
  1619. this.drawInsert = null;
  1620. if(this.applicationDetail.tHouseApplyProposedSituation.theGeom)
  1621. {
  1622. let lastData = JSON.parse(this.applicationDetail.tHouseApplyProposedSituation.theGeom);
  1623. if(lastData.hasOwnProperty('coordinates')) // 从后台获取的
  1624. this.drawInsert = lastData.coordinates;
  1625. }
  1626. },
  1627. // 全局提交
  1628. onSubmit(intent){
  1629. console.log(this.applicationDetail, intent);
  1630. switch (intent) {
  1631. case 'add':
  1632. case 'modify':
  1633. this.saveProposerApply();
  1634. break;
  1635. case 'submit':
  1636. this.submitApplyProposer();
  1637. break;
  1638. case 'save_and_submit':
  1639. this.saveProposerApply(true);
  1640. break;
  1641. case 'agree':
  1642. this.auditProposer(true);
  1643. break;
  1644. case 'reject':
  1645. this.auditProposer(false);
  1646. break;
  1647. case 'start':
  1648. this.startProposerApply();
  1649. break;
  1650. case 'start_and_submit':
  1651. this.startProposerApply(true);
  1652. break;
  1653. case 'end':
  1654. this.endProposerApply(true);
  1655. break;
  1656. default:
  1657. console.error('Unknown intent! ', intent);
  1658. break;
  1659. }
  1660. },
  1661. // 初次申请草稿的附件上传
  1662. onUploadFinished(fileIdList) {
  1663. this.$set(this.applicationDetail, "fileList", fileIdList);
  1664. },
  1665. // 获取申请人信息
  1666. getApplyerDetail(){
  1667. getHouseMembers().then(res => {
  1668. if(res.data)
  1669. {
  1670. this.applicationDetail.tHouseApplyProposer = res.data.tHouseApplyProposer;
  1671. this.applicationDetail.tHouseApplyFamilyMembers = res.data.tHouseApplyFamilyMembers;
  1672. if(!this.applicationDetail.tHouseApplyProposer.existHomestead)
  1673. this.applicationDetail.tHouseApplyProposer.existHomestead = 'N';
  1674. this.applicationDetail.tHouseApplyProposer.applyTime = this.getDate();
  1675. this.getMemberCurrentSituation();
  1676. }
  1677. });
  1678. },
  1679. // 检查字符串, 不符合返回true
  1680. checkString(value, regexp) {
  1681. let res = value === undefined || value === null || value === '' || value.toString().trim().length === 0;
  1682. if(res)
  1683. return true;
  1684. if(regexp)
  1685. res = !regexp.test(value);
  1686. return res;
  1687. },
  1688. // 保存申请(是否提交)
  1689. saveProposerApply(submit) {
  1690. this.$refs.form.validate().then(() => {
  1691. let msg = this.validateBaseApplyFormBase();
  1692. if(msg)
  1693. {
  1694. this.notify(msg, 'danger');
  1695. return;
  1696. }
  1697. //地图判断
  1698. if (this.drawInsert != null) {
  1699. this.applicationDetail.tHouseApplyProposedSituation.theGeom = JSON.stringify(this.drawInsert);
  1700. }
  1701. else
  1702. {
  1703. if(this.applicationDetail.tHouseApplyProposer.existHomestead === 'Y' && this.applicationDetail.tHouseApplyProposedSituation.theGeom) // 新增时 && 已有宅基地时 && 重新画过图且被清理掉
  1704. {
  1705. this.applicationDetail.tHouseApplyProposedSituation.theGeom = this.convertGeom(this.applicationDetail.tHouseApplyProposedSituation.theGeom);
  1706. }
  1707. }
  1708. if(this.checkString(this.applicationDetail.tHouseApplyProposedSituation.theGeom))
  1709. {
  1710. this.notify("请标注宅基地位置!", 'danger');
  1711. return;
  1712. }
  1713. console.log("进行保存", this.applicationDetail);
  1714. saveHouseBaseInfo(this.applicationDetail).then((response) => {
  1715. if(submit)
  1716. {
  1717. this.id = response.data;
  1718. this.submitApplyProposer();
  1719. }
  1720. else
  1721. {
  1722. this.notify("保存成功", 'success');
  1723. this.$router.back(-1);
  1724. }
  1725. }).catch((e) => {
  1726. this.notify("保存失败!", 'danger');
  1727. }).finally(() => {
  1728. });
  1729. }).catch(e => {
  1730. let msg = this.validateBaseApplyFormBase();
  1731. if(msg)
  1732. {
  1733. this.notify(msg, 'danger');
  1734. return;
  1735. }
  1736. });
  1737. },
  1738. // 判断状态是否符合
  1739. isProposeStatus(target, arr) {
  1740. if(!Array.isArray(arr))
  1741. arr = arr.split(',');
  1742. return arr.indexOf(target) !== -1;
  1743. },
  1744. // 判断状态是否不符合
  1745. isNotProposeStatus(target, arr) {
  1746. return !this.isProposeStatus(target, arr);
  1747. },
  1748. // 是否当前是申请流程
  1749. isBaseApply() {
  1750. return ["1", "32", "2", "3", "31", "4", "5", "6", "7", "8", "9", "10"].indexOf(this.applicationDetail.tHouseApplyProposer.houseApplyStatus) !== -1;
  1751. },
  1752. // 是否当前是开工流程
  1753. isLandscope() {
  1754. return ["12", "13", "14", "15", "16", "17", "28", "19", "18"].indexOf(this.applicationDetail.tHouseApplyProposer.houseApplyStatus) !== -1;
  1755. },
  1756. // 是否当前是验收流程
  1757. isAccepting() {
  1758. return ["18", "20", "21", "22", "23", "24", "25", "30", "29", "26"].indexOf(this.applicationDetail.tHouseApplyProposer.houseApplyStatus) !== -1;
  1759. },
  1760. // 获取当前申请人的宅基地信息
  1761. getMemberCurrentSituation(item) {
  1762. let farmerCode = this.applicationDetail.tHouseApplyProposer.farmerCode;
  1763. checkDuplicateBuilding({farmerCode: farmerCode}).then(resp => {
  1764. if (resp.data) {
  1765. this.notify(resp.msg, 'danger');
  1766. } else {
  1767. checkDuplicateBuildingQuery({farmerCode: farmerCode}).then(resp => {
  1768. if(resp.data !=null && resp.data !=""){
  1769. this.applicationDetail.tHouseApplyProposer.existHomestead ="Y";
  1770. // 现宅基地及农房情况对象
  1771. this.applicationDetail.tHouseApplyCurrentSituation.landArea = resp.data.zdmj; //宅基地面积
  1772. this.applicationDetail.tHouseApplyCurrentSituation.landPerArea= (resp.data.zdmj/(this.applicationDetail.tHouseApplyProposer.members +1)); //人均宅基地面积
  1773. this.applicationDetail.tHouseApplyCurrentSituation.landCertificateNo= resp.data.bdcdyh; //不动产单元号
  1774. this.applicationDetail.tHouseApplyCurrentSituation.buildingArea= resp.data.scjzmj; //建筑面积
  1775. this.applicationDetail.tHouseApplyCurrentSituation.buildingPerArea= (resp.data.scjzmj/(this.applicationDetail.tHouseApplyProposer.members +1)); //人均建筑面积
  1776. this.applicationDetail.tHouseApplyCurrentSituation.houseCertificateNo= resp.data.zrzh; //自然幢号
  1777. this.applicationDetail.tHouseApplyCurrentSituation.landIsposal= null; // 现宅基地处置情况
  1778. this.applicationDetail.tHouseApplyCurrentSituation.reservedArea= null; // 保留m²
  1779. this.applicationDetail.tHouseApplyCurrentSituation.otherRemark= null; // 其他
  1780. this.renderMapRegion(resp.data.theGeom);
  1781. } else {
  1782. this.applicationDetail.tHouseApplyProposer.existHomestead ="N";
  1783. // 现宅基地及农房情况对象
  1784. this.applicationDetail.tHouseApplyCurrentSituation.landArea = null; //宅基地面积
  1785. this.applicationDetail.tHouseApplyCurrentSituation.landPerArea= null; //人均宅基地面积
  1786. this.applicationDetail.tHouseApplyCurrentSituation.landCertificateNo= null; //权属证书号
  1787. this.applicationDetail.tHouseApplyCurrentSituation.buildingPerArea= null; //人均建筑面积
  1788. this.applicationDetail.tHouseApplyCurrentSituation.houseCertificateNo= null; //权属证书号
  1789. this.applicationDetail.tHouseApplyCurrentSituation.landIsposal= null; // 现宅基地处置情况
  1790. this.applicationDetail.tHouseApplyCurrentSituation.reservedArea= null; // 保留m²
  1791. this.applicationDetail.tHouseApplyCurrentSituation.otherRemark= null; // 其他
  1792. this.renderMapRegion(null);
  1793. }
  1794. });
  1795. }
  1796. });
  1797. },
  1798. // 绘制现有宅基地地图
  1799. renderMapRegion(json = null) { // json = theGeom
  1800. this.applicationDetail.tHouseApplyProposedSituation.theGeom = json;
  1801. if(json)
  1802. {
  1803. let obj = JSON.parse(json);
  1804. this.drawInsert = obj.coordinates;
  1805. }
  1806. else
  1807. this.drawInsert = null;
  1808. this.pointDarw(null);
  1809. },
  1810. // 提交申请
  1811. submitApplyProposer() {
  1812. customSubmitWLHT(this.id).then((resp) => {
  1813. this.notify("提交成功", 'success');
  1814. this.$router.back(-1);
  1815. }).catch((e) => {
  1816. this.notify("提交失败!", 'danger');
  1817. }).finally(() => {
  1818. });
  1819. },
  1820. // 判断角色是否符合
  1821. isInRoles(myRoles, requireRole) {
  1822. if(!Array.isArray(myRoles))
  1823. myRoles = myRoles.split(',');
  1824. return myRoles.indexOf(requireRole) !== -1;
  1825. },
  1826. // 转换地图数据用于提交后台
  1827. convertGeom(json) {
  1828. let data = JSON.parse(json);
  1829. if(data.hasOwnProperty('coordinates'))
  1830. return JSON.stringify(data.coordinates);
  1831. return null;
  1832. },
  1833. // 审批(同意/驳回)
  1834. auditProposer(pass) {
  1835. switch (this.processKeyField) {
  1836. case PROPOSER_STAGE_BASE_APPLY_ACTIVITY: {
  1837. let comment;
  1838. const role = this.$store.getters.roles[0];
  1839. //console.log(role);
  1840. let msg = "";
  1841. switch (role) {
  1842. case "town_leader":
  1843. msg = this.validateAgricultureForm(pass);
  1844. if (msg) {
  1845. break;
  1846. }
  1847. msg = this.validateNatureForm();
  1848. if (msg) {
  1849. break;
  1850. }
  1851. msg = this.validateBuildingForm();
  1852. if (msg) {
  1853. break;
  1854. }
  1855. msg = this.validateTownForm();
  1856. if (msg) {
  1857. break;
  1858. }
  1859. comment = this.applicationDetail.tHouseApproveTownOptions.approveOption;
  1860. //地图判断
  1861. if (this.drawInsert != null) {
  1862. this.applicationDetail.tHouseApproveNatureOptions.theGeom = JSON.stringify(this.drawInsert);
  1863. }
  1864. else {
  1865. if(this.applicationDetail.tHouseApproveNatureOptions && this.applicationDetail.tHouseApproveNatureOptions.theGeom == null){
  1866. this.applicationDetail.tHouseApproveNatureOptions.theGeom = this.convertGeom(this.applicationDetail.tHouseApplyProposedSituation.theGeom);
  1867. }
  1868. }
  1869. //console.log(this.$refs.pictureUploadApplying, this.$refs.pictureUploadApplying.isValid());
  1870. if(this.$refs.pictureUploadApplying && this.$refs.pictureUploadApplying.isValid()) {
  1871. this.submitHouseApproveLocationplanOptions(pass, comment);
  1872. return;
  1873. }
  1874. break;
  1875. default:
  1876. if(this.checkString(this.applicationDetail.tHouseApproveVillageOptions.villageOption))
  1877. msg = '村领导意见不能为空';
  1878. else
  1879. comment = this.applicationDetail.tHouseApproveVillageOptions.villageOption;
  1880. break;
  1881. }
  1882. if (msg) {
  1883. this.notify(msg, 'danger');
  1884. this.$refs.form.validate().then(() => {}).catch((e)=>{})
  1885. return;
  1886. }
  1887. saveHouseBaseInfo(this.applicationDetail).then((response) => {
  1888. this.complete(pass, comment);
  1889. }).catch(resp => {
  1890. this.notify(msg, 'danger');
  1891. this.notify("保存失败!", 'danger');
  1892. });
  1893. }
  1894. break;
  1895. case PROPOSER_STAGE_START_ACTIVITY:
  1896. this.complete(pass);
  1897. break;
  1898. case PROPOSER_STAGE_END_ACTIVITY : {
  1899. let comment;
  1900. let msg = "";
  1901. const role = this.$store.getters.roles[0];
  1902. switch (role) {
  1903. case "town_leader":
  1904. msg = this.validateAcceptingFormTown();
  1905. comment = this.applicationDetail.tHouseApplyEnd.zhenOption;
  1906. break;
  1907. default:
  1908. comment = '同意';
  1909. break;
  1910. }
  1911. if (msg) {
  1912. this.notify(msg, 'danger');
  1913. this.$refs.form.validate().then(() => {}).catch(e=>{});
  1914. return;
  1915. }
  1916. if (this.$refs.pictureUploadAccepting && this.$refs.pictureUploadAccepting.isValid()) {
  1917. this.submitHouseApplyEndLocationplanOptions(pass);
  1918. return;
  1919. }
  1920. updateEnd(this.applicationDetail.tHouseApplyEnd).then((response) => {
  1921. this.complete(pass, comment);
  1922. }).catch(err => {
  1923. this.notify('保存失败', 'danger');
  1924. });
  1925. }
  1926. break;
  1927. default:
  1928. break;
  1929. }
  1930. },
  1931. // 带平面图附件上传的镇级申请审批
  1932. submitHouseApproveLocationplanOptions(pass, commentText) {
  1933. this.$refs.pictureUploadApplying.updatePlanFiles().then((x) => {
  1934. let list = [];
  1935. x.data.forEach((f) => {
  1936. let item = {
  1937. id: f.id,
  1938. fileName: f.fileName,
  1939. fileUrl: f.fileUrl,
  1940. fileType: f.fileType,
  1941. tableId: f.tableId,
  1942. tableName: f.tableName,
  1943. };
  1944. list.push(item);
  1945. });
  1946. this.applicationDetail.tHouseApproveLocationplanOptions.locationPlan = JSON.stringify(list);
  1947. saveHouseBaseInfo(this.applicationDetail).then((response) => {
  1948. this.complete(pass, commentText);
  1949. }).catch(resp => {
  1950. this.notify("保存失败!", 'danger');
  1951. });
  1952. }).catch((x) => {
  1953. this.notify("上传宅基地坐落平面位置图失败!", 'danger');
  1954. });
  1955. },
  1956. // 带平面图附件上传的镇级验收审批
  1957. submitHouseApplyEndLocationplanOptions(pass, commentText) {
  1958. this.$refs.pictureUploadAccepting.updatePlanFiles()
  1959. .then((x) => {
  1960. let list = [];
  1961. x.data.forEach((f) => {
  1962. let item = {
  1963. id: f.id,
  1964. fileName: f.fileName,
  1965. fileUrl: f.fileUrl,
  1966. fileType: f.fileType,
  1967. tableId: f.tableId,
  1968. tableName: f.tableName,
  1969. };
  1970. list.push(item);
  1971. });
  1972. this.applicationDetail.tHouseApplyEnd.locationPlan = JSON.stringify(list);
  1973. updateEnd(this.applicationDetail.tHouseApplyEnd).then((response) => {
  1974. this.complete(pass, commentText);
  1975. }).catch(err => {
  1976. this.notify("保存失败!", 'danger');
  1977. });
  1978. }).catch((x) => {
  1979. this.notify("上传宅基地坐落平面位置图失败!", 'danger');
  1980. });
  1981. },
  1982. // 审批工具函数(同意/驳回, 意见)
  1983. complete(pass, comment) {
  1984. if(!this.taskId || !this.instanceId)
  1985. {
  1986. console.error(this.taskId, this.instanceId);
  1987. return false;
  1988. }
  1989. let data = {
  1990. taskId: this.taskId,
  1991. instanceId: this.instanceId,
  1992. variables: JSON.stringify({
  1993. pass: pass ? "true" : "false",
  1994. comment: comment ? comment : (pass ? '同意' : '驳回'),
  1995. }),
  1996. };
  1997. request({
  1998. url: "/activiti/process/complete",
  1999. method: "post",
  2000. params: data,
  2001. }).then((response) => {
  2002. this.notify("操作成功", 'success');
  2003. this.$router.back(-1);
  2004. }).catch(e => {
  2005. this.notify("操作失败!", 'danger');
  2006. });
  2007. return true;
  2008. },
  2009. // 请求结果提示工具函数
  2010. notify(message, type) {
  2011. Notify.clear();
  2012. Notify({ type: type || 'primary', message: message });
  2013. },
  2014. // 当自然资源部门地图绘制被重置时
  2015. onNatureMapDrawReseted() {
  2016. this.drawInsert = null;
  2017. if(this.applicationDetail.tHouseApproveNatureOptions.theGeom)
  2018. {
  2019. let lastData = JSON.parse(this.applicationDetail.tHouseApproveNatureOptions.theGeom);
  2020. if(lastData.hasOwnProperty('coordinates')) // 从后台获取的
  2021. this.drawInsert = lastData.coordinates;
  2022. }
  2023. },
  2024. // 当验收地图绘制被重置时
  2025. onAcceptanceMapDrawReseted() {
  2026. this.drawInsert = null;
  2027. if(this.applicationDetail.tHouseApplyEnd.theGeom)
  2028. {
  2029. let lastData = JSON.parse(this.applicationDetail.tHouseApplyEnd.theGeom);
  2030. if(lastData.hasOwnProperty('coordinates')) // 从后台获取的
  2031. this.drawInsert = lastData.coordinates;
  2032. }
  2033. },
  2034. // 打开附件树
  2035. openAttachment() {
  2036. this.attachmentVisible = true;
  2037. if(this.attachmentActive == this.active)
  2038. this.$nextTick(() => {
  2039. this.$refs.attachmentDialog.scrollTo(this.active);
  2040. });
  2041. },
  2042. // 选择步骤页面
  2043. selectTab(index) {
  2044. if(index <= this.active)
  2045. {
  2046. this.selectedTabName = index;
  2047. }
  2048. //console.log(index, this.active,this.selectedTabName);
  2049. },
  2050. // 保存开工(是否提交)
  2051. startProposerApply(submit) {
  2052. this.$refs.form.validate().then(() => {
  2053. let msg = this.validateStartFormBase();
  2054. if (msg) {
  2055. this.notify(msg, 'danger');
  2056. return;
  2057. }
  2058. updateStart({
  2059. id: this.applicationDetail.tHouseApplyStart.id,
  2060. startDate: this.applicationDetail.tHouseApplyStart.startDate,
  2061. endDate: this.applicationDetail.tHouseApplyStart.endDate,
  2062. }).then(resp => {
  2063. if(submit)
  2064. {
  2065. submitStartWLHT(this.applicationDetail.tHouseApplyStart.id).then(resp => {
  2066. this.notify("操作成功", 'success');
  2067. this.$router.back(-1);
  2068. }).catch((e) => {
  2069. this.notify("操作失败!", 'danger');
  2070. });
  2071. }
  2072. else
  2073. {
  2074. this.notify("保存成功", 'success');
  2075. this.$router.back(-1);
  2076. }
  2077. }).catch((e) => {
  2078. this.notify('保存失败', 'danger');
  2079. });
  2080. }).catch(e => {
  2081. let msg = this.validateStartFormBase();
  2082. if (msg) {
  2083. this.notify(msg, 'danger');
  2084. return;
  2085. }
  2086. });
  2087. },
  2088. // 保存验收(是否提交)
  2089. endProposerApply(submit) {
  2090. this.$refs.form.validate().then(() => {
  2091. let msg = this.validateAcceptingFormBase();
  2092. if (msg) {
  2093. this.notify(msg, 'danger');
  2094. return;
  2095. }
  2096. if (this.drawInsert != null) {
  2097. this.applicationDetail.tHouseApplyEnd.theGeom = JSON.stringify(this.drawInsert);
  2098. }
  2099. else {
  2100. if(this.applicationDetail.tHouseApplyEnd.theGeom == null){
  2101. this.applicationDetail.tHouseApplyEnd.theGeom = this.convertGeom(this.applicationDetail.tHouseApproveNatureOptions.theGeom);
  2102. }
  2103. }
  2104. updateEnd(this.applicationDetail.tHouseApplyEnd).then(resp => {
  2105. if(submit)
  2106. {
  2107. submitEndWLHT(this.applicationDetail.tHouseApplyEnd.id).then(resp => {
  2108. this.notify("操作成功", 'success');
  2109. this.$router.back(-1);
  2110. }).catch(err => {
  2111. this.notify("操作失败!", 'danger');
  2112. });
  2113. }
  2114. else
  2115. {
  2116. this.notify("保存成功", 'success');
  2117. this.$router.back(-1);
  2118. }
  2119. }).catch(err => {
  2120. this.notify('保存失败', 'danger');
  2121. });
  2122. }).catch(e => {
  2123. let msg = this.validateAcceptingFormBase();
  2124. if (msg) {
  2125. this.notify(msg, 'danger');
  2126. return;
  2127. }
  2128. });
  2129. },
  2130. // 获取登录人位置坐标
  2131. getLandCoord(func) {
  2132. if (func
  2133. && this.tGeoOrganizationLng !== null && this.tGeoOrganizationLng !== ''
  2134. && this.tGeoOrganizationLat !== null && this.tGeoOrganizationLat !== '') {
  2135. this.$nextTick(() => {
  2136. func(this.tGeoOrganizationLng, this.tGeoOrganizationLat);
  2137. })
  2138. }
  2139. else {
  2140. let deptName = this.$store.state.user.deptName + "";
  2141. getQueryLand(deptName).then((response) => {
  2142. if (response.code == 200) {
  2143. let InsertCode = response.data;
  2144. this.form.orgCode = InsertCode.orgCode;
  2145. this.tGeoOrganizationLat = InsertCode.lat;
  2146. this.tGeoOrganizationLng = InsertCode.lng;
  2147. if(func)
  2148. {
  2149. func(this.tGeoOrganizationLng, this.tGeoOrganizationLat);
  2150. }
  2151. }
  2152. });
  2153. }
  2154. },
  2155. validateBaseApplyFormBase() {
  2156. if(!this.applicationDetail.tHouseApplyProposer) return '请填写申请数据';
  2157. if (this.checkString(this.applicationDetail.tHouseApplyProposer.memberName)) {
  2158. return "申请户主姓名不能为空";
  2159. }
  2160. if (this.checkString(this.applicationDetail.tHouseApplyProposer.sex)) {
  2161. return "户主性别不能为空";
  2162. }
  2163. if (this.checkString(this.applicationDetail.tHouseApplyProposer.age)) {
  2164. return "户主年龄不能为空";
  2165. }
  2166. if (this.checkString(this.applicationDetail.tHouseApplyProposer.phone)) {
  2167. return "联系电话不能为空";
  2168. }
  2169. if (this.checkString(this.applicationDetail.tHouseApplyProposer.idcard)) {
  2170. return "身份证号不能为空";
  2171. }
  2172. if (this.checkString(this.applicationDetail.tHouseApplyProposer.householdRegister)) {
  2173. return "户口所在地不能为空";
  2174. }
  2175. if (this.checkString(this.applicationDetail.tHouseApplyProposer.familyAddress)) {
  2176. return "家庭住址不能为空";
  2177. }
  2178. if (this.checkString(this.applicationDetail.tHouseApplyProposer.members)) {
  2179. return "家庭人口数不能为空";
  2180. }
  2181. if (this.checkString(this.applicationDetail.tHouseApplyProposer.existHomestead)) {
  2182. return "是否已有宅基地不能为空";
  2183. }
  2184. for(let i in this.applicationDetail.tHouseApplyFamilyMembers)
  2185. {
  2186. let v = this.applicationDetail.tHouseApplyFamilyMembers[i];
  2187. if (this.checkString(v.memberName)) {
  2188. return "成员姓名不能为空";
  2189. }
  2190. if (this.checkString(v.age)) {
  2191. return "年龄不能为空";
  2192. }
  2193. if (this.checkString(v.familyStatusName)) {
  2194. return "与户主关系不能为空";
  2195. }
  2196. if (this.checkString(v.idcard)) {
  2197. return "家庭成员身份证不能为空";
  2198. }
  2199. if (this.checkString(v.householdRegister)) {
  2200. return "户口所在地不能为空";
  2201. }
  2202. }
  2203. if(this.applicationDetail.tHouseApplyProposer.existHomestead === 'Y')
  2204. {
  2205. if (this.checkString(this.applicationDetail.tHouseApplyCurrentSituation.landArea)) {
  2206. return "宅基地面积不能为空";
  2207. }
  2208. if (this.checkString(this.applicationDetail.tHouseApplyCurrentSituation.landPerArea)) {
  2209. return "人均宅基地面积不能为空";
  2210. }
  2211. if (this.checkString(this.applicationDetail.tHouseApplyCurrentSituation.buildingArea)) {
  2212. return "建筑面积不能为空";
  2213. }
  2214. if (this.checkString(this.applicationDetail.tHouseApplyCurrentSituation.buildingPerArea)) {
  2215. return "人均建筑面积不能为空";
  2216. }
  2217. if (this.checkString(this.applicationDetail.tHouseApplyCurrentSituation.landCertificateNo)) {
  2218. return "不动产单元号不能为空";
  2219. }
  2220. if (this.checkString(this.applicationDetail.tHouseApplyCurrentSituation.landIsposal)) {
  2221. return "处置情况不能为空";
  2222. }
  2223. if(this.applicationDetail.tHouseApplyCurrentSituation.landIsposal == '1')
  2224. {
  2225. if (this.checkString(this.applicationDetail.tHouseApplyCurrentSituation.reservedArea)) {
  2226. return "保留面积不能为空";
  2227. }
  2228. }
  2229. else if(this.applicationDetail.tHouseApplyCurrentSituation.landIsposal == '3')
  2230. {
  2231. if (this.checkString(this.applicationDetail.tHouseApplyCurrentSituation.otherRemark)) {
  2232. return "处置情况不能为空";
  2233. }
  2234. }
  2235. if (this.checkString(this.applicationDetail.tHouseApplyCurrentSituation.houseCertificateNo)) {
  2236. return "宅基地证书号不能为空";
  2237. }
  2238. }
  2239. if (this.checkString(this.applicationDetail.tHouseApplyProposedSituation.location)) {
  2240. return "拟建位置不能为空";
  2241. }
  2242. if (this.checkString(this.applicationDetail.tHouseApplyProposedSituation.landArea)) {
  2243. return "拟建宅基地面积不能为空";
  2244. }
  2245. if (this.checkString(this.applicationDetail.tHouseApplyProposedSituation.east)) {
  2246. return "东至不能为空";
  2247. }
  2248. if (this.checkString(this.applicationDetail.tHouseApplyProposedSituation.west)) {
  2249. return "西至不能为空";
  2250. }
  2251. if (this.checkString(this.applicationDetail.tHouseApplyProposedSituation.south)) {
  2252. return "南至不能为空";
  2253. }
  2254. if (this.checkString(this.applicationDetail.tHouseApplyProposedSituation.north)) {
  2255. return "北至不能为空";
  2256. }
  2257. if (this.checkString(this.applicationDetail.tHouseApplyProposedSituation.buildingArea)) {
  2258. return "住房建筑面积不能为空";
  2259. }
  2260. if (this.checkString(this.applicationDetail.tHouseApplyProposedSituation.buildingLandArea)) {
  2261. return "房基占地面积不能为空";
  2262. }
  2263. if (this.checkString(this.applicationDetail.tHouseApplyProposedSituation.buildingFloors)) {
  2264. return "建筑层数不能为空";
  2265. }
  2266. if (this.checkString(this.applicationDetail.tHouseApplyProposedSituation.buildingHight)) {
  2267. return "建筑高度不能为空";
  2268. }
  2269. if (this.checkString(this.applicationDetail.tHouseApplyProposedSituation.isAdvice)) {
  2270. return "征求相邻权利人意见不能为空";
  2271. }
  2272. if (this.checkString(this.applicationDetail.tHouseApplyProposedSituation.housingStructure)) {
  2273. return "房屋构造不能为空";
  2274. }
  2275. if (this.checkString(this.applicationDetail.tHouseApplyProposedSituation.buildingType)) {
  2276. return "建房类型不能为空";
  2277. }
  2278. if (this.checkString(this.applicationDetail.tHouseApplyProposedSituation.geographicType)) {
  2279. return "土地类型不能为空";
  2280. }
  2281. if(this.applicationDetail.tHouseApplyProposedSituation.geographicType == '10')
  2282. {
  2283. if (this.checkString(this.applicationDetail.tHouseApplyProposedSituation.constructionLandArea)) {
  2284. return "建设用地面积不能为空";
  2285. }
  2286. }
  2287. else if(this.applicationDetail.tHouseApplyProposedSituation.geographicType == '20')
  2288. {
  2289. if (this.checkString(this.applicationDetail.tHouseApplyProposedSituation.unusedLandArea)) {
  2290. return "未利用地不能为空";
  2291. }
  2292. }
  2293. else
  2294. {
  2295. if (this.checkString(this.applicationDetail.tHouseApplyProposedSituation.agriculturalLandArea)) {
  2296. return "农用地不能为空";
  2297. }
  2298. }
  2299. if (this.checkString(this.applicationDetail.tHouseApplyProposedSituation.designPaper)) {
  2300. return "设计图纸不能为空";
  2301. }
  2302. if(this.applicationDetail.tHouseApplyProposedSituation.designPaper == '2')
  2303. {
  2304. if (this.checkString(this.applicationDetail.tHouseApplyProposedSituation.houseTypeId)) {
  2305. return "房屋户型不能为空";
  2306. }
  2307. }
  2308. if (this.checkString(this.applicationDetail.tHouseApplyProposer.applyReasion)) {
  2309. return "申请理由不能为空";
  2310. }
  2311. return false;
  2312. },
  2313. validateNatureForm() {
  2314. if (this.checkString(this.applicationDetail.tHouseApproveNatureOptions.landArea)) {
  2315. return "用地面积不能为空";
  2316. }
  2317. if (this.checkString(this.applicationDetail.tHouseApproveNatureOptions.rightsType)) {
  2318. return "土地权属不能为空";
  2319. }
  2320. if (this.checkString(this.applicationDetail.tHouseApproveNatureOptions.east)) {
  2321. return "北至不能为空";
  2322. }
  2323. if (this.checkString(this.applicationDetail.tHouseApproveNatureOptions.west)) {
  2324. return "西至不能为空";
  2325. }
  2326. if (this.checkString(this.applicationDetail.tHouseApproveNatureOptions.south)) {
  2327. return "南至不能为空";
  2328. }
  2329. if (this.checkString(this.applicationDetail.tHouseApproveNatureOptions.north)) {
  2330. return "北至不能为空";
  2331. }
  2332. if (this.checkString(this.applicationDetail.tHouseApproveNatureOptions.approveOption)) {
  2333. return "说明不能为空";
  2334. }
  2335. return false;
  2336. },
  2337. validateAgricultureForm(pass) {
  2338. if (this.checkString(this.applicationDetail.tHouseApproveAgricultureOptions.isMembership)) {
  2339. return "成员资格审查不能为空";
  2340. }
  2341. if (this.checkString(this.applicationDetail.tHouseApproveAgricultureOptions.isOnehouse)) {
  2342. return "一户一宅情况不能为空";
  2343. }
  2344. if (this.checkString(this.applicationDetail.tHouseApproveAgricultureOptions.isReviewmaterials)) {
  2345. return "村委会审查材料不能为空";
  2346. }
  2347. if (this.checkString(this.applicationDetail.tHouseApproveAgricultureOptions.approveOption)) {
  2348. return "说明不能为空";
  2349. }
  2350. // 通过时检查打勾, 农业部门
  2351. if(pass)
  2352. {
  2353. if(this.applicationDetail.tHouseApproveAgricultureOptions.isMembership != '1')
  2354. {
  2355. return "同意申请时需通过成员资格审查";
  2356. }
  2357. if(this.applicationDetail.tHouseApproveAgricultureOptions.isOnehouse != '1')
  2358. {
  2359. return "同意申请时需符合一户一宅情况";
  2360. }
  2361. if(this.applicationDetail.tHouseApproveAgricultureOptions.isReviewmaterials != '1')
  2362. {
  2363. return "同意申请时需齐全村委会审查材料";
  2364. }
  2365. }
  2366. return false;
  2367. },
  2368. validateBuildingForm() {
  2369. if (this.checkString(this.applicationDetail.tHouseApproveOtherOptions.buildingType)) {
  2370. return "建筑类型不能为空";
  2371. }
  2372. if (this.checkString(this.applicationDetail.tHouseApproveOtherOptions.buildingArea)) {
  2373. return "建筑面积不能为空";
  2374. }
  2375. if (this.checkString(this.applicationDetail.tHouseApproveOtherOptions.buildingFloors)) {
  2376. return "建筑层数不能为空";
  2377. }
  2378. if (this.checkString(this.applicationDetail.tHouseApproveOtherOptions.buildingHight)) {
  2379. return "建筑高度不能为空";
  2380. }
  2381. if (this.checkString(this.applicationDetail.tHouseApproveOtherOptions.buildingLandArea)) {
  2382. return "建筑占地面积不能为空";
  2383. }
  2384. if (this.checkString(this.applicationDetail.tHouseApproveOtherOptions)) {
  2385. return "图纸类型不能为空";
  2386. }
  2387. if (this.checkString(this.applicationDetail.tHouseApproveOtherOptions.east)) {
  2388. return "东至不能为空";
  2389. }
  2390. if (this.checkString(this.applicationDetail.tHouseApproveOtherOptions.west)) {
  2391. return "西至不能为空";
  2392. }
  2393. if (this.checkString(this.applicationDetail.tHouseApproveOtherOptions.south)) {
  2394. return "南至不能为空";
  2395. }
  2396. if (this.checkString(this.applicationDetail.tHouseApproveOtherOptions.north)) {
  2397. return "北至不能为空";
  2398. }
  2399. if (this.checkString(this.applicationDetail.tHouseApproveOtherOptions.approveOption)) {
  2400. return "说明不能为空";
  2401. }
  2402. return false;
  2403. },
  2404. validateTownForm() {
  2405. if (this.checkString(this.applicationDetail.tHouseApproveTownOptions.approveOption)) {
  2406. return "镇政府审批意见不能为空";
  2407. }
  2408. return false;
  2409. },
  2410. validateAcceptingFormBase() {
  2411. if(!this.applicationDetail.tHouseApplyEnd) return '请填写验收数据';
  2412. if (this.checkString(this.applicationDetail.tHouseApplyEnd.houseCertificateNo)) {
  2413. return "权属证书号(不动产)不能为空";
  2414. }
  2415. if (this.checkString(this.applicationDetail.tHouseApplyEnd.landCertificateNo)) {
  2416. return "权属证书号(宅基地)不能为空";
  2417. }
  2418. if (this.checkString(this.applicationDetail.tHouseApplyEnd.buildingHight)) {
  2419. return "批建高度不能为空";
  2420. }
  2421. if (this.checkString(this.applicationDetail.tHouseApplyEnd.buildingFloors)) {
  2422. return "批建层数不能为空";
  2423. }
  2424. if (this.checkString(this.applicationDetail.tHouseApplyEnd.actualBuildingHight)) {
  2425. return "竣工高度不能为空";
  2426. }
  2427. if (this.checkString(this.applicationDetail.tHouseApplyEnd.actualBuildingFloors)) {
  2428. return "竣工层数不能为空";
  2429. }
  2430. if (this.checkString(this.applicationDetail.tHouseApplyEnd.buildingArea)) {
  2431. return "建筑面积不能为空";
  2432. }
  2433. if (this.checkString(this.applicationDetail.tHouseApplyEnd.buildingHouseArea)) {
  2434. return "房屋建筑面积不能为空";
  2435. }
  2436. if (this.checkString(this.applicationDetail.tHouseApplyEnd.buildingOtherArea)) {
  2437. return "配套附属设施建筑面积不能为空";
  2438. }
  2439. if (this.checkString(this.applicationDetail.tHouseApplyEnd.designPaper)) {
  2440. return "建筑风貌不能为空";
  2441. }
  2442. if (this.checkString(this.applicationDetail.tHouseApplyEnd.oldHouseStatus)) {
  2443. return "旧宅基地退还情况不能为空";
  2444. }
  2445. if (this.checkString(this.applicationDetail.tHouseApplyEnd.houseCost)) {
  2446. return "住房造价不能为空";
  2447. }
  2448. if (this.checkString(this.applicationDetail.tHouseApplyEnd.facadeColor)) {
  2449. return "外立面颜色不能为空";
  2450. }
  2451. if (this.checkString(this.applicationDetail.tHouseApplyEnd.fangjiArea)) {
  2452. return "批准房基占地面积不能为空";
  2453. }
  2454. if (this.checkString(this.applicationDetail.tHouseApplyEnd.actualFangjiArea)) {
  2455. return "实际房基占地面积不能为空";
  2456. }
  2457. if (this.checkString(this.applicationDetail.tHouseApplyEnd.isEnjoySubsidy)) {
  2458. return "是否享受住房建设补助政策不能为空";
  2459. }
  2460. if (this.applicationDetail.tHouseApplyEnd.isEnjoySubsidy === 'Y' && this.checkString(this.applicationDetail.tHouseApplyEnd.enjoySubsidyContent)) {
  2461. return "享受住房建设补助政策不能为空";
  2462. }
  2463. return false;
  2464. },
  2465. validateAcceptingFormTown(pass) {
  2466. if(!this.applicationDetail.tHouseApplyEnd) return '请填写验收数据';
  2467. if (this.checkString(this.applicationDetail.tHouseApplyEnd.cartographer)) {
  2468. return "竣工平面简图经办人不能为空";
  2469. }
  2470. if (this.checkString(this.applicationDetail.tHouseApplyEnd.isProjectFinished)) {
  2471. return "是否已完成工程设计和合同约定的各项内容不能为空";
  2472. }
  2473. if (this.checkString(this.applicationDetail.tHouseApplyEnd.isQualifiedQuality)) {
  2474. return "承揽人对完工住房质量自查是否合格不能为空";
  2475. }
  2476. if (this.checkString(this.applicationDetail.tHouseApplyEnd.hasBuildingRecord)) {
  2477. return "是否有施工记录资料不能为空";
  2478. }
  2479. if (this.checkString(this.applicationDetail.tHouseApplyEnd.isSignWarranty)) {
  2480. return "建房村民和承揽人是否已经共同签署农村住房质量保修书不能为空";
  2481. }
  2482. if (this.checkString(this.applicationDetail.tHouseApplyEnd.isHandleProblem)) {
  2483. return "住房城乡建设行政主管部门或乡(镇)人民政府责令整改的问题是否全部整改完毕不能为空";
  2484. }
  2485. if (this.checkString(this.applicationDetail.tHouseApplyEnd.isDesignPaperSame)) {
  2486. return "建筑风貌是否与设计图基本一致不能为空";
  2487. }
  2488. if (this.checkString(this.applicationDetail.tHouseApplyEnd.isOtherAcceptanceFinished)) {
  2489. return "法律、法规规定的其他验收条件完成情况不能为空";
  2490. }
  2491. if (this.checkString(this.applicationDetail.tHouseApplyEnd.nongyeOption)) {
  2492. return "乡镇农业农村部门意见不能为空";
  2493. }
  2494. if (this.checkString(this.applicationDetail.tHouseApplyEnd.nongyeName)) {
  2495. return "乡镇农业农村部门经办人不能为空";
  2496. }
  2497. if (this.checkString(this.applicationDetail.tHouseApplyEnd.nongyeTime)) {
  2498. return "乡镇农业农村部门经办时间不能为空";
  2499. }
  2500. if (this.checkString(this.applicationDetail.tHouseApplyEnd.natureOption)) {
  2501. return "乡镇自然资源部门意见不能为空";
  2502. }
  2503. if (this.checkString(this.applicationDetail.tHouseApplyEnd.natureName)) {
  2504. return "乡镇自然资源部门经办人不能为空";
  2505. }
  2506. if (this.checkString(this.applicationDetail.tHouseApplyEnd.natureTime)) {
  2507. return "乡镇自然资源部门经办时间不能为空";
  2508. }
  2509. if (this.checkString(this.applicationDetail.tHouseApplyEnd.buildingOption)) {
  2510. return "乡镇住建部门意见不能为空";
  2511. }
  2512. if (this.checkString(this.applicationDetail.tHouseApplyEnd.buildingName)) {
  2513. return "乡镇住建部门验收负责人不能为空";
  2514. }
  2515. if (this.checkString(this.applicationDetail.tHouseApplyEnd.buildingTime)) {
  2516. return "乡镇住建部门验收时间不能为空";
  2517. }
  2518. if (this.checkString(this.applicationDetail.tHouseApplyEnd.zhenOption)) {
  2519. return "乡镇政府验收意见不能为空";
  2520. }
  2521. if (this.checkString(this.applicationDetail.tHouseApplyEnd.zhenName)) {
  2522. return "乡镇政府验收负责人不能为空";
  2523. }
  2524. if (this.checkString(this.applicationDetail.tHouseApplyEnd.zhenTime)) {
  2525. return "乡镇政府验收时间不能为空";
  2526. }
  2527. // 通过时检查打勾, 农业部门
  2528. if(pass)
  2529. {
  2530. if(this.applicationDetail.tHouseApplyEnd.isProjectFinished != 'Y')
  2531. {
  2532. return "同意验收时需已完成工程设计和合同约定的各项内容";
  2533. }
  2534. if(this.applicationDetail.tHouseApplyEnd.isQualifiedQuality != 'Y')
  2535. {
  2536. return "同意验收时需承揽人对完工住房质量自查合格";
  2537. }
  2538. if(this.applicationDetail.tHouseApplyEnd.hasBuildingRecord != 'Y')
  2539. {
  2540. return "同意验收时需有施工记录资料";
  2541. }
  2542. if(this.applicationDetail.tHouseApplyEnd.isSignWarranty != 'Y')
  2543. {
  2544. return "同意验收时需建房村民和承揽人已经共同签署农村住房质量保修书";
  2545. }
  2546. if(this.applicationDetail.tHouseApplyEnd.isHandleProblem != 'Y')
  2547. {
  2548. return "同意验收时需住房城乡建设行政主管部门或乡(镇)人民政府责令整改的问题全部整改完毕";
  2549. }
  2550. if(this.applicationDetail.tHouseApplyEnd.isDesignPaperSame != 'Y')
  2551. {
  2552. return "同意验收时需建筑风貌是否与设计图基本一致";
  2553. }
  2554. if(this.applicationDetail.tHouseApplyEnd.isOtherAcceptanceFinished != 'Y')
  2555. {
  2556. return "同意验收时需法律、法规规定的其他验收条件完成情况";
  2557. }
  2558. }
  2559. return false;
  2560. },
  2561. validateStartFormBase() {
  2562. if (!this.applicationDetail.tHouseApplyStart) return '请填写开工数据';
  2563. if (this.checkString(this.applicationDetail.tHouseApplyStart.startDate)) {
  2564. return "计划开工时间不能为空";
  2565. }
  2566. if (this.checkString(this.applicationDetail.tHouseApplyStart.endDate)) {
  2567. return "计划竣工时间不能为空";
  2568. }
  2569. return false;
  2570. },
  2571. },
  2572. watch: {
  2573. selectedTabName: function (newVal, oldVal) {
  2574. this.$nextTick(() => {
  2575. if(newVal == PROPOSER_STAGE_BASE_APPLY)
  2576. {
  2577. this.pointDarw(null);
  2578. this.pointDarwNature(null);
  2579. this.$refs.pointDarwMap && this.$refs.pointDarwMap.update();
  2580. this.$refs.pointDarwNatureMap && this.$refs.pointDarwNatureMap.update();
  2581. }
  2582. else if(newVal == PROPOSER_STAGE_START) {
  2583. this.paintStartNatureMap(null);
  2584. this.$refs.startNatureMap && this.$refs.startNatureMap.update();
  2585. }
  2586. else if(newVal == PROPOSER_STAGE_END) {
  2587. this.pointWrapAcceptance(null);
  2588. this.$refs.pointDarwAcceptanceMap && this.$refs.pointDarwAcceptanceMap.update();
  2589. }
  2590. })
  2591. },
  2592. }
  2593. }
  2594. </script>
  2595. <style scoped lang="scss">
  2596. .app-container {
  2597. padding-bottom: 5%;
  2598. }
  2599. .examine_box{
  2600. background-color: #1D6FE9!important;
  2601. padding: 0.18rem!important;
  2602. padding-left: 0!important;
  2603. border-radius: 0.15rem!important;
  2604. margin-top: 0.3rem!important;
  2605. }
  2606. .examine_box .van-col:first-child{
  2607. color: #FFF!important;
  2608. font-size: 0.45rem!important;
  2609. text-align: center!important;
  2610. }
  2611. .examine_box .van-col:last-child{
  2612. background-color: #FFF!important;
  2613. border-radius: 0.15rem!important;
  2614. overflow: hidden!important;
  2615. .van-radio-group--horizontal{
  2616. padding: 0.2rem 0;
  2617. border-bottom: 1px solid #eee;
  2618. }
  2619. }
  2620. #mapWrap{
  2621. width: 96%;
  2622. margin: 0 auto;
  2623. border-bottom-left-radius: 12px;
  2624. border-bottom-right-radius: 12px;
  2625. overflow: hidden;
  2626. }
  2627. .mapBox{
  2628. position: relative;
  2629. .mapBox_button{
  2630. position: absolute;
  2631. top: 0.2rem;
  2632. right: 2%;
  2633. }
  2634. }
  2635. .van-steps{
  2636. padding: 2% 6% 0;
  2637. }
  2638. .topTit{
  2639. margin-top: 0.4rem;
  2640. font-size: 0.45rem;
  2641. background-color: #1D6FE9;
  2642. color: #FFFFFF;
  2643. line-height: 58px;
  2644. text-align: center;
  2645. padding: 15px 0;
  2646. box-shadow: 0px 3px 6px 0px rgba(15,67,145,0.40);
  2647. }
  2648. .main_title{
  2649. font-size: 0.4rem;
  2650. color: #1D6FE9;
  2651. margin: 0.2rem 6%;
  2652. position: relative;
  2653. }
  2654. .main_box{
  2655. width: 96%;
  2656. margin: 0 auto;
  2657. border-radius: 6px;
  2658. box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);
  2659. overflow: hidden;
  2660. background-color: #FFF;
  2661. }
  2662. .collapse{
  2663. width: 96%;
  2664. margin: 0 auto;
  2665. border-radius: 6px;
  2666. box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);
  2667. overflow: hidden;
  2668. margin-bottom: 15px;
  2669. }
  2670. /deep/.van-radio--horizontal{
  2671. margin-left: 20px;
  2672. margin-right: 0;
  2673. }
  2674. .file-box{
  2675. padding: 2% 5% 0;
  2676. }
  2677. .submitButton{
  2678. width: 80%;
  2679. margin: 0 auto;
  2680. border-radius: 14px;
  2681. }
  2682. .timeTit{
  2683. text-align: center;
  2684. font-size: 16px;
  2685. line-height: 27px;
  2686. }
  2687. .action-box{
  2688. padding: 15px 0!important;
  2689. margin-top: 0.4rem;
  2690. }
  2691. .check-box{
  2692. margin-top: 0.4rem;
  2693. }
  2694. .addFamily{
  2695. position: absolute;
  2696. top: -2px;
  2697. right: 0;
  2698. border-radius: 50%;
  2699. display: inline-block;
  2700. width: 0.7rem;
  2701. height: 0.7rem;
  2702. }
  2703. .deleteFamily{
  2704. position: absolute;
  2705. top: -0.35rem;
  2706. right: 6%;
  2707. z-index: 9;
  2708. border-radius: 50%;
  2709. display: inline-block;
  2710. width: 0.7rem;
  2711. height: 0.7rem;
  2712. }
  2713. .familyList{
  2714. margin-top: 0.4rem;
  2715. position: relative;
  2716. }
  2717. .noModify{
  2718. .topTit{
  2719. background-color:#ABABAB ;
  2720. box-shadow: 0px 3px 6px 0px rgba(171,171,171,0.40);
  2721. }
  2722. .van-cell__title{
  2723. color: #B4B0B0;
  2724. }
  2725. }
  2726. .flow_main_box{
  2727. width: 96%;
  2728. margin: 0 auto;
  2729. border-radius: 6px;
  2730. box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);
  2731. overflow: hidden;
  2732. background-color: #FFF;
  2733. margin-top: 2%;
  2734. padding: 5% 1%;
  2735. .van-col{
  2736. text-align: center;
  2737. }
  2738. .tit{
  2739. background: #1d6fe9;
  2740. border-radius: 12px;
  2741. font-size: 0.4rem;
  2742. font-family: Source Han Sans CN, Source Han Sans CN-Regular;
  2743. font-weight: 400;
  2744. color: #ffffff;
  2745. line-height: 0.65rem;
  2746. letter-spacing: 0px;
  2747. width: 70%;
  2748. margin: 0 auto;
  2749. }
  2750. .van-step--vertical{
  2751. padding-right: 0;
  2752. text-align: left;
  2753. }
  2754. .van-step--vertical:not(:last-child)::after{
  2755. border: none;
  2756. }
  2757. .van-step--finish{
  2758. color: #1d6fe9;
  2759. }
  2760. }
  2761. .van-goods-action {
  2762. justify-content: center;
  2763. }
  2764. </style>