Explorar el Código

修改移动端借款申请

余思翰 hace 3 meses
padre
commit
9bf99f7f63

+ 7
- 1
oa-ui-app/api/oa/borrow/borrowDetail.js Ver fichero

1
+/*
2
+ * @Author: ysh
3
+ * @Date: 2025-02-10 14:50:24
4
+ * @LastEditors: 
5
+ * @LastEditTime: 2025-03-03 09:23:16
6
+ */
1
 import request from '@/utils/request'
7
 import request from '@/utils/request'
2
 
8
 
3
 // 查询cmc借款明细列表
9
 // 查询cmc借款明细列表
46
 // 删除cmc借款明细根据每一项Id
52
 // 删除cmc借款明细根据每一项Id
47
 export function delBorrowDetailByDetailId(borrowDetailId) {
53
 export function delBorrowDetailByDetailId(borrowDetailId) {
48
   return request({
54
   return request({
49
-    url: '/oa/borrowDetail/id' + borrowDetailId,
55
+    url: '/oa/borrowDetail/id/' + borrowDetailId,
50
     method: 'delete'
56
     method: 'delete'
51
   })
57
   })
52
 }
58
 }

+ 83
- 7
oa-ui-app/pages/form/borrow/borrow.vue Ver fichero

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2025-02-20 10:20:22
3
  * @Date: 2025-02-20 10:20:22
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2025-02-27 10:49:10
5
+ * @LastEditTime: 2025-03-03 11:02:06
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <view class="form-container">
8
   <view class="form-container">
33
         <uni-data-checkbox v-model="form.borrowUsage" :localdata="borrowUsageOptions"></uni-data-checkbox>
33
         <uni-data-checkbox v-model="form.borrowUsage" :localdata="borrowUsageOptions"></uni-data-checkbox>
34
       </uni-forms-item>
34
       </uni-forms-item>
35
 
35
 
36
-      <!-- 借款类型 -->
36
+      <!-- 借款事由 -->
37
       <uni-forms-item label="借款事由" required class="form-item" name="applyReason" v-if="form.borrowUsage != 0">
37
       <uni-forms-item label="借款事由" required class="form-item" name="applyReason" v-if="form.borrowUsage != 0">
38
         <uv-textarea v-model="form.applyReason" placeholder="请输入借款事由"></uv-textarea>
38
         <uv-textarea v-model="form.applyReason" placeholder="请输入借款事由"></uv-textarea>
39
       </uni-forms-item>
39
       </uni-forms-item>
40
 
40
 
41
       <!-- 选择项目 -->
41
       <!-- 选择项目 -->
42
       <uni-forms-item label="选择项目" required class="form-item" v-if="form.borrowUsage == 0" name="projectId">
42
       <uni-forms-item label="选择项目" required class="form-item" v-if="form.borrowUsage == 0" name="projectId">
43
-        <u-button type="primary" @click="openProject = true" v-if="taskName == '借款申请'">选择项目</u-button>
43
+        <u-button type="primary" @click="openProject = true" v-if="taskName == '借款申请'">+ 选择项目</u-button>
44
         <ProjectPicker :visible.sync="openProject" :selected.sync="selectedProject" @confirm="handleConfirm" />
44
         <ProjectPicker :visible.sync="openProject" :selected.sync="selectedProject" @confirm="handleConfirm" />
45
         <ProjectInfo :project="projectObj"></ProjectInfo>
45
         <ProjectInfo :project="projectObj"></ProjectInfo>
46
       </uni-forms-item>
46
       </uni-forms-item>
47
 
47
 
48
       <!-- 借款明细 -->
48
       <!-- 借款明细 -->
49
       <uni-forms-item label="借款明细" required class="form-item">
49
       <uni-forms-item label="借款明细" required class="form-item">
50
-        <BorrowDetail :borrowId="form.borrowId"></BorrowDetail>
50
+        <BorrowDetail :borrowId="form.borrowId" :taskName="taskName" @getApplyAmount="setApplyAmount"></BorrowDetail>
51
       </uni-forms-item>
51
       </uni-forms-item>
52
 
52
 
53
-    </uni-forms>
53
+      <uni-forms-item label="申请金额" class="form-item">
54
+        <view>{{ (this.form.applyAmount).toFixed(2) }}</view>
55
+        <view style="color:#E74C3C" v-if="exceed && form.borrowUsage == '0'">
56
+          超过预算金额:{{ getMoreAmount('0') }}</view>
57
+      </uni-forms-item>
54
 
58
 
59
+      <uni-forms-item label="最大借款金额" class="form-item">
60
+        {{ totalBudget.toFixed(2) }}
61
+      </uni-forms-item>
62
+      <uni-forms-item label="已申请借款" class="form-item">
63
+        {{ hasBorrow.toFixed(2) }}
64
+      </uni-forms-item>
65
+      <uni-forms-item label="可用借款" class="form-item">
66
+        {{ (totalBudget - hasBorrow).toFixed(2) }}
67
+      </uni-forms-item>
68
+      <view>
69
+        <u-button type="primary" size="normal" @click="submit">提交申请</u-button>
70
+      </view>
71
+    </uni-forms>
55
 
72
 
56
   </view>
73
   </view>
57
 </template>
74
 </template>
62
 import { parseTime } from "@/utils/common.js"
79
 import { parseTime } from "@/utils/common.js"
63
 import { listBorrow, getBorrow, delBorrow, addBorrow, updateBorrow } from "@/api/oa/borrow/borrow";
80
 import { listBorrow, getBorrow, delBorrow, addBorrow, updateBorrow } from "@/api/oa/borrow/borrow";
64
 import { listProject, getProject } from "@/api/oa/project/project";
81
 import { listProject, getProject } from "@/api/oa/project/project";
82
+import { listBudget } from "@/api/oa/budget/budget";
65
 import BorrowDetail from './borrowDetail.vue';
83
 import BorrowDetail from './borrowDetail.vue';
66
 export default {
84
 export default {
67
   components: {
85
   components: {
85
       form: {
103
       form: {
86
         submitTime: '',
104
         submitTime: '',
87
         borrowUsage: '0',
105
         borrowUsage: '0',
106
+        applyAmount: 0,
88
       },
107
       },
89
       rules: {},
108
       rules: {},
90
       borrowUsageOptions: [{
109
       borrowUsageOptions: [{
113
       selectedProject: null, //选中的项目
132
       selectedProject: null, //选中的项目
114
       projectObj: {}, //项目信息的项目
133
       projectObj: {}, //项目信息的项目
115
       fromTotal: 0,
134
       fromTotal: 0,
135
+      totalBudget: 0, //预结算额
136
+      exceed: false, //是否超预算
137
+      hasBorrow: 0, //已申请借款
116
     }
138
     }
117
   },
139
   },
118
   methods: {
140
   methods: {
119
-    initForm() {
120
-      getBorrow(this.taskForm.formId).then(res => {
141
+    async initForm() {
142
+      getBorrow(this.taskForm.formId).then(async res => {
121
         if (res.data) {
143
         if (res.data) {
122
           this.fromTotal = 1;
144
           this.fromTotal = 1;
123
           this.form = res.data;
145
           this.form = res.data;
129
                 this.projectObj = res.data;
151
                 this.projectObj = res.data;
130
               }
152
               }
131
             })
153
             })
154
+            let budgetData = await listBudget({ projectId: this.form.projectId })
155
+            if (budgetData.total == 1) {
156
+              let budget = budgetData.rows[0];
157
+              this.totalBudget = budget.settleExpense
158
+            } else if (budgetData.total == 0) {
159
+              this.totalBudget = 0
160
+            }
161
+            if (this.form.borrowUsage == '0') {
162
+              if ((this.totalBudget - this.form.applyAmount) < 0) {
163
+                this.exceed = true;
164
+              } else {
165
+                this.exceed = false;
166
+              }
167
+            } else {
168
+              this.exceed = false;
169
+            }
170
+            let borrow = await listBorrow({ projectId: this.form.projectId })
171
+            if (borrow.total != 0) {
172
+              let borrowList = borrow.rows;
173
+              let hasBorrow = 0;
174
+              borrowList = borrowList.filter(item => item.borrowId != this.taskForm.formId)
175
+              borrowList.forEach(element => {
176
+                if (element.managerAmount) {
177
+                  hasBorrow = hasBorrow + element.managerAmount
178
+                }
179
+                if (!element.managerAmount && element.applyAmount) {
180
+                  hasBorrow = hasBorrow + element.applyAmount
181
+                }
182
+              });
183
+              this.hasBorrow = hasBorrow
184
+            }
132
           }
185
           }
133
         } else {
186
         } else {
134
           this.fromTotal = 0;
187
           this.fromTotal = 0;
136
           this.form.applyDate = parseTime(new Date(), "{y}-{m}-{d}");
189
           this.form.applyDate = parseTime(new Date(), "{y}-{m}-{d}");
137
         }
190
         }
138
       })
191
       })
192
+
193
+    },
194
+    // 计算超过预算的金额
195
+    getMoreAmount(type) {
196
+      let result;
197
+      if (type == '0') {
198
+        result = this.form.applyAmount - (this.totalBudget - this.hasBorrow);
199
+      } else {
200
+        result = this.form.managerAmount - (this.totalBudget - this.hasBorrow);
201
+      }
202
+      return result.toFixed(2)
203
+    },
204
+    setApplyAmount(val) {
205
+      console.log(val);
206
+      console.log(this.from);
207
+      this.form.applyAmount = val
139
     },
208
     },
140
     handleConfirm(project) {
209
     handleConfirm(project) {
141
       console.log('选中的项目:', project);
210
       console.log('选中的项目:', project);
142
       this.selectedProject = project;
211
       this.selectedProject = project;
143
       this.projectObj = project;
212
       this.projectObj = project;
144
     },
213
     },
214
+    submit() {
215
+      this.$refs.form.validate().then(res => {
216
+        console.log('表单数据信息:', res);
217
+      }).catch(err => {
218
+        console.log('表单错误信息:', err);
219
+      })
220
+    }
145
   },
221
   },
146
 }
222
 }
147
 </script>
223
 </script>

+ 43
- 22
oa-ui-app/pages/form/borrow/borrowDetail.vue Ver fichero

2
  * @Author: ysh
2
  * @Author: ysh
3
  * @Date: 2025-02-27 10:43:04
3
  * @Date: 2025-02-27 10:43:04
4
  * @LastEditors: Please set LastEditors
4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2025-02-28 16:27:00
5
+ * @LastEditTime: 2025-03-03 10:41:01
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <view class="container">
8
   <view class="container">
29
           <text class="total-amount">¥{{ item.applyAmount }}</text>
29
           <text class="total-amount">¥{{ item.applyAmount }}</text>
30
         </view>
30
         </view>
31
       </view>
31
       </view>
32
-      <!-- <view class="fg-amount">
33
-        <text>分管领导审核金额</text>
34
-        <uni-easyinput v-model="item.managerAmount" placeholder="请输入审核金额" />
35
-      </view> -->
36
-      <view class="box-button">
32
+      <view class="box-button" v-if="taskName == '借款申请'">
37
         <u-button size="normal" icon="edit-pen">修改</u-button>
33
         <u-button size="normal" icon="edit-pen">修改</u-button>
38
         <u-button size="normal" icon="trash" @click="deleteItem(item)">删除</u-button>
34
         <u-button size="normal" icon="trash" @click="deleteItem(item)">删除</u-button>
39
       </view>
35
       </view>
40
     </view>
36
     </view>
41
-
42
     <!-- 借款弹窗 -->
37
     <!-- 借款弹窗 -->
43
     <view v-if="showAddPopup" class="add-popup">
38
     <view v-if="showAddPopup" class="add-popup">
44
-
45
       <view class="popup-content">
39
       <view class="popup-content">
46
         <text class="popup-title">新增借款项</text>
40
         <text class="popup-title">新增借款项</text>
47
-
48
         <uni-forms ref="form" :modelValue="newItem" :rules="rules" label-position="top" label-width="150"
41
         <uni-forms ref="form" :modelValue="newItem" :rules="rules" label-position="top" label-width="150"
49
           class="custom-form">
42
           class="custom-form">
50
           <uni-forms-item label="开支项目" name="borrowItem" required class="form-item">
43
           <uni-forms-item label="开支项目" name="borrowItem" required class="form-item">
78
 export default {
71
 export default {
79
   components: { uButton },
72
   components: { uButton },
80
   props: {
73
   props: {
81
-    borrowId: String
74
+    borrowId: String,
75
+    taskName: String,
82
   },
76
   },
83
   data() {
77
   data() {
84
     return {
78
     return {
91
         quantity: '',
85
         quantity: '',
92
         applyAmount: 0
86
         applyAmount: 0
93
       },
87
       },
94
-      rules: {},
88
+      rules: {
89
+        borrowItem: {
90
+          rules: [{
91
+            required: true,
92
+            errorMessage: '请填写开支项目',
93
+          },]
94
+        },
95
+        unit: {
96
+          rules: [{
97
+            required: true,
98
+            errorMessage: '请填写单位',
99
+          },]
100
+        },
101
+        price: {
102
+          rules: [{
103
+            required: true,
104
+            errorMessage: '请填写单价',
105
+          },]
106
+        },
107
+        quantity: {
108
+          rules: [{
109
+            required: true,
110
+            errorMessage: '请填写数量',
111
+          },]
112
+        },
113
+      },
95
       errorMessage: '',
114
       errorMessage: '',
96
     }
115
     }
97
   },
116
   },
100
   watch: {
119
   watch: {
101
     borrowId() {
120
     borrowId() {
102
       this.initList();
121
       this.initList();
122
+    },
123
+    detailList(newval) {
124
+      let sum = newval.reduce((sum, item) => sum + Number(item.applyAmount), 0);
125
+      this.$emit('getApplyAmount', sum)
103
     }
126
     }
104
   },
127
   },
105
   methods: {
128
   methods: {
118
         res.borrowId = this.borrowId;
141
         res.borrowId = this.borrowId;
119
         res.applyAmount = this.getTotal();
142
         res.applyAmount = this.getTotal();
120
         addBorrowDetail(res);
143
         addBorrowDetail(res);
121
-        // this.detailList.unshift({
122
-        //   borrowId: this.borrowId,
123
-        //   borrowItem: this.newItem.borrowItem,
124
-        //   unit: this.newItem.unit,
125
-        //   price: Number(this.newItem.price),
126
-        //   quantity: Number(this.newItem.quantity),
127
-        //   applyAmount: Number(this.newItem.price) * Number(this.newItem.quantity)
128
-        // })
129
-        // console.log(this.detailList);
130
         this.clearForm()
144
         this.clearForm()
131
         this.showAddPopup = false
145
         this.showAddPopup = false
132
         this.initList();
146
         this.initList();
147
+      }).catch(err => {
148
+        console.log('表单错误信息:', err);
133
       })
149
       })
134
 
150
 
135
     },
151
     },
154
       return (Number(this.newItem.price) * Number(this.newItem.quantity)).toFixed(2)
170
       return (Number(this.newItem.price) * Number(this.newItem.quantity)).toFixed(2)
155
     },
171
     },
156
     deleteItem(item) {
172
     deleteItem(item) {
157
-      this.$modal.confirm('是否删除开支项目为'+item.borrowItem+'的项?').then(() => {
173
+      this.$modal.confirm('是否删除开支项目为' + item.borrowItem + '的项?').then(() => {
158
         delBorrowDetailByDetailId(item.borrowDetailId).then(res => {
174
         delBorrowDetailByDetailId(item.borrowDetailId).then(res => {
159
-          this.$message.success(res.msg)
175
+          this.$modal.msgSuccess(res.msg);
176
+          this.initList();
160
         })
177
         })
161
       })
178
       })
162
 
179
 
294
   display: block;
311
   display: block;
295
   margin-bottom: 40rpx;
312
   margin-bottom: 40rpx;
296
 }
313
 }
314
+
315
+.popup-buttons {
316
+  display: flex;
317
+}
297
 </style>
318
 </style>

Loading…
Cancelar
Guardar