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

collectionAdd2.vue 11 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. <template>
  2. <div class="app-container">
  3. <!-- <van-nav-bar-->
  4. <!-- left-arrow-->
  5. <!-- fixed-->
  6. <!-- placeholder-->
  7. <!-- @click-left="goBack"-->
  8. <!-- >-->
  9. <!-- <template #title>-->
  10. <!-- <p style="font-weight: bold;">添加收款账户信息</p>-->
  11. <!-- </template>-->
  12. <!-- </van-nav-bar>-->
  13. <div class="header_main">
  14. 添加收款账户信息
  15. <div class="return_btn" @click="onClickLeft"></div>
  16. <!-- <div class="add_btn" @click="goAdd"></div>-->
  17. </div>
  18. <van-form @submit="goAdd" @failed="getError" :show-error-message="false" scroll-to-error validate-first>
  19. <p class="main_title">基础信息</p>
  20. <div class="main_box">
  21. <van-field label="收款方" required :rules="[{ required: true , message:'请输入收款方' }]" v-model="form.payee" placeholder="请输入收款方" input-align="right" label-width="auto"/>
  22. <van-field label="收款账户" required :rules="[{ required: true , message:'请输入收款账户' }]" v-model="form.payeeAccount" placeholder="请输入收款账户" input-align="right" label-width="auto"/>
  23. <van-field
  24. readonly
  25. clickable
  26. label="所属银行"
  27. placeholder="请选择"
  28. v-model="bankType"
  29. @click="isPeersRead ? showBankType = true : ''"
  30. input-align="right"
  31. right-icon="arrow-down"
  32. label-width="auto"
  33. required
  34. :rules="[{ required: true , message:'请选择所属银行' }]"
  35. />
  36. <van-popup v-model="showBankType" position="bottom">
  37. <van-picker
  38. show-toolbar
  39. :columns="bankTypeOptions"
  40. @confirm="onConfirmBankType"
  41. @cancel="showBankType = false"
  42. />
  43. </van-popup>
  44. <van-field
  45. readonly
  46. clickable
  47. label="开户银行"
  48. placeholder="请选择"
  49. @click="showBankDeposit = true"
  50. v-model="bankDeposit"
  51. input-align="right"
  52. right-icon="arrow-down"
  53. label-width="auto"
  54. required
  55. :rules="[{ required: true , message:'请选择开户银行' }]"
  56. />
  57. <van-popup v-model="showBankDeposit" position="bottom" @close="bankDepositValue = ''" @closed="bankDepositSearch">
  58. <van-search v-model="bankDepositValue" show-action placeholder="请输入开户银行名称搜索" >
  59. <template #action>
  60. <div @click="bankDepositSearch">搜索</div>
  61. </template>
  62. </van-search>
  63. <van-picker
  64. show-toolbar
  65. :columns="bankDepositOptions"
  66. @confirm="onConfirmBankDeposit"
  67. @cancel="showBankDeposit = false"
  68. />
  69. </van-popup>
  70. <van-field label="联行号" readonly required :rules="[{ required: true , message:'请输入联行号' }]" v-model="form.payeePaymentLines" input-align="right" label-width="auto"/>
  71. </div>
  72. <div class="main_box" style="margin-top: 10px;">
  73. <van-field label="备注" v-model="form.remark" type="textarea" placeholder="请输入备注" input-align="right" rows="3" label-width="auto"/>
  74. </div>
  75. <div class="main_box" style="margin-top: 10px;">
  76. <van-cell title="账户类型" required>
  77. <template #right-icon>
  78. <van-radio-group direction="horizontal" required :rules="[{ required: true , message:'请选择账户类型' }]" v-model="form.accountType">
  79. <van-radio name="1">公户</van-radio>
  80. <van-radio name="2">私户</van-radio>
  81. </van-radio-group>
  82. </template>
  83. </van-cell>
  84. <van-field
  85. readonly
  86. clickable
  87. label="收款人类型"
  88. placeholder="请选择"
  89. v-model="payeeType"
  90. input-align="right"
  91. right-icon="arrow-down"
  92. label-width="auto"
  93. required
  94. :rules="[{ required: true , message:'请选择收款人类型' }]"
  95. />
  96. <!-- @click="showPayeeType = true"-->
  97. <van-popup v-model="showPayeeType" position="bottom">
  98. <van-picker
  99. show-toolbar
  100. :columns="payeeTypeOptions"
  101. @confirm="onConfirmPayeeType"
  102. @cancel="showPayeeType = false"
  103. />
  104. </van-popup>
  105. <van-cell title="数据状态" required>
  106. <template #right-icon>
  107. <van-radio-group direction="horizontal" required :rules="[{ required: true , message:'请选择数据状态' }]" v-model="form.status">
  108. <van-radio name="0">正常</van-radio>
  109. <!-- <van-radio name="1">停用</van-radio>-->
  110. </van-radio-group>
  111. </template>
  112. </van-cell>
  113. </div>
  114. <div style="padding: 16px 0;">
  115. <van-row>
  116. <van-col span="24" align="center">
  117. <van-button type="info" native-type="submit" class="submitButton">保<i style="margin-right: 1em;"></i>存</van-button>
  118. </van-col>
  119. </van-row>
  120. <div class="clear"></div>
  121. </div>
  122. </van-form>
  123. </div>
  124. </template>
  125. <script>
  126. import { addPayee,listDeposit } from "@/api/onlineHome/bankAgriculture/collectionAccount";
  127. export default {
  128. name: "collectionAdd",
  129. data() {
  130. return {
  131. isPeersRead:true,
  132. showBankType:false,
  133. showBankDeposit:false,
  134. showPayeeType:false,
  135. bankDepositValue:'',
  136. form:{
  137. accountType:'1',
  138. status:'0',
  139. payeeType:'4'
  140. },
  141. bankType:'',
  142. payeeType:'公务卡',
  143. bankDeposit:'',
  144. bankTypeOptions:[],
  145. statusOptions:[],
  146. accountTypeOptions:[],
  147. payeeTypeOptions:[],
  148. bankDepositOptions:[],
  149. };
  150. },
  151. created() {
  152. this.getDictionaries();
  153. const accountType = this.$route.params.accountType;
  154. const isPeers = this.$route.params.isPeers;
  155. const bankType = this.$route.params.bankType;
  156. console.log(this.$route.params.option)
  157. if (accountType){this.form.accountType = accountType;}
  158. if (isPeers){
  159. this.form.isPeers = isPeers;
  160. if (isPeers == 'Y'){
  161. this.isPeersRead = false;
  162. this.getDicts("bank_type").then((res) => {
  163. let bankText = this.selectDictLabel(res.data,bankType);
  164. let data = {
  165. text : bankText,
  166. value : bankType
  167. }
  168. this.onConfirmBankType(data);
  169. });
  170. }
  171. }
  172. },
  173. methods: {
  174. getDictionaries(){
  175. this.houseGetDicts("bank_type_all").then((res) => {
  176. for(var i = 0 ; i < res.data.length ; i++){
  177. this.bankTypeOptions.push({text:res.data[i].dictLabel,value:res.data[i].dictValue});
  178. }
  179. });
  180. this.houseGetDicts("sys_normal_disable").then((res) => {
  181. console.log(res)
  182. for(var i = 0 ; i < res.data.length ; i++){
  183. this.statusOptions.push({text:res.data[i].dictLabel,value:res.data[i].dictValue});
  184. }
  185. });
  186. this.houseGetDicts("bank_account_type").then((res) => {
  187. console.log(res)
  188. for(var i = 0 ; i < res.data.length ; i++){
  189. this.accountTypeOptions.push({text:res.data[i].dictLabel,value:res.data[i].dictValue});
  190. }
  191. });
  192. this.houseGetDicts("payee_type").then((res) => {
  193. for(var i = 0 ; i < res.data.length ; i++){
  194. this.payeeTypeOptions.push({text:res.data[i].dictLabel,value:res.data[i].dictValue});
  195. }
  196. });
  197. },
  198. getError(e){
  199. this.$notify({ type: 'danger', message: e.errors[0].message });
  200. },
  201. onConfirmBankType(data){
  202. this.bankType = data.text;
  203. this.form.bankType = data.value;
  204. this.bankDeposit = ""
  205. this.form.payeePaymentLines = ""
  206. this.showBankType = false;
  207. let queryParams={
  208. "bankType":this.form.bankType,
  209. "bankDeposit":this.bankDepositValue,
  210. "status": "0",
  211. }
  212. listDeposit(queryParams).then(response => {
  213. this.bankDepositOptions = []
  214. for(var i = 0 ; i < response.rows.length ; i++){
  215. this.bankDepositOptions.push({"text":response.rows[i].bankDeposit,"value":response.rows[i].id,
  216. "payeePaymentLines":response.rows[i].payeePaymentLines,"institutionNumber":response.rows[i].institutionNumber});
  217. }
  218. });
  219. },
  220. bankDepositSearch(data){
  221. this.bankDepositOptions = [];
  222. let queryParams={
  223. "bankType":this.form.bankType,
  224. "bankDeposit":this.bankDepositValue,
  225. "status": "0",
  226. }
  227. listDeposit(queryParams).then(response => {
  228. this.bankDepositOptions = []
  229. for(var i = 0 ; i < response.rows.length ; i++){
  230. this.bankDepositOptions.push({"text":response.rows[i].bankDeposit,"value":response.rows[i].id,
  231. "payeePaymentLines":response.rows[i].payeePaymentLines,"institutionNumber":response.rows[i].institutionNumber});
  232. }
  233. });
  234. },
  235. onConfirmBankDeposit(data){
  236. this.bankDeposit = data.text
  237. this.form.bankDeposit = data.text
  238. this.form.payeePaymentLines = data.payeePaymentLines
  239. this.form.alternateField10 = data.institutionNumber
  240. this.showBankDeposit = false;
  241. },
  242. onConfirmPayeeType(data){
  243. this.payeeType = data.text;
  244. this.form.payeeType = data.value;
  245. this.showPayeeType = false;
  246. },
  247. goAdd(){
  248. var that = this;
  249. addPayee(this.form).then(response => {
  250. this.$toast.success('新增成功');
  251. setTimeout(function(){
  252. that.form.bankTypeText = that.bankType;
  253. that.$router.push({name: 'approvalAdd2', params: { payeeForm: that.form }});
  254. // history.go(-1)
  255. },2000)
  256. });
  257. },
  258. goBack(){
  259. window.history.go(-1)
  260. }
  261. },
  262. }
  263. </script>
  264. <style scoped lang="scss">
  265. .app-container {
  266. padding-bottom: 2%;
  267. .header_main{
  268. height: 116px;
  269. background: url('../../../../assets/images/sunVillage_info/list_head.png') no-repeat;
  270. background-size: 100% 100%;
  271. position: fixed;
  272. top: 0;
  273. left: 0;
  274. width: 100%;
  275. font-size: 36px;
  276. line-height: 116px;
  277. text-align: center;
  278. color: #fff;
  279. position: relative;
  280. margin-bottom: 2%;
  281. .return_btn{
  282. width: 24px;
  283. height: 43.2px;
  284. background: url('../../../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat;
  285. background-size: 20px 36px;
  286. position: absolute;
  287. left: 38px;
  288. top: 36px;
  289. }
  290. .add_btn{
  291. width: 56.4px;
  292. height: 40.8px;
  293. background: url('../../../../assets/images/sunVillage_info/list_icon_9.png') center center no-repeat;
  294. background-size: 47px 34px;
  295. position: absolute;
  296. right: 38px;
  297. top: 36px;
  298. }
  299. }
  300. }
  301. .main_title{
  302. font-size: 0.4rem;
  303. color: #1D6FE9;
  304. margin: 0.2rem 6%;
  305. margin-top: 0;
  306. position: relative;
  307. }
  308. .main_box{
  309. width: 96%;
  310. margin: 0 auto;
  311. border-radius: 6px;
  312. box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.16);
  313. overflow: hidden;
  314. background-color: #FFF;
  315. }
  316. .submitButton{
  317. width: 80%;
  318. margin: 0 auto;
  319. background-color: #1D6FE9;
  320. }
  321. .addFamily{
  322. position: absolute;
  323. top: -2px;
  324. right: 0;
  325. border-radius: 50%;
  326. }
  327. </style>