first commit
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2023-2024 美天智能科技
|
||||
* @author 李志强
|
||||
* @link http://www.meteteme.com
|
||||
*/
|
||||
/**
|
||||
======================
|
||||
*模块数据获取公共文件
|
||||
======================
|
||||
*/
|
||||
use think\facade\Db;
|
||||
@@ -0,0 +1,404 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2023-2024 美天智能科技
|
||||
* @author 李志强
|
||||
* @link http://www.meteteme.com
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace app\business\controller;
|
||||
|
||||
use app\base\BaseController;
|
||||
use app\model\Business as BusinessList;
|
||||
use app\model\Businesscontact;
|
||||
use app\business\validate\BusinessCheck;
|
||||
use think\exception\ValidateException;
|
||||
use think\facade\Db;
|
||||
use think\facade\View;
|
||||
|
||||
class Index extends BaseController
|
||||
{
|
||||
public function nav()
|
||||
{
|
||||
return view();
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
if (request()->isAjax()) {
|
||||
$param = get_params();
|
||||
|
||||
$map1 = [
|
||||
['admin_id', '=', $this->uid],
|
||||
];
|
||||
$map2 = [
|
||||
['director_uid', '=', $this->uid],
|
||||
];
|
||||
$map4 = [
|
||||
['', 'exp', Db::raw("FIND_IN_SET({$this->uid},check_admin_ids)")],
|
||||
];
|
||||
$map5 = [
|
||||
['is_open', '=', 2],
|
||||
];
|
||||
|
||||
$rows = empty($param['limit']) ? get_md_contentconfig('app.page_size') : $param['limit'];
|
||||
|
||||
// 判断是否有筛选条件传递,如果有则使用筛选条件,否则使用默认条件
|
||||
$list = BusinessList::withoutField('')
|
||||
->where(function ($query) use ($param, $map1, $map2, $map4, $map5) {
|
||||
if (!empty($param['contact']) && !empty($param['name'])) {
|
||||
// 同时存在联系人和名称的情况
|
||||
$result = $query->where('contact', $param['contact'])->where('name', 'like', '%' . $param['name'] . '%')->find();
|
||||
if ($result === null) {
|
||||
return null;
|
||||
}
|
||||
} elseif (!empty($param['contact'])) {
|
||||
// 存在联系人的情况
|
||||
$query->where('contact', $param['contact']);
|
||||
} elseif (!empty($param['name'])) {
|
||||
// 存在名称的情况
|
||||
$query->where('name', 'like', '%' . $param['name'] . '%');
|
||||
} elseif (!empty($param['name_short'])) {
|
||||
// 存在名称的情况
|
||||
$query->where('name_short', 'like', '%' . $param['name_short'] . '%');
|
||||
} else {
|
||||
// 其他情况
|
||||
$query->where($map1)->whereor($map2)->whereor($map4)->whereor($map5);
|
||||
}
|
||||
})
|
||||
->where('delete_time', 0)
|
||||
->order('id desc')
|
||||
->paginate($rows, false, ['query' => $param])
|
||||
->each(function ($item, $key) {
|
||||
$item->director_name = Db::name('Admin')->where(['id' => $item->director_uid])->value('name');
|
||||
$item->admin_name = Db::name('Admin')->where(['id' => $item->admin_id])->value('name');
|
||||
$item->business = Db::name('Business')->where(['delete_time' => 0, 'id' => $item->id])->count();
|
||||
$item->content = Db::name('Business')->where(['delete_time' => 0, 'id' => $item->id])->value('content');
|
||||
$item->contact = Db::name('Businesscontact')->where(['business_id' => $item->id])->value('contact');
|
||||
$item->post = Db::name('Businesscontact')->where(['business_id' => $item->id])->value('post');
|
||||
$ids = Db::name('Business')->where(['delete_time' => 0, 'id' => $item->id])->column('id');
|
||||
});
|
||||
|
||||
|
||||
return table_assign(0, '', $list);
|
||||
} else {
|
||||
View::assign('user_info', get_login_admin());
|
||||
return view();
|
||||
}
|
||||
}
|
||||
|
||||
//获取客户列表
|
||||
public function getlists()
|
||||
{
|
||||
try {
|
||||
// 查询数据,分页设置每页10条
|
||||
$list = Db::name('Business')
|
||||
->alias('b')
|
||||
->field('b.id, b.name, b.name_short, b.company_address, a.nickname as director_uid') // 映射字段
|
||||
->leftJoin('Admin a', 'b.director_uid = a.id') // 联表 Admin 表
|
||||
->order('b.id desc') // 按 id 倒序排序
|
||||
->paginate(10); // 每页10条记录
|
||||
|
||||
// 返回成功响应
|
||||
return json([
|
||||
'code' => 1, // 成功状态码
|
||||
'msg' => '加载成功', // 提示信息
|
||||
'data' => $list->items(), // 当前页数据
|
||||
'pagination' => [
|
||||
'total' => $list->total(), // 总记录数
|
||||
'per_page' => $list->listRows(), // 每页条数
|
||||
'current_page' => $list->currentPage(), // 当前页码
|
||||
'last_page' => $list->lastPage() // 总页数
|
||||
]
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
// 捕获异常并返回错误信息
|
||||
return json([
|
||||
'code' => 0, // 失败状态码
|
||||
'msg' => '获取失败: ' . $e->getMessage(), // 错误信息
|
||||
'data' => [] // 空数据
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
//获取客户列表(无页码)
|
||||
public function getlistsmore()
|
||||
{
|
||||
try {
|
||||
// 查询数据
|
||||
$list = Db::name('Business')
|
||||
->alias('b')
|
||||
->field('b.id, b.name, b.name_short, a.nickname as director_uid') // 映射字段
|
||||
->leftJoin('Admin a', 'b.director_uid = a.id') // 联表 Admin 表
|
||||
->order('b.id desc') // 按 id 倒序排序
|
||||
->select();
|
||||
|
||||
// 返回成功响应
|
||||
return json([
|
||||
'code' => 1, // 成功状态码
|
||||
'msg' => '加载成功', // 提示信息
|
||||
'data' => $list, // 当前页数据
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
// 捕获异常并返回错误信息
|
||||
return json([
|
||||
'code' => 0, // 失败状态码
|
||||
'msg' => '获取失败: ' . $e->getMessage(), // 错误信息
|
||||
'data' => [] // 空数据
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
//新增客户(app端)
|
||||
public function addcustomer()
|
||||
{
|
||||
$param = get_params();
|
||||
if (request()->isPost()) {
|
||||
|
||||
// 新增逻辑
|
||||
$param['create_time'] = time();
|
||||
|
||||
$sid = BusinessList::strict(false)->field(true)->insertGetId($param);
|
||||
if ($sid) {
|
||||
add_log('add', $sid, $param);
|
||||
return json(["code" => 0, "msg" => "添加成功"]); // 返回JSON格式数据
|
||||
} else {
|
||||
return json(["code" => 1, "msg" => "添加失败"]); // 返回JSON格式数据
|
||||
}
|
||||
|
||||
} else {
|
||||
$id = isset($param['id']) ? $param['id'] : 0;
|
||||
if ($id > 0) {
|
||||
$businessLists = BusinessList::where('id', $id)
|
||||
->field('id, name, email, phone, message, product, company, create_time')
|
||||
->find();
|
||||
if (empty($businessLists)) {
|
||||
return json(["code" => 1, "msg" => "信息不存在"]); // 返回JSON格式数据
|
||||
}
|
||||
}
|
||||
json(["code" => 0, "msg" => "编辑成功"]); // 返回JSON格式数据
|
||||
}
|
||||
}
|
||||
|
||||
//新增联系人(app端)
|
||||
public function addcontact()
|
||||
{
|
||||
$param = get_params();
|
||||
if (request()->isPost()) {
|
||||
|
||||
// 新增逻辑
|
||||
$param['create_time'] = time();
|
||||
|
||||
$sid = Businesscontact::strict(false)->field(true)->insertGetId($param);
|
||||
if ($sid) {
|
||||
add_log('add', $sid, $param);
|
||||
return json(["code" => 0, "msg" => "添加成功"]); // 返回JSON格式数据
|
||||
} else {
|
||||
return json(["code" => 1, "msg" => "添加失败"]); // 返回JSON格式数据
|
||||
}
|
||||
|
||||
} else {
|
||||
$id = isset($param['id']) ? $param['id'] : 0;
|
||||
if ($id > 0) {
|
||||
$businesscontactLists = Businesscontact::where('id', $id)
|
||||
->field('id, name, email, phone, message, product, company, create_time')
|
||||
->find();
|
||||
if (empty($businesscontactLists)) {
|
||||
return json(["code" => 1, "msg" => "信息不存在"]); // 返回JSON格式数据
|
||||
}
|
||||
}
|
||||
json(["code" => 0, "msg" => "编辑成功"]); // 返回JSON格式数据
|
||||
}
|
||||
}
|
||||
|
||||
//获取联系人列表
|
||||
public function getcontactlist()
|
||||
{
|
||||
try {
|
||||
// 查询数据,分页设置每页10条
|
||||
$list = Db::name('Businesscontact')
|
||||
->alias('b')
|
||||
->field('b.id, b.contact, b.charge, b.post, b.phone, b.email, b.wechat, b.qq, a.name as business_id') // 映射字段
|
||||
->leftJoin('Business a', 'b.business_id = a.id') // 联表 Admin 表
|
||||
->order('b.id desc') // 按 id 倒序排序
|
||||
->select(); // 每页10条记录
|
||||
|
||||
// 返回成功响应
|
||||
return json([
|
||||
'code' => 1, // 成功状态码
|
||||
'msg' => '加载成功', // 提示信息
|
||||
'data' => $list,
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
// 捕获异常并返回错误信息
|
||||
return json([
|
||||
'code' => 0, // 失败状态码
|
||||
'msg' => '获取失败: ' . $e->getMessage(), // 错误信息
|
||||
'data' => [] // 空数据
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
//添加
|
||||
public function add()
|
||||
{
|
||||
$param = get_params();
|
||||
if (request()->isPost()) {
|
||||
// markdown数据处理
|
||||
if (isset($param['table-align'])) {
|
||||
unset($param['table-align']);
|
||||
}
|
||||
if (isset($param['docContent-html-code'])) {
|
||||
$param['content'] = $param['docContent-html-code'];
|
||||
$param['md_content'] = $param['docContent-markdown-doc'];
|
||||
unset($param['docContent-html-code']);
|
||||
unset($param['docContent-markdown-doc']);
|
||||
}
|
||||
if (isset($param['ueditorcontent'])) {
|
||||
$param['content'] = $param['ueditorcontent'];
|
||||
$param['md_content'] = '';
|
||||
}
|
||||
|
||||
try {
|
||||
if (!empty($param['id'])) {
|
||||
validate(BusinessCheck::class)->scene('edit')->check($param);
|
||||
$business = (new BusinessList())->detail($param['id']);
|
||||
if ($this->uid == $business['admin_id'] || $this->uid == $business['director_uid']) {
|
||||
$param['update_time'] = time();
|
||||
$res = BusinessList::where('id', $param['id'])->strict(false)->field(true)->update($param);
|
||||
if ($res) {
|
||||
add_log('edit', $param['id'], $param, $business);
|
||||
}
|
||||
return to_assign();
|
||||
} else {
|
||||
return to_assign(1, '只有创建人或者负责人才有权限编辑');
|
||||
}
|
||||
} else {
|
||||
validate(BusinessCheck::class)->scene('add')->check($param);
|
||||
$param['create_time'] = time();
|
||||
$param['admin_id'] = $this->uid;
|
||||
$param['director_uid'] = $this->uid;
|
||||
$sid = BusinessList::strict(false)->insertGetId($param);
|
||||
// if ($sid) {
|
||||
// add_log('add', $sid, $param);
|
||||
// $log_data = array(
|
||||
// 'module' => 'business',
|
||||
// 'id' => $sid,
|
||||
// 'new_content' => $param['name'],
|
||||
// 'field' => 'new',
|
||||
// 'action' => 'add',
|
||||
// 'admin_id' => $this->uid,
|
||||
// 'create_time' => time(),
|
||||
// );
|
||||
// Db::name('Log')->strict(false)->field(true)->insert($log_data);
|
||||
// }
|
||||
return to_assign();
|
||||
}
|
||||
} catch (ValidateException $e) {
|
||||
return to_assign(1, $e->getError());
|
||||
}
|
||||
} else {
|
||||
$id = isset($param['id']) ? $param['id'] : 0;
|
||||
if ($id > 0) {
|
||||
$detail = (new BusinessList())->detail($id);
|
||||
if (empty($detail)) {
|
||||
return to_assign(1, '1.信息不存在');
|
||||
}
|
||||
View::assign('detail', $detail);
|
||||
}
|
||||
View::assign('id', $id);
|
||||
return view();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//查看
|
||||
public function view()
|
||||
{
|
||||
$param = get_params();
|
||||
$id = isset($param['id']) ? $param['id'] : 0;
|
||||
$detail = (new BusinessList())->detail($id);
|
||||
// print_r($id);
|
||||
if (empty($detail)) {
|
||||
return to_assign(1, '2.信息不存在');
|
||||
} else {
|
||||
$role_uid = [$detail['admin_id'], $detail['director_uid']];
|
||||
$role_edit = 'view';
|
||||
if (in_array($this->uid, $role_uid)) {
|
||||
$role_edit = 'edit';
|
||||
}
|
||||
$view_uid = $role_uid;
|
||||
if (!empty($detail['check_admin_ids'])) {
|
||||
$view_uid = array_merge($role_uid, explode(",", $detail['check_admin_ids']));
|
||||
}
|
||||
if (!in_array($this->uid, $view_uid) && $detail['is_open'] == 1) {
|
||||
return to_assign(1, '您没权限查看该信息');
|
||||
}
|
||||
$contact_array = Db::name('Businesscontact')
|
||||
->field('i.id,i.business_id,i.contact,i.post,i.phone,i.email,i.wechat,i.qq,a.name as admin_name')
|
||||
->alias('i')
|
||||
->join('Admin a', 'i.admin_id = a.id', 'LEFT')
|
||||
->join('Business b', 'i.business_id = b.id', 'LEFT')
|
||||
->order('i.create_time desc')
|
||||
->where(array('i.business_id' => $id))
|
||||
->where('i.delete_time', null)
|
||||
->select()->toArray();
|
||||
|
||||
$file_array = Db::name('FileInterfix')
|
||||
->field('i.id,i.topic_id,i.admin_id,f.name,f.filesize,f.filepath,a.name as admin_name')
|
||||
->alias('i')
|
||||
->join('File f', 'i.file_id = f.id', 'LEFT')
|
||||
->join('Admin a', 'i.admin_id = a.id', 'LEFT')
|
||||
->order('i.create_time desc')
|
||||
->where(array('i.topic_id' => $id, 'i.module' => 'business'))
|
||||
->select()->toArray();
|
||||
|
||||
$link_array = Db::name('LinkInterfix')
|
||||
->field('i.id,i.topic_id,i.admin_id,i.desc,i.url,a.name as admin_name')
|
||||
->alias('i')
|
||||
->join('Admin a', 'i.admin_id = a.id', 'LEFT')
|
||||
->order('i.create_time desc')
|
||||
->where(array('i.topic_id' => $id, 'i.module' => 'business', 'delete_time' => 0))
|
||||
->select()->toArray();
|
||||
View::assign('detail', $detail);
|
||||
View::assign('contact_array', $contact_array);
|
||||
View::assign('file_array', $file_array);
|
||||
View::assign('link_array', $link_array);
|
||||
View::assign('role_edit', $role_edit);
|
||||
View::assign('id', $id);
|
||||
return view();
|
||||
}
|
||||
}
|
||||
|
||||
//删除
|
||||
public function delete()
|
||||
{
|
||||
if (request()->isDelete()) {
|
||||
$id = get_params("id");
|
||||
$detail = Db::name('Business')->where('id', $id)->find();
|
||||
if ($detail['admin_id'] != $this->uid) {
|
||||
return to_assign(1, "你不是该客户的创建人,无权限删除");
|
||||
}
|
||||
if (Db::name('Business')->where('id', $id)->update(['delete_time' => time()]) !== false) {
|
||||
$log_data = array(
|
||||
'module' => 'business',
|
||||
'field' => 'delete',
|
||||
'action' => 'delete',
|
||||
'admin_id' => $this->uid,
|
||||
'old_content' => '',
|
||||
'new_content' => $detail['name'],
|
||||
'create_time' => time(),
|
||||
);
|
||||
Db::name('Log')->strict(false)->field(true)->insert($log_data);
|
||||
return to_assign(0, "删除成功");
|
||||
} else {
|
||||
return to_assign(0, "删除失败");
|
||||
}
|
||||
} else {
|
||||
return to_assign(1, "错误的请求");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,270 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2023-2024 美天智能科技
|
||||
* @author 李志强
|
||||
* @link http://www.meteteme.com
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace app\business\controller;
|
||||
|
||||
use app\base\BaseController;
|
||||
use app\model\Supplier as SupplierList;
|
||||
use app\business\validate\SupplierCheck;
|
||||
use think\exception\ValidateException;
|
||||
use think\facade\Db;
|
||||
use think\facade\View;
|
||||
|
||||
class Supplier extends BaseController
|
||||
{
|
||||
|
||||
public function index()
|
||||
{
|
||||
if (request()->isAjax()) {
|
||||
$param = get_params();
|
||||
$rows = empty($param['limit']) ? get_md_contentconfig('app.page_size') : $param['limit'];
|
||||
|
||||
$list = SupplierList::whereNull('delete_time')
|
||||
->field('id, supplier_name, contact_name, contact_phone, contact_email, business_scope, company_size, remarks')
|
||||
->order('id desc')
|
||||
->paginate($rows, false);
|
||||
|
||||
return table_assign(0, '', $list->toArray());
|
||||
} else {
|
||||
return view();
|
||||
}
|
||||
}
|
||||
|
||||
//编辑
|
||||
public function edit()
|
||||
{
|
||||
$param = get_params();
|
||||
$id = isset($param['id']) ? $param['id'] : 0;
|
||||
|
||||
$supplier = SupplierList::where('id', $id)
|
||||
->field('id, supplier_name, company_size, registered_address, business_scope, contact_name, contact_phone, contact_email, contact_wechat, remarks, intention')
|
||||
->find();
|
||||
|
||||
if ($supplier) {
|
||||
View::assign('detail', $supplier);
|
||||
} else {
|
||||
View::assign('message', '没有详细数据');
|
||||
}
|
||||
|
||||
if (request()->isPost()) {
|
||||
$data = [
|
||||
'supplier_name' => $param['supplier_name'],
|
||||
'company_size' => $param['company_size'],
|
||||
'registered_address' => $param['registered_address'],
|
||||
'business_scope' => $param['business_scope'],
|
||||
'contact_name' => $param['contact_name'],
|
||||
'contact_phone' => $param['contact_phone'],
|
||||
'contact_email' => $param['contact_email'],
|
||||
'contact_wechat' => $param['contact_wechat'],
|
||||
'remarks' => $param['remarks'],
|
||||
'intention' => $param['intention'],
|
||||
'update_time' => date('Y-m-d H:i:s'),
|
||||
];
|
||||
|
||||
$res = SupplierList::where('id', $id)->update($data);
|
||||
|
||||
if ($res) {
|
||||
return to_assign(2, '更新成功!');
|
||||
} else {
|
||||
return to_assign(1, '更新失败');
|
||||
}
|
||||
}
|
||||
|
||||
return view();
|
||||
}
|
||||
|
||||
//添加
|
||||
public function add()
|
||||
{
|
||||
|
||||
$param = get_params();
|
||||
if (request()->isPost()) {
|
||||
if (!empty($param['id']) && $param['id'] > 0) {
|
||||
$newsupplier = (new SupplierList())->detail($param['id']);
|
||||
try {
|
||||
validate(SupplierCheck::class)->scene('edit')->check($param);
|
||||
} catch (ValidateException $e) {
|
||||
// 验证失败 输出错误信息
|
||||
return to_assign(1, $e->getError());
|
||||
}
|
||||
$param['update_time'] = time();
|
||||
$res = SupplierList::where('id', $param['id'])->strict(false)->field(true)->update($param);
|
||||
if ($res) {
|
||||
add_log('edit', $param['id'], $param, $newsupplier);
|
||||
}
|
||||
return to_assign();
|
||||
} else {
|
||||
try {
|
||||
validate(SupplierCheck::class)->scene('add')->check($param);
|
||||
} catch (ValidateException $e) {
|
||||
// 验证失败 输出错误信息
|
||||
return to_assign(1, $e->getError());
|
||||
}
|
||||
$param['create_time'] = date('Y-m-d H:i:s', time());
|
||||
$param['admin_id'] = $this->uid;
|
||||
$sid = SupplierList::strict(false)->field(true)->insertGetId($param);
|
||||
if ($sid) {
|
||||
add_log('add', $sid, $param);
|
||||
$log_data = array(
|
||||
'module' => 'plans',
|
||||
// 'id' => $sid,
|
||||
'new_content' => $param['supplier_name'],
|
||||
'field' => 'new',
|
||||
'action' => 'add',
|
||||
'admin_id' => $this->uid,
|
||||
'create_time' => time(),
|
||||
);
|
||||
Db::name('Log')->strict(false)->field(true)->insert($log_data);
|
||||
}
|
||||
return to_assign(2, '添加成功!');
|
||||
}
|
||||
} else {
|
||||
$id = isset($param['id']) ? $param['id'] : 0;
|
||||
if ($id > 0) {
|
||||
$detail = (new SupplierList())->detail($id);
|
||||
if (empty($detail)) {
|
||||
return to_assign(1, '1.信息不存在');
|
||||
}
|
||||
View::assign('detail', $detail);
|
||||
}
|
||||
View::assign('id', $id);
|
||||
return view();
|
||||
}
|
||||
}
|
||||
|
||||
//删除
|
||||
public function delete()
|
||||
{
|
||||
$request = request();
|
||||
if ($request->isDelete() || $request->isAjax()) {
|
||||
$id = get_params("id");
|
||||
$detail = Db::name('Supplier')->where('id', $id)->find();
|
||||
if (!isset($detail['id'])) {
|
||||
return to_assign(1, "账号不存在");
|
||||
}
|
||||
// Convert the current timestamp to a MySQL DATETIME format
|
||||
$currentDateTime = date('Y-m-d H:i:s', time());
|
||||
|
||||
if (Db::name('Supplier')->where('id', $id)->update(['delete_time' => $currentDateTime]) !== false) {
|
||||
$log_data = array(
|
||||
'module' => 'supplier',
|
||||
'field' => 'delete',
|
||||
'action' => 'delete',
|
||||
'admin_id' => $this->uid,
|
||||
'old_content' => '',
|
||||
'new_content' => '',
|
||||
'create_time' => time(),
|
||||
);
|
||||
Db::name('Log')->strict(false)->field(true)->insert($log_data);
|
||||
return to_assign(0, "删除成功");
|
||||
} else {
|
||||
return to_assign(0, "删除失败");
|
||||
}
|
||||
} else {
|
||||
return to_assign(1, "错误的请求");
|
||||
}
|
||||
}
|
||||
|
||||
//查看
|
||||
public function view()
|
||||
{
|
||||
$param = get_params();
|
||||
$id = isset($param['id']) ? $param['id'] : 0;
|
||||
$detail = (new SupplierList())->detail($id);
|
||||
// print_r($id);
|
||||
if (empty($detail)) {
|
||||
return to_assign(1, '无法查询到详情信息');
|
||||
} else {
|
||||
View::assign('detail', $detail);
|
||||
// print_r($detail);
|
||||
return view();
|
||||
}
|
||||
}
|
||||
|
||||
//开票信息填写(新增与编辑)
|
||||
public function invoice()
|
||||
{
|
||||
$param = get_params();
|
||||
$id = isset($param['id']) ? $param['id'] : 0;
|
||||
|
||||
$supplier = SupplierList::where('id', $id)
|
||||
->field('id, invoice_company_name, taxpayer_id, invoice_address, invoice_phone, bank_name, bank_account')
|
||||
->find();
|
||||
|
||||
if ($supplier) {
|
||||
View::assign('detail', $supplier);
|
||||
} else {
|
||||
View::assign('message', '没有详细数据');
|
||||
}
|
||||
|
||||
if (request()->isPost()) {
|
||||
$data = [
|
||||
'invoice_company_name' => $param['invoice_company_name'],
|
||||
'taxpayer_id' => $param['taxpayer_id'],
|
||||
'invoice_address' => $param['invoice_address'],
|
||||
'invoice_phone' => $param['invoice_phone'],
|
||||
'bank_name' => $param['bank_name'],
|
||||
'bank_account' => $param['bank_account'],
|
||||
'update_time' => date('Y-m-d H:i:s'),
|
||||
];
|
||||
|
||||
$res = SupplierList::where('id', $id)->update($data);
|
||||
|
||||
if ($res) {
|
||||
return to_assign(2, '更新成功!');
|
||||
} else {
|
||||
return to_assign(1, '更新失败');
|
||||
}
|
||||
}
|
||||
|
||||
return view();
|
||||
}
|
||||
|
||||
//发送意向
|
||||
public function sendintention()
|
||||
{
|
||||
$param = get_params();
|
||||
|
||||
// 提取并检查必要参数
|
||||
$supplierName = isset($param['supplier_name']) ? trim($param['supplier_name']) : '';
|
||||
if (empty($supplierName)) {
|
||||
return json_encode(['status' => 0, 'message' => '供应商名称不能为空']);
|
||||
}
|
||||
|
||||
// 检查供应商名称是否重复
|
||||
$existingSupplier = SupplierList::where('supplier_name', $supplierName)->find();
|
||||
if ($existingSupplier) {
|
||||
return json_encode(['status' => 1, 'message' => '供应商名称已存在']);
|
||||
}
|
||||
|
||||
// 准备插入数据
|
||||
$data = [
|
||||
'supplier_name' => $supplierName,
|
||||
'contact_name' => isset($param['contact_name']) ? $param['contact_name'] : '',
|
||||
'contact_phone' => isset($param['contact_phone']) ? $param['contact_phone'] : '',
|
||||
'contact_email' => isset($param['contact_email']) ? $param['contact_email'] : '',
|
||||
'contact_wechat' => isset($param['contact_wechat']) ? $param['contact_wechat'] : '',
|
||||
'registered_address' => isset($param['registered_address']) ? $param['registered_address'] : '',
|
||||
'business_scope' => isset($param['business_scope']) ? $param['business_scope'] : '',
|
||||
'company_size' => isset($param['company_size']) ? $param['company_size'] : '',
|
||||
'intention' => isset($param['intention']) ? $param['intention'] : '',
|
||||
'create_time' => date('Y-m-d H:i:s'),
|
||||
];
|
||||
|
||||
// 插入数据到数据库
|
||||
$res = SupplierList::insert($data);
|
||||
|
||||
if ($res) {
|
||||
return json_encode(['status' => 2, 'message' => '添加成功']);
|
||||
} else {
|
||||
return json_encode(['status' => 3, 'message' => '添加失败']);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
// 这是系统自动生成的event定义文件
|
||||
return [
|
||||
|
||||
];
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
/**
|
||||
* @copyright Copyright (c) 2023-2024 美天智能科技
|
||||
* @author 李志强
|
||||
* @link http://www.meteteme.com
|
||||
*/
|
||||
|
||||
// 这是系统自动生成的middleware定义文件
|
||||
return [
|
||||
//开启session中间件
|
||||
//'think\middleware\SessionInit',
|
||||
\app\home\middleware\Install::class,
|
||||
// 跳过登录验证 AuthMiddleware
|
||||
// \app\business\middleware\Auth::class,
|
||||
];
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace app\business\middleware;
|
||||
|
||||
use Closure;
|
||||
use think\Request;
|
||||
use think\Response;
|
||||
|
||||
class Auth
|
||||
{
|
||||
public function handle(Request $request, Closure $next): Response
|
||||
{
|
||||
// 获取当前请求的控制器和方法
|
||||
$controller = $request->controller();
|
||||
$action = $request->action();
|
||||
|
||||
// 如果请求的控制器是 Supplier 且方法是 sendintention,则跳过验证
|
||||
if ($controller === 'Supplier' && $action === 'sendintention') {
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
// 执行登录验证逻辑
|
||||
if (!session('?user_id')) {
|
||||
// 未登录,返回错误或重定向到登录页面
|
||||
return redirect('login/index');
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
namespace app\business\validate;
|
||||
use think\facade\Db;
|
||||
use think\Validate;
|
||||
|
||||
class BusinessCheck extends Validate
|
||||
{
|
||||
// 自定义验证规则
|
||||
protected function checkOne($value,$rule,$data=[])
|
||||
{
|
||||
$count = Db::name('Business')->where(['name'=>$data['name'],'delete_time'=>0])->count();
|
||||
return $count == 0 ? true : false;
|
||||
}
|
||||
|
||||
protected $rule = [
|
||||
'maincontact' => 'require|checkOne',
|
||||
'id' => 'require',
|
||||
];
|
||||
|
||||
protected $message = [
|
||||
'name.require' => '客户单位不能为空',
|
||||
// 'name.checkOne' => '同样的商务信息已经存在',
|
||||
'maincontact.checkOne' => '同样的商务信息已经存在',
|
||||
'id.require' => '缺少更新条件',
|
||||
];
|
||||
|
||||
protected $scene = [
|
||||
'add' => ['name'],
|
||||
'edit' => ['id'],
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
namespace app\business\validate;
|
||||
use think\facade\Db;
|
||||
use think\Validate;
|
||||
|
||||
class SupplierCheck extends Validate
|
||||
{
|
||||
// 自定义验证规则
|
||||
protected function checkOne($value,$rule,$data=[])
|
||||
{
|
||||
$count = Db::name('Business')->where(['name'=>$data['name'],'delete_time'=>0])->count();
|
||||
return $count == 0 ? true : false;
|
||||
}
|
||||
|
||||
protected $rule = [
|
||||
'maincontact' => 'require|checkOne',
|
||||
'id' => 'require',
|
||||
];
|
||||
|
||||
protected $message = [
|
||||
'name.require' => '客户单位不能为空',
|
||||
// 'name.checkOne' => '同样的商务信息已经存在',
|
||||
'maincontact.checkOne' => '同样的商务信息已经存在',
|
||||
'id.require' => '缺少更新条件',
|
||||
];
|
||||
|
||||
protected $scene = [
|
||||
'add' => ['name'],
|
||||
'edit' => ['id'],
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,138 @@
|
||||
<form class="layui-form page-content p-4">
|
||||
<h3 class="h3-title">新建客户</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">客户单位<font>*</font>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="name" lay-verify="required" lay-reqText="请输入客户单位名称"
|
||||
placeholder="请输入客户单位名称"
|
||||
class="layui-input" value="">
|
||||
</td>
|
||||
<td class="layui-td-gray-2">客户简称<font>*</font>
|
||||
</td>
|
||||
<td colspan="3">
|
||||
<input type="text" name="name_short" lay-verify="required" lay-reqText="请输入客户简称"
|
||||
placeholder="请输入客户简称"
|
||||
class="layui-input" value="">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">单位地址
|
||||
</td>
|
||||
<td colspan="4">
|
||||
<input type="text" name="company_address" lay-verify="required" lay-reqText="请输入单位地址"
|
||||
placeholder="请输入单位地址" class="layui-input" value="">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">主要对接人
|
||||
</td>
|
||||
<td>
|
||||
<input type="hidden" name="director_uid" readonly lay-reqText="请选择主要对接人" value="">
|
||||
<input type="text" name="director_name" placeholder="请选择主要对接人" readonly class="layui-input"
|
||||
value="">
|
||||
</td>
|
||||
<td class="layui-td-gray-2">内部可对接人员
|
||||
</td>
|
||||
<td colspan="3">
|
||||
<input type="hidden" id="check_admin_ids" name="check_admin_ids" readonly
|
||||
lay-reqText="请选择对接人" value="">
|
||||
<input type="text" id="check_admin_names" name="check_admin_names" readonly class="layui-input"
|
||||
placeholder="请选择对接人" value="">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">访问权限</td>
|
||||
<td colspan="4">
|
||||
<input type="radio" name="is_open" lay-filter="checkopen" value="1" checked
|
||||
title="内部(仅创建人、对接人、可访问)">
|
||||
<input type="radio" name="is_open" lay-filter="checkopen" value="2"
|
||||
title="公开(有对接权限员工均可访问)">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div>
|
||||
<div class="py-2">备注信息
|
||||
<div>
|
||||
<textarea id="mdContent" name="mdContent" style="display:none;"></textarea>
|
||||
<div class="addedit" id="docContent"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pt-1">
|
||||
<input type="hidden" name="id" value="0"/>
|
||||
<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>
|
||||
|
||||
<script>
|
||||
function openInit() {
|
||||
var form = layui.form, layer = layui.layer, tool = layui.tool, employeepicker = layui.employeepicker,
|
||||
editor = layui.editormd;
|
||||
|
||||
form.render();
|
||||
var edit = editor.render('docContent', {
|
||||
markdown: $('#mdContent').val(),
|
||||
imageUploadURL: "/api/index/md_upload",
|
||||
lineNumbers: false,
|
||||
toolbarIcons: function () {
|
||||
return [
|
||||
"undo", "redo", "bold", "del", "italic", "quote", "h1", "h2", "h3", "h4", "h5",
|
||||
"list-ul", "list-ol", "hr", "link", "reference-link", "image", "code", "code-block", "table", "watch", "fullscreen"
|
||||
];
|
||||
},
|
||||
height: window.innerHeight - 220,
|
||||
});
|
||||
|
||||
//选择内部可对接人员弹窗
|
||||
$('.page-content').on('click', '[name="director_name"]', function () {
|
||||
var ids = $('[name="director_uid"]').val(), names = $('[name="director_name"]').val();
|
||||
employeepicker.init({
|
||||
ids: ids,
|
||||
names: names,
|
||||
type: 0,
|
||||
department_url: "/api/index/get_department_tree",
|
||||
employee_url: "/api/index/get_employee",
|
||||
callback: function (ids, names, dids, departments) {
|
||||
$('[name="director_uid"]').val(ids);
|
||||
$('[name="director_name"]').val(names);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
//选择主要对接人弹窗
|
||||
$('.page-content').on('click', '[name="check_admin_names"]', function () {
|
||||
var ids = $('[name="check_admin_ids"]').val(), names = $('[name="check_admin_names"]').val(),
|
||||
director_uid_array = [], director_name_array = [];
|
||||
if (ids.length > 0) {
|
||||
director_uid_array = ids.split(',');
|
||||
director_name_array = names.split(',');
|
||||
}
|
||||
employeepicker.init({
|
||||
ids: director_uid_array,
|
||||
names: director_name_array,
|
||||
department_url: "/api/index/get_department_tree",
|
||||
employee_url: "/api/index/get_employee",
|
||||
callback: function (ids, names, dids, departments) {
|
||||
$('[name="check_admin_ids"]').val(ids);
|
||||
$('[name="check_admin_names"]').val(names);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
//监听提交
|
||||
form.on('submit(webform)', function (data) {
|
||||
let callback = function (e) {
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
tool.close(1000);
|
||||
}
|
||||
}
|
||||
tool.post("/business/index/add", data.field, callback);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,125 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title></title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<link rel="stylesheet" href="/layui/css/layui.css" media="all" />
|
||||
<style>
|
||||
body {
|
||||
margin: 10px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body class="childrenBody">
|
||||
<form class="layui-form changePwd">
|
||||
<input type="hidden" name="id" id="id" th:value="${id}">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">姓名</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="name" value="" placeholder="姓名" id="name" lay-verify="required|name"
|
||||
class="layui-input pwd">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">性别</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="sex" value="0" title="女" checked="">
|
||||
<input type="radio" name="sex" value="1" title="男">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">年龄</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="age" value="" placeholder="年龄" id="age" class="layui-input pwd">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn" lay-submit="" lay-filter="*">保存</button>
|
||||
<button type="button" class="layui-btn layui-btn-primary" onclick="layerclose();">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<script type="text/javascript" src="/layui/layui.js"></script>
|
||||
<script type="text/javascript" src="/js/jquery-3.3.1.min.js"></script>
|
||||
<script>
|
||||
$(function () {
|
||||
var id = $("#id").val();
|
||||
if (id != "") {
|
||||
$.ajax({
|
||||
url: "/user/queryById",
|
||||
data: { "id": id },
|
||||
dataType: "json",
|
||||
success: function (data) {
|
||||
$("#name").val(data.name);
|
||||
$("#age").val(data.age);
|
||||
$("input[name='sex']").eq(data.sex).attr("checked", 'checked');
|
||||
|
||||
}, error: function () {
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
|
||||
function layerclose() {
|
||||
layui.use(['layer'], function () {
|
||||
var layer = layui.layer;
|
||||
var index = parent.layer.getFrameIndex(window.name);//获取当前弹出层的层级
|
||||
parent.layer.close(index);//关闭弹出层
|
||||
location.reload();//刷新父页面
|
||||
})
|
||||
}
|
||||
|
||||
layui.use(['form', 'layer'], function () {
|
||||
var form = layui.form;
|
||||
var layer = layui.layer;
|
||||
// 添加验证规则
|
||||
form.verify({
|
||||
name: function (value, item) {
|
||||
value = value.trim();
|
||||
if (value.length < 0) {
|
||||
return "请输入教师名称";
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
form.on('submit(*)', function (data) {
|
||||
var index = layer.msg('提交中,请稍候', { icon: 16, time: false, shade: 0.8 });
|
||||
var d = data.field;
|
||||
var url = "/user/add";
|
||||
if (d.id != "") {
|
||||
url = "/user/edit";
|
||||
}
|
||||
$.ajax({
|
||||
url: url,
|
||||
data: d,
|
||||
dataType: "text",
|
||||
success: function (data) {
|
||||
layer.close(index);
|
||||
if (data == 0) {
|
||||
layer.msg("保存成功!");
|
||||
parent.queryTea();
|
||||
parent.close();
|
||||
} else {
|
||||
layer.msg("保存失败!");
|
||||
}
|
||||
}, error: function () {
|
||||
layer.close(index);
|
||||
layer.msg("保存失败!");
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,188 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="breadcrumb"}
|
||||
<span class="layui-breadcrumb">
|
||||
<a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
|
||||
<a href="/business/index/nav"><cite>CRM</cite></a>
|
||||
<a><cite>客户管理</cite></a>
|
||||
</span>
|
||||
{/block}
|
||||
{block name="body"}
|
||||
<div class="table-content p-3">
|
||||
<div class="layui-form-bar border-t border-x">
|
||||
<button class="layui-btn layui-btn-sm add-new">+ 新建客户</button>
|
||||
<button class="layui-btn layui-btn-sm" id="refresh-btn">刷新</button>
|
||||
</div>
|
||||
<div class="layui-form-bar border-t border-x">
|
||||
<form id="taskForm" class="layui-form">
|
||||
<div class="layui-col-md4" style="width: 200px;margin-right: 10px;">
|
||||
<div class="layui-input-wrap">
|
||||
<div class="layui-input-prefix">
|
||||
<!-- <i class="layui-icon layui-icon-username"></i>-->
|
||||
</div>
|
||||
<input id="fzr" type="text" name="contact" value="" placeholder="请输入负责人" class="layui-input" lay-affix="clear">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md4" style="width: 200px;margin-right: 10px;">
|
||||
<div class="layui-input-wrap">
|
||||
<input id="gs" type="text" name="name" value="" placeholder="请输入客户单位名称" class="layui-input" lay-affix="clear">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md4" style="width: 200px;margin-right: 10px;">
|
||||
<div class="layui-input-wrap">
|
||||
<input id="gsjc" type="text" name="name_short" value="" placeholder="请输入客户简称" class="layui-input" lay-affix="clear">
|
||||
</div>
|
||||
</div>
|
||||
<button class="layui-btn" lay-submit lay-filter="webform">搜索</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
|
||||
<button type="reset" class="layui-btn" lay-filter="onlyme">只看我</button>
|
||||
<input id="loginusers" type="hidden" value="{$user_info.id}"/>
|
||||
</form>
|
||||
</div>
|
||||
<table class="layui-hide" id="business" lay-filter="tableOne"></table>
|
||||
</div>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool', 'gouguEdit', 'gouguComment'];
|
||||
|
||||
function gouguInit() {
|
||||
var table = layui.table,
|
||||
form = layui.form,
|
||||
tool = layui.tool;
|
||||
|
||||
//添加按钮
|
||||
$('.add-new').on('click', function () {
|
||||
tool.open('/business/index/add');
|
||||
});
|
||||
|
||||
// 刷新按钮
|
||||
$("#refresh-btn").on("click", function () {
|
||||
location.reload();
|
||||
});
|
||||
|
||||
//搜索按钮
|
||||
form.on('submit(webform)', function (data) {
|
||||
var field = data.field; // 获取表单字段
|
||||
|
||||
// 执行搜索重载并过滤表格数据
|
||||
table.reload('business', {
|
||||
page: {
|
||||
curr: 1 // 重新从第 1 页开始
|
||||
},
|
||||
where: field, // 搜索的字段
|
||||
});
|
||||
|
||||
return false; // 阻止默认 form 提交
|
||||
});
|
||||
|
||||
|
||||
//搜索重置按钮
|
||||
$("#taskForm").on("click", '[lay-filter="clear"]', function () {
|
||||
// window.reload();
|
||||
tableReload();
|
||||
// setTimeout(function () {
|
||||
// tableReload();
|
||||
// }, 10);
|
||||
});
|
||||
|
||||
//只看我按钮
|
||||
$("#taskForm").on("click", '[lay-filter="onlyme"]', function () {
|
||||
let loginuser = $("#loginusers").val(); // 从隐藏的输入字段中获取loginuser的值
|
||||
$("#taskForm").find('[name="contact"]').val(loginuser); // 将contact的值设置为loginuser
|
||||
let postData = {
|
||||
name: $("#taskForm").find('[name="name"]').val(),
|
||||
company_address: $("#taskForm").find('[name="company_address"]').val(),
|
||||
contact: loginuser,
|
||||
post: $("#taskForm").find('[name="post"]').val(),
|
||||
admin_name: $("#taskForm").find('[name="admin_name"]').val(),
|
||||
content: $("#taskForm").find('[name="content"]').val(),
|
||||
};
|
||||
layui.taskTable.reload({where: postData});
|
||||
});
|
||||
|
||||
//搜索列表重置
|
||||
function tableReload() {
|
||||
let postData = {
|
||||
name: $("#taskForm").find('[name="name"]').val(),
|
||||
company_address: $("#taskForm").find('[name="company_address"]').val(),
|
||||
contact: $("#taskForm").find('[name="contact"]').val(),
|
||||
post: $("#taskForm").find('[name="post"]').val(),
|
||||
admin_name: $("#taskForm").find('[name="admin_name"]').val(),
|
||||
content: $("#taskForm").find('[name="content"]').val(),
|
||||
};
|
||||
layui.pageTable.reload({where: postData});
|
||||
}
|
||||
|
||||
//渲染表格
|
||||
layui.pageTable = table.render({
|
||||
elem: '#business',
|
||||
title: '客户列表',
|
||||
cellMinWidth: 80,
|
||||
url: ["/business/index/index"], //数据接口
|
||||
page: true, //开启分页
|
||||
limit: 50,
|
||||
height: 'full-130',
|
||||
cols: [[
|
||||
{
|
||||
field: 'id', title: '商务编号', width: 100, align: 'center', rowspan: 2, templet: function (d) {
|
||||
return 'B' + d.id;
|
||||
}
|
||||
}
|
||||
, {
|
||||
field: 'name', title: '客户单位', align: 'center', width: 300, rowspan: 2, templet: function (d) {
|
||||
var html = '<a class="open-a" data-href="/business/index/view/id/' + d.id + '">' + d.name + '</a>';
|
||||
return html;
|
||||
}
|
||||
}
|
||||
, {
|
||||
field: 'name_short',
|
||||
title: '客户简称',
|
||||
align: 'center',
|
||||
width: 160,
|
||||
rowspan: 2,
|
||||
templet: function (d) {
|
||||
var nameShort = d.name_short;
|
||||
var displayValue = nameShort !== null ? '<span>' + nameShort + '</span>' : '<span>暂无</span>';
|
||||
return displayValue;
|
||||
}
|
||||
}
|
||||
, {
|
||||
field: 'company_address',
|
||||
title: '单位地址',
|
||||
align: 'center',
|
||||
width: 240,
|
||||
rowspan: 2,
|
||||
templet: function (d) {
|
||||
var html = '<span>' + d.company_address + '</span>';
|
||||
return html;
|
||||
}
|
||||
}
|
||||
, {
|
||||
field: 'contact', title: '负责人', width: 120, rowspan: 2, templet: function (d) {
|
||||
var html = '<span>' + d.contact + '</span>';
|
||||
return html;
|
||||
}
|
||||
}
|
||||
, {
|
||||
field: 'post', title: '负责人职务', width: 120, rowspan: 2, templet: function (d) {
|
||||
var html = '<span>' + d.post + '</span>';
|
||||
return html;
|
||||
}
|
||||
}
|
||||
, {field: 'admin_name', title: '创建人', align: 'center', width: 120, rowspan: 2}
|
||||
, {
|
||||
field: 'content', title: '备注', align: 'left', rowspan: 2, templet: function (d) {
|
||||
var html = '<span>' + d.content + '</span>';
|
||||
return html;
|
||||
}
|
||||
}
|
||||
]]
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,58 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="breadcrumb"}
|
||||
<span class="layui-breadcrumb">
|
||||
<a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
|
||||
<a><cite>项目分类</cite></a>
|
||||
</span>
|
||||
{/block}
|
||||
{block name="body"}
|
||||
<div class="table-content p-3">
|
||||
<div class="layui-form-bar border-t border-x"
|
||||
style="display: flex; justify-content: center; align-items: center; height: 94vh !important;">
|
||||
<div class="btn_list">
|
||||
<div class="btns khgl">
|
||||
<button class="layui-btn diy-button layui-bg-purple">
|
||||
<svg t="1713800009771" class="icon" viewBox="0 0 1024 1024" version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg" p-id="10099" width="100" height="100">
|
||||
<path
|
||||
d="M512 0a512 512 0 1 0 512 512A512 512 0 0 0 512 0z m256 460.101818a152.203636 152.203636 0 0 1-87.272727 65.861818 80.058182 80.058182 0 0 1-24.436364 3.956364 29.090909 29.090909 0 1 1 0-57.949091 14.661818 14.661818 0 0 0 6.283636-1.396364 93.090909 93.090909 0 0 0 56.087273-40.96 76.101818 76.101818 0 0 0 10.938182-39.563636 89.832727 89.832727 0 0 0-94.254545-83.781818 106.123636 106.123636 0 0 0-51.2 13.265454 81.92 81.92 0 0 0-43.752728 69.818182v244.829091a139.636364 139.636364 0 0 1-72.610909 120.552727 159.883636 159.883636 0 0 1-79.825454 20.48 148.247273 148.247273 0 0 1-153.6-141.963636 135.68 135.68 0 0 1 19.781818-69.818182 151.04 151.04 0 0 1 87.272727-65.629091 86.807273 86.807273 0 0 1 24.436364-4.189091 29.090909 29.090909 0 0 1 25.367272 14.661819 29.090909 29.090909 0 0 1-25.367272 43.52 16.523636 16.523636 0 0 0-6.516364 1.396363 95.418182 95.418182 0 0 0-55.854545 40.96 74.007273 74.007273 0 0 0-10.938182 39.563637 90.065455 90.065455 0 0 0 94.952727 83.781818 106.821818 106.821818 0 0 0 51.2-13.265455 82.385455 82.385455 0 0 0 43.52-69.818182V390.283636a139.636364 139.636364 0 0 1 72.843636-120.552727 152.436364 152.436364 0 0 1 79.127273-21.410909 148.247273 148.247273 0 0 1 153.6 141.963636 136.378182 136.378182 0 0 1-19.781818 69.818182z"
|
||||
fill="#ffffff" p-id="10100"></path>
|
||||
</svg>
|
||||
<strong>客户管理</strong>
|
||||
<p>对企业内部客户进行数据管理</p>
|
||||
</button>
|
||||
</div>
|
||||
<div class="btns sjgl">
|
||||
<button class="layui-btn diy-button">
|
||||
<svg t="1713799963992" class="icon" viewBox="0 0 1024 1024" version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg" p-id="8224" width="100" height="100">
|
||||
<path
|
||||
d="M410.67 544H133.33A69.33 69.33 0 0 0 64 613.33v277.34A69.33 69.33 0 0 0 133.33 960h277.34A69.33 69.33 0 0 0 480 890.67V613.33A69.33 69.33 0 0 0 410.67 544zM402 842a40 40 0 0 1-40 40H182a40 40 0 0 1-40-40V662a40 40 0 0 1 40-40h180a40 40 0 0 1 40 40z m488.67-298H613.33A69.33 69.33 0 0 0 544 613.33v277.34A69.33 69.33 0 0 0 613.33 960h277.34A69.33 69.33 0 0 0 960 890.67V613.33A69.33 69.33 0 0 0 890.67 544zM882 842a40 40 0 0 1-40 40H662a40 40 0 0 1-40-40V662a40 40 0 0 1 40-40h180a40 40 0 0 1 40 40zM410.67 64H133.33A69.33 69.33 0 0 0 64 133.33v277.34A69.33 69.33 0 0 0 133.33 480h277.34A69.33 69.33 0 0 0 480 410.67V133.33A69.33 69.33 0 0 0 410.67 64zM402 362a40 40 0 0 1-40 40H182a40 40 0 0 1-40-40V182a40 40 0 0 1 40-40h180a40 40 0 0 1 40 40z m292.49 94.18a81.35 81.35 0 0 0 115 0l126.69-126.67a81.35 81.35 0 0 0 0-115L809.51 87.82a81.35 81.35 0 0 0-115 0L567.82 214.49a81.35 81.35 0 0 0 0 115z"
|
||||
fill="#ffffff" p-id="8225"></path>
|
||||
</svg>
|
||||
<strong>商机管理</strong>
|
||||
<p>对市场上的商机进行管理与保护</p>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
//跳转客户管理
|
||||
$('.khgl button').click(function () {
|
||||
window.location.href = '/business/index/index';
|
||||
});
|
||||
|
||||
//跳转商机管理
|
||||
$('.sjgl button').click(function () {
|
||||
window.location.href = '/information/index/index';
|
||||
});
|
||||
</script>
|
||||
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,514 @@
|
||||
<div class="page-content">
|
||||
<div class="p-4 border-b">
|
||||
<h3 class="h3-title hover-{$role_edit}">
|
||||
<span id="name">客户信息 - </span>
|
||||
<span id="name_{$detail.id}" data-val="">{$detail.name}</span>
|
||||
<i class="iconfont icon-wodedianping" title="编辑" data-id="{$detail.id}" data-name="name"></i>
|
||||
</h3>
|
||||
<div>
|
||||
<span class="layui-badge layui-bg-gray">#B{$detail.id}</span>
|
||||
<span class="mx-2">{$detail.admin_name}</span>
|
||||
<span class="font-gray">创建于{$detail.times}<span id="editTips">{gt name="$detail.update_time"
|
||||
value="0"},最近更新于 {:time_trans($detail.update_time)}{/gt}</span>
|
||||
</span>
|
||||
{eq name="$detail.admin_id" value="$params.uid"}
|
||||
<span class="layui-btn layui-btn-xs layui-bg-purple ml-4" id="delBtn">
|
||||
<i class="layui-icon"></i>删除
|
||||
</span>
|
||||
{/eq}
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-row border-b">
|
||||
<div class="p-4 border-r" style="width: 100%">
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray">创建人</td>
|
||||
<td class="hover-{$role_edit}" style="width: 200px">
|
||||
<span>{$detail.director_name}</span>
|
||||
</td>
|
||||
<td class="layui-td-gray">对接人</td>
|
||||
<td class="hover-{$role_edit}" style="width: 200px">
|
||||
<span id="check_admin_ids_{$detail.id}" data-val="{$detail.check_admin_ids}">{$detail.check_admin_names}</span>
|
||||
<i class="iconfont icon-wodedianping" title="编辑" data-name="check_admin_ids"></i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray">访问权限</td>
|
||||
<td class="hover-{$role_edit}">
|
||||
<span id="is_open_{$detail.id}" data-val="{$detail.is_open}">
|
||||
{eq name="$detail.is_open" value="1" }
|
||||
内部 <span class="font-gray">(仅创建人、对接人、可访问)</span>
|
||||
{/eq}
|
||||
{eq name="$detail.is_open" value="2" }公开 <span class="font-gray">(有对接权限员工均可访问)</span>{/eq}
|
||||
</span>
|
||||
<i class="iconfont icon-wodedianping" title="编辑" data-id="{$detail.id}" data-name="is_open"></i>
|
||||
</td>
|
||||
<td class="layui-td-gray">客户简称</td>
|
||||
<td class="hover-{$role_edit}" style="width: 200px">
|
||||
<span id="name_short_{$detail.id}" data-val="">{$detail.name_short}</span>
|
||||
<i class="iconfont icon-wodedianping" title="编辑" data-id="{$detail.id}" data-name="name_short"></i>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray">单位地址</td>
|
||||
<td class="hover-{$role_edit}" style="width: 500px">
|
||||
<span id="company_address_{$detail.id}" data-val="">{$detail.company_address}</span>
|
||||
<i class="iconfont icon-wodedianping" title="编辑" data-id="{$detail.id}" data-name="company_address"></i>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="md-content-content hover-{$role_edit}">
|
||||
<h5 class="py-4">备注信息<i class="iconfont icon-wodedianping" title="编辑" data-id="{$detail.id}"
|
||||
data-name="md_content"></i></h5>
|
||||
<div class="md_content" id="md_content_{$detail.id}" data-val="{$detail.md_content}">
|
||||
{$detail.md_content|raw}</div>
|
||||
</div>
|
||||
<div class="md-content-content hover-{$role_edit}">
|
||||
<h5 class="py-4">联系人
|
||||
<span data-method="setTop" id="contactadd" class="layui-btn layui-btn-xs layui-btn ml-4">
|
||||
新增
|
||||
</span>
|
||||
</h5>
|
||||
<table class="layui-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="10%" style="text-align:center">联系人</th>
|
||||
<th width="15%" style="text-align:center">职务</th>
|
||||
<th width="15%" style="text-align:center">电话</th>
|
||||
<th width="15%" style="text-align:center">邮箱</th>
|
||||
<th width="10%" style="text-align:center">微信</th>
|
||||
<th width="10%" style="text-align:center">QQ</th>
|
||||
<th width="10%" style="text-align:center">创建人</th>
|
||||
<th width="15%" style="text-align:center">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="contactList">
|
||||
{volist name="contact_array" id="vo"}
|
||||
<tr data-id="{$vo.id}" id="contact_{$vo.id}">
|
||||
<td style="text-align: center;">{$vo.contact}</td>
|
||||
<td style="text-align: center;">{$vo.post}</td>
|
||||
<td style="text-align: center;" class="phone_m">
|
||||
{if $vo.phone}
|
||||
<span>{$vo.phone}</span>
|
||||
{else}
|
||||
{$vo.phone}
|
||||
{/if}
|
||||
</td>
|
||||
<td style="text-align: center;" class="email_m">
|
||||
{if $vo.email}
|
||||
<span>{$vo.email}</span>
|
||||
{else}
|
||||
{$vo.email}
|
||||
{/if}
|
||||
</td>
|
||||
<td style="text-align: center;" class="wechat_m">
|
||||
{if $vo.wechat}
|
||||
<span>{$vo.wechat}</span>
|
||||
{else}
|
||||
{$vo.wechat}
|
||||
{/if}
|
||||
</td>
|
||||
<td style="text-align: center;" class="qq_m">
|
||||
{if $vo.qq}
|
||||
<span>{$vo.qq}</span>
|
||||
{else}
|
||||
{$vo.qq}
|
||||
{/if}
|
||||
</td>
|
||||
<td style="text-align: center;">{$detail.admin_name}</td>
|
||||
<td style="text-align: center;">
|
||||
<!-- <a class="layui-btn layui-btn-xs" id="contactedit" data-event="edit" data-id="1000">修改</a>-->
|
||||
<a class="layui-btn layui-btn-xs" data-id="{$vo.id}" data-contact="{$vo.contact}"
|
||||
data-post="{$vo.post}" data-phone="{$vo.phone}" data-email="{$vo.email}"
|
||||
data-wechat="{$vo.wechat}" data-qq="{$vo.qq}" id="contactedit"
|
||||
lay-event="edit">编辑</a>
|
||||
<a class="layui-btn layui-btn-xs layui-bg-purple" data-id="{$vo.id}" id="contactdel">删除</a>
|
||||
</td>
|
||||
</tr>
|
||||
{/volist}
|
||||
{empty name="$contact_array" }
|
||||
<tr>
|
||||
<td colspan="8" class="content-none">暂无其他联系人</td>
|
||||
</tr>
|
||||
{/empty}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="detail-file">
|
||||
<h5 class="py-4">文件附件</h5>
|
||||
<div>
|
||||
{eq name="$role_edit" value="edit"}
|
||||
<button type="button" class="layui-btn layui-btn-normal layui-btn-sm" id="flieBtn">选择文件并上传</button>
|
||||
<span
|
||||
style="color:#FF5722; font-size:12px; margin-left: 8px;">上传前,请规范命名,最大只能上传{:get_system_info('upload_max_filesize')}的文件,超过请压缩成多个文件上传。</span>
|
||||
<div class="layui-upload-list" {empty name="$file_array" }style="display:none;" {/empty}>
|
||||
<table class="layui-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="60%" style="text-align:center">文件名</th>
|
||||
<th width="15%" style="text-align:center">文件大小</th>
|
||||
<th width="10%" style="text-align:center">上传人</th>
|
||||
<th width="15%" style="text-align:center">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="flieList">
|
||||
{volist name="file_array" id="vo"}
|
||||
<tr>
|
||||
<td>{$vo.name}</td>
|
||||
<td style="text-align: center;">{$vo.filesize/1048576|round=2}MB</td>
|
||||
<td style="text-align: center;">{$vo.admin_name}</td>
|
||||
<td style="text-align: center;">
|
||||
<div class="layui-btn-group">
|
||||
<a class="layui-btn layui-btn-xs " href="{$vo.filepath}"
|
||||
download="{$vo.name}" data-id="{$vo.id}">下载</a>
|
||||
<span class="layui-btn layui-btn-xs layui-btn-danger file-delete"
|
||||
data-uid="{$vo.admin_id}" data-id="{$vo.id}">删除</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{/volist}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{else/}
|
||||
<table class="layui-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="60%">文件名</th>
|
||||
<th width="15%" style="text-align:center">文件大小</th>
|
||||
<th width="10%" style="text-align:center">上传人</th>
|
||||
<th width="15%" style="text-align:center">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="flieList">
|
||||
{volist name="file_array" id="vo"}
|
||||
<tr data-id="{$vo.id}" id="flie_{$vo.id}">
|
||||
<td>{$vo.name}</td>
|
||||
<td style="text-align: center;">{$vo.filesize/1048576|round=2}MB</td>
|
||||
<td style="text-align: center;">{$vo.admin_name}</td>
|
||||
<td style="text-align: center;">
|
||||
<a class="layui-btn layui-btn-xs" href="{$vo.filepath}" download="{$vo.name}"
|
||||
data-id="{$vo.id}">下载</a>
|
||||
</td>
|
||||
</tr>
|
||||
{/volist}
|
||||
{empty name="$file_array" }
|
||||
<tr>
|
||||
<td colspan="4" class="content-none">暂无附件</td>
|
||||
</tr>
|
||||
{/empty}
|
||||
</tbody>
|
||||
</table>
|
||||
{/eq}
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail-link">
|
||||
<h5 class="py-4">关联链接</h5>
|
||||
<div>
|
||||
{eq name="$role_edit" value="edit"}
|
||||
<button type="button" class="layui-btn layui-btn-sm" id="linkBtn">新增相关联链接</button>
|
||||
<span style="color:#FF5722; font-size:12px; margin-left: 8px;">请规范填写链接说明,方便大家查阅。</span>
|
||||
<div class="layui-upload-list" {empty name="$link_array" }style="display:none;" {/empty}>
|
||||
<table class="layui-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="60%">链接</th>
|
||||
<th width="15%" style="text-align:center">说明</th>
|
||||
<th width="10%" style="text-align:center">添加人</th>
|
||||
<th width="15%" style="text-align:center">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="linkList">
|
||||
{volist name="link_array" id="vo"}
|
||||
<tr data-id="{$vo.id}" id="link_{$vo.id}">
|
||||
<td>
|
||||
<a href="{$vo.url}" target="_blank">{$vo.url}</a>
|
||||
</td>
|
||||
<td>{$vo.desc}</td>
|
||||
<td style="text-align: center;">{$vo.admin_name}</td>
|
||||
<td style="text-align: center;">
|
||||
<div class="layui-btn-group">
|
||||
<span class="layui-btn layui-btn-xs link-edit" data-id="{$vo.id}"
|
||||
data-url="{$vo.url}" data-desc="{$vo.desc}">编辑</span>
|
||||
<span class="layui-btn layui-btn-xs layui-btn-danger link-delete"
|
||||
data-uid="{$vo.admin_id}" data-id="{$vo.id}">删除</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{/volist}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{else/}
|
||||
<table class="layui-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="60%">链接</th>
|
||||
<th width="30%" style="text-align:center">说明</th>
|
||||
<th width="10%" style="text-align:center">添加人</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="linkList">
|
||||
{volist name="link_array" id="vo"}
|
||||
<tr>
|
||||
<td>
|
||||
<a href="{$vo.url}" target="_blank">{$vo.url}</a>
|
||||
</td>
|
||||
<td>{$vo.desc}</td>
|
||||
<td style="text-align: center;">{$vo.admin_name}</td>
|
||||
</tr>
|
||||
{/volist}
|
||||
{empty name="$link_array" }
|
||||
<tr>
|
||||
<td colspan="3" class="content-none">暂无链接</td>
|
||||
</tr>
|
||||
{/empty}
|
||||
</tbody>
|
||||
</table>
|
||||
{/eq}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="layui-tab layui-tab-brief px-4" lay-filter="docDemoTabBrief">
|
||||
<ul class="layui-tab-title">
|
||||
<li class="layui-this">互动评论({$detail.comments})</li>
|
||||
<li>操作日志({$detail.logs})</li>
|
||||
</ul>
|
||||
<div class="layui-tab-content p-0">
|
||||
<div class="layui-tab-item comment-list layui-show">
|
||||
<div class="comment-input my-2">
|
||||
<input type="text" id="commentInput" readonly placeholder="发表一下你的看法" class="layui-input" value="">
|
||||
</div>
|
||||
<div id="comment_business_{$detail.id}"></div>
|
||||
</div>
|
||||
<div class="layui-tab-item logs-list">
|
||||
<div id="log_business_{$detail.id}"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
function openInit() {
|
||||
const detail_id = '{$detail.id}';
|
||||
var layer = layui.layer, tool = layui.tool, edit = layui.gouguEdit, comment = layui.gouguComment,
|
||||
upload = layui.upload;
|
||||
|
||||
$('.hover-edit').hover(function () {
|
||||
$(this).addClass('hover-on');
|
||||
}, function () {
|
||||
$(this).removeClass('hover-on');
|
||||
})
|
||||
|
||||
$('.hover-edit').on('click', 'i', function () {
|
||||
let id = $(this).data('id');
|
||||
let name = $(this).data('name');
|
||||
let name_short = $(this).data('name_short');
|
||||
let show_txt = $('#' + name + '_' + detail_id).text().replace(/[\r\n\t]/g, "");
|
||||
let real_txt = $('#' + name + '_' + detail_id).data('val');
|
||||
if (real_txt === '') {
|
||||
real_txt = show_txt;
|
||||
}
|
||||
editShow(detail_id, name, show_txt, real_txt);
|
||||
});
|
||||
|
||||
$('#delBtn').on('click', function () {
|
||||
layer.confirm('确定要删除该产品吗?请慎重', { icon: 3, title: '提示' }, function (index) {
|
||||
let callback = function (e) {
|
||||
layer.closeAll();
|
||||
layer.msg(e.msg);
|
||||
if (e.code == 0) {
|
||||
setTimeout(function () {
|
||||
location.reload();
|
||||
}, 1000)
|
||||
}
|
||||
}
|
||||
let postData = { "id": detail_id };
|
||||
tool.delete("/business/index/delete", postData, callback);
|
||||
});
|
||||
})
|
||||
|
||||
//添加联系人
|
||||
$('#contactadd').on('click', function () {
|
||||
comment.addContact(detail_id, 'business');
|
||||
})
|
||||
|
||||
//编辑联系人
|
||||
$('#contactList').on('click', '#contactedit', function () {
|
||||
let id = $(this).data('id');
|
||||
let topic_id = $(this).data('topic_id');
|
||||
let contact = $(this).data('contact');
|
||||
let post = $(this).data('post');
|
||||
let phone = $(this).data('phone');
|
||||
let email = $(this).data('email');
|
||||
let wechat = $(this).data('wechat');
|
||||
let qq = $(this).data('qq');
|
||||
comment.editContact(id, topic_id, detail_id, 'business', contact, post, phone, email, wechat, qq);
|
||||
|
||||
})
|
||||
|
||||
//删除联系人
|
||||
$('#contactdel').on('click', function () {
|
||||
let id = $(this).data('id');
|
||||
layer.confirm('确定要删除该联系人吗?', { icon: 3, title: '提示' }, function (index) {
|
||||
let callback = function (e) {
|
||||
layer.closeAll();
|
||||
layer.msg(e.msg);
|
||||
tool.load("/business/index/view?id=" + detail_id);
|
||||
}
|
||||
let postData = { "id": id };
|
||||
tool.delete("/api/business/delete_contact", postData, callback);
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
|
||||
upload.render({
|
||||
elem: '#flieBtn'
|
||||
, url: '/api/index/upload'
|
||||
, accept: 'file' //普通文件
|
||||
, exts: 'jpeg|jpg|png|gif|doc|docx|ppt|pptx|xls|xlsx|pdf|zip|rar|7z' //只允许上传文件
|
||||
, before: function (obj) {
|
||||
layer.msg('上传中...', { time: 3600000 });
|
||||
}
|
||||
, done: function (res, index, upload) {
|
||||
let callback = function (e) {
|
||||
layer.msg('上传成功');
|
||||
tool.load("/business/index/view?id=" + detail_id);
|
||||
}
|
||||
let postData = {
|
||||
'topic_id': detail_id,
|
||||
'file_id': res.data.id,
|
||||
'file_name': res.data.name,
|
||||
'module': 'business'
|
||||
};
|
||||
tool.post("/api/appendix/add", postData, callback);
|
||||
}
|
||||
, error: function (index, upload) {
|
||||
layer.msg('上传失败');
|
||||
}
|
||||
});
|
||||
|
||||
$('#flieList').on('click', '.file-delete', function () {
|
||||
let id = $(this).data('id');
|
||||
layer.confirm('确定要删除该附件吗?', { icon: 3, title: '提示' }, function (index) {
|
||||
let callback = function (e) {
|
||||
layer.closeAll();
|
||||
layer.msg(e.msg);
|
||||
tool.load("/business/index/view?id=" + detail_id);
|
||||
}
|
||||
let postData = { "id": id };
|
||||
tool.delete("/api/appendix/delete", postData, callback);
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
$('#linkBtn').on('click', function () {
|
||||
comment.addLink(0, detail_id, 'business', '', '');
|
||||
})
|
||||
|
||||
$('#linkList').on('click', '.link-edit', function () {
|
||||
let id = $(this).data('id');
|
||||
let url = $(this).data('url');
|
||||
let desc = $(this).data('desc');
|
||||
comment.addLink(id, detail_id, 'business', url, desc);
|
||||
})
|
||||
|
||||
$('#linkList').on('click', '.link-delete', function () {
|
||||
let id = $(this).data('id');
|
||||
layer.confirm('确定要删除该链接吗?', { icon: 3, title: '提示' }, function (index) {
|
||||
let callback = function (e) {
|
||||
layer.closeAll();
|
||||
layer.msg(e.msg);
|
||||
tool.load("/business/index/view?id=" + detail_id);
|
||||
}
|
||||
let postData = { "id": id };
|
||||
tool.delete("/api/appendix/delete_link", postData, callback);
|
||||
});
|
||||
})
|
||||
|
||||
//评论
|
||||
comment.load(detail_id, 'business');
|
||||
$('#commentInput').on('click', function () {
|
||||
comment.editor(0, detail_id, 0, 0, 'business', '');
|
||||
})
|
||||
//回复
|
||||
$('#comment_business_' + detail_id).on('click', '[data-event="replay"]', function () {
|
||||
let pid = $(this).data('id');
|
||||
let padmin_id = $(this).data('uid');
|
||||
comment.editor(0, detail_id, pid, padmin_id, 'business', '');
|
||||
})
|
||||
//编辑
|
||||
$('#comment_business_' + detail_id).on('click', '[data-event="edit"]', function () {
|
||||
let id = $(this).data('id');
|
||||
let mdcontent = $('#comment_' + id).data('mdcontent');
|
||||
comment.editor(id, detail_id, 0, 0, 'business', mdcontent);
|
||||
})
|
||||
|
||||
//删除
|
||||
$('#comment_business_' + detail_id).on('click', '[data-event="del"]', function () {
|
||||
let id = $(this).data('id');
|
||||
comment.del(id, detail_id, 'business');
|
||||
})
|
||||
|
||||
//操作记录
|
||||
comment.log(detail_id, 'business');
|
||||
|
||||
let loading = false;
|
||||
let editPost = function (id, name, show_val, real_val) {
|
||||
let callback = function (e) {
|
||||
if (e.code == 0) {
|
||||
layer.closeAll();
|
||||
tool.load('/business/index/view/id/' + id);
|
||||
if (layui.pageTable) {
|
||||
setTimeout(function () {
|
||||
layui.pageTable.reload();
|
||||
}, 400)
|
||||
}
|
||||
} else {
|
||||
layer.msg(e.msg);
|
||||
}
|
||||
}
|
||||
let postData = { id: id };
|
||||
postData[name] = real_val;
|
||||
if (name == 'md_content') {
|
||||
postData['content'] = show_val;
|
||||
}
|
||||
tool.post("/business/index/add", postData, callback);
|
||||
}
|
||||
|
||||
function editShow(id, name, show_txt, real_txt) {
|
||||
if (loading == true) {
|
||||
return false;
|
||||
}
|
||||
if (name == "name") {
|
||||
edit.text(id, name, real_txt, editPost);
|
||||
}
|
||||
if (name == "name_short") {
|
||||
edit.text(id, name, real_txt, editPost);
|
||||
}
|
||||
if (name == "company_address") {
|
||||
edit.text(id, name, real_txt, editPost);
|
||||
}
|
||||
if (name == "check_admin_ids") {
|
||||
edit.employee_more(id, name, show_txt, real_txt, editPost);
|
||||
}
|
||||
if (name == "is_open") {
|
||||
let data = [
|
||||
{ 'id': 1, 'title': '内部(仅创建人、对接人、可访问)' },
|
||||
{ 'id': 2, 'title': '公开(有对接权限员工均可访问)' }
|
||||
];
|
||||
edit.select_type(id, name, real_txt, data, editPost);
|
||||
}
|
||||
if (name == "md_content") {
|
||||
edit.editor(id, name, real_txt, editPost);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,134 @@
|
||||
<form class="layui-form page-content p-4">
|
||||
<h3 class="h3-title">添加供应商</h3>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">供应商名称<font>*</font>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="supplier_name" lay-verify="required" lay-reqText="请输入供应商名称"
|
||||
placeholder="请输入供应商名称" class="layui-input" value="" />
|
||||
</td>
|
||||
<td class="layui-td-gray-2">规模<font>*</font>
|
||||
</td>
|
||||
<td>
|
||||
<select name="company_size" lay-verify="" class="layui-select">
|
||||
<option value="">请选择规模</option>
|
||||
<option value="1">微型企业</option>
|
||||
<option value="2">小型企业</option>
|
||||
<option value="3">中型企业</option>
|
||||
<option value="4">大型企业</option>
|
||||
<option value="5">事业单位</option>
|
||||
<option value="6">国有企业</option>
|
||||
<option value="7">外企</option>
|
||||
<option value="8">其他</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">注册地址<font>*</font>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="registered_address" lay-verify="required" lay-reqText="请输入注册地址"
|
||||
placeholder="请输入注册地址" class="layui-input" value="" />
|
||||
</td>
|
||||
<td class="layui-td-gray-2">业务范围
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="business_scope" lay-reqText="请输入业务范围"
|
||||
placeholder="请输入业务范围" class="layui-input" value="" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">联系人<font>*</font>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="contact_name" lay-verify="required" lay-reqText="请输入联系人" placeholder="请输入联系人"
|
||||
class="layui-input" value="" />
|
||||
</td>
|
||||
<td class="layui-td-gray-2">联系电话<font>*</font>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="contact_phone" lay-verify="required" lay-reqText="请输入联系电话"
|
||||
placeholder="请输入联系电话" class="layui-input" value="" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">电子邮箱
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="contact_email" lay-reqText="请输入电子邮箱"
|
||||
placeholder="请输入电子邮箱" class="layui-input" value="" />
|
||||
</td>
|
||||
<td class="layui-td-gray-2">微信
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="contact_wechat" lay-reqText="请输入微信号" placeholder="请输入微信号"
|
||||
class="layui-input" value="" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">备注
|
||||
</td>
|
||||
<td colspan="4">
|
||||
<textarea name="remarks" lay-reqText="请输入" placeholder="请输入备注" class="layui-textarea"
|
||||
value=""></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">合作意向
|
||||
</td>
|
||||
<td colspan="4">
|
||||
<textarea name="intention" lay-reqText="请输入" placeholder="请输入合作意向" class="layui-textarea"
|
||||
value=""></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- <tr>
|
||||
<td class="layui-td-gray-2">项目语言
|
||||
</td>
|
||||
<td>
|
||||
<select name="language" lay-verify="" lay-reqText="请选择项目语言" class="layui-select" lay-search=""
|
||||
lay-filter="language"></select>
|
||||
</td>
|
||||
</tr> -->
|
||||
</table>
|
||||
|
||||
<div class="pt-1">
|
||||
<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>
|
||||
|
||||
<script>
|
||||
layui.use(["form", "layer"], function () {
|
||||
var laydate = layui.laydate;
|
||||
var form = layui.form,
|
||||
layer = layui.layer;
|
||||
form.render();
|
||||
|
||||
// 监听提交事件
|
||||
form.on("submit(webform)", function (data) {
|
||||
// 发送请求并处理响应
|
||||
fetch("/business/supplier/add", {
|
||||
method: "POST",
|
||||
body: JSON.stringify(data.field),
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
})
|
||||
.then((response) => response.json())
|
||||
.then((result) => {
|
||||
layer.msg(result.msg);
|
||||
if (result.code === 2) {
|
||||
setTimeout(function () {
|
||||
document.querySelector("form").reset();
|
||||
location.reload();
|
||||
}, 1000);
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,155 @@
|
||||
<form class="layui-form page-content p-4">
|
||||
<h3 class="h3-title">供应商信息</h3>
|
||||
<input type="hidden" value="{$detail.id}" id="id">
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">供应商名称<font>*</font>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="supplier_name" id="supplier_name" lay-verify="required" lay-reqText="请输入供应商名称"
|
||||
placeholder="请输入供应商名称" class="layui-input" value="{$detail.supplier_name}" />
|
||||
</td>
|
||||
<td class="layui-td-gray-2">规模<font>*</font>
|
||||
</td>
|
||||
<td>
|
||||
<select name="company_size" id="company_size" lay-verify="" class="layui-select">
|
||||
<option value="">请选择规模</option>
|
||||
<option value="1" {if $detail.company_size==1}selected{/if}>微型企业</option>
|
||||
<option value="2" {if $detail.company_size==2}selected{/if}>小型企业</option>
|
||||
<option value="3" {if $detail.company_size==3}selected{/if}>中型企业</option>
|
||||
<option value="4" {if $detail.company_size==4}selected{/if}>大型企业</option>
|
||||
<option value="5" {if $detail.company_size==5}selected{/if}>事业单位</option>
|
||||
<option value="6" {if $detail.company_size==6}selected{/if}>国有企业</option>
|
||||
<option value="7" {if $detail.company_size==7}selected{/if}>外企</option>
|
||||
<option value="8" {if $detail.company_size==8}selected{/if}>其他</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">注册地址<font>*</font>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="registered_address" id="registered_address" lay-verify="required"
|
||||
lay-reqText="请输入注册地址" placeholder="请输入注册地址" class="layui-input"
|
||||
value="{$detail.registered_address}" />
|
||||
</td>
|
||||
<td class="layui-td-gray-2">业务范围
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="business_scope" id="business_scope" lay-reqText="请输入业务范围" placeholder="请输入业务范围"
|
||||
class="layui-input" value="{$detail.business_scope}" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">联系人<font>*</font>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="contact_name" id="contact_name" lay-verify="required" lay-reqText="请输入联系人"
|
||||
placeholder="请输入联系人" class="layui-input" value="{$detail.contact_name}" />
|
||||
</td>
|
||||
<td class="layui-td-gray-2">联系电话<font>*</font>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="contact_phone" id="contact_phone" lay-verify="required" lay-reqText="请输入联系电话"
|
||||
placeholder="请输入联系电话" class="layui-input" value="{$detail.contact_phone}" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">电子邮箱
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="contact_email" id="contact_email" lay-reqText="请输入电子邮箱" placeholder="请输入电子邮箱"
|
||||
class="layui-input" value="{$detail.contact_email}" />
|
||||
</td>
|
||||
<td class="layui-td-gray-2">微信
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="contact_wechat" id="contact_wechat" lay-reqText="请输入微信号" placeholder="请输入微信号"
|
||||
class="layui-input" value="{$detail.contact_wechat}" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">备注
|
||||
</td>
|
||||
<td colspan="4">
|
||||
<textarea name="remarks" id="remarks" lay-reqText="请输入" placeholder="请输入备注"
|
||||
class="layui-textarea">{$detail.remarks}</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">合作意向
|
||||
</td>
|
||||
<td colspan="4">
|
||||
<textarea name="intention" id="intention" lay-reqText="请输入" placeholder="请输入合作意向"
|
||||
class="layui-textarea">{$detail.intention}</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- <tr>
|
||||
<td class="layui-td-gray-2">项目语言
|
||||
</td>
|
||||
<td>
|
||||
<select name="language" lay-verify="" lay-reqText="请选择项目语言" class="layui-select" lay-search=""
|
||||
lay-filter="language"></select>
|
||||
</td>
|
||||
</tr> -->
|
||||
</table>
|
||||
|
||||
<div class="pt-1">
|
||||
<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>
|
||||
|
||||
<script>
|
||||
layui.use(["form", "layer"], function () {
|
||||
var laydate = layui.laydate;
|
||||
var form = layui.form,
|
||||
$ = layui.jquery,
|
||||
layer = layui.layer;
|
||||
form.render();
|
||||
|
||||
// 监听提交事件
|
||||
form.on("submit(webform)", function (data) {
|
||||
// 获取当前时间并格式化
|
||||
var updateTime = new Date().toISOString();
|
||||
var idValue = document.getElementById('id').value;
|
||||
// 发送请求并处理响应
|
||||
fetch("/business/supplier/edit?id=" + idValue, {
|
||||
method: "POST",
|
||||
body: JSON.stringify({
|
||||
id: idValue,
|
||||
supplier_name: document.getElementById('supplier_name').value,
|
||||
company_size: document.getElementById('company_size').value,
|
||||
registered_address: document.getElementById('registered_address').value,
|
||||
business_scope: document.getElementById('business_scope').value,
|
||||
contact_name: document.getElementById('contact_name').value,
|
||||
contact_phone: document.getElementById('contact_phone').value,
|
||||
contact_email: document.getElementById('contact_email').value,
|
||||
contact_wechat: document.getElementById('contact_wechat').value,
|
||||
remarks: document.getElementById('remarks').value,
|
||||
intention: document.getElementById('intention').value,
|
||||
update_time: updateTime,
|
||||
}),
|
||||
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
})
|
||||
.then((response) => response.json())
|
||||
.then((result) => {
|
||||
layer.msg(result.msg);
|
||||
if (result.code === 2) {
|
||||
setTimeout(function () {
|
||||
document.querySelector("form").reset();
|
||||
location.reload(); // 刷新页面
|
||||
}, 1000);
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,305 @@
|
||||
{extend name="../../base/view/common/base" /}
|
||||
<!-- 主体 -->
|
||||
{block name="breadcrumb"}
|
||||
<span class="layui-breadcrumb">
|
||||
<a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
|
||||
<a href="/business/index/nav">
|
||||
<cite>CRM</cite>
|
||||
</a>
|
||||
<a>
|
||||
<cite>供应商管理</cite>
|
||||
</a>
|
||||
</span>
|
||||
{/block}
|
||||
{block name="body"}
|
||||
<div class="table-content p-3">
|
||||
<div class="layui-form-bar border-t border-x">
|
||||
<button class="layui-btn layui-btn-sm layui-bg-blue add-new">+ 新建供应商</button>
|
||||
<button class="layui-btn layui-btn-sm" id="refresh-btn">刷新</button>
|
||||
</div>
|
||||
<div class="layui-form-bar border-t border-x">
|
||||
<form id="taskForm" class="layui-form">
|
||||
<div class="layui-col-md4" style="width: 200px;margin-right: 10px;">
|
||||
<div class="layui-input-wrap">
|
||||
<div class="layui-input-prefix">
|
||||
<!-- <i class="layui-icon layui-icon-username"></i>-->
|
||||
</div>
|
||||
<input id="gys" type="text" name="supplier_name" value="" placeholder="请输入供应商名称" class="layui-input"
|
||||
lay-affix="clear">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md4" style="width: 200px;margin-right: 10px;">
|
||||
<div class="layui-input-wrap">
|
||||
<input id="lxr" type="text" name="contact_name" value="" placeholder="请输入联系人名称" class="layui-input"
|
||||
lay-affix="clear">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md4" style="width: 200px;margin-right: 10px;">
|
||||
<div class="layui-input-wrap">
|
||||
<input id="lxdh" type="text" name="contact_phone" value="" placeholder="请输入联系电话" class="layui-input"
|
||||
lay-affix="clear">
|
||||
</div>
|
||||
</div>
|
||||
<button class="layui-btn" lay-submit lay-filter="webform">搜索</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
|
||||
</form>
|
||||
</div>
|
||||
<table class="layui-hide" id="supplier" lay-filter="supplier"></table>
|
||||
</div>
|
||||
{/block}
|
||||
<!-- /主体 -->
|
||||
|
||||
<!-- 脚本 -->
|
||||
{block name="script"}
|
||||
<script>
|
||||
const moduleInit = ['tool', 'gouguEdit', 'gouguComment'];
|
||||
|
||||
function gouguInit() {
|
||||
var table = layui.table,
|
||||
form = layui.form,
|
||||
tool = layui.tool;
|
||||
|
||||
//存储表格原始数据
|
||||
var originalData = [];
|
||||
|
||||
// 添加按钮
|
||||
$('.add-new').on('click', function () {
|
||||
tool.open('/business/supplier/add');
|
||||
});
|
||||
|
||||
// 刷新按钮
|
||||
$("#refresh-btn").on("click", function () {
|
||||
location.reload();
|
||||
});
|
||||
|
||||
// 搜索按钮
|
||||
form.on('submit(webform)', function (data) {
|
||||
var field = data.field; // 获取表单字段
|
||||
|
||||
// 根据筛选条件筛选原始数据
|
||||
var filteredData = originalData.filter(function (item) {
|
||||
return (!field.supplier_name || item.supplier_name.includes(field.supplier_name)) &&
|
||||
(!field.contact_name || item.contact_name.includes(field.contact_name)) &&
|
||||
(!field.contact_phone || item.contact_phone.includes(field.contact_phone));
|
||||
});
|
||||
|
||||
// 更新表格,只修改数据,不重新加载整个表格结构
|
||||
layui.pageTable.reload({
|
||||
data: filteredData, // 使用筛选后的数据更新表格
|
||||
page: {
|
||||
curr: 1 // 重新从第 1 页开始
|
||||
}
|
||||
});
|
||||
|
||||
return false; // 阻止默认 form 提交
|
||||
});
|
||||
|
||||
// 表格渲染
|
||||
layui.pageTable = table.render({
|
||||
elem: '#supplier',
|
||||
title: '供应商列表',
|
||||
cellMinWidth: 80,
|
||||
url: "/business/supplier/index", // 数据接口
|
||||
page: true, // 开启分页
|
||||
limit: 50,
|
||||
height: 'full-130',
|
||||
cols: [[
|
||||
// {
|
||||
// field: 'id',
|
||||
// title: '供应商编号',
|
||||
// width: 100,
|
||||
// align: 'center',
|
||||
// rowspan: 2,
|
||||
// templet: function (d) {
|
||||
// return 'S' + d.id;
|
||||
// }
|
||||
// },
|
||||
{
|
||||
field: 'supplier_name',
|
||||
title: '供应商名称',
|
||||
align: 'center',
|
||||
width: 300,
|
||||
rowspan: 2,
|
||||
templet: function (d) {
|
||||
var html = '<span>' + (d.supplier_name || '-') + '</span>';
|
||||
return html;
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'contact_name',
|
||||
title: '联系人',
|
||||
align: 'center',
|
||||
width: 120,
|
||||
rowspan: 2,
|
||||
templet: function (d) {
|
||||
var html = '<span>' + (d.contact_name || '-') + '</span>';
|
||||
return html;
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'contact_phone',
|
||||
title: '联系电话',
|
||||
align: 'center',
|
||||
width: 120,
|
||||
rowspan: 2,
|
||||
templet: function (d) {
|
||||
var html = '<span>' + (d.contact_phone || '-') + '</span>';
|
||||
return html;
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'contact_email',
|
||||
title: '电子邮件',
|
||||
align: 'center',
|
||||
width: 180,
|
||||
rowspan: 2,
|
||||
templet: function (d) {
|
||||
var html = '<span>' + (d.contact_email || '-') + '</span>';
|
||||
return html;
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'company_size',
|
||||
title: '规模',
|
||||
align: 'center',
|
||||
width: 120,
|
||||
rowspan: 2,
|
||||
templet: function (d) {
|
||||
// 将 company_size 转换为字符串进行匹配
|
||||
var sizeText = '';
|
||||
switch (String(d.company_size)) {
|
||||
case '1':
|
||||
sizeText = '微型企业';
|
||||
break;
|
||||
case '2':
|
||||
sizeText = '小型企业';
|
||||
break;
|
||||
case '3':
|
||||
sizeText = '中型企业';
|
||||
break;
|
||||
case '4':
|
||||
sizeText = '大型企业';
|
||||
break;
|
||||
case '5':
|
||||
sizeText = '事业单位';
|
||||
break;
|
||||
case '6':
|
||||
sizeText = '国有企业';
|
||||
break;
|
||||
case '7':
|
||||
sizeText = '外企';
|
||||
break;
|
||||
case '8':
|
||||
sizeText = '其他';
|
||||
break;
|
||||
default:
|
||||
sizeText = '-';
|
||||
}
|
||||
return '<span>' + sizeText + '</span>';
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'business_scope',
|
||||
title: '业务范围',
|
||||
align: 'center',
|
||||
width: 240,
|
||||
rowspan: 2,
|
||||
templet: function (d) {
|
||||
var html = '<span>' + (d.business_scope || '-') + '</span>';
|
||||
return html;
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'remarks',
|
||||
title: '备注',
|
||||
align: 'center',
|
||||
rowspan: 2,
|
||||
templet: function (d) {
|
||||
var html = '<span>' + (d.remarks || '-') + '</span>';
|
||||
return html;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
align: "center",
|
||||
width: 240,
|
||||
minWidth: 125,
|
||||
toolbar: "#barDemo",
|
||||
},
|
||||
]],
|
||||
done: function (res, curr, count) {
|
||||
// 仅在首次加载表格时保存原始数据
|
||||
if (originalData.length === 0) {
|
||||
originalData = res.data;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// 搜索重置按钮
|
||||
$("#taskForm").on("click", '[lay-filter="clear"]', function () {
|
||||
layui.pageTable.reload({
|
||||
data: originalData, // 重置为原始数据
|
||||
page: {
|
||||
curr: 1 // 重新从第 1 页开始
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
table.on('tool(supplier)', function (obj) {
|
||||
var data = obj.data; // 获取当前行的数据
|
||||
|
||||
if (obj.event === 'edit') {
|
||||
var id = data.id; // 获取当前行数据的id
|
||||
var url = '/business/supplier/edit?id=' + id;
|
||||
tool.open(url);
|
||||
} else if (obj.event === 'delete') {
|
||||
layui.layer.confirm(
|
||||
"确定删除该账号吗?",
|
||||
{ icon: 3, title: "提示" },
|
||||
function (index) {
|
||||
$.post(
|
||||
"/business/supplier/delete",
|
||||
{ id: data.id },
|
||||
function (res) {
|
||||
if (res.code === 0) {
|
||||
layui.layer.msg(res.msg);
|
||||
obj.del(); // 删除表格中的对应行数据
|
||||
} else {
|
||||
layui.layer.msg(res.msg);
|
||||
}
|
||||
}
|
||||
);
|
||||
layui.layer.close(index);
|
||||
}
|
||||
);
|
||||
} else if (obj.event === 'invoice') {
|
||||
var id = data.id; // 获取当前行数据的id
|
||||
var url = '/business/supplier/invoice?id=' + id;
|
||||
tool.open(url);
|
||||
} else if (obj.event === 'view') {
|
||||
var id = data.id; // 获取当前行数据的id
|
||||
console.log('查看详情', id);
|
||||
// 查看详情
|
||||
layui.layer.open({
|
||||
type: 2, // iframe层
|
||||
title: '供应商详情',
|
||||
shadeClose: true,
|
||||
shade: 0.8,
|
||||
area: ['70%', '90%'], // 宽高
|
||||
content: '/business/supplier/view/id/' + id,
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="barDemo">
|
||||
<a class="layui-btn layui-btn-xs " lay-event="view">详情</a>
|
||||
<a class="layui-btn layui-btn-xs " lay-event="edit">编辑</a>
|
||||
<a class="layui-btn layui-btn-xs layui-bg-blue" lay-event="invoice">开票信息</a>
|
||||
<a class="layui-btn layui-btn-xs layui-bg-red" lay-event="delete">删除</a>
|
||||
</script>
|
||||
{/block}
|
||||
<!-- /脚本 -->
|
||||
@@ -0,0 +1,112 @@
|
||||
<form class="layui-form page-content p-4">
|
||||
<h3 class="h3-title">开票信息</h3>
|
||||
<input type="hidden" value="{$detail.id}" id="id">
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">开票企业名称<font>*</font>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="invoice_company_name" id="invoice_company_name" lay-verify="required"
|
||||
lay-reqText="请输入开票企业名称" placeholder="请输入开票企业名称" class="layui-input"
|
||||
value="{$detail.invoice_company_name}" />
|
||||
</td>
|
||||
<td class="layui-td-gray-2">纳税人识别号<font>*</font>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="taxpayer_id" id="taxpayer_id" lay-verify="required" lay-reqText="请输入纳税人识别号"
|
||||
placeholder="请输入纳税人识别号" class="layui-input" value="{$detail.taxpayer_id}" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">开票地址
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="invoice_address" id="invoice_address" lay-reqText="请输入开票地址"
|
||||
placeholder="请输入开票地址" class="layui-input" value="{$detail.invoice_address}" />
|
||||
</td>
|
||||
<td class="layui-td-gray-2">开票电话
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="invoice_phone" id="invoice_phone" lay-reqText="请输入开票电话" placeholder="请输入开票电话"
|
||||
class="layui-input" value="{$detail.invoice_phone}" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">开户行
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="bank_name" id="bank_name" lay-reqText="请输入开户行" placeholder="请输入开户行"
|
||||
class="layui-input" value="{$detail.bank_name}" />
|
||||
</td>
|
||||
<td class="layui-td-gray-2">开户帐号
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="bank_account" id="bank_account" lay-reqText="请输入开户帐号" placeholder="请输入开户帐号"
|
||||
class="layui-input" value="{$detail.bank_account}" />
|
||||
</td>
|
||||
</tr>
|
||||
<!-- <tr>
|
||||
<td class="layui-td-gray-2">项目语言
|
||||
</td>
|
||||
<td>
|
||||
<select name="language" lay-verify="" lay-reqText="请选择项目语言" class="layui-select" lay-search=""
|
||||
lay-filter="language"></select>
|
||||
</td>
|
||||
</tr> -->
|
||||
</table>
|
||||
|
||||
<div class="pt-1">
|
||||
<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>
|
||||
|
||||
<script>
|
||||
layui.use(["form", "layer"], function () {
|
||||
var laydate = layui.laydate;
|
||||
var form = layui.form,
|
||||
$ = layui.jquery,
|
||||
layer = layui.layer;
|
||||
form.render();
|
||||
|
||||
// 监听提交事件
|
||||
form.on("submit(webform)", function (data) {
|
||||
// 获取当前时间并格式化
|
||||
var updateTime = new Date().toISOString();
|
||||
var idValue = document.getElementById('id').value;
|
||||
// 发送请求并处理响应
|
||||
fetch("/business/supplier/invoice?id=" + idValue, {
|
||||
method: "POST",
|
||||
body: JSON.stringify({
|
||||
id: idValue,
|
||||
invoice_company_name: document.getElementById('invoice_company_name').value,
|
||||
taxpayer_id: document.getElementById('taxpayer_id').value,
|
||||
invoice_address: document.getElementById('invoice_address').value,
|
||||
invoice_phone: document.getElementById('invoice_phone').value,
|
||||
bank_name: document.getElementById('bank_name').value,
|
||||
bank_account: document.getElementById('bank_account').value,
|
||||
update_time: updateTime,
|
||||
}),
|
||||
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
})
|
||||
.then((response) => response.json())
|
||||
.then((result) => {
|
||||
layer.msg(result.msg);
|
||||
if (result.code === 2) {
|
||||
setTimeout(function () {
|
||||
document.querySelector("form").reset();
|
||||
location.reload(); // 刷新页面
|
||||
}, 1000);
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,261 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title></title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="format-detection" content="telephone=no">
|
||||
<link rel="stylesheet" href="/static/assets/gougu/css/gougu.css">
|
||||
<!-- <link rel="stylesheet" href="/static/assets/gougu/css/layout.css"> -->
|
||||
<style>
|
||||
.close {
|
||||
width: 100%;
|
||||
height: 80px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.titles {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
padding: 20px 0;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
.layui-table {
|
||||
width: 100%;
|
||||
table-layout: fixed;
|
||||
/* 固定表格布局,确保列宽固定 */
|
||||
}
|
||||
|
||||
.layui-table-form td {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
/* 不换行 */
|
||||
}
|
||||
|
||||
/* 除去特定的colspan=4单元格的均分计算 */
|
||||
.layui-table-form td:not(.layui-td-gray-2):not([colspan="4"]) {
|
||||
width: calc((100% - 200px) / 2);
|
||||
/* 计算其他td的宽度均分 */
|
||||
}
|
||||
|
||||
.layui-td-gray-2 {
|
||||
max-width: 100px;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
/* 针对业务范围和备注的样式 */
|
||||
.layui-table-form td[colspan="3"] {
|
||||
overflow: hidden;
|
||||
/* 隐藏溢出内容 */
|
||||
white-space: normal;
|
||||
/* 允许文本换行 */
|
||||
word-wrap: break-word;
|
||||
/* 自动换行 */
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="page-content">
|
||||
<div class="p-4 border-b">
|
||||
<div style="display: flex;align-items: center;justify-content: space-between;">
|
||||
<div>
|
||||
<h3 class="h3-title hover">
|
||||
<span id="name">供应商详情 - {$detail.supplier_name}</span>
|
||||
</h3>
|
||||
</div>
|
||||
<div style="color: #969696;">创建日期:{$detail.create_time}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-row border-b">
|
||||
<div>
|
||||
<div class="titles">基础信息</div>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">供应商名称
|
||||
</td>
|
||||
<td>
|
||||
{$detail.supplier_name|default="-"}
|
||||
</td>
|
||||
<td class="layui-td-gray-2">注册地址
|
||||
</td>
|
||||
<td>
|
||||
{$detail.registered_address|default="-"}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">联系人名称
|
||||
</td>
|
||||
<td>
|
||||
{$detail.contact_name|default="-"}
|
||||
</td>
|
||||
<td class="layui-td-gray-2">联系电话
|
||||
</td>
|
||||
<td>
|
||||
{$detail.contact_phone|default="-"}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">电子邮件
|
||||
</td>
|
||||
<td>
|
||||
{$detail.contact_email|default="-"}
|
||||
</td>
|
||||
<td class="layui-td-gray-2">微信
|
||||
</td>
|
||||
<td>
|
||||
{$detail.contact_wechat|default="-"}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">规模
|
||||
</td>
|
||||
<td id="company-size">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">业务范围
|
||||
</td>
|
||||
<td colspan="3">
|
||||
{$detail.business_scope|default="-"}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="titles">开票信息</div>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">开票企业名称
|
||||
</td>
|
||||
<td style="max-width: 300px;">
|
||||
{$detail.invoice_company_name|default="-"}
|
||||
</td>
|
||||
<td class="layui-td-gray-2">纳税人识别号
|
||||
</td>
|
||||
<td>
|
||||
{$detail.taxpayer_id|default="-"}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">开票地址
|
||||
</td>
|
||||
<td>
|
||||
{$detail.invoice_address|default="-"}
|
||||
</td>
|
||||
<td class="layui-td-gray-2">开票电话
|
||||
</td>
|
||||
<td>
|
||||
{$detail.invoice_phone|default="-"}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">开户行
|
||||
</td>
|
||||
<td>
|
||||
{$detail.bank_name|default="-"}
|
||||
</td>
|
||||
<td class="layui-td-gray-2">开户帐号
|
||||
</td>
|
||||
<td>
|
||||
{$detail.bank_account|default="-"}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="titles">其他</div>
|
||||
<table class="layui-table layui-table-form">
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">备注
|
||||
</td>
|
||||
<td colspan="4">
|
||||
{$detail.remarks|default="-"}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="layui-td-gray-2">合作意向
|
||||
</td>
|
||||
<td colspan="4">
|
||||
{$detail.intention|default="-"}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="close">
|
||||
<button class="layui-btn layui-btn-normal" lay-event="close">关闭页面</button>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
<script>
|
||||
|
||||
</script>
|
||||
<script>
|
||||
const moduleInit = ["tool", "gouguEdit", "gouguComment"];
|
||||
|
||||
function gouguInit() {
|
||||
var table = layui.table;
|
||||
var tool = layui.tool;
|
||||
var dropdown = layui.dropdown;
|
||||
var $ = layui.jquery;
|
||||
var layer = layui.layer;
|
||||
|
||||
$('[lay-event="close"]').on('click', function () {
|
||||
// 直接使用layer.close方法关闭最顶层的弹出层
|
||||
var index = parent.layer.getFrameIndex(window.name); // 获取iframe层的索引
|
||||
parent.layer.close(index); // 关闭弹出层
|
||||
})
|
||||
}
|
||||
|
||||
//规模转换
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
var companySize = '{$detail.company_size|default="-"}'; // 获取公司规模数据
|
||||
var sizeText;
|
||||
|
||||
switch (companySize) {
|
||||
case '1':
|
||||
sizeText = '微型企业';
|
||||
break;
|
||||
case '2':
|
||||
sizeText = '小型企业';
|
||||
break;
|
||||
case '3':
|
||||
sizeText = '中型企业';
|
||||
break;
|
||||
case '4':
|
||||
sizeText = '大型企业';
|
||||
break;
|
||||
case '5':
|
||||
sizeText = '事业单位';
|
||||
break;
|
||||
case '6':
|
||||
sizeText = '国有企业';
|
||||
break;
|
||||
case '7':
|
||||
sizeText = '外企';
|
||||
break;
|
||||
case '8':
|
||||
sizeText = '其他';
|
||||
break;
|
||||
default:
|
||||
sizeText = '-'; // 默认值
|
||||
}
|
||||
|
||||
document.getElementById('company-size').textContent = sizeText;
|
||||
});
|
||||
|
||||
</script>
|
||||
<script src="/static/assets/layui/layui.js"></script>
|
||||
<script src="/static/assets/gougu/gouguInit.js"></script>
|
||||
Reference in New Issue
Block a user