diff --git a/api/init.json b/api/init.json index 94f1a73..206f6d4 100755 --- a/api/init.json +++ b/api/init.json @@ -102,13 +102,6 @@ "icon": "fa fa-info-circle", "target": "_self" }, - { - "title": "文章管理", - "name":"article", - "href": "page/article.html", - "icon": "fa fa-file-word-o", - "target": "_self" - }, { "title": "属性管理", "name": "attribute", @@ -131,6 +124,29 @@ "target": "_self" } ] + }, + { + "title": "系统管理", + "name": "system", + "href": "", + "icon": "fa fa-gear", + "target": "_self", + "child": [ + { + "title": "文章管理", + "name":"article", + "href": "page/article.html", + "icon": "fa fa-file-word-o", + "target": "_self" + }, + { + "title": "广告管理", + "name":"advertisement", + "href": "page/advertisement.html", + "icon": "fa fa-calendar", + "target": "_self" + } + ] } ] } diff --git a/assets/js/advertisement.js b/assets/js/advertisement.js new file mode 100644 index 0000000..3f95d25 --- /dev/null +++ b/assets/js/advertisement.js @@ -0,0 +1,230 @@ +layui.use(['form', 'table'], function () { + var $ = layui.jquery, + form = layui.form, + table = layui.table; + // 获取当前语言 + var currentLang = localStorage.getItem('language') || 'zh'; + var lang = langConfig[currentLang]; + var operationBar = $('#currentTableBar').html(); + if (operationBar) { + var newHtml = operationBar + .replace(/设置/g, lang.carlist.operations.set) + .replace(/编辑/g, lang.carlist.operations.edit) + .replace(/删除/g, lang.carlist.operations.delete) + $('#currentTableBar').html(newHtml); + } + var toolbarDemo = $('#toolbarDemo').html(); + if (toolbarDemo) { + var newHtmlt = toolbarDemo + .replace(/添加/g, lang.userlist.add) + $('#toolbarDemo').html(newHtmlt); + } + var tableInitb = table.render({ + elem: '#currentTableId', + url: lang.baseUrl+'console/adp/list', + headers: { + Authorization: 'Bearer ' + sessionStorage.tokencar, + lang:localStorage.getItem('language')?localStorage.getItem('language'):"zh" + }, + toolbar: '#toolbarDemo', + defaultToolbar: ['filter', 'exports', 'print', { + title: '提示', + layEvent: 'LAYTABLE_TIPS', + icon: 'layui-icon-tips' + }], + parseData: function(res) { //res 即为原始返回的数据 + console.log(res) + return { + "code": 0, //解析接口状态 + "msg": 'message', //解析提示文本 + "count": res.data.meta.total, //解析数据长度 + "data": res.data.list //解析数据列表 + }; + }, + cols: [[ + {type: "checkbox"}, + {field: 'id', title: 'ID', sort: true}, + {field: 'title', title: lang.alllist.adname}, + {field: 'status',title:lang.alllist.status, + templet: function (d) { + form.on("switch(status)", function (data) { + let load = layer.load(); + let postData = {}; + postData.status = data.elem.checked ? 1 : 0; + postData.id = d.id; + postData.name = d.name; + self.brandupdate({ + type:'post', + data: postData, + successCallBack: function (result) { + layer.msg(result.message) + layer.close(load); + }, + failCallBack: function (result) { + layer.msg(result.message) + layer.closeAll('loading'); + tableInitb.reload() + } + }) + }); + let checked = d['status'] === 1 ? "checked" : ""; + return ''; + } + }, + {field: 'sort', title: lang.alllist.sort}, + {field: 'created_at',title: lang.alllist.create_time}, + {field: 'updated_at',title: lang.alllist.update_time}, + {title: lang.alllist.operation, minWidth: 150, toolbar: '#currentTableBar', align: "center"} + ]], + limits: [10, 15, 20, 25, 50, 100], + limit: 10, + page: true, + skin: 'line', + done: function(res, curr, count){ + window.i18n.updatePageContent(); + } + }); + // 监听搜索操作 + form.on('submit(data-search-btn)', function (data) { + var result = JSON.stringify(data.field); + + table.reload('currentTableId', { + page: { + curr: 1 + } + , where: { + name: data.field.name, + status: data.field.status, + } + }, 'data'); + + return false; + }); + + /** + * toolbar监听事件 + */ + table.on('toolbar(currentTableFilter)', function (obj) { + if (obj.event === 'add') { // 监听添加操作 + var index = layer.open({ + title: lang.userlist.add, + type: 2, + shade: 0.2, + maxmin:true, + shadeClose: true, + area: ['70%', '80%'], + btn: [lang.audit.confirm, lang.audit.cancel], + content: '../page/table/advertisementadd.html', + yes: function (index, layero) { + var iframeWindow = window['layui-layer-iframe' + index] + , submitID = 'saveBtn' + , submit = layero.find('iframe').contents().find('#' + submitID); + //监听提交 + iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) { + var field = data.field; //获取提交的字段 + self.adpadd({ + type: 'post', + data: data.field, + successCallBack: function (result) { + layer.msg(result.message) + layer.close(index); //关闭弹层 + tableInitb.reload() + }, + failCallBack: function (result) { + alert(result.message); + } + }) + console.log(field) + + }); + submit.trigger('click'); + } + }); + $(window).on("resize", function () { + layer.full(index); + }); + } else if (obj.event === 'delete') { // 监听删除操作 + var checkStatus = table.checkStatus('currentTableId') + , data = checkStatus.data; + layer.alert(JSON.stringify(data)); + } + }); + + //监听表格复选框选择 + table.on('checkbox(currentTableFilter)', function (obj) { + console.log(obj) + }); + + table.on('tool(currentTableFilter)', function (obj) { + var data = obj.data; + if (obj.event === 'edit') { + + var index = layer.open({ + title:lang.audit.edit_title, + type: 2, + shade: 0.2, + maxmin:true, + shadeClose: true, + area: ['70%', '80%'], + btn: [lang.audit.confirm, lang.audit.cancel], + content: '../page/table/advertisementedit.html?id='+data.id, + yes: function(index, layero){ + var iframeWindow = window['layui-layer-iframe'+ index] + ,submitID = 'saveBtn' + ,submit = layero.find('iframe').contents().find('#'+ submitID); + //监听提交 + iframeWindow.layui.form.on('submit('+ submitID +')', function(data){ + var field = data.field; //获取提交的字段 + self.adpupdate({ + type:'post', + data:data.field, + successCallBack: function(result){ + layer.msg(result.message) + layer.close(index); //关闭弹层 + tableInitb.reload() + }, + failCallBack: function(result){ + alert(result.message); + } + }) + }); + submit.trigger('click'); + } + }); + $(window).on("resize", function () { + layer.full(index); + }); + return false; + }else if (obj.event === 'set') { + var index = layer.open({ + title: lang.carlist.operations.set, + type: 2, + shade: 0.2, + maxmin: true, + shadeClose: false, + area: ['85%', '90%'], + content: '../page/advertisementset.html?id='+data.id + }); + }else if (obj.event === 'delete') { + layer.confirm(lang.audit.confirm_delete, function(index) { + self.adpdelete({ + type:'post', + data:{id:data.id}, + successCallBack: function(result){ + layer.msg(result.message, { + icon: 1, + time: 1000 + }); + tableInitb.reload() + }, + failCallBack: function(result){ + alert(result.message); + window.location.reload() + } + }) + + }); + } + }); + + }); \ No newline at end of file diff --git a/assets/js/advertisementset.js b/assets/js/advertisementset.js new file mode 100644 index 0000000..9c2130d --- /dev/null +++ b/assets/js/advertisementset.js @@ -0,0 +1,239 @@ +layui.use(['form', 'table'], function () { + var $ = layui.jquery, + form = layui.form, + table = layui.table; + // 获取当前语言 + var currentLang = localStorage.getItem('language') || 'zh'; + var lang = langConfig[currentLang]; + var operationBar = $('#currentTableBar').html(); + if (operationBar) { + var newHtml = operationBar + .replace(/设置/g, lang.carlist.operations.set) + .replace(/编辑/g, lang.carlist.operations.edit) + .replace(/删除/g, lang.carlist.operations.delete) + $('#currentTableBar').html(newHtml); + } + var toolbarDemo = $('#toolbarDemo').html(); + if (toolbarDemo) { + var newHtmlt = toolbarDemo + .replace(/添加/g, lang.userlist.add) + $('#toolbarDemo').html(newHtmlt); + } + var tableInitb = table.render({ + elem: '#currentTableId', + url: lang.baseUrl+'console/ad/list?adp_id='+getQueryString('id'), + headers: { + Authorization: 'Bearer ' + sessionStorage.tokencar, + lang:localStorage.getItem('language')?localStorage.getItem('language'):"zh" + }, + toolbar: '#toolbarDemo', + defaultToolbar: ['filter', 'exports', 'print', { + title: '提示', + layEvent: 'LAYTABLE_TIPS', + icon: 'layui-icon-tips' + }], + parseData: function(res) { //res 即为原始返回的数据 + console.log(res) + return { + "code": 0, //解析接口状态 + "msg": 'message', //解析提示文本 + "count": res.data.meta.total, //解析数据长度 + "data": res.data.list //解析数据列表 + }; + }, + cols: [[ + {type: "checkbox"}, + {field: 'id', title: 'ID', sort: true}, + {field: 'title', title: lang.carlist.product_name}, + {field: 'cover', minWidth: 100,title: lang.carlist.product_image, + templet: function(d){ + var img= '' + return img; + } + }, + {field: 'status',title:lang.alllist.status, + templet: function (d) { + form.on("switch(status)", function (data) { + let load = layer.load(); + let postData = {}; + postData.status = data.elem.checked ? 1 : 0; + postData.id = d.id; + postData.name = d.name; + self.brandupdate({ + type:'post', + data: postData, + successCallBack: function (result) { + layer.msg(result.message) + layer.close(load); + }, + failCallBack: function (result) { + layer.msg(result.message) + layer.closeAll('loading'); + tableInitb.reload() + } + }) + }); + let checked = d['status'] === 1 ? "checked" : ""; + return ''; + } + }, + {field: 'type_txt', title: lang.carlist.type}, + {field: 'sort', title: lang.alllist.sort}, + {field: 'created_at',title: lang.alllist.create_time}, + {field: 'updated_at',title: lang.alllist.update_time}, + {title: lang.alllist.operation, minWidth: 150, toolbar: '#currentTableBar', align: "center"} + ]], + limits: [10, 15, 20, 25, 50, 100], + limit: 10, + page: true, + skin: 'line', + done: function(res, curr, count){ + // 表格渲染完成后绑定图片点击事件 + $('img[lay-src]').on('click', function(){ + var imgSrc = $(this).attr('lay-src'); + layer.photos({ + photos: { + "data": [{ + "src": imgSrc + }] + }, + anim: 5 + }); + }); + window.i18n.updatePageContent(); + } + }); + // 监听搜索操作 + form.on('submit(data-search-btn)', function (data) { + var result = JSON.stringify(data.field); + + table.reload('currentTableId', { + page: { + curr: 1 + } + , where: { + name: data.field.name, + status: data.field.status, + } + }, 'data'); + + return false; + }); + + /** + * toolbar监听事件 + */ + table.on('toolbar(currentTableFilter)', function (obj) { + if (obj.event === 'add') { // 监听添加操作 + var index = layer.open({ + title: lang.userlist.add, + type: 2, + shade: 0.2, + maxmin:true, + shadeClose: true, + area: ['70%', '80%'], + btn: [lang.audit.confirm, lang.audit.cancel], + content: '../page/table/advertisementsetadd.html?adp_id='+getQueryString('id'), + yes: function (index, layero) { + var iframeWindow = window['layui-layer-iframe' + index] + , submitID = 'saveBtn' + , submit = layero.find('iframe').contents().find('#' + submitID); + //监听提交 + iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) { + var field = data.field; //获取提交的字段 + self.adadd({ + type: 'post', + data: data.field, + successCallBack: function (result) { + layer.msg(result.message) + layer.close(index); //关闭弹层 + tableInitb.reload() + }, + failCallBack: function (result) { + alert(result.message); + } + }) + console.log(field) + + }); + submit.trigger('click'); + } + }); + $(window).on("resize", function () { + layer.full(index); + }); + } else if (obj.event === 'delete') { // 监听删除操作 + var checkStatus = table.checkStatus('currentTableId') + , data = checkStatus.data; + layer.alert(JSON.stringify(data)); + } + }); + + //监听表格复选框选择 + table.on('checkbox(currentTableFilter)', function (obj) { + console.log(obj) + }); + + table.on('tool(currentTableFilter)', function (obj) { + var data = obj.data; + if (obj.event === 'edit') { + + var index = layer.open({ + title:lang.audit.edit_title, + type: 2, + shade: 0.2, + maxmin:true, + shadeClose: true, + area: ['70%', '80%'], + btn: [lang.audit.confirm, lang.audit.cancel], + content: '../page/table/advertisementsetedit.html?id='+data.id, + yes: function(index, layero){ + var iframeWindow = window['layui-layer-iframe'+ index] + ,submitID = 'saveBtn' + ,submit = layero.find('iframe').contents().find('#'+ submitID); + //监听提交 + iframeWindow.layui.form.on('submit('+ submitID +')', function(data){ + var field = data.field; //获取提交的字段 + self.adupdate({ + type:'post', + data:data.field, + successCallBack: function(result){ + layer.msg(result.message) + layer.close(index); //关闭弹层 + tableInitb.reload() + }, + failCallBack: function(result){ + alert(result.message); + } + }) + }); + submit.trigger('click'); + } + }); + $(window).on("resize", function () { + layer.full(index); + }); + return false; + }else if (obj.event === 'delete') { + layer.confirm(lang.audit.confirm_delete, function(index) { + self.addelete({ + type:'post', + data:{id:data.id}, + successCallBack: function(result){ + layer.msg(result.message, { + icon: 1, + time: 1000 + }); + tableInitb.reload() + }, + failCallBack: function(result){ + alert(result.message); + window.location.reload() + } + }) + + }); + } + }); + + }); \ No newline at end of file diff --git a/assets/js/lang/en.json b/assets/js/lang/en.json index 8924547..faf2868 100755 --- a/assets/js/lang/en.json +++ b/assets/js/lang/en.json @@ -32,7 +32,12 @@ "attribute":"Attribute", "attributes":"Attribute List", "categories":"Attribute Categories", - "article": "Article Management" + "article": "Article Management", + "system":"System Management", + "advertisement":"Advertisement" + }, + "advertisement":{ + "title":"Advertising slot name" }, "homE": { "welcome": "Welcome to our website", @@ -218,6 +223,9 @@ "desc": "Attribute" }, "alls": { + "used_url": "More links for used cars", + "new_url": "More links for new cars", + "url": "URL", "title": "Title", "title_placeholder": "Please enter title", "content": "Content", diff --git a/assets/js/lang/ru.json b/assets/js/lang/ru.json index af3f213..aa5087e 100755 --- a/assets/js/lang/ru.json +++ b/assets/js/lang/ru.json @@ -25,14 +25,19 @@ "agreement": "соглашениями", "general": "Общие настройки", "dictionary": "Настройки словарей", - "newcar":"Новые автомобили", + "newcar":"Новый автомобиль", "usedcar":"Б/у автомобили", "seo":"SEO", "email":"Эл. почта", "attribute":"Свойства", "attributes":"Список атрибутов", "categories":"Категории атрибутов", - "article": "Управление статьями" + "article": "Управление статьями", + "system":"Управление системой", + "advertisement":"Управление рекламой" + }, + "advertisement":{ + "title":"Название рекламного места" }, "home": { "welcome": "Добро пожаловать на наш сайт", @@ -218,6 +223,9 @@ "desc": "Атрибут" }, "alls": { + "used_url": "Больше ссылок на подержанные автомобили", + "new_url": "Больше ссылок на новые автомобили", + "url": "URL", "title": "Заголовок", "title_placeholder": "Введите заголовок", "content": "Содержание", diff --git a/assets/js/lang/zh.json b/assets/js/lang/zh.json index 2460192..a0f6381 100755 --- a/assets/js/lang/zh.json +++ b/assets/js/lang/zh.json @@ -25,14 +25,19 @@ "agreement": "协议管理", "general": "通用设置", "dictionary": "字典设置", - "newcar":"新车管理", + "newcar":"新车", "usedcar":"二手车", "seo":"SEO管理", "email":"邮箱管理", "attribute":"属性管理", "attributes":"属性列表", "categories":"属性分类", - "article":"文章管理" + "article":"文章管理", + "system":"系统管理", + "advertisement":"广告管理" + }, + "advertisement":{ + "title":"广告位名称" }, "home": { "welcome": "欢迎访问我们的网站", @@ -218,6 +223,9 @@ "desc":"属性" }, "alls":{ + "used_url": "二手车更多链接", + "new_url": "新车更多链接", + "url": "链接", "title": "标题", "title_placeholder": "请输入标题", "content": "内容", diff --git a/assets/js/tablei18n.js b/assets/js/tablei18n.js index d9b246e..77b473a 100755 --- a/assets/js/tablei18n.js +++ b/assets/js/tablei18n.js @@ -63,6 +63,7 @@ var langConfig = { 'check': '审核', 'show': '详情', 'sku':"属性", + 'set':"设置", 'comments':'评论' } }, @@ -93,6 +94,7 @@ var langConfig = { 'show_title': '详情', }, alllist:{ + 'adname': '广告位名称', 'name': '名称', 'status': '状态', 'brand':'所属品牌', @@ -203,6 +205,7 @@ var langConfig = { 'check': 'Check', 'show': 'Details', 'sku':'Attribute', + 'set':"Set up", 'comments':'comments' }, }, @@ -233,6 +236,7 @@ var langConfig = { 'show_title': 'Details' }, alllist:{ + 'adname': 'Advertising space', 'name': 'Name', 'status': 'Status', 'brand':'Belonging brand', @@ -331,6 +335,7 @@ var langConfig = { "check": "Проверить", "show": "Подробности", 'sku':'Свойства', + 'set':"Настройка", 'comments':'комментарий' } }, @@ -361,6 +366,7 @@ var langConfig = { "show_title": "Подробности" }, "alllist": { + 'adname': 'Рекламное место', "name": "Название", "status": "Статус", "brand": "Марка", diff --git a/assets/main.js b/assets/main.js index 5631ec9..97df907 100755 --- a/assets/main.js +++ b/assets/main.js @@ -576,4 +576,46 @@ self.commentdelete = function(options){ options = options ? options : {}; options.url = baseUrl+"console/comment/"+options.data.id+"/delete" return ajax(options); +}; +//广告位 +self.adpadd = function(options){ + options = options ? options : {}; + options.url = baseUrl+"console/adp/add"; + return ajax(options); +}; +self.adpdetail = function(options){ + options = options ? options : {}; + options.url = baseUrl+"console/adp/"+options.data.id+"/detail" + return ajax(options); +}; +self.adpupdate = function(options){ + options = options ? options : {}; + options.url = baseUrl+"console/adp/"+options.data.id+"/update" + return ajax(options); +}; +self.adpdelete = function(options){ + options = options ? options : {}; + options.url = baseUrl+"console/adp/"+options.data.id+"/delete" + return ajax(options); +}; +//广告 +self.adadd = function(options){ + options = options ? options : {}; + options.url = baseUrl+"console/ad/add"; + return ajax(options); +}; +self.addetail = function(options){ + options = options ? options : {}; + options.url = baseUrl+"console/ad/"+options.data.id+"/detail" + return ajax(options); +}; +self.adupdate = function(options){ + options = options ? options : {}; + options.url = baseUrl+"console/ad/"+options.data.id+"/update" + return ajax(options); +}; +self.addelete = function(options){ + options = options ? options : {}; + options.url = baseUrl+"console/ad/"+options.data.id+"/delete" + return ajax(options); }; \ No newline at end of file diff --git a/page/advertisement.html b/page/advertisement.html new file mode 100644 index 0000000..eda7f14 --- /dev/null +++ b/page/advertisement.html @@ -0,0 +1,73 @@ + + + + + USED CAR + + + + + + + +
+
+ +
+ +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+
+
+
+ + + +
+ + + +
+
+ + + + + + + + + + \ No newline at end of file diff --git a/page/advertisementset.html b/page/advertisementset.html new file mode 100644 index 0000000..20908b0 --- /dev/null +++ b/page/advertisementset.html @@ -0,0 +1,73 @@ + + + + + USED CAR + + + + + + + +
+
+ +
+ +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+
+
+
+ + + +
+ + + +
+
+ + + + + + + + + + + \ No newline at end of file diff --git a/page/table/advertisementadd.html b/page/table/advertisementadd.html new file mode 100644 index 0000000..4a34ef1 --- /dev/null +++ b/page/table/advertisementadd.html @@ -0,0 +1,68 @@ + + + + + layui + + + + + + + + +
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/page/table/advertisementedit.html b/page/table/advertisementedit.html new file mode 100644 index 0000000..9e822dc --- /dev/null +++ b/page/table/advertisementedit.html @@ -0,0 +1,117 @@ + + + + + layui + + + + + + + + +
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ +
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/page/table/advertisementsetadd.html b/page/table/advertisementsetadd.html new file mode 100644 index 0000000..b7f06d9 --- /dev/null +++ b/page/table/advertisementsetadd.html @@ -0,0 +1,117 @@ + + + + + layui + + + + + + + + +
+
+ +
+ + +
+
+
+ +
+ + + +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+ +
+
+
+ + + + + + + + \ No newline at end of file diff --git a/page/table/advertisementsetedit.html b/page/table/advertisementsetedit.html new file mode 100644 index 0000000..2c632f3 --- /dev/null +++ b/page/table/advertisementsetedit.html @@ -0,0 +1,147 @@ + + + + + layui + + + + + + + + +
+
+ +
+ + +
+
+
+ +
+ + + +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+ +
+
+
+ + + + + + + + + \ No newline at end of file