user-dialog.vue 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <template>
  2. <el-dialog
  3. title="选择用户"
  4. :visible.sync="dialogVisible"
  5. width="80%"
  6. :before-close="handleClose"
  7. >
  8. <div>
  9. <el-form
  10. :model="queryParams"
  11. ref="queryForm"
  12. size="small"
  13. :inline="true"
  14. label-width="120px"
  15. >
  16. <el-form-item label="" prop="key">
  17. <el-input
  18. v-model="queryParams.key"
  19. placeholder="请输入用户ID,用户昵称搜索"
  20. clearable
  21. style="width: 240px"
  22. @keyup.enter.native="handleQuery"
  23. />
  24. </el-form-item>
  25. <el-form-item label="浏览记录" prop="browseFlag">
  26. <el-select
  27. v-model="queryParams.browseFlag"
  28. placeholder="请选择浏览记录"
  29. style="width: 240px"
  30. >
  31. <el-option label="全部" value=""> </el-option>
  32. <el-option label="7天内浏览用户" value="7"> </el-option>
  33. <el-option label="30天内浏览用户" value="30"> </el-option>
  34. <el-option label="半年内浏览用户" value="180"> </el-option>
  35. <el-option label="一年内浏览用户" value="365"> </el-option>
  36. </el-select>
  37. </el-form-item>
  38. <el-form-item label="下单记录" prop="orderFlag">
  39. <el-select
  40. v-model="queryParams.orderFlag"
  41. placeholder="请选择下单记录"
  42. style="width: 240px"
  43. >
  44. <el-option label="全部" value=""> </el-option>
  45. <el-option label="30天内下单用户" value="30"> </el-option>
  46. <el-option label="半年内下单用户" value="180"> </el-option>
  47. <el-option label="一年内下单用户" value="365"> </el-option>
  48. </el-select>
  49. </el-form-item>
  50. <el-form-item label="推送状态" prop="pushStatus">
  51. <el-select
  52. v-model="queryParams.pushStatus"
  53. placeholder="请选择推送状态"
  54. style="width: 240px"
  55. >
  56. <el-option label="全部" value=""> </el-option>
  57. <el-option label="未推送" value="0"> </el-option>
  58. <el-option label="已推送" value="1"> </el-option>
  59. </el-select>
  60. </el-form-item>
  61. <el-form-item label="领取状态" prop="receiveStatus">
  62. <el-select
  63. v-model="queryParams.receiveStatus"
  64. placeholder="请选择领取状态"
  65. style="width: 240px"
  66. >
  67. <el-option label="全部" value=""> </el-option>
  68. <el-option label="未领取" value="0"> </el-option>
  69. <el-option label="已领取" value="1"> </el-option>
  70. </el-select>
  71. </el-form-item>
  72. <el-form-item>
  73. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
  74. >搜索</el-button
  75. >
  76. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
  77. >重置</el-button
  78. >
  79. </el-form-item>
  80. </el-form>
  81. <el-table
  82. v-loading="loading"
  83. :data="tableList"
  84. @selection-change="handleSelectionChange"
  85. row-key="id"
  86. >
  87. <el-table-column type="selection" width="55" align="center" />
  88. <el-table-column label="用户ID" align="center" prop="id" />
  89. <el-table-column label="用户头像" align="center">
  90. <template slot-scope="scope">
  91. <el-image
  92. style="width: 60px; height: 60px"
  93. :src="scope.row.headUrl"
  94. :preview-src-list="[scope.row.headUrl]"
  95. >
  96. </el-image>
  97. </template>
  98. </el-table-column>
  99. <el-table-column label="用户昵称" align="center" prop="nick" />
  100. <el-table-column label="浏览记录" align="center" prop="browseRecord">
  101. <template slot-scope="scope">
  102. {{
  103. scope.row.browseRecord
  104. ? $moment(Number(scope.row.browseRecord)).format("yyyy-MM-DD HH:mm:ss")
  105. : ""
  106. }}
  107. </template>
  108. </el-table-column>
  109. <!-- <el-table-column label="距离" align="center" width="120" /> -->
  110. <el-table-column label="下单记录" align="center" prop="orderRecord">
  111. <template slot-scope="scope">
  112. {{
  113. scope.row.orderRecord
  114. ? $moment(Number(scope.row.orderRecord)).format("yyyy-MM-DD HH:mm:ss")
  115. : ""
  116. }}
  117. </template>
  118. </el-table-column>
  119. <el-table-column label="近期推送记录" align="center" prop="topicName" />
  120. </el-table>
  121. <pagination
  122. v-show="total > 0"
  123. :total="total"
  124. :page.sync="queryParams.pageNo"
  125. :limit.sync="queryParams.pageSize"
  126. @pagination="getList"
  127. />
  128. </div>
  129. <span slot="footer" class="dialog-footer">
  130. <el-button @click="dialogVisible = false">取 消</el-button>
  131. <el-button type="primary" @click="dialogSubmit">确 定</el-button>
  132. </span>
  133. </el-dialog>
  134. </template>
  135. <script>
  136. import moment from "moment";
  137. import * as markApi from "@/api/marketing/index";
  138. export default {
  139. data() {
  140. return {
  141. dialogVisible: false,
  142. queryParams: {
  143. browseFlag: "",
  144. pageNo: 1,
  145. pageSize: 5,
  146. orderFlag: "",
  147. key: "",
  148. pushStatus: "",
  149. receiveStatus: "",
  150. },
  151. total: 0,
  152. loading: false,
  153. tableList: [],
  154. multipleSelection: [],
  155. };
  156. },
  157. methods: {
  158. handleSelectionChange(val) {
  159. this.multipleSelection = val;
  160. },
  161. dialogSubmit() {
  162. this.$emit("productDialogInfo", this.multipleSelection);
  163. this.handleClose();
  164. },
  165. resetQuery() {
  166. this.resetForm("queryForm");
  167. this.handleQuery();
  168. },
  169. handleQuery() {
  170. this.getList();
  171. },
  172. /** 查询参数列表 */
  173. getList() {
  174. this.loading = true;
  175. markApi.selectUserMsg(this.queryParams).then((res) => {
  176. this.tableList = res.data.records;
  177. this.total = res.data.total;
  178. this.loading = false;
  179. });
  180. },
  181. handleClose() {
  182. this.dialogVisible = false;
  183. },
  184. openDialog() {
  185. this.dialogVisible = true;
  186. this.getList();
  187. },
  188. },
  189. };
  190. </script>
  191. <style>
  192. .el-cascader-panel
  193. > .el-scrollbar:first-child
  194. > .el-cascader-menu__wrap
  195. > .el-cascader-menu__list
  196. > .el-cascader-node
  197. > .el-radio {
  198. display: block;
  199. }
  200. </style>