62fc4b00 by renchao@pashanhoo.com

收费

1 parent a2c4706b
...@@ -23,8 +23,6 @@ ...@@ -23,8 +23,6 @@
23 *     ┗┻┛ ┗┻┛+ + + + 23 *     ┗┻┛ ┗┻┛+ + + +
24 * 24 *
25 --> 25 -->
26
27
28 # 安装依赖 26 # 安装依赖
29 npm install 27 npm install
30 # 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题 28 # 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题
......
1 /* 1 /*
2 * @Description: sfxx 2 * @Description: sfxx
3 * @Autor: renchao 3 * @Autor: renchao
4 * @LastEditTime: 2023-12-26 16:06:35 4 * @LastEditTime: 2024-03-20 14:02:38
5 */ 5 */
6 import request from '@/utils/request'; 6 import request from '@/utils/request';
7 let SERVER = window.config ? window.config : JSON.parse(localStorage.getItem('ApiUrl')) 7 let SERVER = window.config ? window.config : JSON.parse(localStorage.getItem('ApiUrl'))
...@@ -17,6 +17,49 @@ export function getSfmxList (businessBsm) { ...@@ -17,6 +17,49 @@ export function getSfmxList (businessBsm) {
17 }) 17 })
18 } 18 }
19 19
20 /**
21 * @description: 收费信息
22 * @param {*} businessBsm
23 * @author: renchao
24 */
25 export function initSfxx (businessBsm) {
26 return request({
27 url: SERVER.SERVERAPI + '/rest/sys/sf/initSfxx',
28 method: 'get',
29 params: {
30 businessBsm: businessBsm
31 }
32 })
33 }
34
35 /**
36 * @description: 重新计费
37 * @param {*} businessBsm
38 * @author: renchao
39 */
40 export function recharge (businessBsm) {
41 return request({
42 url: SERVER.SERVERAPI + '/rest/sys/sf/recharge',
43 method: 'get',
44 params: {
45 businessBsm: businessBsm
46 }
47 })
48 }
49 /**
50 * @description: 修改收费信息
51 * @param {*} businessBsm
52 * @author: renchao
53 */
54 export function updateSfxx (data) {
55 return request({
56 url: SERVER.SERVERAPI + '/rest/sys/sf/updateSfxx',
57 method: 'post',
58 data
59 })
60 }
61
62
20 export function saveSfmx (data) { 63 export function saveSfmx (data) {
21 return request({ 64 return request({
22 url: SERVER.SERVERAPI + '/rest/sys/sf/saveSfmx', 65 url: SERVER.SERVERAPI + '/rest/sys/sf/saveSfmx',
......
...@@ -21,6 +21,7 @@ const getters = { ...@@ -21,6 +21,7 @@ const getters = {
21 djbxx: state => state.djbxx.djbxx, 21 djbxx: state => state.djbxx.djbxx,
22 // workflow 22 // workflow
23 isRefresh: state => state.user.isRefresh, 23 isRefresh: state => state.user.isRefresh,
24 pouopData: state => state.user.pouopData,
24 workFresh: state => state.user.workFresh, 25 workFresh: state => state.user.workFresh,
25 // 左侧菜单刷新 26 // 左侧菜单刷新
26 menuRefresh: state => state.user.menuRefresh, 27 menuRefresh: state => state.user.menuRefresh,
......
1 /* 1 /*
2 * @Description: 2 * @Description:
3 * @Autor: renchao 3 * @Autor: renchao
4 * @LastEditTime: 2024-02-01 08:52:00 4 * @LastEditTime: 2024-03-20 14:12:53
5 */ 5 */
6 import { getUserInfo } from '@/api/user' 6 import { getUserInfo } from '@/api/user'
7 const state = { 7 const state = {
...@@ -9,6 +9,8 @@ const state = { ...@@ -9,6 +9,8 @@ const state = {
9 userInfo: {}, 9 userInfo: {},
10 avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png', 10 avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png',
11 isRefresh: false, 11 isRefresh: false,
12 // 弹窗返回需要回传的值
13 pouopData: {},
12 // 业务流程刷新 14 // 业务流程刷新
13 workFresh: false, 15 workFresh: false,
14 // 左侧菜单刷新 16 // 左侧菜单刷新
...@@ -29,6 +31,9 @@ const mutations = { ...@@ -29,6 +31,9 @@ const mutations = {
29 SETMENUREFRESH: (state, data) => { 31 SETMENUREFRESH: (state, data) => {
30 state.menuRefresh = data 32 state.menuRefresh = data
31 }, 33 },
34 SETPOUOPDATA: (state, data) => {
35 state.pouopData = data
36 }
32 } 37 }
33 38
34 const actions = { 39 const actions = {
...@@ -48,6 +53,10 @@ const actions = { ...@@ -48,6 +53,10 @@ const actions = {
48 reMenuRefresh ({ commit }, data) { 53 reMenuRefresh ({ commit }, data) {
49 commit('SETMENUREFRESH', data) 54 commit('SETMENUREFRESH', data)
50 }, 55 },
56 // 存储弹窗data的值
57 getPouopData ({ commit }, data) {
58 commit('SETPOUOPDATA', data)
59 }
51 } 60 }
52 export default { 61 export default {
53 namespaced: true, 62 namespaced: true,
......
1 <!-- 1 <!--
2 * @Description: 2 * @Description:
3 * @Autor: renchao 3 * @Autor: renchao
4 * @LastEditTime: 2024-03-19 17:30:22 4 * @LastEditTime: 2024-03-20 14:22:37
5 --> 5 -->
6 <template> 6 <template>
7 <div class='sfxx slxx'> 7 <div class='sfxx slxx'>
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
11 v-Loading="loading" 11 v-Loading="loading"
12 :label-position="flag ? 'top' : ''" 12 :label-position="flag ? 'top' : ''"
13 :inline="flag" 13 :inline="flag"
14 label-width="100px"> 14 label-width="120px">
15 <div class="slxx_con" :class="flag ? 'formMarginBot0' : ''"> 15 <div class="slxx_con" :class="flag ? 'formMarginBot0' : ''">
16 <div class="slxx_title title-block"> 16 <div class="slxx_title title-block">
17 基本信息 17 基本信息
...@@ -19,79 +19,48 @@ ...@@ -19,79 +19,48 @@
19 </div> 19 </div>
20 <el-row :gutter="10"> 20 <el-row :gutter="10">
21 <el-col :span="8"> 21 <el-col :span="8">
22 <el-form-item label="业务号:"> 22 <el-form-item label="受理人员:">
23 <el-input v-model="ruleForm.ywh"></el-input> 23 <el-input v-model="ruleForm.slry" disabled></el-input>
24 </el-form-item> 24 </el-form-item>
25 </el-col> 25 </el-col>
26 <el-col :span="8"> 26 <el-col :span="8">
27 <el-form-item label="申请登记类型:"> 27 <el-form-item label="受理时间:">
28 <el-input v-model="ruleForm.sqdjlx"></el-input> 28 <el-input v-model="ruleForm.slsj" disabled></el-input>
29 </el-form-item> 29 </el-form-item>
30 </el-col> 30 </el-col>
31 <el-col :span="8"> 31 <el-col :span="8">
32 <el-form-item label="联系人:"> 32 <el-form-item label="登记情形名称:">
33 <el-input v-model="ruleForm.lxr"></el-input> 33 <el-input v-model="ruleForm.djqxmc" disabled></el-input>
34 </el-form-item> 34 </el-form-item>
35 </el-col> 35 </el-col>
36 </el-row> 36 </el-row>
37 37
38 <el-row :gutter="10"> 38 <el-row :gutter="10">
39 <el-col :span="8"> 39 <el-col :span="8">
40 <el-form-item label="联系人电话:"> 40 <el-form-item label="登记业务名称:">
41 <el-input v-model="ruleForm.lxdh"></el-input> 41 <el-input v-model="ruleForm.djywmc" disabled></el-input>
42 </el-form-item>
43 </el-col>
44 <el-col :span="8">
45 <el-form-item label="缴费人:">
46 <el-input v-model="ruleForm.jfr"></el-input>
47 </el-form-item>
48 </el-col>
49 <el-col :span="8">
50 <el-form-item label="缴费单号:">
51 <el-input v-model="ruleForm.jfdh"></el-input>
52 </el-form-item>
53 </el-col>
54 </el-row>
55
56 <el-row :gutter="10">
57 <el-col :span="8">
58 <el-form-item label="应收金额:">
59 <el-input v-model="ruleForm.ysje"></el-input>
60 </el-form-item>
61 </el-col>
62 <el-col :span="8">
63 <el-form-item label="实收金额:">
64 <el-input v-model="ruleForm.ssje"></el-input>
65 </el-form-item>
66 </el-col>
67 <el-col :span="8">
68 <el-form-item label="备注:">
69 <el-input v-model="ruleForm.bz"></el-input>
70 </el-form-item> 42 </el-form-item>
71 </el-col> 43 </el-col>
72 </el-row> 44 </el-row>
73 45
74 <div class="slxx_title title-block"> 46 <div class="slxx_title title-block">
75 收费明细 47 计费明细
76 <el-button type="primary" @click="hanldeAdd" style="float:right;margin-top:-5px">增加</el-button>
77 </div> 48 </div>
78 <el-table :data="tableDatasf.data" border :height="210"> 49 <el-table :data="tableDatajf.data" border :height="100">
79 <el-table-column v-for="item in tableDatasf.columns" :key="item.index" :prop="item.prop" :label="item.label" align="center"> 50 <el-table-column v-for="item in tableDatajf.columns" :key="item.index" :prop="item.prop" :label="item.label" align="center">
80 </el-table-column>
81 <el-table-column label="操作" width="50">
82 <template slot-scope="scope">
83 <el-button type="text" @click="handleDelete(scope.row)">删除</el-button>
84 </template>
85 </el-table-column> 51 </el-table-column>
86 </el-table> 52 </el-table>
53
87 <div class="slxx_title title-block"> 54 <div class="slxx_title title-block">
88 计费明细 55 收费明细
89 <div class="triangle"></div> 56 <el-button type="primary" @click="hanldeEdit" style="float:right;margin-top:-5px">修改</el-button>
57 <el-button type="primary" @click="hanldeRecharge" style="float:right;margin-top:-5px;margin-right:10px">重新计费</el-button>
90 </div> 58 </div>
91 <el-table :data="tableDatajf.data" border :height="210"> 59 <el-table :data="tableDatasf.data" border :height="100">
92 <el-table-column v-for="item in tableDatajf.columns" :key="item.index" :prop="item.prop" :label="item.label" align="center"> 60 <el-table-column v-for="item in tableDatasf.columns" :key="item.index" :prop="item.prop" :label="item.label" align="center">
93 </el-table-column> 61 </el-table-column>
94 </el-table> 62 </el-table>
63
95 <div class="slxx_title title-block"> 64 <div class="slxx_title title-block">
96 票据 65 票据
97 <div class="triangle"></div> 66 <div class="triangle"></div>
...@@ -105,22 +74,14 @@ ...@@ -105,22 +74,14 @@
105 </template> 74 </template>
106 <script> 75 <script>
107 import { mapGetters } from "vuex"; 76 import { mapGetters } from "vuex";
108 import { getSfmxList, deleteSfmx } from "@/api/sfxx.js"; 77 import { initSfxx, recharge } from "@/api/sfxx.js";
109 export default { 78 export default {
110 components: {}, 79 components: {},
111 data () { 80 data () {
112 return { 81 return {
113 ruleForm: { 82 loading: false,
114 ywh: '', 83 bsmBusiness: this.$route.query.bsmBusiness ? this.$route.query.bsmBusiness : window.currentSelect.bsmBusiness,
115 sqdjlx: '', 84 ruleForm: {},
116 lxr: '',
117 lxdh: '',
118 jfr: '',
119 jfdh: '',
120 ysje: '',
121 ssje: '',
122 bz: ''
123 },
124 tableDatasf: { 85 tableDatasf: {
125 columns: [ 86 columns: [
126 { 87 {
...@@ -128,17 +89,6 @@ ...@@ -128,17 +89,6 @@
128 label: "收费单位", 89 label: "收费单位",
129 }, 90 },
130 { 91 {
131 label: '是否额外收费',
132 align: 'center',
133 render: (h, scope) => {
134 return (
135 <div>
136 {scope.row.sfewsf == '1' ? <span></span> : <span>否</span>}
137 </div>
138 )
139 }
140 },
141 {
142 prop: "sfry", 92 prop: "sfry",
143 label: "收费人员", 93 label: "收费人员",
144 }, 94 },
...@@ -164,39 +114,44 @@ ...@@ -164,39 +114,44 @@
164 tableDatajf: { 114 tableDatajf: {
165 columns: [ 115 columns: [
166 { 116 {
167 prop: "sfdw", 117 prop: "jfjs",
168 label: "计费单位", 118 label: "计费基数",
169 }, 119 },
170 { 120 {
171 label: '是否额外收费', 121 prop: "jflx",
172 align: 'center', 122 label: "计费类型",
173 render: (h, scope) => {
174 return (
175 <div>
176 {scope.row.sfewsf == '1' ? <span></span> : <span>否</span>}
177 </div>
178 )
179 }
180 }, 123 },
181 { 124 {
182 prop: "sfry", 125 prop: "jflxmc",
183 label: "收费人员", 126 label: "计费类型名称",
184 }, 127 },
185 { 128 {
186 prop: "sfkmmc", 129 prop: "ysje",
187 label: "收费科目名称", 130 label: "应收金额",
188 }, 131 },
189 { 132 {
190 prop: "sjffr", 133 prop: "zkhysje",
191 label: "实际付费人", 134 label: "折扣后应收金额",
192 }, 135 },
193 { 136 {
194 prop: "ssje", 137 prop: "qlrmc",
195 label: "实收金额", 138 label: "权利人名称",
196 }, 139 },
197 { 140 {
198 prop: "ysje", 141 prop: "ywrmc",
199 label: "应收金额", 142 label: "义务人名称",
143 },
144 {
145 prop: "qlytmc",
146 label: "权利用途名称",
147 },
148 {
149 prop: "qlxzmc",
150 label: "权利性质名称",
151 },
152 {
153 prop: "zl",
154 label: "坐落",
200 } 155 }
201 ], 156 ],
202 data: [], 157 data: [],
...@@ -204,57 +159,48 @@ ...@@ -204,57 +159,48 @@
204 } 159 }
205 }, 160 },
206 computed: { 161 computed: {
207 ...mapGetters(["workFresh"]), 162 ...mapGetters(["workFresh", "flag", "pouopData"]),
208 }, 163 },
209 watch: { 164 watch: {
210 workFresh: { 165 workFresh: {
211 handler (newVal, oldVal) { 166 handler (newVal, oldVal) {
212 if (newVal) this.getList(); 167 if (newVal) this.getList()
213 }, 168 }
214 }, 169 },
170 pouopData: {
171 handler (newValue, oldValue) {
172 if (newValue.length != 0) {
173 this.tableDatasf.data = newValue
174 }
175 },
176 deep: true
177 }
215 }, 178 },
216 mounted () { 179 mounted () {
217 this.getList() 180 this.getList()
218 }, 181 },
219 methods: { 182 methods: {
220 getList () { 183 getList () {
221 let bsmBusiness = this.$route.query.bsmBusiness ? this.$route.query.bsmBusiness : window.currentSelect.bsmBusiness 184 initSfxx('6a114807a2779413e0db955951ac3524').then(res => {
222 getSfmxList(bsmBusiness).then(res => { 185 let { slsq, jfList, sfList } = res.result
223 this.tableData.data = res.result 186 this.ruleForm = slsq
187 this.tableDatajf.data = jfList
188 this.tableDatasf.data = sfList
224 }) 189 })
225 }, 190 },
226 hanldeAdd () { 191 hanldeRecharge () {
227 let bsmBusiness = this.$route.query.bsmBusiness ? this.$route.query.bsmBusiness : window.currentSelect.bsmBusiness 192 recharge('6a114807a2779413e0db955951ac3524').then(res => {
228 this.$popupDialog('新增', 'workflow/main/sfxx/xzsf', { bsmBusiness: bsmBusiness }, '50%', true) 193 if (res.code == 200) {
229 }, 194 this.tableDatasf.data = res.result
230 handleDelete (row) { 195 this.$message({
231 let that = this 196 message: '计费成功!',
232 this.$confirm('此操作将永久删除该 是否继续?', '提示', { 197 type: 'success'
233 confirmButtonText: '确定', 198 })
234 cancelButtonText: '取消', 199 }
235 type: 'warning'
236 }).then(() => {
237 deleteSfmx(row.bsmSf).then(res => {
238 if (res.code == 200) {
239 that.$message({
240 message: '删除成功!',
241 type: 'success'
242 })
243 that.getList()
244 } else {
245 that.$message({
246 type: 'info',
247 message: res.message
248 })
249 }
250 })
251 }).catch(() => {
252 this.$message({
253 type: 'info',
254 message: '已取消删除'
255 })
256 }) 200 })
257 201 },
202 hanldeEdit () {
203 this.$popupDialog('编辑', 'workflow/main/sfxx/sfDetail', { bsmBusiness: this.bsmBusiness, dataList: _.cloneDeep(this.tableDatasf.data) }, '50%', true)
258 } 204 }
259 } 205 }
260 } 206 }
......
1 <template>
2 <div class='sfDetail'>
3 <lb-table :column="column" :pagination="false" :key="key"
4 :data="formData.dataList">
5 </lb-table>
6
7 <div class="text-center">
8 <el-button @click="$popupCacel">取消</el-button>
9 <el-button type="primary" @click="handleSubmit" plain>保存</el-button>
10 </div>
11 </div>
12 </template>
13 <script>
14 import store from '@/store/index.js'
15 import { updateSfxx } from "@/api/sfxx.js";
16 export default {
17 props: {
18 formData: {
19 type: Object,
20 default: {}
21 }
22 },
23 data () {
24 return {
25 key: 0,
26 column: [
27 {
28 prop: 'sfdw',
29 label: '收费单位',
30 render: (h, scope) => {
31 return (
32 <el-input value={scope.row[scope.column.property]} onInput={(val) => { scope.row[scope.column.property] = val }}></el-input>
33 )
34 }
35 },
36 {
37 prop: 'sfry',
38 label: '收费人员',
39 render: (h, scope) => {
40 return (
41 <el-input value={scope.row[scope.column.property]} onInput={(val) => { scope.row[scope.column.property] = val }}></el-input>
42 )
43 }
44 },
45 {
46 prop: 'sfkmmc',
47 label: '收费科目名称',
48 render: (h, scope) => {
49 return (
50 <el-input value={scope.row[scope.column.property]} onInput={(val) => { scope.row[scope.column.property] = val }}></el-input>
51 )
52 }
53 },
54 {
55 prop: 'sjffr',
56 label: '实际付费人',
57 render: (h, scope) => {
58 return (
59 <el-input value={scope.row[scope.column.property]} onInput={(val) => { scope.row[scope.column.property] = val }}></el-input>
60 )
61 }
62 },
63 {
64 prop: 'ssje',
65 label: '实收金额',
66 render: (h, scope) => {
67 return (
68 <el-input value={scope.row[scope.column.property]} onInput={(val) => { scope.row[scope.column.property] = val }}></el-input>
69 )
70 }
71 },
72 {
73 prop: 'ysje',
74 label: '应收金额',
75 render: (h, scope) => {
76 return (
77 <el-input value={scope.row[scope.column.property]} onInput={(val) => { scope.row[scope.column.property] = val }}></el-input>
78 )
79 }
80 }
81 ]
82 }
83 },
84
85 methods: {
86 handleSubmit () {
87 this.formData.dataList.forEach(item => {
88 item.bsmBusiness = this.formData.bsmBusiness
89 })
90 updateSfxx(this.formData.dataList).then(res => {
91 if (res.code == 200) {
92 store.dispatch("user/getPouopData", res.result);
93 this.$message({
94 message: '修改成功!',
95 type: 'success'
96 })
97 this.$popupCacel()
98 }
99 })
100 }
101 }
102 }
103 </script>
104 <style scoped lang='scss'>
105 </style>
...\ No newline at end of file ...\ No newline at end of file
1 <template>
2 <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px">
3 <el-row>
4 <el-col :span="8">
5 <el-form-item label="收费单位" prop="sfdw">
6 <el-input v-model="ruleForm.sfdw"></el-input>
7 </el-form-item>
8 </el-col>
9 <el-col :span="8">
10 <el-form-item label="是否额外收费" prop="sfewsf">
11 <el-radio-group v-model="ruleForm.sfewsf">
12 <el-radio :label="1"></el-radio>
13 <el-radio :label="0"></el-radio>
14 </el-radio-group>
15 </el-form-item>
16 </el-col>
17 <el-col :span="8">
18 <el-form-item label="收费人员" prop="sfry">
19 <el-input v-model="ruleForm.sfry"></el-input>
20 </el-form-item>
21 </el-col>
22 </el-row>
23 <el-row>
24 <el-col :span="8">
25 <el-form-item label="实际付费人" prop="sjffr">
26 <el-input v-model="ruleForm.sjffr"></el-input>
27 </el-form-item>
28 </el-col>
29 <el-col :span="8">
30 <el-form-item label="实收金额" prop="ssje">
31 <el-input v-model="ruleForm.ssje"></el-input>
32 </el-form-item>
33 </el-col>
34 <el-col :span="8">
35 <el-form-item label="应收金额" prop="ysje">
36 <el-input v-model="ruleForm.ysje"></el-input>
37 </el-form-item>
38 </el-col>
39 </el-row>
40 <div style="text-align:center">
41 <el-button @click="$popupCacel">取消</el-button>
42 <el-button type="primary" @click="submitForm('ruleForm')">新增</el-button>
43 </div>
44 </el-form>
45 </template>
46 <script>
47 import store from '@/store'
48 import { saveSfmx } from "@/api/sfxx.js";
49 export default {
50 props: {
51 formData: {
52 type: Object,
53 default: () => {
54 return {}
55 }
56 }
57 },
58 data () {
59 return {
60 rules: {},
61 ruleForm: {
62 }
63 }
64 },
65 methods: {
66 submitForm () {
67 store.dispatch('user/reWorkFresh', false)
68 saveSfmx({ ...this.ruleForm, bsmBusiness: this.formData.bsmBusiness }).then(res => {
69 if (res.code == 200) {
70 this.$message.success('保存成功');
71 //刷新列表
72 this.$popupCacel()
73 store.dispatch("user/reWorkFresh", true);
74 }
75 })
76 }
77 }
78 }
79 </script>
80 <style scoped lang='scss'>
81 @import "~@/styles/public.scss";
82 </style>
...\ No newline at end of file ...\ No newline at end of file