expendMx.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373
  1. <template>
  2. <div id="expendMx">
  3. <div v-if="isList">
  4. <el-card
  5. v-loading="loading"
  6. style="position: relative;"
  7. >
  8. <el-form class="search_area" label-width="auto">
  9. <el-row :gutter="10">
  10. <el-col :span="1.5">
  11. <el-form-item label="编码">
  12. <el-input
  13. v-model.trim="params.code"
  14. size="mini"
  15. clearable
  16. style="width: 200px"
  17. />
  18. </el-form-item>
  19. </el-col>
  20. <el-col :span="1.5">
  21. <el-form-item label="医院名称">
  22. <el-input
  23. v-model.trim="params.custName"
  24. size="mini"
  25. clearable
  26. style="width: 200px"
  27. />
  28. </el-form-item>
  29. </el-col>
  30. <el-col :span="1.5">
  31. <el-form-item label="医院编码">
  32. <el-input
  33. v-model.trim="params.custCode"
  34. size="mini"
  35. clearable
  36. style="width: 200px"
  37. />
  38. </el-form-item>
  39. </el-col>
  40. <el-col :span="1.5">
  41. <el-form-item label="供应商名称">
  42. <el-input
  43. v-model.trim="params.supplierName"
  44. size="mini"
  45. clearable
  46. style="width: 200px"
  47. />
  48. </el-form-item>
  49. </el-col>
  50. <el-col :span="1.5">
  51. <el-form-item label="供应商编码">
  52. <el-input
  53. v-model.trim="params.supplierCode"
  54. size="mini"
  55. clearable
  56. style="width: 200px"
  57. />
  58. </el-form-item>
  59. </el-col>
  60. <el-col :span="1.5">
  61. <el-form-item label="结算开始日期">
  62. <el-date-picker
  63. v-model="params.startDate"
  64. clearable
  65. type="date"
  66. value-format="yyyy-MM-dd"
  67. size="mini"
  68. style="width: 200px"
  69. >
  70. </el-date-picker>
  71. </el-form-item>
  72. </el-col>
  73. <el-col :span="1.5">
  74. <el-form-item label="结算截止日期">
  75. <el-date-picker
  76. v-model="params.endDate"
  77. clearable
  78. type="date"
  79. value-format="yyyy-MM-dd"
  80. size="mini"
  81. style="width: 200px"
  82. ></el-date-picker>
  83. </el-form-item>
  84. </el-col>
  85. <el-col :span="1.5">
  86. <el-form-item label="结算单号">
  87. <el-input
  88. v-model.trim="params.settleNo"
  89. size="mini"
  90. clearable
  91. style="width: 200px"
  92. />
  93. </el-form-item>
  94. </el-col>
  95. <el-col :span="1.5">
  96. <el-form-item label="是否汇总">
  97. <el-select style="width: 200px" size="mini" clearable v-model="params.isSum" placeholder="请选择">
  98. <el-option
  99. v-for="item in options"
  100. :key="item.value"
  101. :label="item.label"
  102. :value="item.value">
  103. </el-option>
  104. </el-select>
  105. </el-form-item>
  106. </el-col>
  107. <el-col :span="1.5">
  108. <el-form-item label="汇总单据号">
  109. <el-input
  110. v-model.trim="params.sumCode"
  111. size="mini"
  112. clearable
  113. style="width: 200px"
  114. />
  115. </el-form-item>
  116. </el-col>
  117. <el-col :span="1.5">
  118. <el-form-item label="是否带量">
  119. <el-select style="width: 200px" size="mini" clearable v-model="params.isWhether" placeholder="请选择">
  120. <el-option
  121. v-for="item in options1"
  122. :key="item.value"
  123. :label="item.label"
  124. :value="item.value">
  125. </el-option>
  126. </el-select>
  127. </el-form-item>
  128. </el-col>
  129. <el-col :span="1.5">
  130. <el-form-item label-width="80px">
  131. <el-button type="primary" size="mini" icon="el-icon-search" @click="searchList">搜索</el-button>
  132. <el-button size="mini" plain icon="el-icon-refresh" @click="resetList">重置</el-button>
  133. </el-form-item>
  134. </el-col>
  135. </el-row>
  136. </el-form>
  137. <div class="btn_grooup">
  138. <!-- <el-button type="primary" size="mini" @click="submits">提交</el-button> -->
  139. <el-button type="primary" size="mini" @click="pulldata">下拉数据</el-button>
  140. <el-button type="primary" size="mini" @click="huizong">汇总</el-button>
  141. </div>
  142. <el-super-ux-table
  143. id="data-table"
  144. v-model="tableData"
  145. index
  146. checkbox
  147. :size="size"
  148. :dict="dict"
  149. :page="pageInfo"
  150. :height=500
  151. :columns="TableColumns"
  152. pagination
  153. convenitentOperation
  154. storage-key="expendMxList"
  155. @row-dblclick="useSee"
  156. @row-select="useSelect"
  157. @selection-change="handleSelectionChange"
  158. @row-click="rowSelect"
  159. @pagination="useQuery(params, pageInfo)"
  160. ref="tables"
  161. >
  162. <ux-table-column
  163. fixed="right"
  164. title="操作"
  165. align="center"
  166. width="100"
  167. >
  168. <template slot-scope="scope">
  169. <!-- <el-button type="text" size="mini" v-if="scope.row.status == '1' && scope.row.flowId" @click="reback(scope.row)">收回</el-button> -->
  170. <el-button type="text" size="mini" @click="check(scope.row)">查看</el-button>
  171. <el-button type="text" size="mini" @click="edit(scope.row)">编辑</el-button>
  172. </template>
  173. </ux-table-column>
  174. </el-super-ux-table>
  175. </el-card>
  176. </div>
  177. <Add v-model="isList" v-if="!isList" :pageStu="page" :disable="disable" :row="rowDetail" @refresh="searchList"/>
  178. </div>
  179. </template>
  180. <script>
  181. import { mxList, pullMx, huizongMX, exportMx } from '@/api/expend/expendMx.js'
  182. export default {
  183. dicts: ['sys_status', 'sys_number_yes_no', 'carry_or_not'],
  184. components: {
  185. Add: () => import("./expendMxDetail.vue"),
  186. ElSuperUxTable: () => import("@/components/super-ux-table/index.vue"),
  187. },
  188. data() {
  189. return {
  190. // 页面配置
  191. isList: true,
  192. // 页面状态
  193. page: '',
  194. disable: false,
  195. rowDetail: {},
  196. size: "mini",
  197. loading: false,
  198. options: [{value: '0', label: '是'}, {value: '2', label: '否'}],
  199. options1: [{value: '0', label: '否'}, {value: '1', label: '是'}],
  200. params: {
  201. code: '',
  202. custName: '',
  203. custCode: '',
  204. supplierName: '',
  205. supplierCode: '',
  206. startDate: '',
  207. endDate: '',
  208. settleNo: '',
  209. isSum: '',
  210. sumCode: '',
  211. isWhether: ''
  212. },
  213. pageInfo: {
  214. pageNum: 1,
  215. pageSize: 20,
  216. total: 0
  217. },
  218. tableData: [],
  219. selectData: [],
  220. // SearchColumns: SearchColumns,
  221. TableColumns: [
  222. { item: { key: "code", title: "编码"}, attr: {} },
  223. { item: { key: "verifyState", title: "单据状态"}, attr: {
  224. is: "el-dict-tag",
  225. dictName: "sys_status",
  226. }
  227. },
  228. { item: { key: "serviceFee", title: "服务费合计" }, attr: {} },
  229. { item: { key: "custName", title: "医院名称" }, attr: {} },
  230. { item: { key: "custCode", title: "医院编码" }, attr: {} },
  231. { item: { key: "supplierCode", title: "供应商编码" }, attr: {} },
  232. { item: { key: "supplierName", title: "供应商名称" }, attr: {} },
  233. { item: { key: "isSum", title: "是否汇总" }, attr: {
  234. is: 'el-dict-tag',
  235. dictName: "sys_number_yes_no",
  236. } },
  237. { item: { key: "sumCode", title: "汇总单据号"}, attr: {} },
  238. { item: { key: "isWhether", title: "是否带量" }, attr: {
  239. is: 'el-dict-tag',
  240. dictName: "carry_or_not",
  241. } },
  242. { item: { key: "settleNo", title: "结算单号"}, attr: {} },
  243. { item: { key: "startDate", title: "结算开始日期" }, attr: {} },
  244. { item: { key: "endDate", title: "结算截止日期" }, attr: {} },
  245. { item: { key: "totalAmount", title: "合计金额" }, attr: {} },
  246. { item: { key: "remark", title: "备注"}, attr: {} },
  247. ].map(({ item, attr }) => ({
  248. attr,
  249. item: {
  250. ...item,
  251. sortabled: true,
  252. fixedabled: true,
  253. filterabled: true,
  254. hiddenabled: true,
  255. },
  256. })),
  257. ids: []
  258. }
  259. },
  260. created() {
  261. this.useQuery(this.params, this.pageInfo)
  262. },
  263. methods: {
  264. searchList() {
  265. this.useQuery(this.params, this.pageInfo)
  266. },
  267. resetList() {
  268. this.params = {
  269. code: '',
  270. custName: '',
  271. custCode: '',
  272. supplierName: '',
  273. supplierCode: '',
  274. startDate: '',
  275. endDate: '',
  276. settleNo: '',
  277. sumCode:''
  278. }
  279. this.useQuery(this.params, this.pageInfo)
  280. },
  281. useSee() {},
  282. useSelect() {},
  283. handleSelectionChange(selection) {
  284. console.log('选中', selection)
  285. // this.ids = selection.map(item => item.id)
  286. // console.log('选中数组', this.ids)
  287. this.ids = selection
  288. },
  289. rowSelect(row) {
  290. this.$refs.tables.toggleRowSelection([{row: row}]);
  291. },
  292. async useQuery(prop, page) {
  293. let params = {...prop, ...page}
  294. await mxList(params).then(res => {
  295. if( res.code === 200 ) {
  296. this.tableData = res.rows
  297. this.pageInfo.total = res.total
  298. }
  299. })
  300. },
  301. submits() {
  302. this.isList = false
  303. this.page = 'add'
  304. this.disable = false
  305. },
  306. pulldata() {
  307. this.$modal.loading("正在下拉数据,请稍后...");
  308. pullMx().then(res => {
  309. if(res.code === 200) {
  310. this.$modal.closeLoading();
  311. this.$modal.notifySuccess(res.msg);
  312. this.useQuery(this.params, this.pageInfo)
  313. }
  314. }).catch(err => {
  315. this.$modal.closeLoading();
  316. })
  317. },
  318. huizong() {
  319. console.log('ids', this.ids);
  320. if (this.ids.length <= 0) {
  321. this.$modal.notifyWarning("至少勾选一条数据");
  322. } else {
  323. let map = {
  324. ids: this.ids.map(s => s.id)
  325. }
  326. this.download('/pu/doc/pullToCcd', {...map}, `汇总明细_${new Date().getTime()}.xlsx`)
  327. }
  328. },
  329. check(row) {
  330. this.isList = false
  331. this.page = 'check'
  332. this.rowDetail = row
  333. this.disable = true
  334. },
  335. edit(row) {
  336. this.isList = false
  337. this.page = 'edit'
  338. this.rowDetail = row
  339. this.disable = false
  340. },
  341. }
  342. }
  343. </script>
  344. <style lang="scss" scoped>
  345. #expendMx {
  346. padding: 12px;
  347. box-sizing: border-box;
  348. overflow-y: scroll;
  349. }
  350. .btn_grooup {
  351. margin-bottom: 10px;
  352. display: flex;
  353. justify-content: flex-end;
  354. }
  355. </style>