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 @@
+
+
+