移动端
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.

423 rivejä
14 KiB

  1. <template>
  2. <div class="app-container">
  3. <van-nav-bar left-arrow fixed placeholder @click-left="onClickLeft" >
  4. <template #title>
  5. <div class="tb_main">
  6. 新增承包方信息
  7. </div>
  8. </template>
  9. </van-nav-bar>
  10. <div class="list_main">
  11. <van-form ref="formData">
  12. <van-field v-model="form.cbfbm" label="代码:" placeholder="<自动生成>" :border="false" input-align="left" :disabled="true" maxlength="18">
  13. <!-- <template #button>
  14. <van-button size="mini" type="primary" native-type="button" @click="generateCode">生成代码</van-button>
  15. </template> -->
  16. </van-field>
  17. <van-field
  18. v-model="cbflxText"
  19. label="类型:"
  20. placeholder="请选择类型"
  21. required
  22. :rules="[{ required: true }]"
  23. :border="false"
  24. input-align="left"
  25. right-icon="arrow-down"
  26. readonly
  27. clickable
  28. @click="showType = true"
  29. />
  30. <van-popup v-model="showType" position="bottom">
  31. <van-picker
  32. show-toolbar
  33. :columns="contractorTypeOptions"
  34. value-key="dictLabel"
  35. @confirm="onConfirmTypeOptions"
  36. @cancel="showType = false"
  37. />
  38. </van-popup>
  39. <van-field v-model="form.cbfmc" label="名称:" placeholder="请输入名称" required :rules="[{ required: true }]" :border="false" input-align="left" maxlength="50" />
  40. <van-field
  41. v-model="cbfzjlxText"
  42. label="证件类型:"
  43. placeholder="请选择证件类型"
  44. required
  45. :rules="[{ required: true }]"
  46. :border="false"
  47. input-align="left"
  48. right-icon="arrow-down"
  49. readonly
  50. clickable
  51. @click="showZjType = true"
  52. />
  53. <van-popup v-model="showZjType" position="bottom">
  54. <van-picker
  55. show-toolbar
  56. :columns="credentialTypeOptions"
  57. value-key="dictLabel"
  58. @confirm="onConfirmZjTypeOptions"
  59. @cancel="showZjType = false"
  60. />
  61. </van-popup>
  62. <van-field v-model="form.cbfzjhm" label="证件号码:" placeholder="请输入证件号码" required :rules="[{ required: true }]" :border="false" input-align="left" maxlength="20" />
  63. <van-field v-model="form.cbfdz" label="地址:" placeholder="请输入地址" required :rules="[{ required: true }]" :border="false" input-align="left" maxlength="100" />
  64. <van-field v-model="form.yzbm" label="邮编:" placeholder="请输入邮编" required :rules="[{ required: true }]" :border="false" input-align="left" maxlength="6" />
  65. <van-field v-model="form.lxdh" label="电话:" placeholder="请输入电话" required :rules="[{ required: true }]" :border="false" input-align="left" maxlength="15" />
  66. <van-field v-model="form.cbfcysl" label="成员数量:" placeholder="请输入成员数量" required :rules="[{ required: true }]" :border="false" input-align="left" type="number" />
  67. <van-field name="radio" label="是否有住房" :border="false" input-align="left">
  68. <template #input>
  69. <van-radio-group v-model="form.sfyzf" direction="horizontal">
  70. <van-radio name="Y">是</van-radio>
  71. <van-radio name="N">否</van-radio>
  72. </van-radio-group>
  73. </template>
  74. </van-field>
  75. <van-field name="radio" label="是否在村居住" :border="false" input-align="left">
  76. <template #input>
  77. <van-radio-group v-model="form.sfzcjz" direction="horizontal">
  78. <van-radio name="Y">是</van-radio>
  79. <van-radio name="N">否</van-radio>
  80. </van-radio-group>
  81. </template>
  82. </van-field>
  83. <van-field
  84. v-model="householdStatusText"
  85. label="整户状态:"
  86. placeholder="请选择整户状态"
  87. :border="false"
  88. input-align="left"
  89. right-icon="arrow-down"
  90. readonly
  91. clickable
  92. @click="showZhzt = true"
  93. />
  94. <van-popup v-model="showZhzt" position="bottom">
  95. <van-picker
  96. show-toolbar
  97. :columns="householdStatusOptions"
  98. value-key="dictLabel"
  99. @confirm="onConfirmHouseholdStatusOptions"
  100. @cancel="showZhzt = false"
  101. />
  102. </van-popup>
  103. <van-field v-model="form.totalArea" label="总面积(亩):" placeholder="请输入总面积(亩)" :border="false" input-align="left" type="number"/>
  104. <van-field v-model="form.qqArea" label="确权面积(亩):" placeholder="请输入确权面积(亩)" :border="false" input-align="left" type="number"/>
  105. <van-field v-model="form.qtArea" label="其他面积(亩):" placeholder="请输入其他面积(亩)" :border="false" input-align="left" type="number"/>
  106. <van-field v-model="form.dks" label="地块数(块):" placeholder="请输入地块数(块)" :border="false" input-align="left" type="number"/>
  107. <van-field v-model="form.zzjyArea" label="自主经营面积(亩):" placeholder="请输入自主经营面积(亩)" :border="false" input-align="left" type="number"/>
  108. <van-field v-model="form.lzcArea" label="流转出面积(亩):" placeholder="请输入流转出面积(亩)" :border="false" input-align="left" type="number"/>
  109. <van-field v-model="form.shArea" label="损毁面积(亩):" placeholder="请输入损毁面积(亩)" :border="false" input-align="left" type="number"/>
  110. <van-field v-model="form.zzArea" label="征占面积(亩):" placeholder="请输入征占面积(亩)" :border="false" input-align="left" type="number"/>
  111. <van-field v-model="form.cbfdcy" label="调查员:" placeholder="请输入调查员" required :rules="[{ required: true }]" :border="false" input-align="left" maxlength="50" />
  112. <van-field v-model="form.cbfdcrq" label="调查日期:" placeholder="请选择调查日期" required :rules="[{ required: true }]"
  113. :border="false" input-align="left" right-icon="arrow-down" readonly clickable @click="showDcrq = true" />
  114. <van-popup v-model="showDcrq" position="bottom">
  115. <van-datetime-picker
  116. :value="new Date()"
  117. type="date"
  118. title="请选择调查日期"
  119. :min-date="minDate"
  120. :max-date="maxDate"
  121. @confirm="onConfirmDcrq"
  122. @cancel="showDcrq = false"
  123. />
  124. </van-popup>
  125. <van-field v-model="form.cbfdcjs" label="调查记事:" type="textarea" rows="3" placeholder="请输入调查记事" required :rules="[{ required: true }]" :border="false" input-align="left" maxlength="250" />
  126. <van-field v-model="form.gsjsr" label="公示记事人:" placeholder="请输入公示记事人" :border="false" input-align="left" maxlength="50" />
  127. <van-field v-model="form.gsjs" label="公示记事:" type="textarea" rows="3" placeholder="请输入公示记事" :border="false" input-align="left" maxlength="250" />
  128. <van-field v-model="form.gsshr" label="公示审核人:" placeholder="请输入公示审核人" :border="false" input-align="left" maxlength="20" />
  129. <van-field v-model="form.gsshrq" label="公示审核日期:" placeholder="请选择公示审核日期" :border="false" input-align="left" right-icon="arrow-down"
  130. readonly clickable @click="showGsshrq = true" />
  131. <van-popup v-model="showGsshrq" position="bottom">
  132. <van-datetime-picker
  133. :value="new Date()"
  134. type="date"
  135. title="请选择公示审核日期"
  136. :min-date="minDate"
  137. :max-date="maxDate"
  138. @confirm="onConfirmGsshrq"
  139. @cancel="showGsshrq = false"
  140. />
  141. </van-popup>
  142. </van-form>
  143. <p class="btn" @click="submitForm">保存</p>
  144. </div>
  145. </div>
  146. </template>
  147. <script>
  148. import Cookies from "js-cookie";
  149. import { addCbf, generateContractorCode } from "@/api/contracted/cbf";
  150. import FieldRadio from "@/components/form/FieldRadio";
  151. import FieldSelect from "@/components/form/FieldSelect";
  152. export default {
  153. name: "contractedVillageContractorAdd",
  154. components: {
  155. FieldRadio,FieldSelect
  156. },
  157. data() {
  158. return {
  159. showType:false,
  160. showZjType:false,
  161. showZhzt:false,
  162. showDcrq: false,
  163. showGsshrq: false,
  164. // 承包方信息表单
  165. form: {
  166. deptId: null,
  167. cbfbm: null,
  168. cbflx: '1',
  169. cbfmc: null,
  170. cbfzjlx: '1',
  171. cbfzjhm: null,
  172. cbfdz: null,
  173. yzbm: null,
  174. lxdh: null,
  175. cbfcysl: null,
  176. cbfdcy: null,
  177. cbfdcrq: null,
  178. cbfdcjs: null,
  179. gsjsr: null,
  180. gsjs: null,
  181. gsshr: null,
  182. gsshrq: null,
  183. sfyzf: 'Y',
  184. sfzcjz: 'Y',
  185. householdStatus: '1',
  186. totalArea: null,
  187. qqArea: null,
  188. qtArea: null,
  189. dks: null,
  190. zzjyArea: null,
  191. lzcArea: null,
  192. shArea: null,
  193. zzArea: null,
  194. },
  195. // 承包方类型(标签名)
  196. cbflxText: '农户',
  197. // 承包方证件类型(标签名)
  198. cbfzjlxText: '居民身份证',
  199. householdStatusText: "正常",
  200. // 承包方类型字典
  201. contractorTypeOptions: [],
  202. // 承包方证件类型字典
  203. credentialTypeOptions: [],
  204. // 整户状态类型字典
  205. householdStatusOptions: [],
  206. minDate: new Date(1978, 0, 1),
  207. maxDate: new Date(2100, 11, 31),
  208. };
  209. },
  210. created() {
  211. this.getDicts("cbf_type").then(response => {
  212. this.contractorTypeOptions = response.data;
  213. });
  214. this.getDicts("cert_type").then(response => {
  215. this.credentialTypeOptions = response.data;
  216. });
  217. this.getDicts("household_status").then(response => {
  218. this.householdStatusOptions = response.data;
  219. });
  220. },
  221. methods: {
  222. onConfirmTypeOptions(value){
  223. this.form.cbflx = value.dictValue;
  224. this.cbflxText = value.dictLabel;
  225. this.showType = false;
  226. },
  227. onConfirmZjTypeOptions(value){
  228. this.form.cbfzjlx = value.dictValue;
  229. this.cbfzjlxText = value.dictLabel;
  230. this.showZjType = false;
  231. },
  232. onConfirmHouseholdStatusOptions(value){
  233. this.form.householdStatus = value.dictValue;
  234. this.householdStatusText = value.dictLabel;
  235. this.showZhzt = false;
  236. },
  237. onConfirmDcrq(data) {
  238. this.form.cbfdcrq = this.format(data, 'yyyy-MM-dd');
  239. this.showDcrq = false;
  240. },
  241. onConfirmGsshrq(data) {
  242. this.form.gsshrq = this.format(data, 'yyyy-MM-dd');
  243. this.showGsshrq = false;
  244. },
  245. submitForm() {
  246. this.$refs.formData.validate().then(() => {
  247. this.form.deptId = this.$route.params.deptId;
  248. // this.form.cbfcysl = 1;
  249. addCbf(this.form).then(response => {
  250. if (response.code == 200) {
  251. this.$toast({
  252. icon: 'success',
  253. message: '保存成功',
  254. duration:"1000",
  255. onClose: function() {
  256. history.back(-1);
  257. }
  258. })
  259. }
  260. });
  261. }).catch(() => {
  262. this.$notify({ type: 'danger', message: '请填写完整的表单项' });
  263. });
  264. },
  265. /* generateCode() {
  266. generateContractorCode({deptId: this.$route.params.deptId}).then(response => {
  267. this.$set(this.form, 'cbfbm', response.data);
  268. });
  269. }, */
  270. },
  271. };
  272. </script>
  273. <style scoped lang="scss">
  274. .app-container{
  275. background: #fff url("../../../../../static/images/contracted/contracted_index_bg.png") no-repeat center;
  276. background-size: 100% 100%;
  277. height: 100vh;
  278. padding: 0 4vw;
  279. overflow: hidden;
  280. }
  281. /deep/ .van-field__label {
  282. -webkit-box-flex: 0;
  283. flex: none;
  284. box-sizing: border-box;
  285. width: 9em;
  286. margin-right: 0.32rem;
  287. color: #646566;
  288. text-align: left;
  289. word-wrap: break-word;
  290. }
  291. /deep/ .van-nav-bar{
  292. background: transparent;
  293. }
  294. /deep/ .van-nav-bar .van-icon{
  295. color: #000000;
  296. }
  297. /deep/ .van-hairline--bottom::after{
  298. border: none;
  299. }
  300. /deep/ .van-search__content{
  301. background: rgba(255,255,255,.5);
  302. }
  303. /deep/ .van-search{
  304. padding: 0;
  305. flex: 1;
  306. }
  307. /deep/ .van-ellipsis{
  308. overflow: initial;
  309. }
  310. .tb_main{
  311. position: relative;
  312. p{
  313. position: absolute;
  314. display: inline-block;
  315. margin-left: 10PX;
  316. }
  317. }
  318. /* .tb{
  319. font-size: 12px;
  320. color: #ff8900;
  321. background: #daf6e7;
  322. border: 1px solid #d7be6e;
  323. padding: 2PX 8PX;
  324. border-radius: 50PX;
  325. margin-right: 5PX;
  326. } */
  327. .tap_block{
  328. width: 100%;
  329. display: flex;
  330. justify-content: space-between;
  331. background: #ebfaf2;
  332. padding: 2PX 4PX;
  333. border-radius: 10PX;
  334. margin-top: 1vh;
  335. .active{
  336. background-image: linear-gradient(to right,#c6fe8b,#48e5a2);
  337. box-shadow: 0 0 10PX #cccccc;
  338. color: #333333;
  339. }
  340. p{
  341. width: 25%;
  342. text-align: center;
  343. padding: 5PX 0;
  344. border-radius: 10PX;
  345. color: #666666;
  346. }
  347. }
  348. .search_main{
  349. display: flex;
  350. margin-top: 2vh;
  351. .search_btn{
  352. background: rgba(255,255,255,.5);
  353. width: 25%;
  354. border-radius: 50PX;
  355. margin-left: 10PX;
  356. padding: 2PX;
  357. .active{
  358. background-image: linear-gradient(to right,#c6fe8b,#48e5a2);
  359. color: #333333;
  360. border-radius: 50PX;
  361. display: flex;
  362. align-items: center;
  363. justify-content: center;
  364. height: 100%;
  365. }
  366. }
  367. }
  368. .second_tap{
  369. display: flex;
  370. align-items: center;
  371. margin-top: 1vh;
  372. p{
  373. background: #dbf1ea;
  374. border: 1px solid #cdcdcd;
  375. color: #5f5f5f;
  376. padding: 5PX 15PX;
  377. margin-right: 3vw;
  378. border-radius: 50PX;
  379. }
  380. .active{
  381. background: #99eecb;
  382. border-color: #48e5a2;
  383. color: #333333;
  384. }
  385. }
  386. .list_main{
  387. margin-top: 2vh;
  388. overflow-y: scroll;
  389. text-align: center;
  390. background: #ffffff;
  391. border-top-left-radius: 10PX;
  392. border-top-right-radius: 10PX;
  393. height: 88vh;
  394. .btn{
  395. background-image: linear-gradient(to right,#c6fe8b,#48e5a2);
  396. box-shadow: 0 0 10PX #cccccc;
  397. padding: 10PX 0PX;
  398. border-radius: 50PX;
  399. display: inline-block;
  400. width: 40%;
  401. margin-top: 2vh;
  402. }
  403. }
  404. </style>