作者 jinglong

增加发票相关接口

... ... @@ -2,11 +2,19 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="61dc3f00-6d8a-4d88-a90a-bb5e2de6911f" name="Default" comment="">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/application/admin/controller/Invoice.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/application/admin/lang/zh-cn/invoice.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/application/admin/model/Invoice.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/application/admin/validate/Invoice.php" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/application/admin/view/invoice/add.html" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/application/admin/view/invoice/edit.html" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/application/admin/view/invoice/index.html" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/public/assets/js/backend/invoice.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/application/api/controller/Person.php" afterPath="$PROJECT_DIR$/application/api/controller/Person.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/application/api/controller/Wxpay.php" afterPath="$PROJECT_DIR$/application/api/controller/Wxpay.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/application/extra/site.php" afterPath="$PROJECT_DIR$/application/extra/site.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/public/api.html" afterPath="$PROJECT_DIR$/public/api.html" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/runtime/cache/cb/78ef4a9130f39208ff10858ddd8377.php" afterPath="$PROJECT_DIR$/runtime/cache/cb/78ef4a9130f39208ff10858ddd8377.php" />
</list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" />
... ... @@ -20,8 +28,8 @@
<file leaf-file-name="site.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/application/extra/site.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="714">
<caret line="174" column="25" lean-forward="false" selection-start-line="174" selection-start-column="13" selection-end-line="174" selection-end-column="25" />
<state relative-caret-position="300">
<caret line="124" column="11" lean-forward="false" selection-start-line="124" selection-start-column="5" selection-end-line="124" selection-end-column="11" />
<folding />
</state>
</provider>
... ... @@ -31,8 +39,10 @@
<entry file="file://$PROJECT_DIR$/application/api/controller/Person.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="553">
<caret line="349" column="90" lean-forward="false" selection-start-line="349" selection-start-column="90" selection-end-line="349" selection-end-column="90" />
<folding />
<caret line="483" column="35" lean-forward="false" selection-start-line="483" selection-start-column="35" selection-end-line="483" selection-end-column="35" />
<folding>
<element signature="e#38#68#0#PHP" expanded="true" />
</folding>
</state>
</provider>
</entry>
... ... @@ -40,8 +50,8 @@
<file leaf-file-name="Wxpay.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/application/api/controller/Wxpay.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="668">
<caret line="316" column="7" lean-forward="true" selection-start-line="316" selection-start-column="7" selection-end-line="316" selection-end-column="7" />
<state relative-caret-position="7084">
<caret line="316" column="7" lean-forward="false" selection-start-line="316" selection-start-column="7" selection-end-line="316" selection-end-column="7" />
<folding>
<element signature="e#38#68#0#PHP" expanded="true" />
</folding>
... ... @@ -99,8 +109,6 @@
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/application/admin/view/customer/add.html" />
<option value="$PROJECT_DIR$/application/admin/view/customer/edit.html" />
<option value="$PROJECT_DIR$/application/admin/lang/zh-cn/customer.php" />
<option value="$USER_HOME$/AppData/Local/Temp/gjr_user.sql" />
<option value="$PROJECT_DIR$/application/admin/view/meal/index.html" />
... ... @@ -148,6 +156,8 @@
<option value="$PROJECT_DIR$/public/assets/js/backend/pplate.js" />
<option value="$PROJECT_DIR$/application/admin/controller/Ptube.php" />
<option value="$PROJECT_DIR$/application/api/controller/Wxpay.php" />
<option value="$PROJECT_DIR$/application/admin/lang/zh-cn/invoice.php" />
<option value="$PROJECT_DIR$/public/assets/js/backend/invoice.js" />
<option value="$PROJECT_DIR$/application/extra/site.php" />
<option value="$PROJECT_DIR$/application/api/controller/Person.php" />
</list>
... ... @@ -232,6 +242,30 @@
<path>
<item name="gangjuren" type="b2602c69:ProjectViewProjectNode" />
<item name="gangjuren" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="application" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="admin" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="lang" type="2a2b976b:PhpTreeStructureProvider$1" />
</path>
<path>
<item name="gangjuren" type="b2602c69:ProjectViewProjectNode" />
<item name="gangjuren" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="application" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="admin" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="lang" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="zh-cn" type="2a2b976b:PhpTreeStructureProvider$1" />
</path>
<path>
<item name="gangjuren" type="b2602c69:ProjectViewProjectNode" />
<item name="gangjuren" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="application" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="admin" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="lang" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="zh-cn" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="user" type="2a2b976b:PhpTreeStructureProvider$1" />
</path>
<path>
<item name="gangjuren" type="b2602c69:ProjectViewProjectNode" />
<item name="gangjuren" type="2a2b976b:PhpTreeStructureProvider$1" />
<item name="public" type="2a2b976b:PhpTreeStructureProvider$1" />
</path>
<path>
... ... @@ -271,7 +305,7 @@
<property name="node.js.path.for.package.standard" value="project" />
<property name="node.js.selected.package.standard" value="" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../xiaofang" />
<property name="node.js.detected.package.jscs" value="true" />
<property name="node.js.detected.package.eslint" value="true" />
</component>
... ... @@ -321,17 +355,18 @@
<workItem from="1566547320999" duration="10575000" />
<workItem from="1566607074350" duration="21141000" />
<workItem from="1566780240850" duration="14011000" />
<workItem from="1566866516544" duration="5708000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="180037000" />
<option name="totallyTimeSpent" value="185745000" />
</component>
<component name="ToolWindowManager">
<frame x="-8" y="-8" width="1936" height="1056" extended-state="6" />
<editor active="true" />
<layout>
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.20042644" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.20255864" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
... ... @@ -382,21 +417,6 @@
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/application/api/controller/Meal.php" />
<entry file="file://$PROJECT_DIR$/application/api/controller/Abouts.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="7" column="9" lean-forward="true" selection-start-line="7" selection-start-column="9" selection-end-line="7" selection-end-column="9" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/admin/view/user/rule/index.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/admin/view/user/user/edit.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="299">
... ... @@ -510,13 +530,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/admin/lang/zh-cn/user/user.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="691">
<caret line="32" column="29" lean-forward="false" selection-start-line="32" selection-start-column="29" selection-end-line="32" selection-end-column="29" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/admin/controller/user/User.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="714">
... ... @@ -648,13 +661,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/public/assets/js/backend/equipment.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="437">
<caret line="34" column="71" lean-forward="false" selection-start-line="34" selection-start-column="71" selection-end-line="34" selection-end-column="71" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/admin/lang/zh-cn/pplate.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="391">
... ... @@ -709,18 +715,58 @@
</entry>
<entry file="file://$PROJECT_DIR$/application/api/controller/Wxpay.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="668">
<caret line="316" column="7" lean-forward="true" selection-start-line="316" selection-start-column="7" selection-end-line="316" selection-end-column="7" />
<state relative-caret-position="7084">
<caret line="316" column="7" lean-forward="false" selection-start-line="316" selection-start-column="7" selection-end-line="316" selection-end-column="7" />
<folding>
<element signature="e#38#68#0#PHP" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/admin/model/Invoice.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="161">
<caret line="7" column="6" lean-forward="false" selection-start-line="7" selection-start-column="6" selection-end-line="7" selection-end-column="6" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/admin/lang/zh-cn/user/user.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="691">
<caret line="32" column="31" lean-forward="true" selection-start-line="32" selection-start-column="31" selection-end-line="32" selection-end-column="31" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/admin/lang/zh-cn/invoice.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="69">
<caret line="3" column="24" lean-forward="false" selection-start-line="3" selection-start-column="24" selection-end-line="3" selection-end-column="24" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/public/assets/js/backend/equipment.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="299">
<caret line="28" column="94" lean-forward="false" selection-start-line="28" selection-start-column="89" selection-end-line="28" selection-end-column="94" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/public/assets/js/backend/invoice.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="690">
<caret line="36" column="152" lean-forward="true" selection-start-line="36" selection-start-column="152" selection-end-line="36" selection-end-column="152" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/extra/site.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="714">
<caret line="174" column="25" lean-forward="false" selection-start-line="174" selection-start-column="13" selection-end-line="174" selection-end-column="25" />
<state relative-caret-position="300">
<caret line="124" column="11" lean-forward="false" selection-start-line="124" selection-start-column="5" selection-end-line="124" selection-end-column="11" />
<folding />
</state>
</provider>
... ... @@ -728,8 +774,10 @@
<entry file="file://$PROJECT_DIR$/application/api/controller/Person.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="553">
<caret line="349" column="90" lean-forward="false" selection-start-line="349" selection-start-column="90" selection-end-line="349" selection-end-column="90" />
<folding />
<caret line="483" column="35" lean-forward="false" selection-start-line="483" selection-start-column="35" selection-end-line="483" selection-end-column="35" />
<folding>
<element signature="e#38#68#0#PHP" expanded="true" />
</folding>
</state>
</provider>
</entry>
... ...
<?php
namespace app\admin\controller;
use app\common\controller\Backend;
/**
* 发票管理
*
* @icon fa fa-circle-o
*/
class Invoice extends Backend
{
/**
* Invoice模型对象
* @var \app\admin\model\Invoice
*/
protected $model = null;
public function _initialize()
{
parent::_initialize();
$this->model = new \app\admin\model\Invoice;
}
/**
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
*/
/**
* 查看
*/
public function index()
{
//当前是否为关联查询
$this->relationSearch = true;
//设置过滤方法
$this->request->filter(['strip_tags']);
if ($this->request->isAjax())
{
//如果发送的来源是Selectpage,则转发到Selectpage
if ($this->request->request('keyField'))
{
return $this->selectpage();
}
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
$total = $this->model
->with(['user'])
->where($where)
->order($sort, $order)
->count();
$list = $this->model
->with(['user'])
->where($where)
->order($sort, $order)
->limit($offset, $limit)
->select();
foreach ($list as $row) {
$row->visible(['id','status','type','payable','money','createtime']);
$row->visible(['user']);
$row->getRelation('user')->visible(['username','nickname','avatar']);
}
$list = collection($list)->toArray();
$result = array("total" => $total, "rows" => $list);
return json($result);
}
return $this->view->fetch();
}
}
... ...
<?php
return [
'Id' => 'ID',
'belong' => '客户名称',
'Status' => '状态',
'Type' => '发票类型',
'Payable' => '发票抬头',
'Paragraph' => '税号',
'Mark' => '备注',
'Address' => '地址',
'Mobile' => '电话',
'Open_bank' => '开户行',
'Open_account' => '开户行账号',
'Money' => '发票金额',
'User_name' => '姓名',
'User_mobile' => '电话',
'User_address' => '地址',
'Createtime' => '创建时间',
'User.username' => '用户名',
'User.nickname' => '昵称',
'User.avatar' => '头像'
];
... ...
<?php
namespace app\admin\model;
use think\Model;
class Invoice extends Model
{
// 表名
protected $name = 'invoice';
// 自动写入时间戳字段
protected $autoWriteTimestamp = 'int';
// 定义时间戳字段名
protected $createTime = 'createtime';
protected $updateTime = false;
protected $deleteTime = false;
// 追加属性
protected $append = [
];
public function user()
{
return $this->belongsTo('User', 'uid', 'id', [], 'LEFT')->setEagerlyType(0);
}
}
... ...
<?php
namespace app\admin\validate;
use think\Validate;
class Invoice extends Validate
{
/**
* 验证规则
*/
protected $rule = [
];
/**
* 提示消息
*/
protected $message = [
];
/**
* 验证场景
*/
protected $scene = [
'add' => [],
'edit' => [],
];
}
... ...
<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Uid')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-uid" data-rule="required" class="form-control" name="row[uid]" type="number">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-status" data-rule="required" class="form-control" name="row[status]" type="number" value="0">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Type')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-type" data-rule="required" class="form-control" name="row[type]" type="number" value="0">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Payable')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-payable" data-rule="required" class="form-control" name="row[payable]" type="text">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Paragraph')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-paragraph" data-rule="required" class="form-control" name="row[paragraph]" type="text">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Mark')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-mark" data-rule="required" class="form-control" name="row[mark]" type="text">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Address')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-address" data-rule="required" class="form-control" name="row[address]" type="text">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Mobile')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-mobile" data-rule="required" class="form-control" name="row[mobile]" type="text">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Open_bank')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-open_bank" data-rule="required" class="form-control" name="row[open_bank]" type="text">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Open_account')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-open_account" data-rule="required" class="form-control" name="row[open_account]" type="text">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Money')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-money" data-rule="required" class="form-control" name="row[money]" type="text">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('User_name')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-user_name" data-rule="required" class="form-control" name="row[user_name]" type="text">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('User_mobile')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-user_mobile" data-rule="required" class="form-control" name="row[user_mobile]" type="text">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('User_address')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-user_address" data-rule="required" class="form-control" name="row[user_address]" type="text">
</div>
</div>
<div class="form-group layer-footer">
<label class="control-label col-xs-12 col-sm-2"></label>
<div class="col-xs-12 col-sm-8">
<button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
<button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
</div>
</div>
</form>
... ...
<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Uid')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-uid" data-rule="required" class="form-control" name="row[uid]" type="number" value="{$row.uid|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-status" data-rule="required" class="form-control" name="row[status]" type="number" value="{$row.status|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Type')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-type" data-rule="required" class="form-control" name="row[type]" type="number" value="{$row.type|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Payable')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-payable" data-rule="required" class="form-control" name="row[payable]" type="text" value="{$row.payable|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Paragraph')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-paragraph" data-rule="required" class="form-control" name="row[paragraph]" type="text" value="{$row.paragraph|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Mark')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-mark" data-rule="required" class="form-control" name="row[mark]" type="text" value="{$row.mark|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Address')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-address" data-rule="required" class="form-control" name="row[address]" type="text" value="{$row.address|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Mobile')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-mobile" data-rule="required" class="form-control" name="row[mobile]" type="text" value="{$row.mobile|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Open_bank')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-open_bank" data-rule="required" class="form-control" name="row[open_bank]" type="text" value="{$row.open_bank|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Open_account')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-open_account" data-rule="required" class="form-control" name="row[open_account]" type="text" value="{$row.open_account|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Money')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-money" data-rule="required" class="form-control" name="row[money]" type="text" value="{$row.money|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('User_name')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-user_name" data-rule="required" class="form-control" name="row[user_name]" type="text" value="{$row.user_name|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('User_mobile')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-user_mobile" data-rule="required" class="form-control" name="row[user_mobile]" type="text" value="{$row.user_mobile|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('User_address')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-user_address" data-rule="required" class="form-control" name="row[user_address]" type="text" value="{$row.user_address|htmlentities}">
</div>
</div>
<div class="form-group layer-footer">
<label class="control-label col-xs-12 col-sm-2"></label>
<div class="col-xs-12 col-sm-8">
<button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
<button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
</div>
</div>
</form>
... ...
<div class="panel panel-default panel-intro">
{:build_heading()}
<div class="panel-body">
<div id="myTabContent" class="tab-content">
<div class="tab-pane fade active in" id="one">
<div class="widget-body no-padding">
<div id="toolbar" class="toolbar">
<a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
<a href="javascript:;" class="btn btn-success btn-add {:$auth->check('invoice/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
<a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('invoice/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
<a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('invoice/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
<a href="javascript:;" class="btn btn-danger btn-import {:$auth->check('invoice/import')?'':'hide'}" title="{:__('Import')}" id="btn-import-file" data-url="ajax/upload" data-mimetype="csv,xls,xlsx" data-multiple="false"><i class="fa fa-upload"></i> {:__('Import')}</a>
<div class="dropdown btn-group {:$auth->check('invoice/multi')?'':'hide'}">
<a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>
<ul class="dropdown-menu text-left" role="menu">
<li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>
<li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>
</ul>
</div>
</div>
<table id="table" class="table table-striped table-bordered table-hover table-nowrap"
data-operate-edit="{:$auth->check('invoice/edit')}"
data-operate-del="{:$auth->check('invoice/del')}"
width="100%">
</table>
</div>
</div>
</div>
</div>
</div>
... ...
... ... @@ -6,6 +6,7 @@ use app\common\controller\Api;
use think\Db;
use think\Validate;
use app\admin\model\Recommend;
use app\admin\model\Invoice;
/**
* 个人信息接口
*/
... ... @@ -336,7 +337,7 @@ class Person extends Api
* @ApiRoute (/api/person/applyInvoice)
* @ApiHeaders (name=token, type=string, required=true, description="请求的Token")
*
* @ApiParams (name="type", type="inter", required=true, description="类型(0:企业,1:非企业 )")
* @ApiParams (name="type", type="inter", required=true, description="类型(0:企业单位,1:个人/非企业单位 )")
* @ApiParams (name="payable", type="string", required=true, description="发票抬头")
* @ApiParams (name="paragraph", type="string", required=true, description="发票税号")
* @ApiParams (name="mark", type="string", required=true, description="发票备注")
... ... @@ -365,6 +366,124 @@ class Person extends Api
if (!$validate->check($data)) {
$this->error($validate->getError());
}
$data['uid'] = $this->user_id;
$data['createtime'] = time();
$invoiceModel = new Invoice();
$res = $invoiceModel->create($data);
if($res){
$this->success('成功');
}else{
$this->error('失败');
}
}else{
$this->error('请求方式错误');
}
}
/**
* @ApiTitle (开票历史)
* @ApiSummary (开票历史)
* @ApiMethod (GET)
* @ApiRoute (/api/person/invoiceRecord)
* @ApiHeaders (name=token, type=string, required=true, description="请求的Token")
*
* @ApiParams (name="page", type="inter", required=true, description="页码")
*
* @ApiReturn({
"code": 1,
"msg": "成功",
"time": "1553838137",
"data":[
{
"id": 1,//发票id
"status": 0,//状态(0:待审核,1:待开票,2:待邮寄,3:已邮寄)
"createtime": "2019-08-27 09:51",//开票时间
"mark": "景龙备注",//发票内容
"money": "100"//发票金额
},
{
"id": 2,
"status": 0,
"createtime": "2019-08-27 09:51",
"mark": "景龙备注",
"money": "200"
},
]
})
*/
public function invoiceRecord(){
if($this->request->isGet()){
$page = $this->request->get('page');
//验证表数据
$rule = config('site.pages');
$validate = new Validate($rule['rule'],$rule['msg']);
if (!$validate->check(['page'=>$page])) {
$this->error($validate->getError());
}
$limit = config('site.page_limit');
$res = Db::name('invoice')
->where('uid',$this->user_id)
->field('id,status,createtime,mark,money')
->page($page,$limit)
->select();
foreach($res as &$value){
$value['createtime'] = date('Y-m-d H:i',$value['createtime']);
}
$this->success('成功',$res);
}else{
$this->error('请求方式错误');
}
}
/**
* @ApiTitle (发票详情)
* @ApiSummary (发票详情)
* @ApiMethod (GET)
* @ApiRoute (/api/person/invoiceDetail)
* @ApiHeaders (name=token, type=string, required=true, description="请求的Token")
*
* @ApiParams (name="id", type="inter", required=true, description="发票id")
*
* @ApiReturn({
"code": 1,
"msg": "成功",
"time": "1553838137",
"data":{
"id": 2,//发票id
"status": 0,//状态(0:待审核,1:待开票,2:待邮寄,3:已邮寄)
"type": 1,//类型类型(0:企业单位,1:个人/非企业单位 )
"payable": "天津百荣科技1",//发票开头
"paragraph": "003",//税号
"mark": "景龙备注",//发票内容
"address": "天津市南开区汇丰酒店",//地址
"mobile": "13752011720",//电话
"open_bank": "建行",//开户行
"open_account": "6217000060034649011",//开户行账号
"money": "200",//发票金额
"user_name": "景龙1",//收件人姓名
"user_mobile": "13752011722",//收件人电话
"user_address": "就是放的司法鉴定搜防静电",//收件人地址
"createtime": "2019-08-27 09:25"//申请时间
}
})
*/
public function invoiceDetail(){
if($this->request->isGet()){
$id = $this->request->get('id');
//验证表数据
$rule = config('site.get_id');
$validate = new Validate($rule['rule'],$rule['msg']);
if (!$validate->check(['id'=>$id])) {
$this->error($validate->getError());
}
$res = Db::name('invoice')
->where(['id'=>$id,'uid'=>$this->user_id])
->find();
if($res){
$res['createtime'] = date('Y-m-d H:i',$res['createtime']);
unset($res['uid']);
}
$this->success('成功',$res);
}else{
$this->error('请求方式错误');
}
... ...
... ... @@ -36,11 +36,15 @@ return array (
'mail_verify_type' => '2',
'mail_from' => '10000@qq.com',
'raw' => [
'app_id' => 'wx501cda0ef4db38a2',//客户app_id
'secret' => '7a5783b501fc3bab1bf6087303358199',//客户秘钥
],
//七牛云域名
'host' => 'http://jinglong.springchunjia.cn',
//分页限制数量
'page_limit' => 10,
'user' => [
'rule' => [
'code' => 'require',
... ... @@ -149,8 +153,8 @@ return array (
'mark' => 'require',
'address' => 'require',
'mobile' => 'require|regex:/^1[3-8]{1}[0-9]{9}$/',
'open_bank' => ['require','regex'=>'/^(\d{16}|\d{19})$/'],
'open_account' => 'require',
'open_bank' => 'require',
'open_account' => ['require','regex'=>'/^(\d{16}|\d{19})$/'],
'money' => 'require',
'user_name' => 'require',
'user_mobile' => 'require|regex:/^1[3-8]{1}[0-9]{9}$/',
... ... @@ -166,8 +170,8 @@ return array (
'mobile.require' => '电话不能为空',
'mobile' => '电话格式不正确',
'open_bank.require' => '开户行不能为空',
'open_bank' => '开户行格式不正确',
'open_account.require' => '开户行账号不能为空',
'open_account' => '开户行格式不正确',
'money.require' => '发票金额不能为空',
'user_name.require' => '收件人姓名不能为空',
'user_mobile.require' => '收件人电话不能为空',
... ... @@ -175,4 +179,13 @@ return array (
'user_address.require' => '收件人地址不能为空',
]
],
'pages' => [
'rule' => [
'page' => 'require|number',
],
'msg' => [
'page.require' => '页码不能为空',
'page.number' => '页码必须是数字',
]
],
);
\ No newline at end of file
... ...
此 diff 太大无法显示。
define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
var Controller = {
index: function () {
// 初始化表格参数配置
Table.api.init({
extend: {
index_url: 'invoice/index' + location.search,
add_url: 'invoice/add',
edit_url: 'invoice/edit',
del_url: 'invoice/del',
multi_url: 'invoice/multi',
table: 'invoice',
}
});
var table = $("#table");
// 初始化表格
table.bootstrapTable({
url: $.fn.bootstrapTable.defaults.extend.index_url,
pk: 'id',
sortName: 'id',
columns: [
[
{checkbox: true},
{field: 'id', title: __('Id')},
{field: 'user.username', title: __('User.username')},
{field: 'user.nickname', title: __('User.nickname')},
{field: 'user.avatar', title: __('User.avatar'), events: Table.api.events.image, formatter: Table.api.formatter.image},
{field: 'belong', title: __('belong')},
{field: 'type', title: __('Type'),formatter: Table.api.formatter.label,searchList: {'0': __('企业单位'),'1': __('个人/非企业单位')}},
{field: 'payable', title: __('Payable')},
{field: 'money', title: __('Money')},
{field: 'status', title: __('Status'),formatter: Table.api.formatter.label,searchList: {'0': __('待审核'),'1': __('待开票'),'2': __('待邮寄'),'3':__('已邮寄')}},
{field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime},
{field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
]
]
});
// 为表格绑定事件
Table.api.bindevent(table);
},
add: function () {
Controller.api.bindevent();
},
edit: function () {
Controller.api.bindevent();
},
api: {
bindevent: function () {
Form.api.bindevent($("form[role=form]"));
}
}
};
return Controller;
});
\ No newline at end of file
... ...
<?php
//000000000000
exit();?>
a:28:{i:0;a:13:{s:2:"id";i:1;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:9:"dashboard";s:5:"title";s:9:"Dashboard";s:4:"icon";s:15:"fa fa-dashboard";s:9:"condition";s:0:"";s:6:"remark";s:14:"Dashboard tips";s:6:"ismenu";i:1;s:10:"createtime";i:1497429920;s:10:"updatetime";i:1497429920;s:5:"weigh";i:143;s:6:"status";s:6:"normal";}i:1;a:13:{s:2:"id";i:2;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:7:"general";s:5:"title";s:7:"General";s:4:"icon";s:10:"fa fa-cogs";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1497429920;s:10:"updatetime";i:1497430169;s:5:"weigh";i:137;s:6:"status";s:6:"normal";}i:2;a:13:{s:2:"id";i:3;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:8:"category";s:5:"title";s:8:"Category";s:4:"icon";s:10:"fa fa-leaf";s:9:"condition";s:0:"";s:6:"remark";s:13:"Category tips";s:6:"ismenu";i:1;s:10:"createtime";i:1497429920;s:10:"updatetime";i:1497429920;s:5:"weigh";i:119;s:6:"status";s:6:"normal";}i:3;a:13:{s:2:"id";i:9;s:4:"type";s:4:"file";s:3:"pid";i:5;s:4:"name";s:10:"auth/admin";s:5:"title";s:5:"Admin";s:4:"icon";s:10:"fa fa-user";s:9:"condition";s:0:"";s:6:"remark";s:10:"Admin tips";s:6:"ismenu";i:1;s:10:"createtime";i:1497429920;s:10:"updatetime";i:1497430320;s:5:"weigh";i:118;s:6:"status";s:6:"normal";}i:4;a:13:{s:2:"id";i:10;s:4:"type";s:4:"file";s:3:"pid";i:5;s:4:"name";s:13:"auth/adminlog";s:5:"title";s:9:"Admin log";s:4:"icon";s:14:"fa fa-list-alt";s:9:"condition";s:0:"";s:6:"remark";s:14:"Admin log tips";s:6:"ismenu";i:1;s:10:"createtime";i:1497429920;s:10:"updatetime";i:1497430307;s:5:"weigh";i:113;s:6:"status";s:6:"normal";}i:5;a:13:{s:2:"id";i:11;s:4:"type";s:4:"file";s:3:"pid";i:5;s:4:"name";s:10:"auth/group";s:5:"title";s:5:"Group";s:4:"icon";s:11:"fa fa-group";s:9:"condition";s:0:"";s:6:"remark";s:10:"Group tips";s:6:"ismenu";i:1;s:10:"createtime";i:1497429920;s:10:"updatetime";i:1497429920;s:5:"weigh";i:109;s:6:"status";s:6:"normal";}i:6;a:13:{s:2:"id";i:12;s:4:"type";s:4:"file";s:3:"pid";i:5;s:4:"name";s:9:"auth/rule";s:5:"title";s:4:"Rule";s:4:"icon";s:10:"fa fa-bars";s:9:"condition";s:0:"";s:6:"remark";s:9:"Rule tips";s:6:"ismenu";i:1;s:10:"createtime";i:1497429920;s:10:"updatetime";i:1497430581;s:5:"weigh";i:104;s:6:"status";s:6:"normal";}i:7;a:13:{s:2:"id";i:5;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:4:"auth";s:5:"title";s:4:"Auth";s:4:"icon";s:11:"fa fa-group";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1497429920;s:10:"updatetime";i:1497430092;s:5:"weigh";i:99;s:6:"status";s:6:"normal";}i:8;a:13:{s:2:"id";i:4;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:5:"addon";s:5:"title";s:12:"插件管理";s:4:"icon";s:12:"fa fa-rocket";s:9:"condition";s:0:"";s:6:"remark";s:10:"Addon tips";s:6:"ismenu";i:1;s:10:"createtime";i:1502035509;s:10:"updatetime";i:1565403215;s:5:"weigh";i:98;s:6:"status";s:6:"normal";}i:9;a:13:{s:2:"id";i:66;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:4:"user";s:5:"title";s:12:"会员管理";s:4:"icon";s:10:"fa fa-list";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1516374729;s:10:"updatetime";i:1565403228;s:5:"weigh";i:97;s:6:"status";s:6:"normal";}i:10;a:13:{s:2:"id";i:86;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:7:"command";s:5:"title";s:18:"在线命令管理";s:4:"icon";s:14:"fa fa-terminal";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1565408505;s:10:"updatetime";i:1565408565;s:5:"weigh";i:96;s:6:"status";s:6:"normal";}i:11;a:13:{s:2:"id";i:85;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:8:"customer";s:5:"title";s:12:"客户管理";s:4:"icon";s:10:"fa fa-list";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1565403317;s:10:"updatetime";i:1566282967;s:5:"weigh";i:90;s:6:"status";s:6:"normal";}i:12;a:13:{s:2:"id";i:97;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:9:"equipment";s:5:"title";s:12:"设备管理";s:4:"icon";s:10:"fa fa-list";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1566207989;s:10:"updatetime";i:1566282984;s:5:"weigh";i:85;s:6:"status";s:6:"normal";}i:13;a:13:{s:2:"id";i:6;s:4:"type";s:4:"file";s:3:"pid";i:2;s:4:"name";s:14:"general/config";s:5:"title";s:6:"Config";s:4:"icon";s:9:"fa fa-cog";s:9:"condition";s:0:"";s:6:"remark";s:11:"Config tips";s:6:"ismenu";i:1;s:10:"createtime";i:1497429920;s:10:"updatetime";i:1497430683;s:5:"weigh";i:60;s:6:"status";s:6:"normal";}i:14;a:13:{s:2:"id";i:123;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:4:"meal";s:5:"title";s:12:"套餐设置";s:4:"icon";s:10:"fa fa-list";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1566389527;s:10:"updatetime";i:1566389527;s:5:"weigh";i:60;s:6:"status";s:6:"normal";}i:15;a:13:{s:2:"id";i:130;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:9:"recommend";s:5:"title";s:15:"推荐人管理";s:4:"icon";s:10:"fa fa-list";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1566458926;s:10:"updatetime";i:1566458926;s:5:"weigh";i:55;s:6:"status";s:6:"normal";}i:16;a:13:{s:2:"id";i:7;s:4:"type";s:4:"file";s:3:"pid";i:2;s:4:"name";s:18:"general/attachment";s:5:"title";s:10:"Attachment";s:4:"icon";s:18:"fa fa-file-image-o";s:9:"condition";s:0:"";s:6:"remark";s:15:"Attachment tips";s:6:"ismenu";i:1;s:10:"createtime";i:1497429920;s:10:"updatetime";i:1497430699;s:5:"weigh";i:53;s:6:"status";s:6:"normal";}i:17;a:13:{s:2:"id";i:132;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:3:"pay";s:5:"title";s:12:"订单管理";s:4:"icon";s:10:"fa fa-list";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1566613776;s:10:"updatetime";i:1566613776;s:5:"weigh";i:50;s:6:"status";s:6:"normal";}i:18;a:13:{s:2:"id";i:8;s:4:"type";s:4:"file";s:3:"pid";i:2;s:4:"name";s:15:"general/profile";s:5:"title";s:7:"Profile";s:4:"icon";s:10:"fa fa-user";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1497429920;s:10:"updatetime";i:1497429920;s:5:"weigh";i:34;s:6:"status";s:6:"normal";}i:19;a:13:{s:2:"id";i:107;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:7:"setting";s:5:"title";s:12:"文案设置";s:4:"icon";s:10:"fa fa-list";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1566289359;s:10:"updatetime";i:1566289370;s:5:"weigh";i:20;s:6:"status";s:6:"normal";}i:20;a:13:{s:2:"id";i:67;s:4:"type";s:4:"file";s:3:"pid";i:66;s:4:"name";s:9:"user/user";s:5:"title";s:4:"User";s:4:"icon";s:10:"fa fa-user";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1516374729;s:10:"updatetime";i:1516374729;s:5:"weigh";i:0;s:6:"status";s:6:"normal";}i:21;a:13:{s:2:"id";i:73;s:4:"type";s:4:"file";s:3:"pid";i:66;s:4:"name";s:10:"user/group";s:5:"title";s:10:"User group";s:4:"icon";s:11:"fa fa-users";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1516374729;s:10:"updatetime";i:1516374729;s:5:"weigh";i:0;s:6:"status";s:6:"normal";}i:22;a:13:{s:2:"id";i:79;s:4:"type";s:4:"file";s:3:"pid";i:66;s:4:"name";s:9:"user/rule";s:5:"title";s:9:"User rule";s:4:"icon";s:14:"fa fa-circle-o";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1516374729;s:10:"updatetime";i:1516374729;s:5:"weigh";i:0;s:6:"status";s:6:"normal";}i:23;a:13:{s:2:"id";i:108;s:4:"type";s:4:"file";s:3:"pid";i:107;s:4:"name";s:6:"banner";s:5:"title";s:15:"轮播图管理";s:4:"icon";s:14:"fa fa-circle-o";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1566289432;s:10:"updatetime";i:1566289432;s:5:"weigh";i:0;s:6:"status";s:6:"normal";}i:24;a:13:{s:2:"id";i:109;s:4:"type";s:4:"file";s:3:"pid";i:107;s:4:"name";s:9:"introduce";s:5:"title";s:18:"数板数管介绍";s:4:"icon";s:14:"fa fa-circle-o";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1566289514;s:10:"updatetime";i:1566289514;s:5:"weigh";i:0;s:6:"status";s:6:"normal";}i:25;a:13:{s:2:"id";i:110;s:4:"type";s:4:"file";s:3:"pid";i:107;s:4:"name";s:5:"about";s:5:"title";s:12:"关于我们";s:4:"icon";s:14:"fa fa-circle-o";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1566289544;s:10:"updatetime";i:1566289544;s:5:"weigh";i:0;s:6:"status";s:6:"normal";}i:26;a:13:{s:2:"id";i:133;s:4:"type";s:4:"file";s:3:"pid";i:132;s:4:"name";s:6:"pplate";s:5:"title";s:18:"数板套餐管理";s:4:"icon";s:14:"fa fa-circle-o";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1566613845;s:10:"updatetime";i:1566613845;s:5:"weigh";i:0;s:6:"status";s:6:"normal";}i:27;a:13:{s:2:"id";i:134;s:4:"type";s:4:"file";s:3:"pid";i:132;s:4:"name";s:5:"ptube";s:5:"title";s:18:"数管套餐管理";s:4:"icon";s:14:"fa fa-circle-o";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1566613884;s:10:"updatetime";i:1566613884;s:5:"weigh";i:0;s:6:"status";s:6:"normal";}}
\ No newline at end of file
a:29:{i:0;a:13:{s:2:"id";i:1;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:9:"dashboard";s:5:"title";s:9:"Dashboard";s:4:"icon";s:15:"fa fa-dashboard";s:9:"condition";s:0:"";s:6:"remark";s:14:"Dashboard tips";s:6:"ismenu";i:1;s:10:"createtime";i:1497429920;s:10:"updatetime";i:1497429920;s:5:"weigh";i:143;s:6:"status";s:6:"normal";}i:1;a:13:{s:2:"id";i:2;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:7:"general";s:5:"title";s:7:"General";s:4:"icon";s:10:"fa fa-cogs";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1497429920;s:10:"updatetime";i:1497430169;s:5:"weigh";i:137;s:6:"status";s:6:"normal";}i:2;a:13:{s:2:"id";i:3;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:8:"category";s:5:"title";s:8:"Category";s:4:"icon";s:10:"fa fa-leaf";s:9:"condition";s:0:"";s:6:"remark";s:13:"Category tips";s:6:"ismenu";i:1;s:10:"createtime";i:1497429920;s:10:"updatetime";i:1497429920;s:5:"weigh";i:119;s:6:"status";s:6:"normal";}i:3;a:13:{s:2:"id";i:9;s:4:"type";s:4:"file";s:3:"pid";i:5;s:4:"name";s:10:"auth/admin";s:5:"title";s:5:"Admin";s:4:"icon";s:10:"fa fa-user";s:9:"condition";s:0:"";s:6:"remark";s:10:"Admin tips";s:6:"ismenu";i:1;s:10:"createtime";i:1497429920;s:10:"updatetime";i:1497430320;s:5:"weigh";i:118;s:6:"status";s:6:"normal";}i:4;a:13:{s:2:"id";i:10;s:4:"type";s:4:"file";s:3:"pid";i:5;s:4:"name";s:13:"auth/adminlog";s:5:"title";s:9:"Admin log";s:4:"icon";s:14:"fa fa-list-alt";s:9:"condition";s:0:"";s:6:"remark";s:14:"Admin log tips";s:6:"ismenu";i:1;s:10:"createtime";i:1497429920;s:10:"updatetime";i:1497430307;s:5:"weigh";i:113;s:6:"status";s:6:"normal";}i:5;a:13:{s:2:"id";i:11;s:4:"type";s:4:"file";s:3:"pid";i:5;s:4:"name";s:10:"auth/group";s:5:"title";s:5:"Group";s:4:"icon";s:11:"fa fa-group";s:9:"condition";s:0:"";s:6:"remark";s:10:"Group tips";s:6:"ismenu";i:1;s:10:"createtime";i:1497429920;s:10:"updatetime";i:1497429920;s:5:"weigh";i:109;s:6:"status";s:6:"normal";}i:6;a:13:{s:2:"id";i:12;s:4:"type";s:4:"file";s:3:"pid";i:5;s:4:"name";s:9:"auth/rule";s:5:"title";s:4:"Rule";s:4:"icon";s:10:"fa fa-bars";s:9:"condition";s:0:"";s:6:"remark";s:9:"Rule tips";s:6:"ismenu";i:1;s:10:"createtime";i:1497429920;s:10:"updatetime";i:1497430581;s:5:"weigh";i:104;s:6:"status";s:6:"normal";}i:7;a:13:{s:2:"id";i:5;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:4:"auth";s:5:"title";s:4:"Auth";s:4:"icon";s:11:"fa fa-group";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1497429920;s:10:"updatetime";i:1497430092;s:5:"weigh";i:99;s:6:"status";s:6:"normal";}i:8;a:13:{s:2:"id";i:4;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:5:"addon";s:5:"title";s:12:"插件管理";s:4:"icon";s:12:"fa fa-rocket";s:9:"condition";s:0:"";s:6:"remark";s:10:"Addon tips";s:6:"ismenu";i:1;s:10:"createtime";i:1502035509;s:10:"updatetime";i:1565403215;s:5:"weigh";i:98;s:6:"status";s:6:"normal";}i:9;a:13:{s:2:"id";i:66;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:4:"user";s:5:"title";s:12:"会员管理";s:4:"icon";s:10:"fa fa-list";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1516374729;s:10:"updatetime";i:1565403228;s:5:"weigh";i:97;s:6:"status";s:6:"normal";}i:10;a:13:{s:2:"id";i:86;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:7:"command";s:5:"title";s:18:"在线命令管理";s:4:"icon";s:14:"fa fa-terminal";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1565408505;s:10:"updatetime";i:1565408565;s:5:"weigh";i:96;s:6:"status";s:6:"normal";}i:11;a:13:{s:2:"id";i:85;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:8:"customer";s:5:"title";s:12:"客户管理";s:4:"icon";s:10:"fa fa-list";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1565403317;s:10:"updatetime";i:1566282967;s:5:"weigh";i:90;s:6:"status";s:6:"normal";}i:12;a:13:{s:2:"id";i:97;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:9:"equipment";s:5:"title";s:12:"设备管理";s:4:"icon";s:10:"fa fa-list";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1566207989;s:10:"updatetime";i:1566282984;s:5:"weigh";i:85;s:6:"status";s:6:"normal";}i:13;a:13:{s:2:"id";i:6;s:4:"type";s:4:"file";s:3:"pid";i:2;s:4:"name";s:14:"general/config";s:5:"title";s:6:"Config";s:4:"icon";s:9:"fa fa-cog";s:9:"condition";s:0:"";s:6:"remark";s:11:"Config tips";s:6:"ismenu";i:1;s:10:"createtime";i:1497429920;s:10:"updatetime";i:1497430683;s:5:"weigh";i:60;s:6:"status";s:6:"normal";}i:14;a:13:{s:2:"id";i:123;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:4:"meal";s:5:"title";s:12:"套餐设置";s:4:"icon";s:10:"fa fa-list";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1566389527;s:10:"updatetime";i:1566389527;s:5:"weigh";i:60;s:6:"status";s:6:"normal";}i:15;a:13:{s:2:"id";i:139;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:7:"invoice";s:5:"title";s:12:"发票管理";s:4:"icon";s:10:"fa fa-list";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1566867237;s:10:"updatetime";i:1566867237;s:5:"weigh";i:58;s:6:"status";s:6:"normal";}i:16;a:13:{s:2:"id";i:130;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:9:"recommend";s:5:"title";s:15:"推荐人管理";s:4:"icon";s:10:"fa fa-list";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1566458926;s:10:"updatetime";i:1566458926;s:5:"weigh";i:55;s:6:"status";s:6:"normal";}i:17;a:13:{s:2:"id";i:7;s:4:"type";s:4:"file";s:3:"pid";i:2;s:4:"name";s:18:"general/attachment";s:5:"title";s:10:"Attachment";s:4:"icon";s:18:"fa fa-file-image-o";s:9:"condition";s:0:"";s:6:"remark";s:15:"Attachment tips";s:6:"ismenu";i:1;s:10:"createtime";i:1497429920;s:10:"updatetime";i:1497430699;s:5:"weigh";i:53;s:6:"status";s:6:"normal";}i:18;a:13:{s:2:"id";i:132;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:3:"pay";s:5:"title";s:12:"订单管理";s:4:"icon";s:10:"fa fa-list";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1566613776;s:10:"updatetime";i:1566613776;s:5:"weigh";i:50;s:6:"status";s:6:"normal";}i:19;a:13:{s:2:"id";i:8;s:4:"type";s:4:"file";s:3:"pid";i:2;s:4:"name";s:15:"general/profile";s:5:"title";s:7:"Profile";s:4:"icon";s:10:"fa fa-user";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1497429920;s:10:"updatetime";i:1497429920;s:5:"weigh";i:34;s:6:"status";s:6:"normal";}i:20;a:13:{s:2:"id";i:107;s:4:"type";s:4:"file";s:3:"pid";i:0;s:4:"name";s:7:"setting";s:5:"title";s:12:"文案设置";s:4:"icon";s:10:"fa fa-list";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1566289359;s:10:"updatetime";i:1566289370;s:5:"weigh";i:20;s:6:"status";s:6:"normal";}i:21;a:13:{s:2:"id";i:67;s:4:"type";s:4:"file";s:3:"pid";i:66;s:4:"name";s:9:"user/user";s:5:"title";s:4:"User";s:4:"icon";s:10:"fa fa-user";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1516374729;s:10:"updatetime";i:1516374729;s:5:"weigh";i:0;s:6:"status";s:6:"normal";}i:22;a:13:{s:2:"id";i:73;s:4:"type";s:4:"file";s:3:"pid";i:66;s:4:"name";s:10:"user/group";s:5:"title";s:10:"User group";s:4:"icon";s:11:"fa fa-users";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1516374729;s:10:"updatetime";i:1516374729;s:5:"weigh";i:0;s:6:"status";s:6:"normal";}i:23;a:13:{s:2:"id";i:79;s:4:"type";s:4:"file";s:3:"pid";i:66;s:4:"name";s:9:"user/rule";s:5:"title";s:9:"User rule";s:4:"icon";s:14:"fa fa-circle-o";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1516374729;s:10:"updatetime";i:1516374729;s:5:"weigh";i:0;s:6:"status";s:6:"normal";}i:24;a:13:{s:2:"id";i:108;s:4:"type";s:4:"file";s:3:"pid";i:107;s:4:"name";s:6:"banner";s:5:"title";s:15:"轮播图管理";s:4:"icon";s:14:"fa fa-circle-o";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1566289432;s:10:"updatetime";i:1566289432;s:5:"weigh";i:0;s:6:"status";s:6:"normal";}i:25;a:13:{s:2:"id";i:109;s:4:"type";s:4:"file";s:3:"pid";i:107;s:4:"name";s:9:"introduce";s:5:"title";s:18:"数板数管介绍";s:4:"icon";s:14:"fa fa-circle-o";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1566289514;s:10:"updatetime";i:1566289514;s:5:"weigh";i:0;s:6:"status";s:6:"normal";}i:26;a:13:{s:2:"id";i:110;s:4:"type";s:4:"file";s:3:"pid";i:107;s:4:"name";s:5:"about";s:5:"title";s:12:"关于我们";s:4:"icon";s:14:"fa fa-circle-o";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1566289544;s:10:"updatetime";i:1566289544;s:5:"weigh";i:0;s:6:"status";s:6:"normal";}i:27;a:13:{s:2:"id";i:133;s:4:"type";s:4:"file";s:3:"pid";i:132;s:4:"name";s:6:"pplate";s:5:"title";s:18:"数板套餐管理";s:4:"icon";s:14:"fa fa-circle-o";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1566613845;s:10:"updatetime";i:1566613845;s:5:"weigh";i:0;s:6:"status";s:6:"normal";}i:28;a:13:{s:2:"id";i:134;s:4:"type";s:4:"file";s:3:"pid";i:132;s:4:"name";s:5:"ptube";s:5:"title";s:18:"数管套餐管理";s:4:"icon";s:14:"fa fa-circle-o";s:9:"condition";s:0:"";s:6:"remark";s:0:"";s:6:"ismenu";i:1;s:10:"createtime";i:1566613884;s:10:"updatetime";i:1566613884;s:5:"weigh";i:0;s:6:"status";s:6:"normal";}}
\ No newline at end of file
... ...