wdyk.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. <template>
  2. <div class="oa-sys-list-view">
  3. <div class="searchBox">
  4. <div class="form">
  5. <span class="formSpan">用款单号:</span>
  6. <el-input
  7. v-model="queryParams.useMoneyNo"
  8. placeholder="请输入报销单号"
  9. style="width: 210px"
  10. />
  11. </div>
  12. <div class="form">
  13. <span class="formSpan">项目部门:</span>
  14. <el-input
  15. v-model="queryParams.projectDeptId"
  16. placeholder="请输入项目部门"
  17. style="width: 160px"
  18. />
  19. </div>
  20. <div class="form" style="width: 380px">
  21. <span class="formSpan">申请时间:</span>
  22. <el-date-picker
  23. v-model="applyDate"
  24. type="daterange"
  25. unlink-panels
  26. range-separator="到"
  27. start-placeholder="开始日期"
  28. end-placeholder="结束日期"
  29. @change="changeApplyDate"
  30. />
  31. </div>
  32. <div class="from">
  33. <div class="btnBox">
  34. <el-button type="primary" style="background: #3485ff" @click="handleQuery">
  35. <img src="@/assets/imgs/OA/search.png" class="mr-8px" alt="" />
  36. 查询</el-button
  37. >
  38. </div>
  39. </div>
  40. </div>
  41. <div class="infoBox">
  42. <ul>
  43. <li v-for="(item, index) in infoList" :key="index" class="mr-40px">
  44. <p>{{ item.name }}:</p>
  45. <h4 class="font-size-18px">{{ item.num }}</h4>
  46. </li>
  47. </ul>
  48. </div>
  49. <div class="tableBox">
  50. <TableLayout :is-loading="loading" :data="list">
  51. <el-table-column type="index" />
  52. <el-table-column
  53. show-overflow-tooltip="true"
  54. align="center"
  55. prop="useMoneyNo"
  56. label="用款单号"
  57. />
  58. <el-table-column
  59. align="center"
  60. prop="applyTime"
  61. :formatter="dateFormatter2"
  62. label="申请时间"
  63. />
  64. <el-table-column align="center" prop="totalAmount" label="用款总金额" />
  65. <el-table-column
  66. show-overflow-tooltip="true"
  67. align="center"
  68. prop="projectName"
  69. label="项目名称"
  70. />
  71. <el-table-column
  72. show-overflow-tooltip="true"
  73. align="center"
  74. prop="projectDeptName"
  75. label="项目部门"
  76. />
  77. <el-table-column
  78. align="center"
  79. prop="agreedPayTime"
  80. :formatter="dateFormatter2"
  81. label="约定付款期限"
  82. />
  83. <el-table-column align="center" prop="status" label="状态" />
  84. <el-table-column align="center" label="操作" width="80" fixed="right">
  85. <template #default="scope">
  86. <div class="operateBtn" @click="operateClick(scope.row)">
  87. <span>查看</span>
  88. </div>
  89. </template>
  90. </el-table-column>
  91. </TableLayout>
  92. <div class="pageBox">
  93. <el-pagination
  94. v-model:current-page="queryParams.pageNo"
  95. :page-size="10"
  96. background
  97. layout="total, prev, pager, next, jumper"
  98. :total="total"
  99. @current-change="handleCurrentChange"
  100. />
  101. </div>
  102. </div>
  103. </div>
  104. </template>
  105. <script setup lang="ts">
  106. import * as UseMoneyApi from '@/api/oa/useMoney'
  107. import { dateFormatter2 } from '@/utils/formatTime'
  108. import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
  109. import TableLayout from '../../oaViews/layout/TableLayout.vue'
  110. import { useRouter } from 'vue-router'
  111. import moment from 'moment'
  112. defineOptions({ name: 'UseMoneyDept' })
  113. const { wsCache } = useCache()
  114. const user = wsCache.get(CACHE_KEY.USER)
  115. const userId = user.user.id ? user.user.id : ''
  116. const queryParams = reactive({
  117. pageNo: 1,
  118. pageSize: 10,
  119. commonCostNo: undefined,
  120. userId: userId,
  121. deptId: undefined,
  122. applyTime: [],
  123. projectDeptId: undefined,
  124. costType: undefined,
  125. flowStatus: undefined,
  126. totalAmount: undefined,
  127. applyOn: '',
  128. applyOff: ''
  129. })
  130. const infoList: any = ref([
  131. {
  132. name: '用款总金额(元)',
  133. num: '0'
  134. },
  135. {
  136. name: '已用款总金额(元)',
  137. num: '0'
  138. },
  139. {
  140. name: '申请用款总金额(元)',
  141. num: '0'
  142. }
  143. ])
  144. const loading = ref(true) // 列表的加载中
  145. const total = ref(0) // 列表的总页数
  146. const list = ref([]) // 列表的数
  147. /** 查询列表 */
  148. const getList = async () => {
  149. loading.value = true
  150. if (applyDate.value && applyDate.value.length > 0) {
  151. queryParams.applyOn = moment(applyDate.value[0]).format('YYYY-MM-DD')
  152. queryParams.applyOff = moment(applyDate.value[1]).format('YYYY-MM-DD')
  153. }
  154. try {
  155. const data = await UseMoneyApi.getUseMoneyPage(queryParams)
  156. list.value = data.list
  157. total.value = data.total
  158. } finally {
  159. loading.value = false
  160. }
  161. }
  162. const changeApplyDate = (value, data) => {
  163. if (!value) {
  164. queryParams.applyOn = ''
  165. queryParams.applyOff = ''
  166. }
  167. }
  168. const applyDate = ref()
  169. /** 查询概况 */
  170. const getOverview = async () => {
  171. if (applyDate.value && applyDate.value.length > 0) {
  172. queryParams.applyOn = moment(applyDate.value[0]).format('YYYY-MM-DD')
  173. queryParams.applyOff = moment(applyDate.value[1]).format('YYYY-MM-DD')
  174. }
  175. const data = await UseMoneyApi.getUseMoneyOverview(queryParams)
  176. infoList.value[0].num = data.totalAmount
  177. infoList.value[1].num = data.totalUseAmount
  178. infoList.value[2].num = data.totalApplyAmount
  179. }
  180. /** 搜索按钮操作 */
  181. const handleQuery = () => {
  182. queryParams.pageNo = 1
  183. getList()
  184. getOverview()
  185. }
  186. /** 分页操作 */
  187. const handleCurrentChange = (pageNo: number) => {
  188. queryParams.pageNo = pageNo
  189. getList()
  190. }
  191. const router = useRouter()
  192. const operateClick = (row: any) => {
  193. router.push({
  194. path: '/processLook',
  195. query: {
  196. url:
  197. `${
  198. import.meta.env.VITE_PROCESS_DETAIL_URI
  199. }/IFlowInstance/redirectFlowPage?flowInstanceId=` + row.instanceId
  200. }
  201. })
  202. }
  203. /** 初始化 */
  204. onMounted(() => {
  205. getList()
  206. getOverview()
  207. })
  208. </script>