index.vue 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. <template>
  2. <!-- 工单池 -->
  3. <template-page ref="pageRef" :getList="getList" :operation="operation" :exportList="exportList"
  4. :optionsEvensGroup="optionsEvensGroup" :columnParsing="columnParsing" :tableAttributes="tableAttributes"
  5. :tableEvents="tableEvents" :moreParameters="moreParameters" :screeningAnalysis="screeningAnalysis"
  6. :filterMethod="filterMethod">
  7. <!-- 创建工单 -->
  8. <div class="cartographer_big">
  9. <el-dialog title="创建工单" width="100%" :modal="false" :visible.sync="createFormBool" :before-close="handleClose">
  10. <workOrderInfo v-if="createFormBool" />
  11. </el-dialog>
  12. </div>
  13. <!-- 工单详情 -->
  14. <div class="cartographer_big">
  15. <el-dialog title="工单详情" width="100%" :modal="false" :visible.sync="detailFormBool" :before-close="handleClose">
  16. <Detail v-if="detailFormBool" :id="id" />
  17. </el-dialog>
  18. </div>
  19. <!-- 批量预约/改约 -->
  20. <!-- <div class="cartographer_big">
  21. <el-dialog title="批量预约" width="100%" :modal="false" :visible.sync="false" :before-close="() => { }">
  22. </el-dialog>
  23. </div> -->
  24. <!-- 批量派工/改派 -->
  25. <!-- <div class="cartographer_big">
  26. <el-dialog title="批量派工" width="100%" :modal="false" :visible.sync="false" :before-close="() => { }">
  27. </el-dialog>
  28. </div> -->
  29. </template-page>
  30. </template>
  31. <script>
  32. import { EventBus } from '@/utils/eventBus'
  33. import TemplatePage from '@/components/template/template-page-1.vue'
  34. import import_mixin from '@/components/template/import_mixin.js'
  35. import workOrderInfo from './detailModule/workOrderInfo/index.vue'
  36. import Detail from './detail'
  37. import { orderBaseList, orderBaseListExport, orderBaseStatusCount } from "@/api/workOrderPool.js"
  38. import { listPageV2 } from "@/api/workOrder/orderType";
  39. export default {
  40. components: {
  41. TemplatePage,
  42. workOrderInfo,
  43. Detail,
  44. },
  45. mixins: [import_mixin],
  46. data() {
  47. return {
  48. id: this.$route.query.id || '',
  49. // 创建表单
  50. createFormBool: false,
  51. // 详情
  52. detailFormBool: false,
  53. // 表格属性
  54. tableAttributes: {
  55. // 启用勾选列
  56. selectColumn: true
  57. },
  58. // 表格事件
  59. tableEvents: {
  60. 'selection-change': this.selectionChange
  61. },
  62. recordSelected: [],
  63. orderTypeList: []
  64. }
  65. },
  66. computed: {
  67. moreParameters() {
  68. return [
  69. {
  70. name: '工单类型',
  71. key: 'orderType',
  72. value: '',
  73. conditions: [{
  74. label: "全部",
  75. value: ""
  76. }, ...this.orderTypeList]
  77. },
  78. {
  79. name: '工单状态',
  80. key: 'orderStatus',
  81. value: '',
  82. conditions: [{
  83. label: "全部",
  84. value: ""
  85. }, {
  86. label: "待预约",
  87. value: "DYY"
  88. }, {
  89. label: "待商户派工",
  90. value: "DSHPG"
  91. }, {
  92. label: "待网点派工",
  93. value: "DWDPG"
  94. }, {
  95. label: "待接单",
  96. value: "DJD"
  97. }, {
  98. label: "服务中",
  99. value: "FWZ"
  100. }, {
  101. label: "异常单",
  102. value: "YCD"
  103. }, {
  104. label: "已完工待结算",
  105. value: "YWG"
  106. }, {
  107. label: "已结算",
  108. value: "YJS"
  109. }, {
  110. label: "已取消",
  111. value: "YQX"
  112. }]
  113. }
  114. ]
  115. },
  116. // 用户信息
  117. userInfo() {
  118. return JSON.parse(localStorage.getItem('greemall_user'))
  119. },
  120. // 事件组合
  121. optionsEvensGroup() {
  122. return [
  123. [
  124. [
  125. {
  126. name: '创建工单',
  127. click: () => {
  128. this.createFormBool = true
  129. }
  130. },
  131. ],
  132. [
  133. {
  134. name: '批量操作',
  135. click: () => { }
  136. },
  137. {
  138. name: '批量下派工程师',
  139. click: () => {
  140. }
  141. },
  142. {
  143. name: '批量改约',
  144. click: () => {
  145. }
  146. },
  147. ],
  148. ]
  149. ]
  150. }
  151. },
  152. created() {
  153. EventBus.$on('handleOrderClone', () => {
  154. this.handleClose()
  155. })
  156. // 获取工单类型
  157. listPageV2({ "pageNum": 1, "pageSize": -1, "params": [{ "param": "a.status", "compare": "=", "value": "true" }] }).then(res => {
  158. this.orderTypeList = res.data.records.map(item => ({
  159. value: item.id,
  160. label: item.orderSmallTypeText
  161. }))
  162. })
  163. },
  164. methods: {
  165. screeningAnalysis(jname, val) {
  166. if (jname == 'orderFlags') {
  167. return (val || []).map(item => item.tagName).join(',')
  168. } else {
  169. return val
  170. }
  171. },
  172. filterMethod(value, row, column) {
  173. if (column['property'] == 'orderFlags') {
  174. return (row[column['property']] || []).map(item => item.tagName).join(',') === value
  175. }
  176. return row[column['property']] === value
  177. },
  178. handleClose() {
  179. // this.$router.push({
  180. // name: "workOrderPool",
  181. // params: {},
  182. // query: {}
  183. // })
  184. this.$nextTick(() => {
  185. this.createFormBool = false
  186. this.detailFormBool = false
  187. this.$refs?.pageRef?.refreshList()
  188. })
  189. },
  190. // 列表请求函数
  191. getList(p, cb) {
  192. try {
  193. var pam = JSON.parse(JSON.stringify(p))
  194. if (pam.orderStatus) {
  195. pam.params.push({ "param": "a.order_status", "compare": "=", "value": pam.orderStatus })
  196. }
  197. if (pam.orderType) {
  198. pam.params.push({ "param": "a.order_type", "compare": "=", "value": pam.orderType })
  199. }
  200. cb && cb(pam)
  201. return orderBaseList(pam)
  202. } catch (err) {
  203. } finally {
  204. this.$nextTick(() => {
  205. orderBaseStatusCount().then(res => {
  206. console.log(res)
  207. })
  208. })
  209. }
  210. },
  211. // 列表导出函数
  212. exportList: orderBaseListExport,
  213. // 表格列解析渲染数据更改
  214. columnParsing(item, defaultData) {
  215. return defaultData
  216. },
  217. // 监听勾选变化
  218. selectionChange(data) {
  219. this.recordSelected = data
  220. },
  221. operation(h, { row, index, column }) {
  222. return (
  223. <div class='operation-btns'>
  224. <el-button type="text" onClick={() => {
  225. this.id = row.id
  226. this.$nextTick(() => {
  227. this.detailFormBool = true
  228. })
  229. }}>编辑</el-button>
  230. </div>
  231. )
  232. }
  233. }
  234. }
  235. </script>
  236. <style>
  237. #pane-workOrderInfo {
  238. width: 100%;
  239. height: 100%;
  240. }
  241. </style>
  242. <style lang="scss" scoped>
  243. .worker {
  244. display: flex;
  245. justify-content: space-between;
  246. .worker_left {
  247. font-size: 12px;
  248. font-weight: 400;
  249. text-align: left;
  250. color: #666;
  251. line-height: 28px;
  252. margin-right: 10px;
  253. }
  254. .worker_right {
  255. flex: 1;
  256. ::v-deep .el-button {
  257. margin: 0 10px 10px 0px;
  258. }
  259. }
  260. }
  261. .creatOrderPopuc {
  262. ::v-deep &>.zj-page-container {
  263. height: calc(100vh - 165px) !important;
  264. }
  265. }
  266. </style>