index.vue 6.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <template>
  2. <div class="subPage">
  3. <div class="system-table-search">
  4. <div class="flex-h">
  5. <div class="flex-item flex-h"></div>
  6. <ul>
  7. <li>
  8. <el-select v-model="valueCase" placeholder="请选择案场" @change="handelSignin">
  9. <el-option
  10. key="all"
  11. label="所有案场"
  12. value="all">
  13. </el-option>
  14. <el-option
  15. v-for="item in optionsCase"
  16. :key="item.valueCase"
  17. :label="item.label"
  18. :value="item.valueCase">
  19. </el-option>
  20. </el-select>
  21. </li>
  22. <li>
  23. <el-select v-model="valueTime" placeholder="请选择时间">
  24. <el-option
  25. v-for="item in optionsTime"
  26. :key="item.valueTime"
  27. :label="item.label"
  28. :value="item.valueTime">
  29. </el-option>
  30. </el-select>
  31. </li>
  32. </ul>
  33. <el-button
  34. size="mini"
  35. type="primary" @click="getList">搜索</el-button>
  36. <el-button
  37. size="mini"
  38. type="success" @click="excelSignin">导出excel</el-button>
  39. </div>
  40. <div class="moreFilter"></div>
  41. </div>
  42. <!-- 表格 -->
  43. <div class="content">
  44. <el-table
  45. :data="tableData"
  46. border
  47. style="width: 100%">
  48. <el-table-column
  49. prop="CaseName"
  50. label="案场"
  51. width="180">
  52. </el-table-column>
  53. <el-table-column
  54. prop="CreateDate"
  55. label="签到时间"
  56. width="250">
  57. <template slot-scope="scope">
  58. <span>{{FormatDate(scope.row.CreateDate)}}</span>
  59. </template>
  60. </el-table-column>
  61. <el-table-column
  62. prop="CustomerName"
  63. label="微信昵称">
  64. </el-table-column>
  65. <el-table-column
  66. prop="Name"
  67. label="客户姓名">
  68. </el-table-column>
  69. <el-table-column
  70. prop="address"
  71. label="客户类型">
  72. <template slot-scope="scope">
  73. <span>{{scope.row.UserId === '' ? '前台用户' : '后台用户'}}</span>
  74. </template>
  75. </el-table-column>
  76. <el-table-column
  77. prop="Phone"
  78. label="手机号">
  79. </el-table-column>
  80. </el-table>
  81. </div>
  82. <!-- 分页 -->
  83. <div class="foot">
  84. <el-pagination
  85. @size-change="handleSizeChange"
  86. @current-change="handleCurrentChange"
  87. :current-page.sync="postData.page"
  88. :page-size="100"
  89. layout="prev, pager, next, jumper"
  90. :total="total">
  91. </el-pagination>
  92. </div>
  93. </div>
  94. </template>
  95. <script>
  96. import { mapState } from 'vuex'
  97. export default {
  98. name: '',
  99. data () {
  100. return {
  101. msg: '签到管理',
  102. currentPage: 1,
  103. postData: { // 表格搜索条件 //caseid: '', // 案场id
  104. page: 1, // 当前页码
  105. pageSize: 10, // 请求数据量
  106. },
  107. total: 0, // 总数
  108. // 数据体
  109. // {date: '2016-05-02',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄'}
  110. tableData: [],
  111. // 时间数据
  112. optionsTime: [{
  113. valueTime: '-1',
  114. label: '全部'
  115. }, {
  116. valueTime: '0',
  117. label: '今天'
  118. }, {
  119. valueTime: '1',
  120. label: '本周'
  121. }, {
  122. valueTime: '2',
  123. label: '本月'
  124. }, {
  125. valueTime: '3',
  126. label: '今年'
  127. }],
  128. valueTime: '0',
  129. // 案场数据
  130. // {valueCase: '1',label: '案场1'}
  131. optionsCase: [], // 调用computed计算属性
  132. tempoptionsCase: [], // 临时的存储案场数据
  133. valueCase: ''
  134. }
  135. },
  136. mounted () {
  137. // 获取案场列表
  138. this.getCase()
  139. },
  140. methods: {
  141. handleSizeChange (val) {
  142. console.log(`每页 ${val} 条`)
  143. },
  144. handleCurrentChange (val) {
  145. console.log(`当前页: ${val}`)
  146. this.$data.postData.page = val
  147. this.getList()
  148. },
  149. getList () { // 获取数据列表
  150. this.$ajax(this.$api.caseManager.getSignin.url, {
  151. method: this.$api.caseManager.getSignin.method,
  152. queryData: { ...this.postData, org: this.$data.valueCase, selectType: this.$data.valueTime }
  153. }).then(res => {
  154. this.tableData = res.list
  155. this.postData.page = res.page
  156. this.total = res.pagenum
  157. })
  158. },
  159. getCase () { // 获取案场数据列表
  160. this.$ajax(this.$api.caseManager.getCaseList.url, {
  161. method: this.$api.caseManager.getCaseList.method,
  162. queryData: { ...this.postData, caseid: this.CaseId === 'all' ? '' : this.CaseId }
  163. }).then(res => {
  164. this.tempoptionsCase = res.list
  165. this.postData.page = res.page
  166. this.total = res.pagenum
  167. // 调用一次,计算属性
  168. this.optionsCase = this.CaseCompted
  169. })
  170. },
  171. handelSignin () { // 查询签到记录
  172. this.getList()
  173. },
  174. reset () { // 重置按钮
  175. this.$data.valueTime = '0'
  176. this.$data.total = ''
  177. this.$data.tableData = []
  178. this.$data.postData.page = 1
  179. this.$data.postData.pageSize = 10
  180. this.$data.valueCase = ''
  181. },
  182. FormatDate (date) {
  183. return this.toolClass.dateFormat(date, 'yyyy-MM-dd hh:mm:ss')
  184. },
  185. excelSignin () { // 导出Excel
  186. window.open(`${this.toolClass.ReplaceOrg(this.$api.caseManager.getExcelSignin.url)}?token=${localStorage.getItem('JWT')}&selectType=${this.$data.valueTime}&caseid=${this.$data.valueCase}`, '_blank')
  187. }
  188. },
  189. computed: {
  190. ...mapState({
  191. cases: x => x.app.cases.list,
  192. defaultCaseId: x => x.app.cases.default
  193. }),
  194. CaseId: {
  195. get () {
  196. return this.postData.caseid || this.defaultCaseId
  197. },
  198. set (val) {
  199. this.postData.caseid = val
  200. }
  201. },
  202. CaseCompted: {
  203. get () { // get方法
  204. let data = []
  205. console.log('数据大小')
  206. console.log(this.$data.tempoptionsCase)
  207. var cases = this.$data.tempoptionsCase
  208. for (let i = 0; i < cases.length; i++) {
  209. let obj = []
  210. obj.valueCase = cases[i].CaseId
  211. obj.label = cases[i].CaseName
  212. console.log('编号:' + obj.valueCase + '名称:' + obj.label)
  213. data.push(obj)
  214. }
  215. return data
  216. }
  217. }
  218. }
  219. }
  220. </script>
  221. <style lang="scss" scoped>
  222. @import "page.scss";
  223. </style>