first commit

This commit is contained in:
2026-07-23 09:40:36 +08:00
commit 090abf48fa
989 changed files with 145728 additions and 0 deletions
+92
View File
@@ -0,0 +1,92 @@
{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-2">供应商名称<font>*</font></td>
<td colspan="3"><input type="text" name="title" placeholder="请输入供应商名称" lay-verify="required" lay-reqText="请输入供应商名称" class="layui-input"></td>
<td class="layui-td-gray-2">供应商电话</td>
<td><input type="text" name="phone" autocomplete="off" placeholder="请输入供应商电话" class="layui-input"></td>
</tr>
<tr>
<td class="layui-td-gray-2">供应商地址</td>
<td colspan="3"><input type="text" name="address" placeholder="请输入供应商地址" class="layui-input"></td>
<td class="layui-td-gray-2">供应商邮箱</td>
<td><input type="text" name="email" autocomplete="off" placeholder="请输入供应商邮箱" class="layui-input"></td>
</tr>
<tr>
<td class="layui-td-gray" style="vertical-align:top;">供应商简介</td>
<td colspan="5"><textarea name="content" placeholder="请输入内容" class="layui-textarea"></textarea></td>
</tr>
<tr>
<td class="layui-td-gray-2">
<div class="layui-input-inline">相关附件</div>
<div class="layui-input-inline">
<button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></button>
</div>
</td>
<td colspan="5">
<div class="layui-row" id="uploadBox">
<input type="hidden" data-type="file" name="file_ids" value="">
</div>
</td>
</tr>
<tr>
<td colspan="6"><strong>首要联系人信息</strong></td>
</tr>
<tr>
<td class="layui-td-gray">联 系 人</td>
<td><input type="text" name="c_name" autocomplete="off" placeholder="请输入联系人姓名" class="layui-input"></td>
<td class="layui-td-gray">联系电话</td>
<td><input type="text" name="c_mobile" autocomplete="off" placeholder="请输入联系人电话" class="layui-input"></td>
<td class="layui-td-gray">性别</td>
<td>
<input type="radio" name="c_sex" value="1" title="男">
<input type="radio" name="c_sex" value="2" title="女" >
</td>
</tr>
</table>
<div class="pt-3">
<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','uploadPlus'];
function gouguInit() {
var form = layui.form,tool=layui.tool,uploadPlus=layui.uploadPlus;
//附件上传
var attachment = new uploadPlus({
"target":'uploadBtn',
"targetBox":'uploadBox'
});
//监听提交
form.on('submit(webform)', function(data){
if(data.field.c_name!=='' || data.field.c_mobile!==''){
if(!data.field.c_sex){
layer.msg('请选择首要联系的性别');
return false;
}
}
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.sideClose(1000);
}
}
let clickbtn = $(this);
tool.post("/contract/supplier/add", data.field, callback,clickbtn);
return false;
});
}
</script>
{/block}
<!-- /脚本 -->
@@ -0,0 +1,74 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<form class="layui-form p-page">
<h3 class="pb-3">新增联系人</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">供应商名称</td>
<td colspan="5">{$supplier_name}</td>
</tr>
<tr>
<td class="layui-td-gray">联系人姓名<font>*</font></td>
<td><input type="text" name="name" autocomplete="off" lay-verify="required" lay-reqText="请输入联系人姓名" placeholder="请输入联系人姓名" class="layui-input"></td>
<td class="layui-td-gray">联系电话<font>*</font></td>
<td><input type="text" name="mobile" autocomplete="off" lay-verify="required" lay-reqText="请输入联系人电话" placeholder="请输入联系人电话" class="layui-input"></td>
<td class="layui-td-gray">性别<font>*</font></td>
<td>
<input type="radio" name="sex" value="1" title="男">
<input type="radio" name="sex" value="2" title="女">
</td>
</tr>
<tr>
<td class="layui-td-gray">微 信 号</td>
<td><input type="text" name="wechat" autocomplete="off" placeholder="请输入联系人微信号" class="layui-input"></td>
<td class="layui-td-gray">QQ号码</td>
<td><input type="text" name="qq" autocomplete="off" placeholder="请输入联系人QQ号码" class="layui-input"></td>
<td class="layui-td-gray">电子邮箱</td>
<td><input type="text" name="email" autocomplete="off" placeholder="请输入联系人电子邮箱" class="layui-input"></td>
</tr>
<tr>
<td class="layui-td-gray">称谓</td>
<td><input type="text" name="nickname" autocomplete="off" placeholder="请输入联系人的称谓" class="layui-input"></td>
<td class="layui-td-gray">部门</td>
<td><input type="text" name="department" autocomplete="off" placeholder="请输入联系人所在部门" class="layui-input"></td>
<td class="layui-td-gray">职务</td>
<td><input type="text" name="position" autocomplete="off" placeholder="请输入联系人担任的职务" class="layui-input"></td>
</tr>
</table>
<div class="pt-3">
<input type="hidden" name="sid" value="{$supplier_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'];
function gouguInit() {
var form = layui.form,tool=layui.tool;
//监听提交
form.on('submit(webform)', function (data) {
if(!data.field.sex){
layer.msg('请选择性别');
return false;
}
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.sideClose(1000);
}
}
let clickbtn = $(this);
tool.post("/contract/supplier/contact_add", data.field, callback,clickbtn);
return false;
});
}
</script>
{/block}
<!-- /脚本 -->
@@ -0,0 +1,74 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<form class="layui-form p-page">
<h3 class="pb-3">编辑联系人</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">供应商名称</td>
<td colspan="5">{$detail.supplier}</td>
</tr>
<tr>
<td class="layui-td-gray">联系人姓名<font>*</font></td>
<td><input type="text" name="name" value="{$detail.name}" autocomplete="off" lay-verify="required" lay-reqText="请输入联系人姓名" placeholder="请输入联系人姓名" class="layui-input"></td>
<td class="layui-td-gray">联系电话<font>*</font></td>
<td><input type="text" name="mobile" value="{$detail.mobile}" autocomplete="off" lay-verify="required" lay-reqText="请输入联系人电话" placeholder="请输入联系人电话" class="layui-input"></td>
<td class="layui-td-gray">性别<font>*</font></td>
<td>
<input type="radio" name="sex" value="1" title="男" {eq name="$detail.sex" value="1"} checked{/eq}>
<input type="radio" name="sex" value="2" title="女" {eq name="$detail.sex" value="2"} checked{/eq}>
</td>
</tr>
<tr>
<td class="layui-td-gray">微 信 号</td>
<td><input type="text" name="wechat" value="{$detail.wechat}" autocomplete="off" placeholder="请输入联系人微信号" class="layui-input"></td>
<td class="layui-td-gray">QQ号码</td>
<td><input type="text" name="qq" value="{$detail.qq}" autocomplete="off" placeholder="请输入联系人QQ号码" class="layui-input"></td>
<td class="layui-td-gray">电子邮箱</td>
<td><input type="text" name="email" value="{$detail.email}" autocomplete="off" placeholder="请输入联系人电子邮箱" class="layui-input"></td>
</tr>
<tr>
<td class="layui-td-gray">称谓</td>
<td><input type="text" name="nickname" value="{$detail.nickname}" autocomplete="off" placeholder="请输入联系人的称谓" class="layui-input"></td>
<td class="layui-td-gray">部门</td>
<td><input type="text" name="department" value="{$detail.department}" autocomplete="off" placeholder="请输入联系人所在部门" class="layui-input"></td>
<td class="layui-td-gray">职务</td>
<td><input type="text" name="position" value="{$detail.position}" autocomplete="off" placeholder="请输入联系人担任的职务" class="layui-input"></td>
</tr>
</table>
<div class="pt-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'];
function gouguInit() {
var form = layui.form,tool=layui.tool;
//监听提交
form.on('submit(webform)', function (data) {
if(!data.field.sex){
layer.msg('请选择性别');
return false;
}
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.sideClose(1000);
}
}
let clickbtn = $(this);
tool.post("/contract/supplier/contact_add", data.field, callback,clickbtn);
return false;
});
}
</script>
{/block}
<!-- /脚本 -->
+121
View File
@@ -0,0 +1,121 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<div class="p-page">
<form class="layui-form gg-form-bar border-x border-t" id="barsearchform">
<div class="layui-input-inline" style="width:240px;">
<input type="text" name="keywords" placeholder="供应商名称/联系人名称" class="layui-input" />
</div>
<div class="layui-input-inline" style="width:150px">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="table-search"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="table-reset">清空</button>
</div>
</form>
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-sm add-new" type="button">+ 添加供应商</button>
</div>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool','tablePlus'];
function gouguInit() {
var table = layui.tablePlus, tool = layui.tool, form = layui.form;
layui.pageTable = table.render({
elem: '#test'
,toolbar: '#toolbarDemo'
,title:'供应商列表'
,url: "/contract/supplier/datalist"
,page: true
,cellMinWidth: 80
,cols: [[
{field:'id',width:80, title: 'ID号', align:'center'}
,{field:'title',title: '供应商名称',minWidth:300}
,{field:'address',width:280, title: '供应商地址'}
,{field:'phone',width:150, title: '供应商电话', align:'center'}
,{field:'email',width:150, title: '供应商邮箱', align:'center'}
,{field:'status', title: '状态',width:80,align:'center',templet: function(d){
var html1='<span class="green">正常</span>';
var html2='<span class="yellow">禁用</span>';
if(d.status==1){
return html1;
}
else{
return html2;
}
}}
,{width:150,fixed:'right', title: '操作',ignoreExport:true, align:'center',templet: function(d){
var html='';
var btn='<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a><a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">详情</a>';
var btn1='<a class="layui-btn layui-btn-warm layui-btn-xs" lay-event="disable">禁用</a>';
var btn2='<a class="layui-btn layui-btn-xs" lay-event="open">启用</a>';
var btn3='<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>';
if(d.status==1){
html = '<div class="layui-btn-group">'+btn+btn1+btn3+'</div>';
}
else{
html = '<div class="layui-btn-group">'+btn+btn2+btn3+'</div>';
}
return html;
}}
]]
});
table.on('tool(test)',function (obj) {
if(obj.event === 'edit'){
tool.side("/contract/supplier/add?id="+obj.data.id);
}
if(obj.event === 'view'){
tool.side("/contract/supplier/view?id="+obj.data.id);
}
if(obj.event === 'disable'){
layer.confirm('确定要禁用该供应商吗?', {icon: 3, title:'提示'}, function(index){
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
layui.pageTable.reload();
}
}
tool.post("/contract/supplier/set", { id: obj.data.id,status: 0,title: obj.data.title}, callback);
layer.close(index);
});
}
if(obj.event === 'open'){
layer.confirm('确定要启用该供应商吗?', {icon: 3, title:'提示'}, function(index){
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
layui.pageTable.reload();
}
}
tool.post("/contract/supplier/set", { id: obj.data.id,status: 1,title: obj.data.title}, callback);
layer.close(index);
});
}
if(obj.event === '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("/contract/supplier/del", { id: obj.data.id}, callback);
layer.close(index);
});
}
});
$('body').on('click','.add-new',function(){
tool.side("/contract/supplier/add");
});
}
</script>
{/block}
<!-- /脚本 -->
+76
View File
@@ -0,0 +1,76 @@
{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-2">供应商名称<font>*</font></td>
<td colspan="3"><input type="text" name="title" value="{$detail.title}" autocomplete="off" placeholder="请输入供应商名称" lay-verify="required" lay-reqText="请输入供应商名称" class="layui-input"></td>
<td class="layui-td-gray-2">供应商电话</td>
<td><input type="text" name="phone" value="{$detail.phone}" autocomplete="off" placeholder="请输入供应商电话" class="layui-input"></td>
</tr>
<tr>
<td class="layui-td-gray-2">供应商地址</td>
<td colspan="3"><input type="text" name="address" value="{$detail.address}" autocomplete="off" placeholder="请输入供应商地址" class="layui-input"></td>
<td class="layui-td-gray-2">供应商邮箱</td>
<td><input type="text" name="email" value="{$detail.email}" autocomplete="off" placeholder="请输入供应商邮箱" class="layui-input"></td>
</tr>
<tr>
<td class="layui-td-gray" style="vertical-align:top;">供应商简介</td>
<td colspan="5"><textarea name="content" placeholder="请输入内容" class="layui-textarea">{$detail.content}</textarea></td>
</tr>
<tr>
<td class="layui-td-gray-2">
<div class="layui-input-inline">相关附件</div>
<div class="layui-input-inline">
<button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></button>
</div>
</td>
<td colspan="5">
<div class="layui-row" id="uploadBox">
<input type="hidden" data-type="file" name="file_ids" value="{$detail.file_ids}">
{volist name="$detail.file_array" id="vo"}
<div class="layui-col-md4" id="uploadFile{$vo.id}">{:file_card($vo)}</div>
{/volist}
</div>
</td>
</tr>
</table>
<div class="pt-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','uploadPlus'];
function gouguInit() {
var form = layui.form,tool=layui.tool,uploadPlus=layui.uploadPlus;
//附件上传
var attachment = new uploadPlus({
"target":'uploadBtn',
"targetBox":'uploadBox'
});
//监听提交
form.on('submit(webform)', function(data){
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.sideClose(1000);
}
}
let clickbtn = $(this);
tool.post("/contract/supplier/add", data.field, callback,clickbtn);
return false;
});
}
</script>
{/block}
<!-- /脚本 -->
+141
View File
@@ -0,0 +1,141 @@
{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-2">供应商名称</td>
<td>{$detail.title}</td>
<td class="layui-td-gray-2">供应商电话</td>
<td>{$detail.phone}</td>
</tr>
<tr>
<td class="layui-td-gray-2">供应商地址</td>
<td>{$detail.address}</td>
<td class="layui-td-gray-2">供应商邮箱</td>
<td>{$detail.email}</td>
</tr>
<tr>
<td class="layui-td-gray" style="vertical-align:top;">供应商简介</td>
<td colspan="3">{$detail.content}</td>
</tr>
{notempty name="$detail.file_ids"}
<tr>
<td class="layui-td-gray-2">
<div class="layui-input-inline">相关附件</div>
</td>
<td colspan="3">
<div class="layui-row" id="uploadBox">
{volist name="$detail.file_array" id="vo"}
<div class="layui-col-md4" id="uploadFile{$vo.id}">{:file_card($vo,'view')}</div>
{/volist}
</div>
</td>
</tr>
{/notempty}
<tr>
<td colspan="6"><strong>联系人信息</strong><span class="layui-btn layui-btn-xs add-contact ml-3">+ 新增联系人</span></td>
</tr>
<tr>
<td colspan="6"><table class="layui-hide" id="contact" lay-filter="contact"></table></td>
</tr>
</table>
</form>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const supplier_id = '{$detail.id}';
const moduleInit = ['tool'];
function gouguInit() {
let tool = layui.tool, table = layui.table;
layui.pageTable = table.render({
elem: '#contact',
title: '联系人列表',
cellMinWidth:80,
url: '/contract/api/get_supplier_contact',
where:{'supplier_id':supplier_id},
page: true, //开启分页
limit: 20,
cols: [[
{field:'id',width:80, title: 'ID号', align:'center'}
,{field:'name',width:100,title: '联系人姓名', align:'center'}
,{field:'status', title: '性别',width:80,align:'center',templet: function(d){
var html='未知';
var html1='<span class="green">男</span>';
var html2='<span class="blue">女</span>';
if(d.sex==1){
return html1;
}
if(d.sex==2){
return html2;
}
else{
return html;
}
}}
,{field:'mobile',width:100,title: '手机号码', align:'center'}
,{field:'qq',width:100,title: 'QQ号码', align:'center'}
,{field:'wechat',width:100,title: '微信号码', align:'center'}
,{field:'email',title: '电子邮箱', align:'center'}
,{field:'position',width:120,title: '担任职位', align:'center'}
,{field:'department',width:120,title: '部门', align:'center'}
,{fixed:'right',width:190,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="set">设为首要联系人</a>';
var btn2='<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>';
if(d.is_default==1){
return '<span class="red" style="margin-right:10px;">首要联系人</span>'+btn;
}
else{
return html+btn+btn1+btn2+'</div>';
}
}}
]]
});
$('.add-contact').on('click',function(){
tool.side('/contract/supplier/contact_add?sid='+supplier_id);
});
table.on('tool(contact)', function(obj){
var data = obj.data; //获得当前行数据
var layEvent = obj.event;
if(layEvent === 'edit'){ //编辑
let url = '/contract/supplier/contact_add?id='+data.id;
tool.side(url);
}
if(layEvent === 'set'){ //查看
layer.confirm('确定要设置该联系人为首要联系人吗?', {icon: 3, title:'提示'}, function(index){
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
layui.pageTable.reload();
}
}
tool.delete("/contract/api/set_supplier_contact",{"id":data.id},callback);
layer.close(index);
});
}
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('/contract/supplier/contact_del',{"id":data.id},callback);
layer.close(index);
});
}
return false;
})
}
</script>
{/block}
<!-- /脚本 -->