index.vue 7.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. <template>
  2. <div class="subPage">
  3. <div class="system-table-search">
  4. <div class="flex-h">
  5. <ul class="searchFilterLine" style="white-space: normal;">
  6. <li>
  7. <el-select v-model="postData.caseid" placeholder="请选择案场">
  8. <el-option
  9. v-for="item in cases"
  10. :key="item.CaseId"
  11. :label="item.CaseName"
  12. :value="item.CaseId">
  13. </el-option>
  14. </el-select>
  15. </li>
  16. <li>
  17. <el-select v-model="postData.usertype" placeholder="请选择下单用户类型">
  18. <el-option
  19. v-for="item in typeList"
  20. :key="item.id"
  21. :label="item.value"
  22. :value="item.id">
  23. </el-option>
  24. </el-select>
  25. </li>
  26. <li>
  27. <el-select v-model="postData.status" placeholder="请选择订单状态">
  28. <el-option
  29. v-for="item in statusList"
  30. :key="item.id"
  31. :label="item.value"
  32. :value="item.id">
  33. </el-option>
  34. </el-select>
  35. </li>
  36. <li style="white-space: nowrap;">
  37. <span>下单时间:</span>
  38. <el-date-picker
  39. v-model="postData.begindate"
  40. type="date"
  41. placeholder="选择起始日期">
  42. </el-date-picker>
  43. <span>至</span>
  44. <el-date-picker
  45. v-model="postData.enddate"
  46. type="date"
  47. placeholder="选择截止日期">
  48. </el-date-picker>
  49. </li>
  50. </ul>
  51. </div>
  52. <div class="flex-h">
  53. <div class="flex-item flex-h"></div>
  54. <el-button
  55. size="mini"
  56. type="primary" @click="search">搜索</el-button>
  57. <el-button
  58. size="mini"
  59. type="success" @click="search">导出Excel</el-button>
  60. </div>
  61. <div class="moreFilter"></div>
  62. </div>
  63. <table>
  64. <tr v-for="(item,index) in goodsOrderList.length*2" :key="index">
  65. <td v-if="index%2 === 0" colspan="16" class="title">
  66. <div class="flex-h">
  67. <div class="flex-item" style="text-align:left;">
  68. <span>订单编号:{{returnListItem(goodsOrderList, index).OrdersNo}}</span>
  69. <span>案场:{{returnListItem(goodsOrderList, index).CaseName}}</span>
  70. <span>用户类型:{{returnListItem(goodsOrderList, index).UserType === 'sales' ? '销售' : returnListItem(goodsOrderList, index).UserType === 'manager' ? '主管' : '用户'}}</span>
  71. <span>下单时间:{{toolClass.dateFormat(returnListItem(goodsOrderList, index).CreateDate)}}</span>
  72. </div>
  73. <span>{{returnStatus(returnListItem(goodsOrderList, index).MakeStatus)}}</span>
  74. </div>
  75. </td>
  76. <td v-if="index%2 !== 0" colspan="4" class="noborder">
  77. <span v-for="(subItem,subIndex) in returnListItem(goodsOrderList, index).Details" :key="subIndex">{{subItem.GoodsName}}({{subItem.SpecName}})</span>
  78. </td>
  79. <td v-if="index%2 !== 0" colspan="1" class="noborder">
  80. <span v-for="(subItem,subIndex) in returnListItem(goodsOrderList, index).Details" :key="subIndex">x{{subItem.Number}}</span>
  81. </td>
  82. <td v-if="index%2 !== 0" colspan="1" class="noborder">
  83. <span v-for="(subItem,subIndex) in returnListItem(goodsOrderList, index).Details" :key="subIndex">¥{{subItem.Price}}</span>
  84. </td>
  85. <td v-if="index%2 !== 0" colspan="4">
  86. <span>{{returnListItem(goodsOrderList, index).AreaName}}{{returnListItem(goodsOrderList, index).TableNo}}</span>
  87. </td>
  88. <td v-if="index%2 !== 0" colspan="4">
  89. <span>{{returnListItem(goodsOrderList, index).Name}}/{{returnListItem(goodsOrderList, index).Phone}}</span>
  90. </td>
  91. <td v-if="index%2 !== 0" colspan="2">
  92. <el-button
  93. size="mini"
  94. type="success">重打</el-button>
  95. </td>
  96. </tr>
  97. </table>
  98. <el-pagination
  99. @current-change="handleCurrentChange"
  100. :current-page.sync="postData.page"
  101. :page-size="postData.pagesize"
  102. layout="prev, pager, next, jumper"
  103. :total="total">
  104. </el-pagination>
  105. </div>
  106. </template>
  107. <script>
  108. import { mapState, createNamespacedHelpers } from 'vuex'
  109. import tableSearch from '@/components/tableSearch/index'
  110. const { mapState: mapStaState, mapActions: mapStaActions } = createNamespacedHelpers('sta')
  111. export default {
  112. name: '',
  113. data () {
  114. return {
  115. total: 0,
  116. postData: { // 表格搜索条件
  117. status: '', // 状态
  118. caseid: '', // 案场id
  119. usertype: '', // 用户类型
  120. begindate: '', // 起始日期
  121. enddate: '', // 截止日期
  122. page: 1, // 当前页码
  123. pagesize: 10, // 请求数据量
  124. },
  125. typeList: [{
  126. value: '不限',
  127. id: ''
  128. }, {
  129. value: '销售',
  130. id: 'sales'
  131. }, {
  132. value: '主管',
  133. id: 'manager'
  134. }, {
  135. value: '用户',
  136. id: 'customer'
  137. }],
  138. statusList: [{
  139. value: '不限',
  140. id: ''
  141. }, {
  142. value: '已下单',
  143. id: 'not started'
  144. }, {
  145. value: '制作中',
  146. id: 'doing'
  147. }, {
  148. value: '已完成',
  149. id: 'finished'
  150. }, {
  151. value: '已取消',
  152. id: 'cancel'
  153. }],
  154. }
  155. },
  156. computed: {
  157. ...mapState({
  158. cases: x => x.app.cases.list,
  159. defaultCaseId: x => x.app.cases.default
  160. }),
  161. ...mapStaState({
  162. goodsOrderList: x => x.goodsOrder.list || [],
  163. }),
  164. CaseId: {
  165. get () {
  166. return this.postData.caseid || this.defaultCaseId
  167. },
  168. set (val) {
  169. this.postData.caseid = val
  170. }
  171. }
  172. },
  173. components: {
  174. tableSearch,
  175. },
  176. mounted () {
  177. this.$nextTick(function () {
  178. this.getList()
  179. })
  180. },
  181. methods: {
  182. ...mapStaActions([
  183. 'getGoodsOrderList',
  184. ]),
  185. returnStatus (val) {
  186. switch (val) {
  187. case 'not started':
  188. return '已下单'
  189. case 'doing':
  190. return '制作中'
  191. case 'finished':
  192. return '已完成'
  193. case 'cancel':
  194. return '已取消'
  195. }
  196. },
  197. returnListItem (target, index) {
  198. return target[Math.ceil((index + 1) / 2) - 1]
  199. },
  200. search () { // 搜索
  201. this.page = 1
  202. this.getList()
  203. },
  204. handleCurrentChange (val) { // 跳转到分页
  205. this.page = val
  206. this.getList()
  207. },
  208. getList () {
  209. this.getGoodsOrderList(this.postData).then((res) => {
  210. // console.log(JSON.stringify(res))
  211. this.postData.page = res.page
  212. this.total = res.total
  213. })
  214. },
  215. }
  216. }
  217. </script>
  218. <!-- Add "scoped" attribute to limit CSS to this component only -->
  219. <style lang="scss" scoped>
  220. @import "page.scss";
  221. .searchFilterLine {
  222. > li {
  223. margin-bottom: 20px;
  224. }
  225. }
  226. </style>