index.vue 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. <template>
  2. <template-page ref="pageRef" :get-list="getList" :table-attributes="tableAttributes" :table-events="tableEvents"
  3. :operationColumnWidth="80" :options-evens-group="optionsEvensGroup" :moreParameters="moreParameters"
  4. :column-parsing="columnParsing" :operation="operation()" :exportList="exportList">
  5. <div slot="moreSearch">
  6. <el-radio-group v-model="poolStatus" size="mini" @change="changeType">
  7. <el-radio-button label="">全部</el-radio-button>
  8. <el-radio-button label="NO">未汇总</el-radio-button>
  9. <el-radio-button label="YES">已汇总</el-radio-button>
  10. </el-radio-group>
  11. <br><br>
  12. </div>
  13. <el-dialog title="" width="600px" custom-class="diy-dialog" append-to-body :modal="true" :visible.sync="formDialog"
  14. :show-close="true" :close-on-click-modal="false" :modal-append-to-body="false" :before-close="formCancel">
  15. <zj-form-container ref="formRef" :form-data="formData" :styleSwitch="false">
  16. <zj-form-module :title="formDialogTitles[formDialogType]" label-width="120px" :showPackUp="false"
  17. :form-data="formData" :form-items="formItems" :disabled="formDialogType == 2">
  18. </zj-form-module>
  19. </zj-form-container>
  20. <div slot="footer" class="dialog-footer">
  21. <el-button size="mini" @click="formCancel">取 消</el-button>
  22. <el-button size="mini" v-if="formDialogType !== 2" type="primary" @click="formConfirm()">提交</el-button>
  23. </div>
  24. </el-dialog>
  25. </template-page>
  26. </template>
  27. <script>
  28. import TemplatePage from '@/components/template/template-page-1.vue'
  29. import import_mixin from '@/components/template/import_mixin.js'
  30. import ImageUpload from '@/components/file-upload'
  31. import { required, mobileRequired, mobile, httpUrl, email } from '@/components/template/rules_verify.js'
  32. import { listPageV2, pageExport, pool } from "@/api/workOrder/settleAccountsOrder";
  33. import operation_mixin from '@/components/template/operation_mixin.js'
  34. export default {
  35. components: { TemplatePage, ImageUpload },
  36. mixins: [import_mixin, operation_mixin],
  37. data() {
  38. return {
  39. // 表格属性
  40. tableAttributes: {
  41. // 启用勾选列
  42. selectColumn: false
  43. },
  44. // 表格事件
  45. tableEvents: {
  46. 'selection-change': this.selectionChange
  47. },
  48. // 勾选选中行
  49. recordSelected: [],
  50. /** 表单变量 */
  51. formDialogType: 0,
  52. formDialogTitles: ["汇总"],
  53. formDialog: false,
  54. type: JSON.parse(localStorage.getItem('greemall_user')).type, //type=1商户, type=0网点
  55. formData: {
  56. companyName: JSON.parse(localStorage.getItem('greemall_user')).companyName,
  57. month: (new Date().getFullYear()) + '-' + ((new Date().getMonth() + 1) > 9 ? (new Date().getMonth() + 1) : ('0' + (new Date().getMonth() + 1))),
  58. createdTime: [],
  59. starDate: '',
  60. endDate: '',
  61. },
  62. poolStatus: ''
  63. }
  64. },
  65. computed: {
  66. // 事件组合
  67. optionsEvensGroup() {
  68. return [
  69. [
  70. [
  71. this.optionsEvensAuth("collect", {
  72. click: this.poolData
  73. })
  74. ]
  75. ]
  76. ]
  77. },
  78. // 更多参数
  79. moreParameters() {
  80. return []
  81. },
  82. formItems() {
  83. return [{
  84. md: 24,
  85. isShow: true,
  86. name: 'el-input',
  87. attributes: { placeholder: '请输入', disabled: true },
  88. formItemAttributes: {
  89. label: '所属商户',
  90. prop: 'companyName',
  91. rules: [...required]
  92. },
  93. }, {
  94. md: 24,
  95. isShow: true,
  96. name: 'el-input',
  97. attributes: { placeholder: '请输入', disabled: true },
  98. formItemAttributes: {
  99. label: '月份',
  100. prop: 'month',
  101. rules: [...required]
  102. }
  103. }, {
  104. md: 24,
  105. isShow: true,
  106. name: 'slot-component',
  107. attributes: { placeholder: '请选择', },
  108. formItemAttributes: {
  109. label: '创建结算单时间',
  110. prop: 'createdTime',
  111. rules: [...required]
  112. },
  113. render: (h, { props, onInput }) => {
  114. var { value } = props
  115. return (
  116. <el-date-picker
  117. v-model={this.formData.createdTime}
  118. type="daterange"
  119. range-separator="至"
  120. value-format="yyyy-MM-dd"
  121. start-placeholder="开始日期"
  122. end-placeholder="结束日期"
  123. onChange={e => {
  124. this.formData.starDate = e[0]
  125. this.formData.endDate = e[1]
  126. }}>
  127. </el-date-picker>
  128. )
  129. }
  130. }]
  131. }
  132. },
  133. methods: {
  134. // 切换状态
  135. changeType(val) {
  136. this.$refs.pageRef.refreshList()
  137. },
  138. // 列表请求函数
  139. getList(p, cb) {
  140. try {
  141. var pam = JSON.parse(JSON.stringify(p))
  142. pam.params.push({ 'param': 'a.pool_status', "compare": "=", "value": this.poolStatus })
  143. cb && cb(pam)
  144. return listPageV2(pam)
  145. } catch (error) {
  146. console.log(error)
  147. }
  148. },
  149. // 列表导出函数
  150. exportList: pageExport,
  151. // 表格列解析渲染数据更改
  152. columnParsing(item, defaultData) {
  153. return defaultData
  154. },
  155. // 监听勾选变化
  156. selectionChange(data) {
  157. this.recordSelected = data
  158. },
  159. operation() {
  160. return this.operationBtn({
  161. detail: {
  162. click: ({ row, index, column }) => {
  163. if (row.settleOrderType == 'EXAMINE') {
  164. this.$router.push({
  165. name: "rewardsPunishmentsOrder",
  166. query: {
  167. id: row.examineProjectId
  168. }
  169. })
  170. } else {
  171. this.$router.push({
  172. name: "workOrderPool",
  173. query: {
  174. id: row.orderBaseId,
  175. activeName: "SettleAccounts",
  176. }
  177. })
  178. }
  179. }
  180. }
  181. })
  182. },
  183. poolData() {
  184. this.formDialogType = 0
  185. this.openForm()
  186. },
  187. openForm() {
  188. this.formDialog = true;
  189. },
  190. formCancel() {
  191. this.$refs.formRef.$refs.inlineForm.clearValidate()
  192. this.$data.formData = this.$options.data().formData
  193. this.formDialog = false
  194. },
  195. formConfirm() {
  196. this.$refs.formRef.validate((valid, invalidFields, errLabels) => {
  197. if (valid) {
  198. pool({
  199. starDate: this.formData.starDate + ' 00:00:00',
  200. endDate: this.formData.endDate + ' 23:59:59',
  201. month: this.formData.month
  202. }).then(res => {
  203. this.$message({ type: 'success', message: `${this.formDialogTitles[this.formDialogType]}成功!` })
  204. this.formCancel()
  205. this.$refs.pageRef.refreshList()
  206. })
  207. }
  208. })
  209. }
  210. }
  211. }
  212. </script>
  213. <style lang="scss" scoped>
  214. .tab {
  215. padding: 20px 20px 0 20px;
  216. }
  217. </style>