销售机会页面

This commit is contained in:
hdm 2022-10-05 00:05:49 +08:00
parent 0507478f6a
commit 1aee22e77c
6 changed files with 609 additions and 39 deletions

View File

@ -0,0 +1,179 @@
<?php
/**
* @copyright Copyright (c) 2021 勾股工作室
* @license https://opensource.org/licenses/GPL-3.0
* @link https://www.gougucms.com
*/
declare (strict_types = 1);
namespace app\customer\controller;
use app\base\BaseController;
use app\customer\model\CustomerChance;
use app\customer\validate\CustomerChanceCheck;
use app\customer\model\CustomerTrace;
use think\exception\ValidateException;
use think\facade\Db;
use think\facade\View;
class Chance extends BaseController
{
public function index()
{
if (request()->isAjax()) {
$param = get_params();
$where = array();
$whereOr = array();
if (!empty($param['keywords'])) {
$where[] = ['a.id|a.title|c.name', 'like', '%' . $param['keywords'] . '%'];
}
if (!empty($param['stage'])) {
$where[] = ['a.stage', '=', $param['stage']];
}
if (!empty($param['start_date']) && !empty($param['end_date'])) {
$where[] = ['a.expected_time', 'BETWEEN', [strtotime($param['start_date']),strtotime($param['end_date'])]];
}
$where[] = ['a.delete_time', '=', 0];
$uid = $this->uid;
$auth = isAuth($uid,'customer_admin');
if($auth==0){
$dids = get_department_role($this->uid);
if(!empty($dids)){
$whereOr[] =['c.belong_did', 'in', $dids];
if (!empty($param['uid'])) {
$where[] = ['c.belong_uid', '=', $param['uid']];
}
}
$whereOr[] =['c.belong_uid', '=', $uid];
$whereOr[] = ['', 'exp', Db::raw("FIND_IN_SET('{$uid}',c.share_ids)")];
}
else{
if (!empty($param['uid'])) {
$where[] = ['c.belong_uid', '=', $param['uid']];
}
}
$rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit'];
$content = CustomerChance::where($where)
->where(function ($query) use($whereOr) {
$query->whereOr($whereOr);
})
->field('a.*,c.name as customer')
->alias('a')
->join('customer c', 'a.cid = c.id')
->order('a.create_time desc')
->paginate($rows, false, ['query' => $param])
->each(function ($item, $key) {
$item->belong_name = Db::name('Admin')->where(['id' => $item->belong_uid])->value('name');
$item->create_time = date('Y-m-d H:i:s', (int) $item->create_time);
$item->discovery_time = date('Y-m-d', (int) $item->discovery_time);
$item->expected_time = date('Y-m-d', (int) $item->expected_time);
$item->stage_name = CustomerTrace::$Stage[(int) $item->stage];
$item->services_name = Db::name('Services')->where(['id' => $item->services_id])->value('title');
});
return table_assign(0, '', $content);
} else {
return view();
}
}
//添加销售机会
public function chance_add()
{
$param = get_params();
if (request()->isAjax()) {
if(isset($param['discovery_time'])){
$param['discovery_time'] = strtotime($param['discovery_time']);
}
if(isset($param['expected_time'])){
$param['expected_time'] = strtotime($param['expected_time']);
}
if (!empty($param['id']) && $param['id'] > 0) {
$param['update_time'] = time();
$old = CustomerChance::where(['id' => $param['id']])->find();
if($this->uid!=$old['admin_id'] && get_user_role($this->uid,$old['admin_id'])==0){
return to_assign(1, "只有所属员工或者部门负责人才有权限操作");
}
$res = CustomerChance::strict(false)->field(true)->update($param);
if ($res) {
add_log('edit', $param['id'], $param);
to_log($this->uid,3,$param,$old);
return to_assign();
} else {
return to_assign(1, '操作失败');
}
} else {
$param['create_time'] = time();
$param['admin_id'] = $this->uid;
$tid = CustomerChance::strict(false)->field(true)->insertGetId($param);
if ($tid) {
add_log('add', $tid, $param,'客户销售机会');
$log_data = array(
'field' => 'new',
'action' => 'add',
'type' => 3,
'customer_id' => $param['cid'],
'admin_id' => $param['admin_id'],
'create_time' => time(),
);
Db::name('CustomerLog')->strict(false)->field(true)->insert($log_data);
return to_assign();
} else {
return to_assign(1, '操作失败');
}
}
} else {
$customer_id = isset($param['cid']) ? $param['cid'] : 0;
$id = isset($param['id']) ? $param['id'] : 0;
if ($id > 0) {
View::assign('detail', (new CustomerChance())->detail($id));
return view('chance_edit');
}
$customer_name = Db::name('Customer')->where('id',$customer_id)->value('name');
View::assign('customer_id', $customer_id);
View::assign('customer_name', $customer_name);
return view();
}
}
//查看销售机会
public function chance_view()
{
$param = get_params();
$id = isset($param['id']) ? $param['id'] : 0;
$detail = (new CustomerChance())->detail($id);
if(empty($detail)){
echo '<div style="text-align:center;color:red;margin-top:20%;">找不到该销售机会</div>';exit;
}
View::assign('detail',$detail);
return view();
}
//删除销售机会
public function chance_del()
{
if (request()->isDelete()) {
$param = get_params();
$admin_id = Db::name('CustomerChance')->where(['id' => $param['id']])->value('admin_id');
if($admin_id != $this->uid){
return to_assign(1, '你不是该跟销售机会的创建人,无权限删除');
}
$param['delete_time'] = time();
$res = CustomerChance::strict(false)->field(true)->update($param);
if ($res) {
add_log('delete', $param['id'], $param,'客户销售机会');
to_log($this->uid,3,$param,['delete_time'=>0]);
return to_assign();
} else {
return to_assign(1, '操作失败');
}
} else {
return to_assign(1, '参数错误');
}
}
}

View File

@ -0,0 +1,106 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<form class="layui-form p-4">
<h3 class="pb-3">新增销售机会</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray">客户名称</td>
<td colspan="3">{$customer_name}</td>
<td class="layui-td-gray-2">客户联系人<font>*</font></td>
<td>
<select name="contact_id" lay-verify="required" lay-reqText="请选择联系人">
<option value="">请选择</option>
{volist name=":customer_contact($customer_id)" id="v"}
<option value="{$v.id}">{$v.name}</option>
{/volist}
</select>
</td>
</tr>
<tr>
<td class="layui-td-gray">机会标题<font>*</font></td>
<td colspan="3">
<input type="text" name="title" autocomplete="off" lay-verify="required" lay-reqText="请输入机会标题" placeholder="请输入机会标题" class="layui-input">
</td>
<td class="layui-td-gray">发现时间<font>*</font></td>
<td>
<input type="text" id="discovery_time" name="discovery_time" readonly autocomplete="off" lay-verify="required" lay-reqText="请选择发现时间" placeholder="请选择发现时间" class="layui-input">
</td>
</tr>
<tr>
<td class="layui-td-gray">销售阶段<font>*</font></td>
<td>
<select name="stage" lay-verify="required" lay-reqText="请选择">
<option value="">请选择</option>
{volist name=":trace_stage()" id="v"}
<option value="{$key}">{$v}</option>
{/volist}
</select>
</td>
<td class="layui-td-gray">预计金额<font>*</font></td>
<td>
<input type="text" name="expected_amount" autocomplete="off" lay-verify="required|number" lay-reqText="请输入预计金额" placeholder="请输入预计金额" class="layui-input">
</td>
<td class="layui-td-gray-2">预计签单时间<font>*</font></td>
<td>
<input type="text" id="expected_time" name="expected_time" readonly autocomplete="off" lay-verify="required" lay-reqText="请选择预计签单时间" placeholder="请选择预计签单时间" class="layui-input">
</td>
</tr>
<tr>
<td class="layui-td-gray" style="vertical-align:top">需求描述<font>*</font></td>
<td colspan="5">
<textarea name="content" placeholder="请输入需求描述" lay-verify="required" lay-reqText="请输入需求描述" class="layui-textarea"></textarea>
</td>
</tr>
<tr>
<td class="layui-td-gray">归属人员<font>*</font></td>
<td>
<input type="text" name="belong_name" readonly autocomplete="off" placeholder="请选择归属人员" class="layui-input picker-one">
<input type="hidden" name="belong_uid" lay-verify="required" lay-reqText="请选择归属人员">
</td>
<td class="layui-td-gray">协助人员</td>
<td colspan="3">
<input type="text" name="assist_names" autocomplete="off" placeholder="请选择协助人员" class="layui-input picker-more">
<input type="hidden" name="assist_ids">
</td>
</tr>
</table>
<div class="py-3">
<input type="hidden" name="cid" value="{$customer_id}">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool','employeepicker'];
function gouguInit() {
var form = layui.form,tool=layui.tool,laydate = layui.laydate,employeepicker=layui.employeepicker;
laydate.render({
elem: '#discovery_time'
});
laydate.render({
elem: '#expected_time'
,min: 0
});
//监听提交
form.on('submit(webform)', function (data) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.sideClose(1000);
}
}
tool.post("/customer/chance/chance_add", data.field, callback);
return false;
});
}
</script>
{/block}
<!-- /脚本 -->

View File

@ -0,0 +1,106 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<form class="layui-form p-4">
<h3 class="pb-3">编辑销售机会</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray">客户名称</td>
<td colspan="3">{$detail.customer}</td>
<td class="layui-td-gray-2">客户联系人<font>*</font></td>
<td>
<select name="contact_id" lay-verify="required" lay-reqText="请选择联系人">
<option value="">请选择</option>
{volist name=":customer_contact($detail.cid)" id="v"}
<option value="{$v.id}" {eq name="$v.id" value="$detail.contact_id"} selected{/eq}>{$v.name}</option>
{/volist}
</select>
</td>
</tr>
<tr>
<td class="layui-td-gray">机会标题<font>*</font></td>
<td colspan="3">
<input type="text" name="title" value="{$detail.title}" autocomplete="off" lay-verify="required" lay-reqText="请输入机会标题" placeholder="请输入机会标题" class="layui-input">
</td>
<td class="layui-td-gray">发现时间<font>*</font></td>
<td>
<input type="text" id="discovery_time" name="discovery_time" value="{$detail.discovery_time}" readonly autocomplete="off" lay-verify="required" lay-reqText="请选择发现时间" placeholder="请选择发现时间" class="layui-input">
</td>
</tr>
<tr>
<td class="layui-td-gray">销售阶段<font>*</font></td>
<td>
<select name="stage" lay-verify="required" lay-reqText="请选择">
<option value="">请选择</option>
{volist name=":trace_stage()" id="v"}
<option value="{$key}" {eq name="$key" value="$detail.stage"} selected{/eq}>{$v}</option>
{/volist}
</select>
</td>
<td class="layui-td-gray">预计金额<font>*</font></td>
<td>
<input type="text" name="expected_amount" autocomplete="off" value="{$detail.expected_amount}" lay-verify="required|number" lay-reqText="请输入预计金额" placeholder="请输入预计金额" class="layui-input">
</td>
<td class="layui-td-gray-2">预计签单时间<font>*</font></td>
<td>
<input type="text" id="expected_time" name="expected_time" value="{$detail.expected_time}" readonly autocomplete="off" lay-verify="required" lay-reqText="请选择预计签单时间" placeholder="请选择预计签单时间" class="layui-input">
</td>
</tr>
<tr>
<td class="layui-td-gray" style="vertical-align:top">需求描述<font>*</font></td>
<td colspan="5">
<textarea name="content" placeholder="请输入需求描述" lay-verify="required" lay-reqText="请输入需求描述" class="layui-textarea">{$detail.content}</textarea>
</td>
</tr>
<tr>
<td class="layui-td-gray">归属人员<font>*</font></td>
<td>
<input type="text" name="belong_name" value="{$detail.belong_name}" readonly autocomplete="off" placeholder="请选择归属人员" class="layui-input picker-one">
<input type="hidden" name="belong_uid" value="{$detail.belong_uid}" lay-verify="required" lay-reqText="请选择归属人员">
</td>
<td class="layui-td-gray">协助人员</td>
<td colspan="3">
<input type="text" name="assist_names" value="{$detail.assist_names}" autocomplete="off" placeholder="请选择协助人员" class="layui-input picker-more">
<input type="hidden" name="assist_ids" value="{$detail.assist_ids}">
</td>
</tr>
</table>
<div class="py-3">
<input type="hidden" name="id" value="{$detail.id}">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool','employeepicker'];
function gouguInit() {
var form = layui.form,tool=layui.tool,laydate = layui.laydate,employeepicker=layui.employeepicker;
laydate.render({
elem: '#discovery_time'
});
laydate.render({
elem: '#expected_time'
,min: 0
});
//监听提交
form.on('submit(webform)', function (data) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.sideClose(1000);
}
}
tool.post("/customer/chance/chance_add", data.field, callback);
return false;
});
}
</script>
{/block}
<!-- /脚本 -->

View File

@ -0,0 +1,52 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<form class="layui-form p-4">
<h3 class="pb-3">销售机会</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray">客户名称</td>
<td colspan="3">{$detail.customer}</td>
<td class="layui-td-gray-2">客户联系人</td>
<td>
{volist name=":customer_contact($detail.cid)" id="v"}
{eq name="$v.id" value="$detail.contact_id"}{$v.name}{/eq}
{/volist}
</td>
</tr>
<tr>
<td class="layui-td-gray">机会标题</td>
<td colspan="3">{$detail.title}</td>
<td class="layui-td-gray">发现时间</td>
<td>{$detail.discovery_time}</td>
</tr>
<tr>
<td class="layui-td-gray">销售阶段</td>
<td>{$detail.stage_name}</td>
<td class="layui-td-gray">预计金额</td>
<td>{$detail.expected_amount}</td>
<td class="layui-td-gray-2">预计签单时间</td>
<td>{$detail.expected_time}</td>
</tr>
<tr>
<td class="layui-td-gray" style="vertical-align:top">需求描述</td>
<td colspan="5">{$detail.content}</td>
</tr>
<tr>
<td class="layui-td-gray">归属人员</td>
<td>{$detail.belong_name}</td>
<td class="layui-td-gray">协助人员</td>
<td colspan="3">{$detail.assist_names}</td>
</tr>
</table>
</form>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
</script>
{/block}
<!-- /脚本 -->

View File

@ -0,0 +1,123 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<div class="p-3">
<form class="layui-form gg-form-bar border-x border-t">
<div class="layui-input-inline" style="width:200px;">
<input type="text" name="keywords" placeholder="输入关键字" class="layui-input" autocomplete="off" />
</div>
<div class="layui-input-inline" style="width:120px;">
<select name="stage">
<option value="">当前阶段</option>
{volist name=":trace_stage()" id="v"}
<option value="{$key}">{$v}</option>
{/volist}
</select>
</div>
<div class="layui-input-inline" id="selectDate">
<div class="layui-input-inline" style="width:110px;">
<input type="text" autocomplete="off" name="start_date" id="startDate" class="layui-input" placeholder="预计签单时间">
</div>
<div class="layui-input-inline">-</div>
<div class="layui-input-inline" style="width:110px;">
<input type="text" autocomplete="off" name="end_date" id="endDate" class="layui-input" placeholder="预计签单时间">
</div>
</div>
<div class="layui-input-inline" style="width:120px;">
<input type="text" name="username" placeholder="请选择归属人" class="layui-input picker-one" autocomplete="off" />
<input type="text" name="uid" style="display:none" />
</div>
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">提交搜索</button>
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="clear">清空</button>
</form>
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool','employeepicker'];
function gouguInit() {
var table = layui.table, tool = layui.tool, form = layui.form,laydate=layui.laydate;
//日期范围
laydate.render({
elem: '#selectDate'
,range: ['#startDate', '#endDate']
});
layui.pageTable = table.render({
elem: '#test'
,toolbar: '#toolbarDemo'
,title:'销售机会列表'
,url: "/customer/chance/index"
,cellMinWidth: 240
,page: true //开启分页
,limit: 20
,cols: [[
{field: 'id', title: '编号', width: 80, align: 'center'}
,{field:'belong_name',title: '归属人',align:'center',width: 80}
,{field:'title',title: '机会主题'}
,{field:'customer',title: '关联客户',width: 300}
,{field:'discovery_time',title: '发现时间',align:'center',width: 100}
,{ field: 'expected_time', title: '预计签单时间', width: 110, align: 'center'}
,{ field: 'expected_amount', title: '预计签单金额', width: 110, align: 'center'}
,{field:'stage_name',title: '当前阶段',width: 80, align: 'center'}
,{fixed:'right',width:132,title: '操作', align:'center',templet: function(d){
var html = '<div class="layui-btn-group">';
var btn='<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>';
var btn1='<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">详情</a>';
var btn2='<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>';
return html+btn+btn1+btn2+'</div>';
}}
]]
});
table.on('tool(test)', function(obj){
var data = obj.data; //获得当前行数据
var layEvent = obj.event;
if(layEvent === 'edit'){ //编辑
let url = '/customer/chance/chance_add/id/'+data.id;
tool.side(url);
}
if(layEvent === 'view'){ //查看
let url = '/customer/chance/chance_view/id/'+data.id;
tool.side(url);
}
if(layEvent === 'del'){ //删除
layer.confirm('确定要删除该销售机会吗?', {icon: 3, title:'提示'}, function(index){
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
layui.pageTable.reload();
}
}
tool.delete('/customer/chance/chance_del',{'id':data.id},callback);
layer.close(index);
});
}
return false;
})
//监听搜索提交
form.on('submit(webform)', function(data) {
layui.pageTable.reload({
where: {
keywords: data.field.keywords,
stage: data.field.stage,
uid: data.field.uid,
start_date: data.field.start_date,
end_date: data.field.end_date
},
page: {
curr: 1
}
});
return false;
});
}
</script>
{/block}
<!-- /脚本 -->

View File

@ -325,50 +325,54 @@ INSERT INTO `oa_admin_rule` VALUES (154, 152, 'customer/index/revert', '还原',
INSERT INTO `oa_admin_rule` VALUES (155, 135, 'customer/contact/index', '客户联系人', '联系人', 'customer', '', 1, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (156, 155, 'customer/contact/contact_add', '新建/编辑', '联系人', 'customer', '', 2, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (157, 155, 'customer/contact/contact_del', '删除', '联系人', 'customer', '', 2, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (158, 135, 'customer/chance/index', '销售机会', '联系人', 'customer', '', 1, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (159, 158, 'customer/chance/chance_add', '新建/编辑', '联系人', 'customer', '', 2, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (160, 158, 'customer/chance/chance_view', '删除', '联系人', 'customer', '', 2, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (161, 158, 'customer/chance/chance_del', '删除', '联系人', 'customer', '', 2, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (158, 0, '', '合同协议', '合同协议', 'contract', 'icon-hetongyidong', 1, 10, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (159, 158, 'contract/cate/conf', '权限配置', '合同权限配置', 'contract', '', 1, 0, 1, 0, 0);
INSERT INTO `oa_admin_rule` VALUES (160, 158, 'contract/cate/cate', '合同类别', '合同类别', 'contract', '', 1, 0, 1, 0, 0);
INSERT INTO `oa_admin_rule` VALUES (161, 160, 'contract/cate/cate_add', '新建/编辑', '合同类别', 'contract', '', 2, 0, 1, 0, 0);
INSERT INTO `oa_admin_rule` VALUES (162, 160, 'contract/cate/cate_check', '设置', '合同类别', 'contract', '', 2,0, 1, 0, 0);
INSERT INTO `oa_admin_rule` VALUES (162, 0, '', '合同协议', '合同协议', 'contract', 'icon-hetongyidong', 1, 10, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (163, 162, 'contract/cate/conf', '权限配置', '合同权限配置', 'contract', '', 1, 0, 1, 0, 0);
INSERT INTO `oa_admin_rule` VALUES (164, 162, 'contract/cate/cate', '合同类别', '合同类别', 'contract', '', 1, 0, 1, 0, 0);
INSERT INTO `oa_admin_rule` VALUES (165, 164, 'contract/cate/cate_add', '新建/编辑', '合同类别', 'contract', '', 2, 0, 1, 0, 0);
INSERT INTO `oa_admin_rule` VALUES (166, 164, 'contract/cate/cate_check', '设置', '合同类别', 'contract', '', 2,0, 1, 0, 0);
INSERT INTO `oa_admin_rule` VALUES (163, 158, 'contract/index/index', '合同列表', '合同列表', 'contract', '', 1, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (164, 163, 'contract/index/add', '新建/编辑', '合同', 'contract', '', 2, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (165, 163, 'contract/index/view', '查看', '合同', 'contract', '', 2, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (166, 163, 'contract/index/delete', '删除', '合同', 'contract', '', 2, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (167, 158, 'contract/index/archive', '合同归档', '合同归档', 'contract', '', 1, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (167, 162, 'contract/index/index', '合同列表', '合同列表', 'contract', '', 1, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (168, 167, 'contract/index/add', '新建/编辑', '合同', 'contract', '', 2, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (169, 167, 'contract/index/view', '查看', '合同', 'contract', '', 2, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (170, 167, 'contract/index/delete', '删除', '合同', 'contract', '', 2, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (171, 162, 'contract/index/archive', '合同归档', '合同归档', 'contract', '', 1, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (168, 0, '', '项目管理', '项目管理', 'project', 'icon-xiangmuguanli', 1, 11, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (169, 168, 'project/index/conf', '权限配置', '项目权限配置', 'project', '', 1, 0, 1, 0, 0);
INSERT INTO `oa_admin_rule` VALUES (170, 168, 'project/index/index', '项目列表', '项目', 'project', '', 1, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (171, 170, 'project/index/add', '新建', '项目', 'project', '', 2, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (172, 170, 'project/index/edit', '编辑', '项目', 'project', '', 2, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (173, 170, 'project/index/view', '查看', '项目', 'project', '', 2, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (174, 170, 'project/index/delete', '删除', '项目', 'project', '', 2, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (172, 0, '', '项目管理', '项目管理', 'project', 'icon-xiangmuguanli', 1, 11, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (173, 172, 'project/index/conf', '权限配置', '项目权限配置', 'project', '', 1, 0, 1, 0, 0);
INSERT INTO `oa_admin_rule` VALUES (174, 172, 'project/index/index', '项目列表', '项目', 'project', '', 1, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (175, 174, 'project/index/add', '新建', '项目', 'project', '', 2, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (176, 174, 'project/index/edit', '编辑', '项目', 'project', '', 2, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (177, 174, 'project/index/view', '查看', '项目', 'project', '', 2, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (178, 174, 'project/index/delete', '删除', '项目', 'project', '', 2, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (175, 168, 'project/task/index', '任务列表', '任务', 'project', '', 1, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (176, 175, 'project/task/add', '新建', '任务', 'project', '', 2, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (177, 175, 'project/task/edit', '编辑', '任务', 'project', '', 2, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (178, 175, 'project/task/view', '查看', '任务', 'project', '', 2, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (179, 175, 'project/task/delete', '删除', '任务', 'project', '', 2, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (179, 172, 'project/task/index', '任务列表', '任务', 'project', '', 1, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (180, 179, 'project/task/add', '新建', '任务', 'project', '', 2, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (181, 179, 'project/task/edit', '编辑', '任务', 'project', '', 2, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (182, 179, 'project/task/view', '查看', '任务', 'project', '', 2, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (183, 179, 'project/task/delete', '删除', '任务', 'project', '', 2, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (180, 168, 'project/task/task_time', '任务工时', '工时', 'project', '', 1, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (184, 172, 'project/task/task_time', '任务工时', '工时', 'project', '', 1, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (181, 168, 'project/document/index', '文档列表', '文档', 'project', '', 1, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (182, 181, 'project/document/add', '新建/编辑', '文档', 'project', '', 2, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (183, 181, 'project/document/view', '查看', '文档', 'project', '', 2, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (184, 181, 'project/document/delete', '删除', '文档', 'project', '', 2, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (185, 172, 'project/document/index', '文档列表', '文档', 'project', '', 1, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (186, 185, 'project/document/add', '新建/编辑', '文档', 'project', '', 2, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (187, 185, 'project/document/view', '查看', '文档', 'project', '', 2, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (188, 185, 'project/document/delete', '删除', '文档', 'project', '', 2, 0, 1, 1656142368, 0);
INSERT INTO `oa_admin_rule` VALUES (185, 0, '', '知识文章', '知识文章', 'article', 'icon-kecheng', 1, 12, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (186, 185, 'article/cate/cate', '知识类型', '知识类型', 'article', '', 1, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (187, 186, 'article/cate/cate_add', '新建/编辑', '知识类型', 'article', '', 2, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (188, 186, 'article/cate/cate_delete', '删除', '知识类型', 'article', '', 2, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (189, 0, '', '知识文章', '知识文章', 'article', 'icon-kecheng', 1, 12, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (190, 189, 'article/cate/cate', '知识类型', '知识类型', 'article', '', 1, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (191, 190, 'article/cate/cate_add', '新建/编辑', '知识类型', 'article', '', 2, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (192, 190, 'article/cate/cate_delete', '删除', '知识类型', 'article', '', 2, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (189, 185, 'article/index/index', '共享知识', '知识文章', 'article', '', 1, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (190, 185, 'article/index/list', '个人知识', '知识文章', 'article', '', 1, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (191, 190, 'article/index/add', '新建/编辑', '知识文章', 'article', '', 2, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (192, 190, 'article/index/view', '查看', '知识文章', 'article', '', 2, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (193, 190, 'article/index/delete', '删除', '知识文章', 'article', '', 2, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (193, 189, 'article/index/index', '共享知识', '知识文章', 'article', '', 1, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (194, 189, 'article/index/list', '个人知识', '知识文章', 'article', '', 1, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (195, 194, 'article/index/add', '新建/编辑', '知识文章', 'article', '', 2, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (196, 194, 'article/index/view', '查看', '知识文章', 'article', '', 2, 0, 1, 1656143065, 0);
INSERT INTO `oa_admin_rule` VALUES (197, 194, 'article/index/delete', '删除', '知识文章', 'article', '', 2, 0, 1, 1656143065, 0);
-- ----------------------------
-- Table structure for oa_admin_group
@ -389,9 +393,9 @@ CREATE TABLE `oa_admin_group` (
-- ----------------------------
-- Records of cms_admin_group
-- ----------------------------
INSERT INTO `oa_admin_group` VALUES (1, '超级员工权限', 1, '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193', '超级员工权限,拥有系统的最高权限,不可修改。', 0, 0);
INSERT INTO `oa_admin_group` VALUES (2, '总经理权限', 1, '2,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,3,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,4,77,78,79,80,81,82,83,84,85,5,86,87,88,89,90,91,92,6,93,96,97,7,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,8,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193', '总经理的管理权限,可根据公司的具体需求调整。', 0, 0);
INSERT INTO `oa_admin_group` VALUES (3, '普通员工权限', 1, '5,89,90,91,92,6,93,96,97,7,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,8,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,137,138,139,140,141,142,143,144,145,146,147,149,150,151,152,153,154,155,156,157,158,160,161,162,163,164,165,166,167,168,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,189,190,191,192,193', '普通员工管理权限,可根据公司的具体需求调整。', 0, 0);
INSERT INTO `oa_admin_group` VALUES (1, '超级员工权限', 1, '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197', '超级员工权限,拥有系统的最高权限,不可修改。', 0, 0);
INSERT INTO `oa_admin_group` VALUES (2, '总经理权限', 1, '2,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,3,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,4,77,78,79,80,81,82,83,84,85,5,86,87,88,89,90,91,92,6,93,96,97,7,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,8,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197', '总经理的管理权限,可根据公司的具体需求调整。', 0, 0);
INSERT INTO `oa_admin_group` VALUES (3, '普通员工权限', 1, '5,89,90,91,92,6,93,96,97,7,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,8,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,137,138,139,140,141,142,143,144,145,146,147,149,150,151,152,153,154,155,156,157,158,160,161,162,163,164,165,166,167,168,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,189,190,191,192,193,194,195,196,197', '普通员工管理权限,可根据公司的具体需求调整。', 0, 0);
-- ----------------------------
-- Table structure for oa_data_auth