master
wangxinglong 2022-05-26 18:26:05 +08:00
parent 4aab76d038
commit 335a675f53
19 changed files with 340 additions and 127 deletions

View File

@ -15,6 +15,8 @@ class Index extends Base
'miniProgramSetting',
'clearFootmarks',
'baseConfig',
'purchaseinstructions',
'addWechat',
'work',
'kf',
'hotKeywords',
@ -91,12 +93,50 @@ class Index extends Base
try {
CConfig::load('extra/statement', 'statement');
$content = config('statement')['content'] ?? '';
$pregRule = "/<[img|IMG].*?src=[\'|\"][\/storage]{1}(.*?(?:[\.jpg|\.jpeg|\.png|\.gif|\.bmp]))[\'|\"].*?[\/]?>/";
$content = preg_replace($pregRule, '<img src="' . $this->request->domain() . '/${1}" style="max-width:100%">', (string)$content );
return $this->json(0, 'success', ['content' => $content]);
} catch (Exception $e) {
return $this->json(5000, '获取免责声明失败');
}
}
/**
* 购买须知
*
* @return Json
*/
public function purchaseinstructions(): Json
{
try {
CConfig::load('extra/purchaseinstructions', 'purchaseinstructions');
$content = config('purchaseinstructions')['content'] ?? '';
$pregRule = "/<[img|IMG].*?src=[\'|\"][\/storage]{1}(.*?(?:[\.jpg|\.jpeg|\.png|\.gif|\.bmp]))[\'|\"].*?[\/]?>/";
$content = preg_replace($pregRule, '<img src="' . $this->request->domain() . '/${1}" style="max-width:100%">', (string)$content );
return $this->json(0, 'success', ['content' => $content]);
} catch (Exception $e) {
return $this->json(5000, '获取失败');
}
}
/**
* 添加微信
*
* @return Json
*/
public function addWechat(): Json
{
try {
CConfig::load('extra/addwechat', 'addwechat');
$res = config('addwechat')?? [];
$pregRule = "/<[img|IMG].*?src=[\'|\"][\/storage]{1}(.*?(?:[\.jpg|\.jpeg|\.png|\.gif|\.bmp]))[\'|\"].*?[\/]?>/";
$res["content"] = preg_replace($pregRule, '<img src="' . $this->request->domain() . '/${1}" style="max-width:100%">', (string)$res["content"] );
return $this->json(0, 'success', $res);
} catch (Exception $e) {
return $this->json(5000, '获取添加微信失败');
}
}
/**
* 关于我们
*
@ -107,6 +147,9 @@ class Index extends Base
try {
CConfig::load('extra/about', 'about');
$res = config('about')?? [];
$pregRule = "/<[img|IMG].*?src=[\'|\"][\/storage]{1}(.*?(?:[\.jpg|\.jpeg|\.png|\.gif|\.bmp]))[\'|\"].*?[\/]?>/";
$res["content"] = preg_replace($pregRule, '<img src="' . $this->request->domain() . '/${1}" style="max-width:100%">', (string)$res["content"] );
return $this->json(0, 'success', $res);
} catch (Exception $e) {
return $this->json(5000, '获取关于我们失败');

View File

@ -119,13 +119,14 @@ class Config extends Base
unset($item);
$data['footBar'] = $footBarList;
}
// 底部默认导航
$data['footBarIcons'] = [
['key' => 'home', 'name' => '首页', 'aux' => '图标大小为 40 * 40 第1图为默认图第2图为高亮图', 'multi' => 1],
['key' => 'category', 'name' => '分类', 'aux' => '图标大小为 40 * 40 第1图为默认图第2图为高亮图', 'multi' => 1],
['key' => 'my', 'name' => '我的', 'aux' => '图标大小为 40 * 40 第1图为默认图第2图为高亮图', 'multi' => 1],
['key' => 'cart', 'name' => '购物车', 'aux' => '图标大小为 120 * 120', 'multi' => 0],
];
// // 底部默认导航
// $data['footBarIcons'] = [
// ['key' => 'home', 'name' => '首页', 'aux' => '图标大小为 40 * 40 第1图为默认图第2图为高亮图', 'multi' => 1],
// ['key' => 'category', 'name' => '分类', 'aux' => '图标大小为 40 * 40 第1图为默认图第2图为高亮图', 'multi' => 1],
// ['key' => 'my', 'name' => '我的', 'aux' => '图标大小为 40 * 40 第1图为默认图第2图为高亮图', 'multi' => 1],
// ['key' => 'my', 'name' => '我的', 'multi' => 1],
// ['key' => 'cart', 'name' => '购物车', 'aux' => '图标大小为 120 * 120', 'multi' => 0],
// ];
$this->data = array_merge($this->data, $data);
return $this->view();
}

View File

@ -43,7 +43,7 @@ class Index extends Base
$item = AccountRepository::getInstance()->findById($id);
$statusList = [
Order::STATUS_SHIPPED, Order::STATUS_PAID, Order::STATUS_COMPLETED
Order::STATUS_SHIPPED, Order::STATUS_ORDER_PLACED, Order::STATUS_COMPLETED
];
$consumption = OrderRepository::getInstance()->userOrderList($id, [], 1, 0, $statusList);
$orderNum = 0;

View File

@ -14,6 +14,7 @@ use PhpOffice\PhpSpreadsheet\IOFactory;
use \PhpOffice\PhpSpreadsheet\Shared\Date as PDate;
use PhpOffice\PhpSpreadsheet\Style\Alignment; //设置对齐方式
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Style\Color;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use think\db\exception\DataNotFoundException;
use think\db\exception\DbException;
@ -541,6 +542,35 @@ class Order extends Base
}
return $this->json(4000, '非法请求');
}
/**
* 修改订单里面的sku信息
*
* @return Json
* @throws Exception
*/
public function editStatus()
{
$id = input('id/d');
if(!$order = OrderModel::findById($id)){
return $this->json(4001,"订单不存在");
}
if ($this->request->isPost()) {
$status = input("status/s");
Db::startTrans();
try {
$order->save(["status"=>$status]);
Db::commit();
return $this->json();
} catch (Exception $e) {
return $this->json(4001, $e->getError());
}
}
$this->data['statusList'] = OrderModel::statusTextList();
$this->data['status'] = $order["status"];
$this->data['id'] = $id;
return $this->view();
}
/**
* 导出订单信息
@ -567,11 +597,16 @@ class Order extends Base
$spreadsheet->getActiveSheet()->setTitle('订单信息');
//设置默认行高。
$sheet->getDefaultRowDimension()->setRowHeight(25);
//设置A1单元格
$sheet->getStyle('A1')->applyFromArray($styleArray);
$sheet->getDefaultRowDimension()->setRowHeight(30);
//需要设置单元格 上下 水平居中的单元格
$needSetapplyFromArray = [
"A1","C1","D1","A2","B2","C2","D2","E2",
];
// 需要设置的单元格宽度
$setColWidth = [
"A"=>"30",
"A"=>"45",
"B"=>"30",
"C"=>"30",
"D"=>"30",
@ -582,10 +617,76 @@ class Order extends Base
}
//合并单元格
$spreadsheet->getActiveSheet()->mergeCells('A1:B1');
$sheet->setCellValue('A1', "日期:".$order->created_at);
$sheet->setCellValue('A1', "日 期 : ".$order->created_at);
$sheet->setCellValue('C1', "订单号 : ");
$sheet->setCellValue('D1', " " . $order->coding);
$sheet->setCellValue('A2', "商 品 名称");
$sheet->setCellValue('B2', "单 位");
$sheet->setCellValue('C2', "数 量");
$sheet->setCellValue('D2', "单 价");
$sheet->setCellValue('E2', "小 计");
//开始写入订单商品数据
$startRow = 3;//从第四行开始写入
$skusCount = count($order->skus->toArray());
foreach ($order->skus as $key => $item){
$sheet->setCellValue('A'.($startRow+$key), $item["spu_name"]);
$sheet->setCellValue('B'.($startRow+$key), $item["sku_unit"]);
$sheet->setCellValue('C'.($startRow+$key), $item["num"]);
$sheet->setCellValue('D'.($startRow+$key), $item["price"]);
$sheet->setCellValue('E'.($startRow+$key), $item["subtotal"]);
$needSetapplyFromArray[]='A'.($startRow+$key);
$needSetapplyFromArray[]='B'.($startRow+$key);
$needSetapplyFromArray[]='C'.($startRow+$key);
$needSetapplyFromArray[]='D'.($startRow+$key);
$needSetapplyFromArray[]='E'.($startRow+$key);
}
$needSetapplyFromArray[] = 'D' . ($startRow + $skusCount);
$needSetapplyFromArray[] = 'E' . ($startRow + $skusCount);
$sheet->setCellValue('D' . ($startRow + $skusCount), "合 计");
$sheet->setCellValue('E' . ($startRow + $skusCount), $order->original_price);
//单元格文字样式设置
// getStyle 获取单元格样式
// getFont 获取单元格文字样式
// setBold 设置文字粗细
// setName 设置文字字体
// setSize 设置文字大小
$sheet->getStyle('D' . ($startRow + $skusCount))->getFont()->setBold(true)->setSize(18);
$sheet->getStyle('E' . ($startRow + $skusCount))->getFont()->setBold(true)->setSize(18);
$sheet->getStyle('D1')->getFont()->setBold(true);
$sheet->getStyle('A2:E2')->getFont()->setBold(true);
$sheet->getStyle('C3:E' . ($startRow + $skusCount - 1))->getFont()->setBold(true);
$sheet->getStyle('A1:E' . ($startRow + $skusCount - 1))->getFont()->setSize(12);
$sheet->getStyle('A' . (($startRow + $skusCount + 1)))->getFont()->setSize(12);
//设置字体颜色
$sheet->getStyle('D' . ($startRow + $skusCount))->getFont()->getColor()->setARGB(Color::COLOR_RED);
$sheet->getStyle('E' . ($startRow + $skusCount))->getFont()->getColor()->setARGB(Color::COLOR_RED);
$spreadsheet->getActiveSheet()->mergeCells('A' . ($startRow + $skusCount + 1) . ":" . 'E'.($startRow + $skusCount + 2));
$sheet->setCellValue('A' . (($startRow + $skusCount + 1)),
"婚 期:" . $order->wedding_date
. " ,希望到货时间:" . $order->expected_delivery_date
. " ,收 货 地 址:" . $order->address
. " ,联 系 人 :" . $order->contacts
. " ,联 系 人 电 话:" . $order->phone
);
$needSetapplyFromArray[] = 'A' . (($startRow + $skusCount + 1));
//设置单元格 上下 水平居中
foreach ($needSetapplyFromArray as $key => $item) {
$sheet->getStyle($item)->applyFromArray($styleArray);
}
@ -600,10 +701,10 @@ class Order extends Base
if(!is_dir($path)){
mkdir($path);
}
$fileName = $order->contacts . "_" . $order->phone . "_" . $order->coding . ".xlsx";
$downloadFileName = $order->contacts . "_" . $order->phone . "_" . $order->coding ;
$fileName = $downloadFileName . ".xlsx";
$filepath = $path. $fileName;
$writer->save($filepath);
return download($filepath,$downloadFileName );
}
}

Binary file not shown.

View File

@ -1,24 +0,0 @@
-----BEGIN CERTIFICATE-----
MIID8DCCAtigAwIBAgIUZUkH4c7FU29Hq2ArHG5O6V18jmgwDQYJKoZIhvcNAQEL
BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
Q0EwHhcNMjEwNzE0MDIwNTEyWhcNMjYwNzEzMDIwNTEyWjCBgTETMBEGA1UEAwwK
MTYwNTA5MDExMTEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMS0wKwYDVQQL
DCTlm5vlt53lpKflkJHlpKnor5rnp5HmioDmnInpmZDlhazlj7gxCzAJBgNVBAYM
AkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBAM7Hs28z9lIdDimJ/4rVqhy3Q5nOKDNaOOoMjlFkIWTJ1DFt5VtMPb4u
vHI7l2OqZBzh4p3equG0BrRzNKkRol3CggRDMC/PP/zqui/3h73eAXPyS6trWX5M
M7Mhy71ycW0lzhMWvuv0rB512iBBK3KX9BR3XbxrDlt8EhiuBCSEa0FuVN7rpudf
fKsmSmUiPlvbgRjT74CsVEJW6EOmuvEa3IcOH/pjbdok2g5KMEJ9wyKvzDW1ZvSn
HZO7Ey0ILkeFoTuXA7o8FU5NvvREy73S0ALD2XSHkZz+2VGZObhETvb6A13Jzmnq
3Mnt3h7LNwtROso6BXBX599hVJcn/qsCAwEAAaOBgTB/MAkGA1UdEwQCMAAwCwYD
VR0PBAQDAgTwMGUGA1UdHwReMFwwWqBYoFaGVGh0dHA6Ly9ldmNhLml0cnVzLmNv
bS5jbi9wdWJsaWMvaXRydXNjcmw/Q0E9MUJENDIyMEU1MERCQzA0QjA2QUQzOTc1
NDk4NDZDMDFDM0U4RUJEMjANBgkqhkiG9w0BAQsFAAOCAQEALrCZJlVuoxU+v5Ld
YojgFIuBNTurNHk+s71UtJvbLYTMwxNtU/C9i7hHI7iErHfNTi7D+UmWf0NGClv7
naE/aN7w3zDu1jhMpl+r0ldqOtwKtuYv5VjOG6BcXfeXhDMBsR+Ip3AarT87wkTF
bhlggQVdYeVQnRpNNEdWPhJ66H+7l7ahou4iw1ofLrYswstVCh0lyV7HdLz5VS29
N9j6NdFJQ1j4+En0/PKrQRuuF8Ld0/Do+vsTgyOT8SuPY2AJ7Dj6UTHkiUk77unK
p+zs0n9ftgARIx0ACXrkaZBwr3LdP5wOEZrEJYAhTVHK5KGhhRt77JAG6sa6rmeA
JA0BaQ==
-----END CERTIFICATE-----

View File

@ -1,28 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDOx7NvM/ZSHQ4p
if+K1aoct0OZzigzWjjqDI5RZCFkydQxbeVbTD2+LrxyO5djqmQc4eKd3qrhtAa0
czSpEaJdwoIEQzAvzz/86rov94e93gFz8kura1l+TDOzIcu9cnFtJc4TFr7r9Kwe
ddogQStyl/QUd128aw5bfBIYrgQkhGtBblTe66bnX3yrJkplIj5b24EY0++ArFRC
VuhDprrxGtyHDh/6Y23aJNoOSjBCfcMir8w1tWb0px2TuxMtCC5HhaE7lwO6PBVO
Tb70RMu90tACw9l0h5Gc/tlRmTm4RE72+gNdyc5p6tzJ7d4eyzcLUTrKOgVwV+ff
YVSXJ/6rAgMBAAECggEAInhd7CLAZC3dx4TuqYk2w3S1ezVHtE/M/w86xkyn2HJg
wiCsxExwWnzWA0D12rJz3/Cz41dUKy3klD5EQA7lfzXGkMlWhhHJe/LxOL/NzBPv
MBHrFVde4tP3Jlxy51DloalUsg/vocv2yVkiFJBomsDD+olvgdJi4VNMfPq9TAzN
8UAu4oZjkEEL9+6tm5/Ds1Y8znaXMJvfiYBMaxOgxb5cpijK3T3yzHLn8DrKVO7k
ypTuwaf4F6rtgIdKBJSH634Y+O20PewMTeciD7VpDOnr/XU9P0Bf0tN51YS0/OiD
XdSngSln07hS+GjVaayaan2cc9pDZIxu6a8KnypHoQKBgQD+MtcAmcD4O1aLOFng
/OuK5+H8BXk1dNnkI4wNrLCGHKe4K6V5Y6PD2OaqmKVRw0sCQmQg1O5TnHrnnP7x
tvLnmx3iApTaxUiIYb8YgDuD7kCy6/ks6dVotKb0xNFu0hOUDJvGx3HWcfDpFggb
pP5ZPw4eVKU/CXdTG6LNDtWAOwKBgQDQPtXwCGZc4KZngHfIyy8N7GtN/imA0cE8
L2LuwZuYsMJJrD2UzYPLCQ2Hy//GKDAoq8Qywddp9Z16wDxdK5oOaVdPVPiSdWzI
75HcfgfnVOb9BkQzqlyzIZT3P8rBswCF5zRI3saL/SDDcCKkNmh0v3GmQUNXYhPj
MMDXkrSEUQKBgDoaXNKiUl1rEskXxFOM/Dnv7tOwXJg/cV6YUXb+tgqxmhSaxWQN
xm0Jsw/jfEZIIWkOy9xFT4SFDALM++k8LCGMbzQt6uBmn8GstgVfqjrpxpgfIAGI
IWOhh1gDdOuj0R3SE/lHtVmTCcH9azUGbazwoMWGC49xFnlEo93DOkHpAoGAPK2S
eNZ5vSZYVmBAhultVIlG2vrr7PUxcO/9y8PuKpeWhREDAJDBji+dGax/YqXjInaq
PH/u3JkMwe+xpxRFV12qaxs/Mq20fPgRcEXo16cNhzyEMum5CRkH5uNXmQknZdzw
hysifzfKjCfocCDKXvpJi0AI9zVExjY2epnsr4ECgYEA+PLEEgSiTrsCZzHtMNbY
x6BD4lpnkTcdpWuxzvp/3ABQTqnu9EVBWiuuYEq7IrdrtMHEvyz0SETwEZlH3/Bo
s0dPKVqTXkDgheCs/yduoO2X+6F0Y3yrQOliBYabLbsnDAUTxWcxhzNTE0o9DSYA
n346GwplxOSB2KyUh48JIPg=
-----END PRIVATE KEY-----

View File

@ -1,18 +0,0 @@
欢迎使用微信支付!
附件中的三份文件证书pkcs12格式、证书pem格式、证书密钥pem格式,为接口中强制要求时需携带的证书文件。
证书属于敏感信息,请妥善保管不要泄露和被他人复制。
不同开发语言下的证书格式不同,以下为说明指引:
证书pkcs12格式apiclient_cert.p12
包含了私钥信息的证书文件为p12(pfx)格式,由微信支付签发给您用来标识和界定您的身份
部分安全性要求较高的API需要使用该证书来确认您的调用身份
windows上可以直接双击导入系统导入过程中会提示输入证书密码证书密码默认为您的商户号1900006031
证书pem格式apiclient_cert.pem
从apiclient_cert.p12中导出证书部分的文件为pem格式请妥善保管不要泄漏和被他人复制
部分开发语言和环境不能直接使用p12文件而需要使用pem所以为了方便您使用已为您直接提供
您也可以使用openssl命令来自己导出openssl pkcs12 -clcerts -nokeys -in apiclient_cert.p12 -out apiclient_cert.pem
证书密钥pem格式apiclient_key.pem
从apiclient_cert.p12中导出密钥部分的文件为pem格式
部分开发语言和环境不能直接使用p12文件而需要使用pem所以为了方便您使用已为您直接提供
您也可以使用openssl命令来自己导出openssl pkcs12 -nocerts -in apiclient_cert.p12 -out apiclient_key.pem
备注说明:
由于绝大部分操作系统已内置了微信支付服务器证书的根CA证书, 2018年3月6日后, 不再提供CA证书文件rootca.pem下载

View File

@ -10,10 +10,10 @@
.layui-form-item-lg .layui-input-block{margin-left: 190px;}
.footBar-item {float: left; width: 47%;margin-top: 10px;margin-right:10px;border-bottom: 1px dashed #f5f5f5;}
.footBar-item .footBar-img{ min-width: 140px;height: 140px; float: left;}
.footBar-item .footBar-img{ min-width: 140px;height: 140px; float: left; margin-bottom: 15px}
.footBar-item .footBar-img .preview-list{min-width: 100px;height: 100%;display: inline-block;float: left; border:1px solid #f2f2f2;}
.footBar-item .footBar-img .preview-list .preview-li{ width: auto;height: 100%;display: inline-block;vertical-align:top;margin-right: 10px;}
.footBar-item .footBar-img .preview-list .preview-li img{width: 90px; height: 90px;}
.footBar-item .footBar-img .preview-list .preview-li img{width: 90px; height: 90px;background: rgba(0,0,0,0.5)}
.footBar-item .img-change-operate{margin-top: 5px;}
.footBar-item .img-change-operate button{margin-top:8px;}
.footBar-item .footBar-content{min-width: 200px; float: left; margin-left: 10px;}

View File

@ -46,13 +46,13 @@ layui.use(['laytpl', 'table', 'jquery', 'form', 'miniTab', 'xmSelect', 'laydate'
cols: [[
{type: 'checkbox'},
{field: 'id', width: 80, title: '编号'},
{field: 'nickname', width: 150, title: '昵称'},
{field: 'real_name', width: 100, title: '真实姓名'},
{field: 'mobile', width: 120, title: '电话'},
{field: 'tag', minWidth: 100, title: '客户标签'},
{field: 'created_at', minWidth: 180, title: '注册时间'},
{field: 'gender_text', minWidth: 80, title: '性别'},
{templet: '#row-operate', fixed: "right", minWidth: 250, title: '操作'},
{field: 'nickname', title: '昵称'},
{field: 'real_name',title: '真实姓名'},
{field: 'mobile', title: '电话'},
// {field: 'tag', minWidth: 100, title: '客户标签'},
{field: 'created_at', title: '注册时间'},
{field: 'gender_text', title: '性别'},
{templet: '#row-operate', fixed: "right", title: '操作'},
]],
done: function () {
Tools.setInsTb(insTb);

View File

@ -148,7 +148,7 @@ layui.use(['laytpl', 'table', 'jquery', 'form', 'miniTab', 'xmSelect', 'laydate'
// {field: 'express_code', title: '快递公司代号', minWidth: 150, hide: true},
// {field: 'express_name', title: '快递公司名称', minWidth: 150, hide: true},
// {field: 'accepted_at', title: '确认收货时间', width: 160, hide: true},
{ fixed: 'right', title: '操作', templet: '#row-operate'}
{ fixed: 'right', title: '操作', minWidth:220,templet: '#row-operate'}
]],
done: function () {
Tools.setInsTb(insTb);

View File

@ -34,17 +34,17 @@
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">客户标签</label>
<div class="layui-input-inline">
<select name="tag">
<option value=""></option>
{foreach $tagList as $tag}
<option value="{$tag['id'] ?? ''}">{$tag['name'] ?? ''}</option>
{/foreach}
</select>
</div>
</div>
<!-- <div class="layui-inline">-->
<!-- <label class="layui-form-label">客户标签</label>-->
<!-- <div class="layui-input-inline">-->
<!-- <select name="tag">-->
<!-- <option value=""></option>-->
<!-- {foreach $tagList as $tag}-->
<!-- <option value="{$tag['id'] ?? ''}">{$tag['name'] ?? ''}</option>-->
<!-- {/foreach}-->
<!-- </select>-->
<!-- </div>-->
<!-- </div>-->
<div class="layui-inline">
<button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="data-search-btn"><i class="layui-icon"></i> 搜 索</button>
@ -61,15 +61,20 @@
</div>
</div>
<!-- <a class="layui-btn layui-btn-primary layui-btn-xs" -->
<!-- data-href="/manager/account/index/detail.html?id={{d.id}}" -->
<!-- data-title="客户详情"-->
<!-- lay-event="detail">详情</a>-->
<!-- 操作列 -->
<script type="text/html" id="row-operate">
<a class="layui-btn layui-btn-primary layui-btn-xs" data-href="/manager/account/index/detail.html?id={{d.id}}" data-title="客户详情" lay-event="detail">详情</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" data-href="/manager/account/index/edit.html?id={{d.id}}" data-title="用户编辑" lay-event="detail">编辑</a>
</script>
<!-- toolbar -->
<script type="text/html" id="toolbar-tpl">
<a class="layui-btn layui-btn-primary layui-btn-sm" data-table-refresh lay-event="refresh"><i class="fa fa-refresh"></i></a>
<a class="layui-btn layui-btn-normal layui-btn-sm" data-href="/manager/account/index/tag.html" data-width="40%" data-height="60%" data-title="分配客户标签" lay-event="tag">分配客户标签</a>
<!-- <a class="layui-btn layui-btn-normal layui-btn-sm" data-href="/manager/account/index/tag.html" data-width="40%" data-height="60%" data-title="分配客户标签" lay-event="tag">分配客户标签</a>-->
</script>
<script src="__MANAGER__/js/account/account.js?v={:mt_rand()}"></script>

View File

@ -4,6 +4,28 @@
<form class="layui-form " data-action="{:url('manager.config/'.$Request.action)}">
关于我们
<hr>
<div class="layui-form-item">
<label class="layui-form-label required">公司名称</label>
<div class="layui-input-block">
<input type="text" name="company_name" lay-verify="required" value="{$item.company_name ?? ''}" lay-reqtext="公司名称不能为空" placeholder="请输入详细地址" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label required">联系人</label>
<div class="layui-input-block">
<input type="text" name="contacts" lay-verify="required" value="{$item.contacts ?? ''}" lay-reqtext="联系人不能为空" placeholder="请输入详细地址" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label required">联系电话</label>
<div class="layui-input-block">
<input type="text" name="phone" lay-verify="required" value="{$item.phone ?? ''}" lay-reqtext="联系电话不能为空" placeholder="请输入详细地址" class="layui-input">
</div>
</div>
<!-- 详细地址 -->
<div class="layui-form-item">
<label class="layui-form-label required">地址</label>

View File

@ -0,0 +1,45 @@
{layout name="manager/layout" /}
<div class="layui-card layui-col-md12">
<div class="layui-card-body">
<form class="layui-form " data-action="{:url('manager.config/'.$Request.action)}">
添加微信
<hr>
<!-- 我二维码 -->
<div class="layui-form-item layui-row field-div current-field-cover" >
<label class="layui-form-label">二维码:</label>
<div class="layui-inline layui-col-xs12 layui-col-md8">
<div class="layui-row upload-file-div">
<div class=" layui-col-xs12 layui-col-md8">
<input class="layui-input upload-file-value" name="wechat" type="text" value="{$item.wechat ?? ''}">
<div class="layui-form-mid layui-word-aux">
图片尺寸500*500
</div>
</div>
<div class="layui-col-xs12 layui-col-md3">
<span>
<button type="button" class="layui-btn layui-btn-danger upload-btn">
<i class="fa fa-upload"></i> 上传
</button>
</span>
</div>
<ul class="layui-row layui-col-xs12 layui-col-md9 preview-list layui-col-space5"></ul>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">内容</label>
<div class="layui-input-block editor-text">
<div class="editor"></div>
<textarea name="content" class="layui-textarea layui-hide">{$item.content??''}</textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button type="button" class="layui-btn layui-btn-normal" data-url="/manager/config/{$Request.action}" lay-submit lay-filter="saveConfig">保存</button>
</div>
</div>
</form>
</div>
</div>

View File

@ -20,21 +20,28 @@
<div class="layui-form-item">
<label class="layui-form-label">底部导航设置</label>
<div class="layui-input-block">
{foreach $footBarIcons as $i => $icon}
{foreach $footBar as $i => $icon}
<div class="footBar-item upload-file-div">
<div class="footBar-img">
<ul class="preview-list"></ul>
<input type="hidden" class="upload-file-value" name="footBar[{$i}][icon]" value="{:$footBar[$i]['icon'] ?? ''}">
</div>
<div class="footBar-content">
<input type="hidden" name="footBar[{$i}][key]" value="{:$footBar[$i]['key'] ?? $icon['key']}">
<input type="text" name="footBar[{$i}][name]" autocomplete="off" placeholder="ICON标题" class="layui-input" value="{:$footBar[$i]['name'] ?? $icon['name']}" readonly>
<div class="img-change-operate">
<button type="button" class="layui-btn layui-btn-info upload-btn" data-multiple="{$icon['multi']}">
<i class="fa fa-upload"></i> 上传
</button>
<div class="layui-row">
<div class="footBar-img ">
<ul class="preview-list"></ul>
<input type="hidden" class="upload-file-value" name="footBar[{$i}][icon]" value="{:$footBar[$i]['icon'] ?? ''}">
</div>
</div>
<div class="layui-row">
<div class="footBar-content layui-row">
<input type="hidden" name="footBar[{$i}][key]" value="{:$footBar[$i]['key'] ?? $icon['key']}">
<input type="text" name="footBar[{$i}][name]" autocomplete="off" placeholder="ICON标题" class="layui-input" value="{:$footBar[$i]['name'] ?? $icon['name']}" readonly>
<div class="img-change-operate">
<button type="button" class="layui-btn layui-btn-info upload-btn" data-multiple="1">
<i class="fa fa-upload"></i> 上传
</button>
</div>
<p class="word-aux">图标大小为 40 * 40 第1图为默认图第2图为高亮图</p>
</div>
<p class="word-aux">{$icon['aux']}</p>
</div>
</div>
{/foreach}

View File

@ -0,0 +1,21 @@
{layout name="manager/layout" /}
<div class="layui-card layui-col-md12">
<div class="layui-card-body">
<form class="layui-form " data-action="{:url('manager/config/purchaseinstructions')}">
免责声明
<hr>
<div class="layui-form-item">
<label class="layui-form-label">内容</label>
<div class="layui-input-block editor-text">
<div class="editor"></div>
<textarea name="content" class="layui-textarea layui-hide">{$item.content??''}</textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button type="button" class="layui-btn layui-btn-normal" data-url="/manager/config/purchaseinstructions" lay-submit lay-filter="saveConfig">保存</button>
</div>
</div>
</form>
</div>
</div>

View File

@ -18,11 +18,11 @@
<div class="layui-form-item layui-form-item-lg">
<label class="layui-form-label">小程序 appSecret</label>
<div class="layui-input-block">
<input class="layui-input" type="password" name="applets_appSecret" value="{$item.applets_appSecret ?? ''}" placeholder="小程序 appSecret" />
<input class="layui-input" type="text" name="applets_appSecret" value="{$item.applets_appSecret ?? ''}" placeholder="小程序 appSecret" />
</div>
</div>
<div class="layui-form-item layui-form-item-lg">
<div class="layui-form-item layui-form-item-lg layui-hide">
<label class="layui-form-label">支付回调</label>
<div class="layui-input-block">
<input class="layui-input" type="text" name="applets_notify_url" value="{$item.applets_notify_url ?? ''}" placeholder="支付回调地址" />
@ -55,7 +55,7 @@
</div>
</div>
<div class="config-group-item">
<div class="config-group-item layui-hide">
<div class="config-group-title">微信支付</div>
<hr>
<div class="layui-form-item layui-form-item-lg">
@ -106,7 +106,7 @@
</div>
</div>
<div class="config-group-item">
<div class="config-group-item layui-hide">
<div class="config-group-title">企业微信</div>
<hr>
<div class="layui-form-item layui-form-item-lg">

View File

@ -0,0 +1,29 @@
{layout name="manager/layout" /}
<div class="layuimini-container location-tag-page">
<div class="layuimini-main">
<div class="layui-form layuimini-form">
<input type="hidden" name="id" value="{$id}">
<div class="layui-form-item">
<label class="layui-form-label required">状态</label>
<div class="layui-input-block">
{foreach $statusList as $key =>$item}
<input type="radio" name="status" value="{$key}" title="{$item}" {if $status== $key}checked="" {/if}>
{/foreach}
</div>
</div>
<div class="layui-form-item">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn layui-btn-normal" data-url="/manager/mall/order/edit-status" lay-submit
lay-filter="saveBtn">确认保存
</button>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -73,7 +73,16 @@
<!-- 操作列 -->
<script type="text/html" id="row-operate">
<a class="layui-btn layui-btn-primary layui-btn-xs" data-href="/manager/mall/order/info.html?id={{d.id}}" data-title="订单详情" lay-event="info">详情</a>
<a class="layui-btn layui-btn-xs" data-href="/manager/mall/order/edit-status.html?id={{d.id}}"
data-width="40%" data-height="60%" data-title="修改状态" lay-event="edit-status">修改状态</a>
<a class="layui-btn layui-btn-xs" onclick="parent.window.open('/manager/mall/order/export-order-info?id={{d.id}}')"
data-title="导出" >导出</a>
<a class="layui-btn layui-btn-primary layui-btn-xs" data-href="/manager/mall/order/info.html?id={{d.id}}"
data-title="订单详情" lay-event="info">详情</a>
{{# if (d.status == 'paid' || d.status == 'shipped') {
let sendTitle = d.status == 'paid' ? '发货' : '重发';
}}