classify_navigation.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338
  1. <template>
  2. <div>
  3. <use-table ref="tbl"></use-table>
  4. <div class="container padding_b_0">
  5. <!-- <div class="dflex_wrap">
  6. <div class="dflex_vertical_c margin_r_40 margin_b_20">
  7. <div class="search_name">导航名称:</div>
  8. <el-input v-model="req.name" placeholder="请输入" @keyup.enter.native="loadData" @input="loadData"
  9. class="search_input"></el-input>
  10. </div>
  11. <div class="dflex_vertical_c margin_r_40 margin_b_20" v-if="advancedSearch">
  12. <div class="search_name">跳转地址:</div>
  13. <el-input v-model="req.url" placeholder="请输入" @keyup.enter.native="loadData" @input="loadData"
  14. class="search_input"></el-input>
  15. </div>
  16. <div class="dflex_vertical_c margin_r_40 margin_b_20" v-if="advancedSearch">
  17. <div class="search_name">跳转类型:</div>
  18. <el-select v-model="req.type" class="search_input" @change="loadData">
  19. <el-option v-for="(item, idx) in typeOptions" :key="idx" :label="item.label"
  20. :value="item.value"></el-option>
  21. </el-select>
  22. </div>
  23. <div class="dflex_vertical_c margin_r_40 margin_b_20" v-if="advancedSearch">
  24. <div class="search_name">状态:</div>
  25. <el-select v-model="req.state" class="search_input" @change="loadData">
  26. <el-option v-for="(item, idx) in stateOptions" :key="idx" :label="item.label"
  27. :value="item.value"></el-option>
  28. </el-select>
  29. </div>
  30. <el-button size="mini" class="search_btn margin_b_20 margin_r_40" @click="loadData">搜索</el-button>
  31. <div class="search_advanced margin_b_20" @click="advancedSearch = !advancedSearch"
  32. v-if="!advancedSearch">高级筛选</div>
  33. <div class="search_common margin_b_20" @click="advancedSearch = !advancedSearch" v-if="advancedSearch">
  34. 常用筛选</div>
  35. </div> -->
  36. </div>
  37. <div class="container use-table">
  38. <div class="dflex_sb margin_b_15">
  39. <div>
  40. <el-button class="batch_btn padding0" @click="removes">删除</el-button>
  41. </div>
  42. <el-button class="add_btn pos_r padding0" icon="iconfont iconxinzeng" @click="toAdd">新增</el-button>
  43. </div>
  44. <el-table :height="tblHeight" :data="tableDatas" @selection-change="selectionChange" highlight-current-row>
  45. <el-table-column type="selection"></el-table-column>
  46. <el-table-column label="排序" width="200" align="center">
  47. <template slot-scope="scope">
  48. <el-input-number size="small" :min="1" v-model="scope.row.sort" @change="sortChange(scope.row)"
  49. @blur="sortChange(scope.row)"></el-input-number>
  50. </template>
  51. </el-table-column>
  52. <el-table-column property="name" label="导航名称" align="center"></el-table-column>
  53. <el-table-column label="分类图片" align="center">
  54. <template slot-scope="scope">
  55. <el-image style="width: 70px;height: 70px;" :src="scope.row.iconName || require('static/img/noimage.png')" :preview-src-list="scope.row.iconName"
  56. fit="contain"></el-image>
  57. </template>
  58. </el-table-column>
  59. <el-table-column label="跳转类型" align="center">
  60. <template slot-scope="scope">
  61. <template v-if="scope.row.type==0">不跳转</template>
  62. <template v-if="scope.row.type==1">跳转页面</template>
  63. <template v-if="scope.row.type==2">跳转网页</template>
  64. </template>
  65. </el-table-column>
  66. <el-table-column property="url" label="跳转地址" width="250" align="center"></el-table-column>
  67. <el-table-column property="state" label="状态" align="center">
  68. <template slot-scope="scope">
  69. <el-tooltip :content="scope.row.state == '1' ? '点击禁用' : '点击启用'" placement="top"
  70. :hide-after="1000" :enterable="false" effect="light">
  71. <el-switch v-model="scope.row.state" active-color="#ff6a6c" inactive-color="#bbb"
  72. active-value="1" inactive-value="0" @change="stateChange(scope.row)"></el-switch>
  73. </el-tooltip>
  74. </template>
  75. </el-table-column>
  76. <el-table-column property="remark" label="备注" align="center"></el-table-column>
  77. <el-table-column label="操作" align="center" fixed="right">
  78. <template slot-scope="scope">
  79. <el-tooltip content="编辑" placement="top" :hide-after="1000" :enterable="false" effect="light">
  80. <el-button type="text" icon="iconfont iconbianji" class="bbb"
  81. @click="toEdit(scope.row.id)"></el-button>
  82. </el-tooltip>
  83. <el-tooltip content="删除" placement="top" :hide-after="1000" :enterable="false" effect="light">
  84. <el-button type="text" icon="iconfont iconshanchu" class="bbb"
  85. @click="remove(scope.row.id)"></el-button>
  86. </el-tooltip>
  87. </template>
  88. </el-table-column>
  89. </el-table>
  90. <!-- 分页 -->
  91. <el-pagination :current-page="req.page" :page-sizes="[10, 20, 30, 50, 100]" :page-size="req.rows"
  92. layout="total, sizes, prev, pager, next, jumper" :total="tableTotal" @size-change="sizeChange"
  93. @current-change="currentChange"></el-pagination>
  94. </div>
  95. </div>
  96. </template>
  97. <script>
  98. import {
  99. delfendao
  100. } from '@/util/loginJie.js'
  101. const __name = 'usemall-app-category';
  102. export default {
  103. data() {
  104. return {
  105. advancedSearch: false,
  106. typeOptions: [{
  107. value: '',
  108. label: '全部'
  109. },
  110. {
  111. value: '网页',
  112. label: '网页'
  113. },
  114. {
  115. value: '页面',
  116. label: '页面'
  117. }
  118. ],
  119. stateOptions: [{
  120. value: '',
  121. label: '全部'
  122. },
  123. {
  124. value: '启用',
  125. label: '启用'
  126. },
  127. {
  128. value: '禁用',
  129. label: '禁用'
  130. }
  131. ],
  132. req: {
  133. page: 1,
  134. rows: 10,
  135. orderby: 'sort asc',
  136. name: '',
  137. url: '',
  138. type: '',
  139. state: ''
  140. },
  141. tblHeight: 0,
  142. tableDatas: [],
  143. tableTotal: 0,
  144. selectDatas: [],
  145. now_date:'',//更新时间
  146. };
  147. },
  148. methods: {
  149. loadData() {
  150. this.$axios.get("/navigation/open/list",
  151. {
  152. params:{
  153. 'curPage':this.req.page,
  154. 'pageSize':this.req.rows,
  155. 'order':'asc',
  156. 'orderField':'sort'
  157. },
  158. headers:{
  159. }
  160. }).then(response => {
  161. let res = response
  162. console.log(res)
  163. if (res.success) {
  164. res.data.list.forEach((row, idx) => {
  165. row.imgs = [row.img];
  166. });
  167. this.tableDatas = res.data.list;
  168. this.tableTotal = res.data.totalCount;
  169. } else {
  170. }
  171. }).catch(res =>{
  172. });
  173. },
  174. toAdd() {
  175. uni.navigateTo({
  176. url: `/pages/shop/classify/classify_navigation_add_edit?tab=添加分类`,
  177. events: {
  178. refreshData: () => {
  179. this.loadData();
  180. }
  181. }
  182. });
  183. },
  184. toEdit(id) {
  185. uni.navigateTo({
  186. url: `/pages/shop/classify/classify_navigation_add_edit?id=${id}&tab=编辑分类`,
  187. events: {
  188. refreshData: () => {
  189. this.loadData();
  190. }
  191. }
  192. });
  193. },
  194. remove(id) {
  195. var data=[id]
  196. var headers={
  197. 'Content-Type': 'application/json; charset=utf-8',
  198. "Mall-Token": uni.getStorageSync('token')
  199. }
  200. this.$confirm('此操作将永久删除该数据!', '提示', {
  201. confirmButtonText: '确定',
  202. cancelButtonText: '取消',
  203. type: 'warning'
  204. }).then(() => {
  205. delfendao(data,headers).then((res) => {
  206. if (res.success) {
  207. this.loadData();
  208. }
  209. })
  210. });
  211. },
  212. selectionChange(datas) {
  213. this.selectDatas = datas;
  214. },
  215. removes() {
  216. if (this.selectDatas.length <= 0) {
  217. this.$message('请勾选需要删除的数据');
  218. return;
  219. }
  220. let data = this.selectDatas.map(x => x.id);
  221. var headers={
  222. 'Content-Type': 'application/json; charset=utf-8',
  223. "Mall-Token": uni.getStorageSync('token')
  224. }
  225. this.$confirm('此操作将永久删除勾选数据!', '提示', {
  226. confirmButtonText: '确定',
  227. cancelButtonText: '取消',
  228. type: 'warning'
  229. }).then(() => {
  230. delfendao(data,headers).then((res) => {
  231. if (res.success) {
  232. this.loadData();
  233. }
  234. })
  235. });
  236. },
  237. stateChange(row) {
  238. this.$axios.put("/navigation/admin/update",
  239. {
  240. 'createBy':row.createBy,//创建人
  241. 'createTime':row.createTime,//创建时间
  242. 'name':row.name,
  243. 'iconName':row.iconName,
  244. 'updateBy':uni.getStorageSync("nickName"),//更新人
  245. 'updateTime':this.now_date,//更新时间
  246. 'remark':row.remark,//备注
  247. 'sort':row.sort,//排序
  248. 'state':row.state,//状态0禁用1启用
  249. 'type':row.type,//跳转类型0不跳转 1跳转页面 2跳转网页
  250. 'url':row.url,//跳转地址type不为0时不能为空
  251. 'id':row.id
  252. },
  253. {
  254. headers:{
  255. 'Mall-Token': uni.getStorageSync("token")
  256. }
  257. }).then(response => {
  258. let res = response
  259. if (res.success) {
  260. this.loadData()
  261. } else {
  262. alert(res.message)
  263. }
  264. })
  265. },
  266. sortChange(row) {
  267. if (row.sort == '') {
  268. return;
  269. }
  270. this.$axios.put("/navigation/admin/update",
  271. {
  272. 'createBy':row.createBy,//创建人
  273. 'createTime':row.createTime,//创建时间
  274. 'name':row.name,
  275. 'iconName':row.iconName,
  276. 'updateBy':uni.getStorageSync("nickName"),//更新人
  277. 'updateTime':this.now_date,//更新时间
  278. 'remark':row.remark,//备注
  279. 'sort':row.sort,//排序
  280. 'state':row.state,//状态0禁用1启用
  281. 'type':row.type,//跳转类型0不跳转 1跳转页面 2跳转网页
  282. 'url':row.url,//跳转地址type不为0时不能为空
  283. 'id':row.id
  284. },
  285. {
  286. headers:{
  287. 'Mall-Token': uni.getStorageSync("token")
  288. }
  289. }).then(response => {
  290. let res = response
  291. if (res.success) {
  292. this.loadData()
  293. } else {
  294. alert(res.message)
  295. }
  296. })
  297. },
  298. sizeChange(size) {
  299. this.req.rows = size;
  300. this.loadData();
  301. },
  302. currentChange(current) {
  303. this.req.page = current;
  304. this.loadData();
  305. },
  306. //获取当前时间
  307. getNowDate() {
  308. var _this = this;
  309. // this.timer = setInterval(function() {
  310. var aData = new Date();
  311. var month = aData.getMonth() < 9 ? "0" + (aData.getMonth() + 1) : aData.getMonth() + 1;
  312. var date = aData.getDate() <= 9 ? "0" + aData.getDate() : aData.getDate();
  313. var date2 = aData.getDate() <= 9 ? "0" + (aData.getDate()-1) : (aData.getDate()-1);
  314. var Hour = aData.getHours() <= 9 ? "0" + (aData.getHours()) : aData.getHours();
  315. var Miunte = aData.getMinutes() <= 9 ? "0" + (aData.getMinutes()) : aData.getMinutes();
  316. var Seconds = aData.getSeconds() <= 9 ? "0" + (aData.getSeconds()) : aData.getSeconds();
  317. // console.log(aData.getTime())
  318. _this.now_date = aData.getFullYear() + "-" + month + "-" + date + ' '+ Hour +":"+ Miunte +":"+ Seconds;
  319. // console.log(aData.getFullYear() + "-" + month + "-" + date2)昨天
  320. // }, 86400000);
  321. },
  322. },
  323. created() {
  324. this.loadData();
  325. },
  326. updated() {
  327. if (!this.tblHeight) {
  328. this.tblHeight = this.$refs.tbl.tblHeight;
  329. }
  330. }
  331. };
  332. </script>
  333. <style></style>