移动端
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

557 行
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!=1"
  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=='银行存款'" :rules="[{ required: true , message:'请输入支付口令' }]" v-model="form.accountPassword" placeholder="请输入支付口令" input-align="right" label-width="auto" required/>
  203. <van-field label="账户类型" v-if="accountType=='银行存款'" required :rules="[{ required: true , message:'请选择账户类型' }]">
  204. <template #right-icon>
  205. <van-radio-group direction="horizontal" v-model="form.bankAccountType">
  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 :rules="[{ required: true , message:'请选择是否停用' }]">
  217. <template #right-icon>
  218. <van-radio-group direction="horizontal" v-model="form.status">
  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. getDetail(){
  324. getAccount(this.$route.query.id).then((response) => {
  325. // 账户类型
  326. this.houseGetDicts("account_type_cashier").then((res) => {
  327. for (var i = 0; i < res.data.length; i++) {
  328. this.typeDictionaries.push({text: res.data[i].dictLabel, value: res.data[i].dictValue});
  329. }
  330. this.accountType = this.selectDictLabel(res.data, response.data.accountType);
  331. });
  332. this.getDicts("bank_type").then(res => {
  333. for (var i = 0; i < res.data.length; i++) {
  334. this.bankTypeOptions.push({text: res.data[i].dictLabel, value: res.data[i].dictValue});
  335. this.bankType = this.selectDictLabel(res.data, response.data.bankType);
  336. }
  337. });
  338. this.getDicts("village_account_type").then(res => {
  339. for (var i = 0; i < res.data.length; i++) {
  340. this.villageAccountTypeOptions.push({text: res.data[i].dictLabel, value: res.data[i].dictValue});
  341. this.villageAccountType = this.selectDictLabel(res.data, response.data.villageAccountType);
  342. }
  343. });
  344. getSubjectDetail().then((res) => {
  345. for (var i = 0; i < res.rows.length; i++) {
  346. this.subjectDictionaries.push({text: res.rows[i].subjectNameAll, value: res.rows[i].subjectId});
  347. }
  348. this.subjectDeatil = this.selectSubject(res.rows , response.data.subjectId);
  349. });
  350. queryTaccount({
  351. bankType:response.data.bankType
  352. }).then(res => {
  353. this.taccountIdOptions = res.rows;
  354. for (var i = 0; i < res.rows.length; i++) {
  355. this.$set(this.taccountIdOptions[i], "text",res.rows[i].payee);
  356. this.$set(this.taccountIdOptions[i], "value",res.rows[i].id);
  357. if(response.data.taccountId==res.rows[i].id){
  358. this.taccountId= res.rows[i].payee
  359. }
  360. }
  361. });
  362. if(response.data.centralBookId!=null&&response.data.centralBookId!=""&&response.data.managementControlType=="2"){
  363. getCentralBooks({yinnongTaccountId: response.data.taccountId}).then((res) => {
  364. this.centralBookIdList = res.data;
  365. for (var i = 0; i < res.data.length; i++) {
  366. this.$set(this.centralBookIdList[i], "text",res.data[i].bookName);
  367. this.$set(this.centralBookIdList[i], "value",res.data[i].id);
  368. }
  369. this.centralBookId = this.selectSubject(res.data , response.data.centralBookId);
  370. });
  371. if(response.data.centralSubjectId!=null&&response.data.centralSubjectId!=""){
  372. getCentralSubjects({bookId: response.data.centralBookId}).then((res) => {
  373. this.centralSubjectIdList = res.data;
  374. for (var i = 0; i < res.data.length; i++) {
  375. this.$set(this.centralSubjectIdList[i], "text",res.data[i].subjectName);
  376. this.$set(this.centralSubjectIdList[i], "value",res.data[i].subjectId);
  377. }
  378. this.centralSubjectId = this.selectSubject(res.data , response.data.centralSubjectId);
  379. })
  380. }
  381. if(response.data.bankDeposit!=null&&response.data.bankDeposit!=""){
  382. this.bankDepositQueryParams.bankType = response.data.bankType;
  383. listDeposit(this.bankDepositQueryParams).then(response => {
  384. this.bankDepositList = response.rows;
  385. for (var i = 0; i < response.rows.length; i++) {
  386. this.$set(this.bankDepositList[i], "text",response.rows[i].bankDeposit);
  387. this.$set(this.bankDepositList[i], "value",response.rows[i].bankDeposit);
  388. }
  389. this.bankDeposit = this.selectSubject(response.rows , response.data.bankDeposit);
  390. })
  391. }
  392. }
  393. this.form = response.data;
  394. });
  395. },
  396. getTaList(){
  397. let params= {
  398. // 分页
  399. pageNum: 1,
  400. pageSize: 100,
  401. bankType:this.form.bankType,
  402. }
  403. // this.getCentralBookOptions();
  404. queryTaccount(params).then(res => {
  405. this.taccountIdOptions = res.rows;
  406. for (var i = 0; i < res.rows.length; i++) {
  407. this.$set(this.taccountIdOptions[i], "text",res.rows[i].payee);
  408. this.$set(this.taccountIdOptions[i], "value",res.rows[i].id);
  409. }
  410. });
  411. },
  412. getError(e){
  413. console.log(e)
  414. this.$notify({ type: 'danger', message: e.errors[0].message });
  415. },
  416. selectSubject(datas, value) {
  417. var actions = [];
  418. Object.keys(datas).some((key) => {
  419. if (datas[key].subjectId == ('' + value)) {
  420. actions.push(datas[key].subjectNameAll);
  421. return true;
  422. }
  423. })
  424. return actions.join('');
  425. },
  426. onConfirmCentralBookId(val){
  427. this.showCentralBookId = false
  428. this.$set(this.form, "centralBookId",val.value);
  429. this.centralBookId = val.text
  430. getCentralSubjects({bookId: val.id}).then((res) => {
  431. this.centralSubjectIdList = res.data;
  432. for (var i = 0; i < res.data.length; i++) {
  433. this.$set(this.centralSubjectIdList[i], "text",res.data[i].subjectName);
  434. this.$set(this.centralSubjectIdList[i], "value",res.data[i].subjectId);
  435. }
  436. })
  437. },
  438. onConfirmCentralSubjectId(val){
  439. this.showCentralSubjectId = false
  440. this.$set(this.form, "centralSubjectId",val.value);
  441. this.centralSubjectId = val.text
  442. },
  443. onConfirmManagementControlType(val){
  444. if(val==2){
  445. getCentralBooks({yinnongTaccountId: this.form.taccountId}).then((res) => {
  446. this.centralBookIdList = res.data;
  447. for (var i = 0; i < res.data.length; i++) {
  448. this.$set(this.centralBookIdList[i], "text",res.data[i].bookName);
  449. this.$set(this.centralBookIdList[i], "value",res.data[i].id);
  450. }
  451. });
  452. }
  453. },
  454. onConfirmBankDeposit(val){
  455. this.showBankDeposit = false
  456. this.$set(this.form, "bankName", val.bankDeposit);
  457. this.$set(this.form, "paymentLines", val.payeePaymentLines);
  458. },
  459. onConfirmTaccountId(val){
  460. this.showTaccountId = false
  461. this.taccountId = val.text
  462. this.$set(this.form, "taccountId", val.value);
  463. this.taccountIdOptions.map(res => {
  464. if(res.id==val.value){
  465. if(this.form.villageAccountType === '3'){
  466. this.$set(this.form, "bankAccountNumber", res.payeeAccount);
  467. }
  468. //this.form.bankName = res.bankDeposit;
  469. this.$set(this.form, "bankName", res.bankDeposit);
  470. this.$set(this.form, "paymentLines", res.payeePaymentLines);
  471. }
  472. })
  473. },
  474. onConfirmBankType(val){
  475. this.showBankType = false
  476. this.bankType = val.text
  477. this.$set(this.form, "bankType", val.value);
  478. this.getTaList();
  479. this.$set(this.form, "bankName", '');
  480. this.$set(this.form, "paymentLines", '');
  481. this.bankDepositQueryParams.bankType = val.value;
  482. listDeposit(this.bankDepositQueryParams).then(response => {
  483. this.bankDepositList = response.rows;
  484. for (var i = 0; i < response.rows.length; i++) {
  485. this.$set(this.bankDepositList[i], "text",response.rows[i].bankDeposit);
  486. this.$set(this.bankDepositList[i], "value",response.rows[i].bankDeposit);
  487. }
  488. })
  489. },
  490. onConfirmVillageAccountType(val){
  491. this.showVillageAccountType = false
  492. this.villageAccountType = val.text
  493. this.$set(this.form, "villageAccountType", val.value);
  494. },
  495. onConfirmSubject(data){
  496. this.subjectDeatil = data.text;
  497. this.form.subjectId = data.value;
  498. this.form.subjectNameAll = data.text;
  499. this.showSubjectId = false;
  500. },
  501. onConfirmType(data){
  502. this.accountType = data.text;
  503. this.form.accountType = data.value;
  504. this.showAccountType = false;
  505. },
  506. goModify(){
  507. console.log(this.form)
  508. this.form.balance = this.form.initialBalance;
  509. updateAccount(this.form).then((response) => {
  510. this.$toast.success('修改成功');
  511. setTimeout(function(){
  512. history.go(-1)
  513. },2000)
  514. });
  515. },
  516. goBack(){
  517. window.history.go(-1)
  518. }
  519. },
  520. }
  521. </script>
  522. <style scoped lang="scss">
  523. .app-container {
  524. padding: 2% 0;
  525. }
  526. .main_title{
  527. font-size: 0.4rem;
  528. color: #1D6FE9;
  529. margin: 0.2rem 6%;
  530. margin-top: 0;
  531. position: relative;
  532. }
  533. .main_box{
  534. width: 96%;
  535. margin: 0 auto;
  536. border-radius: 6px;
  537. box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);
  538. overflow: hidden;
  539. background-color: #FFF;
  540. }
  541. .submitButton{
  542. width: 80%;
  543. margin: 0 auto;
  544. background-color: #1D6FE9;
  545. }
  546. .addFamily{
  547. position: absolute;
  548. top: -2px;
  549. right: 0;
  550. border-radius: 50%;
  551. }
  552. </style>