移动端
Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 

560 linhas
23 KiB

  1. <template>
  2. <div class="app-container">
  3. <van-nav-bar
  4. left-arrow
  5. fixed
  6. placeholder
  7. @click-left="$router.back(-1)"
  8. >
  9. <template #title>
  10. <p style="font-weight: bold;">修改付款账户信息</p>
  11. </template>
  12. </van-nav-bar>
  13. <van-form @submit="goModify" @failed="getError" :show-error-message="false" scroll-to-error validate-first>
  14. <p class="main_title">基础信息</p>
  15. <div class="main_box">
  16. <van-field
  17. readonly
  18. clickable
  19. label="账户类型"
  20. placeholder="请选择"
  21. v-model="accountType"
  22. @click="showAccountType = true"
  23. input-align="right"
  24. right-icon="arrow-down"
  25. label-width="auto"
  26. required
  27. />
  28. <van-popup v-model="showAccountType" position="bottom">
  29. <van-picker
  30. show-toolbar
  31. :columns="typeDictionaries"
  32. @confirm="onConfirmType"
  33. @cancel="showAccountType = false"
  34. />
  35. </van-popup>
  36. <van-field
  37. readonly
  38. clickable
  39. label="所属银行"
  40. placeholder="请选择"
  41. v-model="bankType"
  42. @click="showBankType = true"
  43. input-align="right"
  44. right-icon="arrow-down"
  45. label-width="auto"
  46. required
  47. :rules="[{ required: true , message:'请选择所属银行' }]"
  48. />
  49. <van-popup v-model="showBankType" position="bottom">
  50. <van-picker
  51. show-toolbar
  52. :columns="bankTypeOptions"
  53. @confirm="onConfirmBankType"
  54. @cancel="showBankType = false"
  55. />
  56. </van-popup>
  57. <van-field
  58. readonly
  59. clickable
  60. label="账户分类"
  61. placeholder="请选择"
  62. v-model="villageAccountType"
  63. @click="showVillageAccountType = true"
  64. input-align="right"
  65. right-icon="arrow-down"
  66. label-width="auto"
  67. required
  68. :rules="[{ required: true , message:'请选择账户分类' }]"
  69. v-if="accountType=='银行存款'&&(form.bankType==1||form.bankType==2)"
  70. />
  71. <van-popup v-model="showVillageAccountType" position="bottom">
  72. <van-picker
  73. show-toolbar
  74. :columns="villageAccountTypeOptions"
  75. @confirm="onConfirmVillageAccountType"
  76. @cancel="showVillageAccountType = false"
  77. />
  78. </van-popup>
  79. <van-field
  80. readonly
  81. clickable
  82. label="所属镇账户"
  83. placeholder="请选择"
  84. v-model="taccountId"
  85. @click="showTaccountId = true"
  86. input-align="right"
  87. right-icon="arrow-down"
  88. label-width="auto"
  89. required
  90. :rules="[{ required: true , message:'请选择所属镇账户' }]"
  91. v-if="accountType=='银行存款'&&(form.bankType=='1'||form.bankType=='2')&&form.villageAccountType!=2"
  92. />
  93. <van-popup v-model="showTaccountId" position="bottom">
  94. <van-picker
  95. show-toolbar
  96. :columns="taccountIdOptions"
  97. @confirm="onConfirmTaccountId"
  98. @cancel="showTaccountId = false"
  99. />
  100. </van-popup>
  101. <van-field label="客户编号" v-if="accountType=='银行存款'&&(form.bankType=='1'||form.bankType=='2')" required :rules="[{ required: true , message:'请输入客户编号' }]" v-model="form.cifNo" placeholder="请输入客户编号" input-align="right" label-width="auto"/>
  102. <van-field label="账簿号" v-if="accountType=='银行存款'&&villageAccountType=='多级账簿'" required :rules="[{ required: true , message:'请输入账簿号' }]" v-model="form.accountNo" placeholder="请输入账簿号" input-align="right" label-width="auto"/>
  103. <van-field label="管控类型" required :rules="[{ required: true , message:'请选择管控类型' }]" v-if="accountType=='银行存款'&&form.bankType==2&&villageAccountType=='多级账簿'">
  104. <template #right-icon>
  105. <van-radio-group direction="horizontal" v-model="form.managementControlType" @change="onConfirmManagementControlType">
  106. <van-radio name="1">账簿余额</van-radio>
  107. <van-radio name="2">中心账簿</van-radio>
  108. </van-radio-group>
  109. </template>
  110. </van-field>
  111. <van-field
  112. readonly
  113. clickable
  114. label="中心账套"
  115. placeholder="请选择"
  116. v-model="centralBookId"
  117. @click="showCentralBookId = true"
  118. input-align="right"
  119. right-icon="arrow-down"
  120. label-width="auto"
  121. required
  122. :rules="[{ required: true , message:'请选择开户银行' }]"
  123. v-if="accountType=='银行存款'&&form.managementControlType=='2'"
  124. />
  125. <van-popup v-model="showCentralBookId" position="bottom">
  126. <van-picker
  127. show-toolbar
  128. :columns="centralBookIdList"
  129. @confirm="onConfirmCentralBookId"
  130. @cancel="showCentralBookId = false"
  131. />
  132. </van-popup>
  133. <van-field
  134. readonly
  135. clickable
  136. label="会计科目"
  137. placeholder="请选择"
  138. v-model="centralSubjectId"
  139. @click="showCentralSubjectId = true"
  140. input-align="right"
  141. right-icon="arrow-down"
  142. label-width="auto"
  143. required
  144. :rules="[{ required: true , message:'请选择会计科目' }]"
  145. v-if="accountType=='银行存款'&&form.managementControlType=='2'"
  146. />
  147. <van-popup v-model="showCentralSubjectId" position="bottom">
  148. <van-picker
  149. show-toolbar
  150. :columns="centralSubjectIdList"
  151. @confirm="onConfirmCentralSubjectId"
  152. @cancel="showCentralSubjectId = false"
  153. />
  154. </van-popup>
  155. <van-field label="账户名称" required :rules="[{ required: true , message:'请输入账户名称' }]" v-model="form.accountName" placeholder="请输入账户名称" input-align="right" label-width="auto"/>
  156. <van-field label="银行账户" v-if="accountType=='银行存款'" :rules="[{ required: true , message:'请输入银行账户' }]" v-model="form.bankAccountNumber" placeholder="请输入银行账户" input-align="right" label-width="auto" required/>
  157. <van-field
  158. readonly
  159. clickable
  160. label="开户银行"
  161. placeholder="请选择"
  162. v-model="form.bankName"
  163. @click="showBankDeposit = true"
  164. input-align="right"
  165. right-icon="arrow-down"
  166. label-width="auto"
  167. required
  168. :rules="[{ required: true , message:'请选择开户银行' }]"
  169. v-if="accountType=='银行存款'"
  170. />
  171. <van-popup v-model="showBankDeposit" position="bottom">
  172. <van-picker
  173. show-toolbar
  174. :columns="bankDepositList"
  175. @confirm="onConfirmBankDeposit"
  176. @cancel="showBankDeposit = false"
  177. />
  178. </van-popup>
  179. <van-field label="联行号" v-if="accountType=='银行存款'" :rules="[{ required: true , message:'请输入联行号' }]" v-model="form.paymentLines" placeholder="请输入联行号" input-align="right" label-width="auto" required/>
  180. <van-field
  181. readonly
  182. clickable
  183. label="关联科目"
  184. placeholder="请选择"
  185. v-model="subjectDeatil"
  186. @click="showSubjectId = true"
  187. input-align="right"
  188. right-icon="arrow-down"
  189. label-width="auto"
  190. required
  191. :rules="[{ required: true , message:'请选择关联科目' }]"
  192. />
  193. <van-popup v-model="showSubjectId" position="bottom">
  194. <van-picker
  195. show-toolbar
  196. :columns="subjectDictionaries"
  197. @confirm="onConfirmSubject"
  198. @cancel="showSubjectId = false"
  199. />
  200. </van-popup>
  201. <van-field label="开户银行地址" v-if="accountType=='银行存款'" :rules="[{ required: true , message:'请输入开户银行地址' }]" v-model="form.site" placeholder="请输入开户银行地址" input-align="right" label-width="auto" required/>
  202. <van-field label="支付口令" v-if="accountType=='银行存款'" name="validator" :rules="[{ validator , message:'支付口令:请输入六位以上数字' }]" v-model="form.accountPassword" placeholder="请输入支付口令" input-align="right" label-width="auto" required/>
  203. <van-field label="账户类型" v-if="accountType=='银行存款'" required >
  204. <template #right-icon>
  205. <van-radio-group direction="horizontal" v-model="form.bankAccountType" required :rules="[{ required: true , message:'请选择账户类型' }]">
  206. <van-radio name="1">公户</van-radio>
  207. <van-radio name="2">私户</van-radio>
  208. </van-radio-group>
  209. </template>
  210. </van-field>
  211. <van-field label="初始余额" v-model="form.initialBalance" required :rules="[{ required: true , message:'请输入初始余额' }]" placeholder="请输入初始余额" input-align="right" label-width="auto"/>
  212. <van-field label="内部账号" v-if="accountType=='银行存款'&&form.bankType=='3'" v-model="form.alternateField1" required :rules="[{ required: true , message:'请输入内部账号' }]" placeholder="请输入内部账号" input-align="right" label-width="auto"/>
  213. <van-field label="内部户名" v-if="accountType=='银行存款'&&form.bankType=='3'" v-model="form.alternateField2" required :rules="[{ required: true , message:'请输入内部户名' }]" placeholder="请输入内部户名" input-align="right" label-width="auto"/>
  214. <van-field label="账簿号" v-if="accountType=='银行存款'&&form.bankType=='3'" v-model="form.alternateField3" required :rules="[{ required: true , message:'请输入账簿号' }]" placeholder="请输入账簿号" input-align="right" label-width="auto"/>
  215. <van-field label="手机号码" v-if="accountType=='银行存款'&&form.bankType=='4'" v-model="form.alternateField1" required :rules="[{ required: true , message:'请输入手机号' }]" placeholder="请输入手机号" input-align="right" label-width="auto"/>
  216. <van-field label="是否停用" required >
  217. <template #right-icon>
  218. <van-radio-group direction="horizontal" v-model="form.status" required :rules="[{ required: true , message:'请选择是否停用' }]">
  219. <van-radio name="Y">是</van-radio>
  220. <van-radio name="N">否</van-radio>
  221. </van-radio-group>
  222. </template>
  223. </van-field>
  224. </div>
  225. <p class="main_title" v-if="villageAccountType=='多级账簿'">账簿信息</p>
  226. <div class="main_box" v-if="villageAccountType=='多级账簿'">
  227. <van-field label="账簿是否限额" disabled>
  228. <template #right-icon>
  229. <van-radio-group direction="horizontal" v-model="form.alternateField1" :disabled="true">
  230. <van-radio name="Y">是</van-radio>
  231. <van-radio name="N">否</van-radio>
  232. </van-radio-group>
  233. </template>
  234. </van-field>
  235. <van-field label="单笔交易限额" v-model="form.alternateField2" placeholder="0.00" input-align="right" label-width="auto" :disabled="true"/>
  236. <van-field label="账簿是否透支" disabled>
  237. <template #right-icon>
  238. <van-radio-group direction="horizontal" v-model="form.alternateField3" :disabled="true">
  239. <van-radio name="Y">是</van-radio>
  240. <van-radio name="N">否</van-radio>
  241. </van-radio-group>
  242. </template>
  243. </van-field>
  244. <van-field label="透支类型" v-model="form.alternateField4" placeholder="无" input-align="right" label-width="auto" :disabled="true"/>
  245. <van-field label="透支额度(元)" v-model="form.alternateField5" placeholder="0.00" input-align="right" label-width="auto" :disabled="true"/>
  246. </div>
  247. <div style="padding: 16px 0;">
  248. <van-row>
  249. <van-col span="24" align="center">
  250. <van-button type="info" native-type="submit" class="submitButton">保<i style="margin-right: 1em;"></i>存</van-button>
  251. </van-col>
  252. </van-row>
  253. <div class="clear"></div>
  254. </div>
  255. </van-form>
  256. </div>
  257. </template>
  258. <script>
  259. import { getAccount , getSubjectDetail , updateAccount,listDeposit,queryTaccount,getCentralBooks } from "@/api/onlineHome/bankAgriculture/paymentAccount";
  260. import {getCentralSubjects} from "../../../../api/onlineHome/bankAgriculture/paymentAccount";
  261. export default {
  262. name: "paymentAccountModify",
  263. data() {
  264. return {
  265. showCentralSubjectId:false,
  266. showCentralBookId:false,
  267. showManagementControlType:false,
  268. showTaccountId:false,
  269. showVillageAccountType:false,
  270. villageAccountType:null,
  271. showAccountType:false,
  272. showSubjectId:false,
  273. showBankType:false,
  274. minDate: new Date(),
  275. showBankDeposit:false,
  276. maxDate: new Date(2025, 10, 1),
  277. currentDate: new Date(),
  278. jgList:{},
  279. managementControlType:'',
  280. taccountId:'',
  281. accountType:'',
  282. bankType:'',
  283. centralBookId:'',
  284. centralSubjectId:'',
  285. jglx:'',
  286. wfydlx:'',
  287. wfydlxDictionaries:[],
  288. jglxDictionaries:[],
  289. subjectDictionaries:[],
  290. typeDictionaries:[],
  291. villageAccountTypeOptions:[],
  292. taccountIdOptions:[],
  293. centralBookIdList:[],
  294. centralSubjectIdList:[],
  295. // 管控类型 == 中心账套时选择中心账套
  296. centralBooks: [],
  297. // 管控类型字典
  298. managementControlTypeOptions: [],
  299. bankDepositList:[],
  300. // 所属银行字典
  301. bankTypeOptions: [],
  302. subjectDeatil:'',
  303. bankDepositQueryParams: {
  304. pageNum: 1,
  305. pageSize: 10,
  306. bookId: null,
  307. deptId: null,
  308. payee: null,
  309. payeeAccount: null,
  310. bankDeposit: null,
  311. payeeType:null,
  312. bankType:null,
  313. status: "0",
  314. },
  315. form:{}
  316. };
  317. },
  318. created() {
  319. this.getTaList();
  320. this.getDetail();
  321. },
  322. methods: {
  323. validator(val){
  324. return /^\d{6,}$/.test(val);
  325. },
  326. getDetail(){
  327. getAccount(this.$route.query.id).then((response) => {
  328. // 账户类型
  329. this.houseGetDicts("account_type_cashier").then((res) => {
  330. for (var i = 0; i < res.data.length; i++) {
  331. this.typeDictionaries.push({text: res.data[i].dictLabel, value: res.data[i].dictValue});
  332. }
  333. this.accountType = this.selectDictLabel(res.data, response.data.accountType);
  334. });
  335. this.getDicts("bank_type").then(res => {
  336. for (var i = 0; i < res.data.length; i++) {
  337. this.bankTypeOptions.push({text: res.data[i].dictLabel, value: res.data[i].dictValue});
  338. this.bankType = this.selectDictLabel(res.data, response.data.bankType);
  339. }
  340. });
  341. this.getDicts("village_account_type").then(res => {
  342. for (var i = 0; i < res.data.length; i++) {
  343. this.villageAccountTypeOptions.push({text: res.data[i].dictLabel, value: res.data[i].dictValue});
  344. this.villageAccountType = this.selectDictLabel(res.data, response.data.villageAccountType);
  345. }
  346. });
  347. getSubjectDetail().then((res) => {
  348. for (var i = 0; i < res.rows.length; i++) {
  349. this.subjectDictionaries.push({text: res.rows[i].subjectNameAll, value: res.rows[i].subjectId});
  350. }
  351. this.subjectDeatil = this.selectSubject(res.rows , response.data.subjectId);
  352. });
  353. queryTaccount({
  354. bankType:response.data.bankType
  355. }).then(res => {
  356. this.taccountIdOptions = res.rows;
  357. for (var i = 0; i < res.rows.length; i++) {
  358. this.$set(this.taccountIdOptions[i], "text",res.rows[i].payee);
  359. this.$set(this.taccountIdOptions[i], "value",res.rows[i].id);
  360. if(response.data.taccountId==res.rows[i].id){
  361. this.taccountId= res.rows[i].payee
  362. }
  363. }
  364. });
  365. if(response.data.centralBookId!=null&&response.data.centralBookId!=""&&response.data.managementControlType=="2"){
  366. getCentralBooks({yinnongTaccountId: response.data.taccountId}).then((res) => {
  367. this.centralBookIdList = res.data;
  368. for (var i = 0; i < res.data.length; i++) {
  369. this.$set(this.centralBookIdList[i], "text",res.data[i].bookName);
  370. this.$set(this.centralBookIdList[i], "value",res.data[i].id);
  371. }
  372. this.centralBookId = this.selectSubject(res.data , response.data.centralBookId);
  373. });
  374. if(response.data.centralSubjectId!=null&&response.data.centralSubjectId!=""){
  375. getCentralSubjects({bookId: response.data.centralBookId}).then((res) => {
  376. this.centralSubjectIdList = res.data;
  377. for (var i = 0; i < res.data.length; i++) {
  378. this.$set(this.centralSubjectIdList[i], "text",res.data[i].subjectName);
  379. this.$set(this.centralSubjectIdList[i], "value",res.data[i].subjectId);
  380. }
  381. this.centralSubjectId = this.selectSubject(res.data , response.data.centralSubjectId);
  382. })
  383. }
  384. if(response.data.bankDeposit!=null&&response.data.bankDeposit!=""){
  385. this.bankDepositQueryParams.bankType = response.data.bankType;
  386. listDeposit(this.bankDepositQueryParams).then(response => {
  387. this.bankDepositList = response.rows;
  388. for (var i = 0; i < response.rows.length; i++) {
  389. this.$set(this.bankDepositList[i], "text",response.rows[i].bankDeposit);
  390. this.$set(this.bankDepositList[i], "value",response.rows[i].bankDeposit);
  391. }
  392. this.bankDeposit = this.selectSubject(response.rows , response.data.bankDeposit);
  393. })
  394. }
  395. }
  396. this.form = response.data;
  397. });
  398. },
  399. getTaList(){
  400. let params= {
  401. // 分页
  402. pageNum: 1,
  403. pageSize: 100,
  404. bankType:this.form.bankType,
  405. }
  406. // this.getCentralBookOptions();
  407. queryTaccount(params).then(res => {
  408. this.taccountIdOptions = res.rows;
  409. for (var i = 0; i < res.rows.length; i++) {
  410. this.$set(this.taccountIdOptions[i], "text",res.rows[i].payee);
  411. this.$set(this.taccountIdOptions[i], "value",res.rows[i].id);
  412. }
  413. });
  414. },
  415. getError(e){
  416. console.log(e)
  417. this.$notify({ type: 'danger', message: e.errors[0].message });
  418. },
  419. selectSubject(datas, value) {
  420. var actions = [];
  421. Object.keys(datas).some((key) => {
  422. if (datas[key].subjectId == ('' + value)) {
  423. actions.push(datas[key].subjectNameAll);
  424. return true;
  425. }
  426. })
  427. return actions.join('');
  428. },
  429. onConfirmCentralBookId(val){
  430. this.showCentralBookId = false
  431. this.$set(this.form, "centralBookId",val.value);
  432. this.centralBookId = val.text
  433. getCentralSubjects({bookId: val.id}).then((res) => {
  434. this.centralSubjectIdList = res.data;
  435. for (var i = 0; i < res.data.length; i++) {
  436. this.$set(this.centralSubjectIdList[i], "text",res.data[i].subjectName);
  437. this.$set(this.centralSubjectIdList[i], "value",res.data[i].subjectId);
  438. }
  439. })
  440. },
  441. onConfirmCentralSubjectId(val){
  442. this.showCentralSubjectId = false
  443. this.$set(this.form, "centralSubjectId",val.value);
  444. this.centralSubjectId = val.text
  445. },
  446. onConfirmManagementControlType(val){
  447. if(val==2){
  448. getCentralBooks({yinnongTaccountId: this.form.taccountId}).then((res) => {
  449. this.centralBookIdList = res.data;
  450. for (var i = 0; i < res.data.length; i++) {
  451. this.$set(this.centralBookIdList[i], "text",res.data[i].bookName);
  452. this.$set(this.centralBookIdList[i], "value",res.data[i].id);
  453. }
  454. });
  455. }
  456. },
  457. onConfirmBankDeposit(val){
  458. this.showBankDeposit = false
  459. this.$set(this.form, "bankName", val.bankDeposit);
  460. this.$set(this.form, "paymentLines", val.payeePaymentLines);
  461. },
  462. onConfirmTaccountId(val){
  463. this.showTaccountId = false
  464. this.taccountId = val.text
  465. this.$set(this.form, "taccountId", val.value);
  466. this.taccountIdOptions.map(res => {
  467. if(res.id==val.value){
  468. if(this.form.villageAccountType === '3'){
  469. this.$set(this.form, "bankAccountNumber", res.payeeAccount);
  470. }
  471. //this.form.bankName = res.bankDeposit;
  472. this.$set(this.form, "bankName", res.bankDeposit);
  473. this.$set(this.form, "paymentLines", res.payeePaymentLines);
  474. }
  475. })
  476. },
  477. onConfirmBankType(val){
  478. this.showBankType = false
  479. this.bankType = val.text
  480. this.$set(this.form, "bankType", val.value);
  481. this.getTaList();
  482. this.$set(this.form, "bankName", '');
  483. this.$set(this.form, "paymentLines", '');
  484. this.bankDepositQueryParams.bankType = val.value;
  485. listDeposit(this.bankDepositQueryParams).then(response => {
  486. this.bankDepositList = response.rows;
  487. for (var i = 0; i < response.rows.length; i++) {
  488. this.$set(this.bankDepositList[i], "text",response.rows[i].bankDeposit);
  489. this.$set(this.bankDepositList[i], "value",response.rows[i].bankDeposit);
  490. }
  491. })
  492. },
  493. onConfirmVillageAccountType(val){
  494. this.showVillageAccountType = false
  495. this.villageAccountType = val.text
  496. this.$set(this.form, "villageAccountType", val.value);
  497. },
  498. onConfirmSubject(data){
  499. this.subjectDeatil = data.text;
  500. this.form.subjectId = data.value;
  501. this.form.subjectNameAll = data.text;
  502. this.showSubjectId = false;
  503. },
  504. onConfirmType(data){
  505. this.accountType = data.text;
  506. this.form.accountType = data.value;
  507. this.showAccountType = false;
  508. },
  509. goModify(){
  510. console.log(this.form)
  511. this.form.balance = this.form.initialBalance;
  512. updateAccount(this.form).then((response) => {
  513. this.$toast.success('修改成功');
  514. setTimeout(function(){
  515. history.go(-1)
  516. },2000)
  517. });
  518. },
  519. goBack(){
  520. window.history.go(-1)
  521. }
  522. },
  523. }
  524. </script>
  525. <style scoped lang="scss">
  526. .app-container {
  527. padding: 2% 0;
  528. }
  529. .main_title{
  530. font-size: 0.4rem;
  531. color: #1D6FE9;
  532. margin: 0.2rem 6%;
  533. margin-top: 0;
  534. position: relative;
  535. }
  536. .main_box{
  537. width: 96%;
  538. margin: 0 auto;
  539. border-radius: 6px;
  540. box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);
  541. overflow: hidden;
  542. background-color: #FFF;
  543. }
  544. .submitButton{
  545. width: 80%;
  546. margin: 0 auto;
  547. background-color: #1D6FE9;
  548. }
  549. .addFamily{
  550. position: absolute;
  551. top: -2px;
  552. right: 0;
  553. border-radius: 50%;
  554. }
  555. </style>