index.vue 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. <template>
  2. <div class="list-container">
  3. <el-row :gutter="10" style="margin-bottom: 10px">
  4. <el-col :span="4">
  5. <el-input v-model="queryForm.mainProduct" placeholder="主营产品" />
  6. </el-col>
  7. <el-col :span="12">
  8. <el-button icon="el-icon-plus" type="primary" @click="restFetchData">查询</el-button>
  9. <el-button icon="el-icon-refresh-right" @click="reset">重置</el-button>
  10. </el-col>
  11. </el-row>
  12. <vab-query-form>
  13. <vab-query-form-left-panel :span="12">
  14. <el-button
  15. v-permissions="['work:order:add']"
  16. icon="el-icon-plus"
  17. size="mini"
  18. type="primary"
  19. @click="createOrder(0, 'add')">
  20. 新建
  21. </el-button>
  22. </vab-query-form-left-panel>
  23. <!-- <vab-query-form-right-panel :span="12">
  24. <table-tool :columns="columns" table-type="deliverWorkOrderTable" />
  25. </vab-query-form-right-panel> -->
  26. </vab-query-form>
  27. <el-table ref="table" v-loading="listLoading" border :data="list" :height="$baseTableHeight(2)">
  28. <el-table-column align="center" label="序号" show-overflow-tooltip width="80">
  29. <template #default="{ $index }">
  30. {{ $index + 1 }}
  31. </template>
  32. </el-table-column>
  33. <el-table-column
  34. v-for="(item, index) in columns"
  35. :key="index"
  36. align="center"
  37. :label="item.label"
  38. :prop="item.prop"
  39. show-overflow-tooltip
  40. :sortable="item.sortable"
  41. :width="item.width">
  42. <template #default="{ row }">
  43. <span v-if="item.prop === 'trainingDate'">
  44. {{ parseTime(row.trainingDate, '{y}-{m}-{d}') }}
  45. </span>
  46. <span v-else-if="item.prop === 'specificTime'">
  47. {{ parseTime(row.specificStartTime, '{y}-{m}-{d} {h}:{m}:{s}') }} -
  48. {{ parseTime(row.specificEndTime, '{y}-{m}-{d} {h}:{m}:{s}') }}
  49. </span>
  50. <span v-else>{{ row[item.prop] }}</span>
  51. </template>
  52. </el-table-column>
  53. <el-table-column align="center" fixed="right" label="操作" width="120">
  54. <template #default="{ row }">
  55. <el-button type="text" @click="handleDetail(row)">查看</el-button>
  56. <el-button type="text" @click="createOrder(row, 'edit')">编辑</el-button>
  57. <el-button v-if="row.assess == 'yes'" type="text" @click="handleFinish(row)">总结</el-button>
  58. </template>
  59. </el-table-column>
  60. <template #empty>
  61. <el-image class="vab-data-empty" :src="require('@/assets/empty_images/data_empty.png')" />
  62. </template>
  63. </el-table>
  64. <el-pagination
  65. background
  66. :current-page="queryForm.pageNum"
  67. :layout="layout"
  68. :page-size="queryForm.pageSize"
  69. :total="total"
  70. @current-change="handleCurrentChange"
  71. @size-change="handleSizeChange" />
  72. <!--反馈-->
  73. <finish ref="finish" @fetch-data="restFetchData" />
  74. <!-- 创建工单 -->
  75. <order-edit ref="order-edit" @fetch-data="restFetchData" />
  76. <!-- 详情 -->
  77. <Details ref="details" />
  78. </div>
  79. </template>
  80. <script>
  81. import to from 'await-to-js'
  82. import Api from '@/api/work/trainSale'
  83. import Finish from './components/finish'
  84. import { mapGetters } from 'vuex'
  85. import orderEdit from '@/views/work/train/sale/components/Edit'
  86. import Details from '@/views/work/train/sale/components/details'
  87. export default {
  88. name: 'WorkOrder',
  89. components: { Finish, Details, orderEdit },
  90. data() {
  91. return {
  92. activeName: 'first',
  93. layout: 'total, sizes, prev, pager, next, jumper',
  94. queryForm: {
  95. distributorId: 0,
  96. mainProduct: '',
  97. pageNum: 1,
  98. pageSize: 10,
  99. },
  100. total: 0,
  101. listLoading: false,
  102. list: [],
  103. selectRows: [],
  104. columns: [
  105. {
  106. label: '渠道名称',
  107. width: '160px',
  108. prop: 'distributorName',
  109. },
  110. {
  111. label: '主营产品',
  112. width: '280px',
  113. prop: 'mainProduct',
  114. },
  115. {
  116. label: '主要客户',
  117. width: '280px',
  118. prop: 'mainCustomer',
  119. },
  120. {
  121. label: '参训人员',
  122. width: '100px',
  123. prop: 'trainees',
  124. },
  125. {
  126. label: '培训日期',
  127. width: '100px',
  128. prop: 'trainingDate',
  129. },
  130. {
  131. label: '具体时间',
  132. width: '300px',
  133. prop: 'specificTime',
  134. },
  135. {
  136. label: '培训主题',
  137. width: '280px',
  138. prop: 'trainTitle',
  139. },
  140. {
  141. label: '讲师要求',
  142. width: '120px',
  143. prop: 'instructorRequire',
  144. },
  145. {
  146. label: '渠道关注要点,讲解需求',
  147. width: '280px',
  148. prop: 'focusPoint',
  149. },
  150. ],
  151. deliveryStatusOptions: [],
  152. productLineOptions: [],
  153. }
  154. },
  155. computed: {
  156. ...mapGetters({
  157. userId: 'user/id',
  158. }),
  159. },
  160. activated() {
  161. this.fetchData()
  162. },
  163. mounted() {
  164. this.fetchData()
  165. },
  166. methods: {
  167. // 创建工单
  168. createOrder(val, type) {
  169. this.$refs['order-edit'].showEdit(val, type)
  170. },
  171. restFetchData() {
  172. this.queryForm.pageNum = 1
  173. this.fetchData()
  174. },
  175. async fetchData() {
  176. this.listLoading = true
  177. const params = { ...this.queryForm }
  178. const [err, res] = await to(Api.getList({ ...params }))
  179. this.listLoading = false
  180. if (err) return (this.listLoading = false)
  181. if (res.code == 200 && res.data) {
  182. this.list = res.data.list || []
  183. this.total = res.data.total
  184. }
  185. this.$nextTick(() => this.$refs.table.doLayout())
  186. },
  187. handleFinish(row) {
  188. this.$refs['finish'].showEdit(row)
  189. },
  190. //详情
  191. handleDetail(row) {
  192. this.$refs['details'].open(row)
  193. },
  194. reset() {
  195. this.queryForm = {
  196. pageNum: 1,
  197. pageSize: 10,
  198. distributorId: 0,
  199. mainProduct: '',
  200. }
  201. this.fetchData()
  202. },
  203. handleSizeChange(val) {
  204. this.queryForm.pageSize = val
  205. this.fetchData()
  206. },
  207. handleCurrentChange(val) {
  208. this.queryForm.pageNum = val
  209. this.fetchData()
  210. },
  211. },
  212. }
  213. </script>
  214. <style lang="scss" scoped>
  215. $base: '.list';
  216. </style>