index.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475
  1. <template>
  2. <div class="app-container">
  3. <el-form
  4. :model="queryParams"
  5. ref="queryForm"
  6. size="small"
  7. :inline="true"
  8. v-show="showSearch"
  9. label-width="68px"
  10. >
  11. <el-form-item label="昵称" prop="cNickName">
  12. <el-input
  13. v-model="queryParams.cNickName"
  14. placeholder="请输入昵称"
  15. clearable
  16. @keyup.enter.native="handleQuery"
  17. />
  18. </el-form-item>
  19. <el-form-item label="电话号码" prop="cPhone">
  20. <el-input
  21. v-model="queryParams.cPhone"
  22. placeholder="请输入电话号码"
  23. clearable
  24. @keyup.enter.native="handleQuery"
  25. />
  26. </el-form-item>
  27. <!-- <el-form-item label="消费金额" prop="dMoney">
  28. <el-input
  29. v-model="queryParams.dMoney"
  30. placeholder="请输入消费金额"
  31. clearable
  32. @keyup.enter.native="handleQuery"
  33. />
  34. </el-form-item>
  35. <el-form-item label="下单次数" prop="nNum">
  36. <el-input
  37. v-model="queryParams.nNum"
  38. placeholder="请输入下单次数"
  39. clearable
  40. @keyup.enter.native="handleQuery"
  41. />
  42. </el-form-item>-->
  43. <el-form-item>
  44. <el-button
  45. type="primary"
  46. icon="el-icon-search"
  47. size="mini"
  48. @click="handleQuery"
  49. >搜索</el-button
  50. >
  51. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
  52. >重置</el-button
  53. >
  54. </el-form-item>
  55. </el-form>
  56. <!-- <el-row :gutter="10" class="mb8">
  57. <el-col :span="1.5">
  58. <el-button
  59. type="primary"
  60. plain
  61. icon="el-icon-plus"
  62. size="mini"
  63. @click="handleAdd"
  64. v-hasPermi="['system:user:add']"
  65. >新增</el-button>
  66. </el-col>
  67. <el-col :span="1.5">
  68. <el-button
  69. type="success"
  70. plain
  71. icon="el-icon-edit"
  72. size="mini"
  73. :disabled="single"
  74. @click="handleUpdate"
  75. v-hasPermi="['system:user:edit']"
  76. >修改</el-button>
  77. </el-col>
  78. <el-col :span="1.5">
  79. <el-button
  80. type="danger"
  81. plain
  82. icon="el-icon-delete"
  83. size="mini"
  84. :disabled="multiple"
  85. @click="handleDelete"
  86. v-hasPermi="['system:user:remove']"
  87. >删除</el-button>
  88. </el-col>
  89. <el-col :span="1.5">
  90. <el-button
  91. type="warning"
  92. plain
  93. icon="el-icon-download"
  94. size="mini"
  95. @click="handleExport"
  96. v-hasPermi="['system:user:export']"
  97. >导出</el-button>
  98. </el-col>
  99. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  100. </el-row>
  101. -->
  102. <el-table
  103. v-loading="loading"
  104. :data="userList"
  105. @selection-change="handleSelectionChange"
  106. >
  107. <!-- <el-table-column type="selection" width="55" align="center" /> -->
  108. <!-- <el-table-column label="${comment}" align="center" prop="id" /> -->
  109. <el-table-column label="openId" align="center" prop="cOpenid" />
  110. <!-- <el-table-column label="微信小程序登录会话密钥" align="center" prop="cSessionKey" /> -->
  111. <!-- <el-table-column label="头像" align="center" prop="cIcon" /> -->
  112. <el-table-column label="头像" align="center" prop="cIcon" width="100">
  113. <template slot-scope="scope">
  114. <image-preview :src="scope.row.cIcon" :width="50" :height="50" />
  115. </template>
  116. </el-table-column>
  117. <el-table-column label="电话号码" align="center" prop="cPhone" />
  118. <!-- <el-table-column label="微信小程序unionid" align="center" prop="cUnionid" /> -->
  119. <el-table-column label="昵称" align="center" prop="cNickName" />
  120. <el-table-column label="消费金额" align="center" prop="dMoney" />
  121. <el-table-column label="下单次数" align="center" prop="nNum" />
  122. <!-- <el-table-column label="地址信息" align="center" prop="cAddressList" /> -->
  123. <el-table-column label="当前余额" align="center" prop="dBalance" />
  124. <el-table-column label="总收益" align="center" prop="dAllMoney" />
  125. <!-- <el-table-column label="分销码" align="center" prop="cScanImg" /> -->
  126. <!-- <el-table-column label="推荐者信息" align="center" prop="cUpUser" /> -->
  127. <!-- <el-table-column label="默认地址id" align="center" prop="cMrAddressId" /> -->
  128. <!-- <el-table-column label="是否删除0否1是" align="center" prop="isDelete" /> -->
  129. <el-table-column
  130. label="操作"
  131. align="center"
  132. class-name="small-padding fixed-width"
  133. >
  134. <template slot-scope="scope">
  135. <el-button
  136. size="mini"
  137. type="text"
  138. icon="el-icon-s-order"
  139. @click="commentDetail(scope.row)"
  140. v-hasPermi="['system:user:edit']"
  141. >查看评论</el-button
  142. >
  143. <!-- <el-button
  144. size="mini"
  145. type="text"
  146. icon="el-icon-delete"
  147. @click="handleDelete(scope.row)"
  148. v-hasPermi="['system:user:remove']"
  149. >删除</el-button>-->
  150. </template>
  151. </el-table-column>
  152. </el-table>
  153. <el-pagination
  154. v-show="total > 0"
  155. background
  156. @size-change="handleSizeChange"
  157. @current-change="handleCurrentChange"
  158. :current-page="queryParams.current"
  159. :page-size="queryParams.size"
  160. layout="total, sizes, prev, pager, next, jumper"
  161. :total="total"
  162. >
  163. </el-pagination>
  164. <el-dialog title="评论详情" :visible.sync="commentOpen" width="1000px" append-to-body>
  165. <el-table ref="commentForm" :data="commentForm">
  166. <el-table-column prop="createTime" label="评论日期" align="center"> </el-table-column>
  167. <el-table-column prop="name" label="技师" align="center"></el-table-column>
  168. <el-table-column prop="orderNo" label="订单号" align="center"> </el-table-column>
  169. <el-table-column prop="text" label="内容" align="center"> </el-table-column>
  170. </el-table>
  171. </el-dialog>
  172. <!-- 添加或修改微信用户对话框 -->
  173. <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
  174. <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  175. <el-form-item label="微信小程序openId" prop="cOpenid">
  176. <el-input
  177. v-model="form.cOpenid"
  178. placeholder="请输入微信小程序openId"
  179. />
  180. </el-form-item>
  181. <el-form-item label="微信小程序登录会话密钥" prop="cSessionKey">
  182. <el-input
  183. v-model="form.cSessionKey"
  184. type="textarea"
  185. placeholder="请输入内容"
  186. />
  187. </el-form-item>
  188. <el-form-item label="头像地址" prop="cIcon">
  189. <el-input
  190. v-model="form.cIcon"
  191. type="textarea"
  192. placeholder="请输入内容"
  193. />
  194. </el-form-item>
  195. <el-form-item label="电话号码" prop="cPhone">
  196. <el-input v-model="form.cPhone" placeholder="请输入电话号码" />
  197. </el-form-item>
  198. <el-form-item label="微信小程序unionid" prop="cUnionid">
  199. <el-input
  200. v-model="form.cUnionid"
  201. placeholder="请输入微信小程序unionid"
  202. />
  203. </el-form-item>
  204. <el-form-item label="昵称" prop="cNickName">
  205. <el-input v-model="form.cNickName" placeholder="请输入昵称" />
  206. </el-form-item>
  207. <el-form-item label="消费金额" prop="dMoney">
  208. <el-input v-model="form.dMoney" placeholder="请输入消费金额" />
  209. </el-form-item>
  210. <el-form-item label="下单次数" prop="nNum">
  211. <el-input v-model="form.nNum" placeholder="请输入下单次数" />
  212. </el-form-item>
  213. <el-form-item label="地址信息" prop="cAddressList">
  214. <el-input
  215. v-model="form.cAddressList"
  216. type="textarea"
  217. placeholder="请输入内容"
  218. />
  219. </el-form-item>
  220. <el-form-item label="当前余额" prop="dBalance">
  221. <el-input v-model="form.dBalance" placeholder="请输入当前余额" />
  222. </el-form-item>
  223. <el-form-item label="总收益" prop="dAllMoney">
  224. <el-input v-model="form.dAllMoney" placeholder="请输入总收益" />
  225. </el-form-item>
  226. <el-form-item label="分销码" prop="cScanImg">
  227. <el-input
  228. v-model="form.cScanImg"
  229. type="textarea"
  230. placeholder="请输入内容"
  231. />
  232. </el-form-item>
  233. <el-form-item label="推荐者信息" prop="cUpUser">
  234. <el-input
  235. v-model="form.cUpUser"
  236. type="textarea"
  237. placeholder="请输入内容"
  238. />
  239. </el-form-item>
  240. <el-form-item label="默认地址id" prop="cMrAddressId">
  241. <el-input
  242. v-model="form.cMrAddressId"
  243. placeholder="请输入默认地址id"
  244. />
  245. </el-form-item>
  246. <el-form-item label="是否删除0否1是" prop="isDelete">
  247. <el-input
  248. v-model="form.isDelete"
  249. placeholder="请输入是否删除0否1是"
  250. />
  251. </el-form-item>
  252. </el-form>
  253. <div slot="footer" class="dialog-footer">
  254. <el-button type="primary" @click="submitForm">确 定</el-button>
  255. <el-button @click="cancel">取 消</el-button>
  256. </div>
  257. </el-dialog>
  258. </div>
  259. </template>
  260. <script>
  261. import {
  262. listUser,
  263. getUser,
  264. delUser,
  265. addUser,
  266. updateUser,
  267. tCommentUser,
  268. } from "@/api/system/wxuser";
  269. export default {
  270. name: "User",
  271. data() {
  272. return {
  273. // 遮罩层
  274. loading: true,
  275. // 选中数组
  276. ids: [],
  277. // 非单个禁用
  278. single: true,
  279. // 非多个禁用
  280. multiple: true,
  281. // 显示搜索条件
  282. showSearch: true,
  283. // 总条数
  284. total: 0,
  285. // 微信用户表格数据
  286. userList: [],
  287. // 弹出层标题
  288. title: "",
  289. // 是否显示弹出层
  290. open: false,
  291. // 查询参数
  292. queryParams: {
  293. current: 1,
  294. size: 10,
  295. cOpenid: null,
  296. cSessionKey: null,
  297. cIcon: null,
  298. cPhone: null,
  299. cUnionid: null,
  300. cNickName: null,
  301. dMoney: null,
  302. nNum: null,
  303. cAddressList: null,
  304. dBalance: null,
  305. dAllMoney: null,
  306. cScanImg: null,
  307. cUpUser: null,
  308. cMrAddressId: null,
  309. isDelete: null,
  310. },
  311. // 表单参数
  312. form: {},
  313. //评论详情
  314. commentForm: [],
  315. //是否显示评论详情
  316. commentOpen: false,
  317. // 表单校验
  318. rules: {
  319. cOpenid: [
  320. {
  321. required: true,
  322. message: "微信小程序openId不能为空",
  323. trigger: "blur",
  324. },
  325. ],
  326. },
  327. };
  328. },
  329. created() {
  330. this.getList();
  331. },
  332. methods: {
  333. handleSizeChange(val) {
  334. // console.log(val,"handleSizeChange")
  335. this.queryParams.size = val;
  336. this.getList();
  337. },
  338. handleCurrentChange(val) {
  339. this.queryParams.current = val;
  340. this.getList();
  341. // console.log(val,"val")
  342. },
  343. /** 查询微信用户列表 */
  344. getList() {
  345. this.loading = true;
  346. listUser(this.queryParams).then((response) => {
  347. this.userList = response.data.records;
  348. this.total = response.data.total;
  349. this.loading = false;
  350. });
  351. },
  352. // 取消按钮
  353. cancel() {
  354. this.open = false;
  355. this.reset();
  356. },
  357. // 表单重置
  358. reset() {
  359. this.form = {
  360. id: null,
  361. cOpenid: null,
  362. cSessionKey: null,
  363. cIcon: null,
  364. cPhone: null,
  365. cUnionid: null,
  366. cNickName: null,
  367. dMoney: null,
  368. nNum: null,
  369. cAddressList: null,
  370. dBalance: null,
  371. dAllMoney: null,
  372. cScanImg: null,
  373. cUpUser: null,
  374. cMrAddressId: null,
  375. createTime: null,
  376. updateTime: null,
  377. isDelete: null,
  378. };
  379. this.resetForm("form");
  380. },
  381. /** 搜索按钮操作 */
  382. handleQuery() {
  383. this.queryParams.pageNum = 1;
  384. this.getList();
  385. },
  386. /** 重置按钮操作 */
  387. resetQuery() {
  388. this.resetForm("queryForm");
  389. this.handleQuery();
  390. },
  391. // 多选框选中数据
  392. handleSelectionChange(selection) {
  393. this.ids = selection.map((item) => item.id);
  394. this.single = selection.length !== 1;
  395. this.multiple = !selection.length;
  396. },
  397. /** 新增按钮操作 */
  398. handleAdd() {
  399. this.reset();
  400. this.open = true;
  401. this.title = "添加微信用户";
  402. },
  403. /** 查看评论详情 */
  404. commentDetail(row) {
  405. this.reset();
  406. let openId = {}
  407. openId.openId = row.cOpenid;
  408. tCommentUser(openId).then((response) => {
  409. this.commentOpen = true;
  410. if(response.data){
  411. this.commentForm = response.data.records;
  412. }else{
  413. this.commentForm = []
  414. }
  415. });
  416. },
  417. /** 提交按钮 */
  418. submitForm() {
  419. this.$refs["form"].validate((valid) => {
  420. if (valid) {
  421. if (this.form.id != null) {
  422. updateUser(this.form).then((response) => {
  423. this.$modal.msgSuccess("修改成功");
  424. this.open = false;
  425. this.getList();
  426. });
  427. } else {
  428. addUser(this.form).then((response) => {
  429. this.$modal.msgSuccess("新增成功");
  430. this.open = false;
  431. this.getList();
  432. });
  433. }
  434. }
  435. });
  436. },
  437. /** 删除按钮操作 */
  438. handleDelete(row) {
  439. const ids = row.id || this.ids;
  440. this.$modal
  441. .confirm('是否确认删除微信用户编号为"' + ids + '"的数据项?')
  442. .then(function () {
  443. return delUser(ids);
  444. })
  445. .then(() => {
  446. this.getList();
  447. this.$modal.msgSuccess("删除成功");
  448. })
  449. .catch(() => {});
  450. },
  451. /** 导出按钮操作 */
  452. handleExport() {
  453. this.download(
  454. "system/user/export",
  455. {
  456. ...this.queryParams,
  457. },
  458. `user_${new Date().getTime()}.xlsx`
  459. );
  460. },
  461. },
  462. };
  463. </script>
  464. <style scoped>
  465. .el-pagination {
  466. float: right;
  467. padding: 30px 0;
  468. }
  469. </style>