Commit 4539a679 by 杨树贤

Merge branch 'ysx-采购合作框架协议签署-20250827' into Dev

parents 610ead78 9a907c6d
<?php
namespace App\Http\Controllers\Api;
use Illuminate\Http\Request;
use App\Model\AttachmentAuditModel;
use App\Http\Controllers\Controller;
use App\Http\Services\AttachmentAuditService;
class AttachmentAuditApiController extends Controller
{
public function Entrance(Request $request, $id)
{
$this->$id($request, $id);
}
/**
* 获取附件审核列表
*/
public function GetAttachmentAuditList($request)
{
$service = new AttachmentAuditService();
$list = $service->getAttachmentAuditList($request->all());
$this->response(0, 'ok', $list['data'], $list['total']);
}
/**
* 审核附件
*/
public function AuditAttachment($request)
{
$status = $request->get('status');
$rejectReason = $request->get('reject_reason');
if (empty($status)) {
$this->response(-1, '必须选择一个审核结果');
}
if ($status == AttachmentAuditModel::STATUS_REJECT && empty($rejectReason)) {
$this->response(-1, '拒绝审核时必须填写拒绝原因');
}
$attachmentId = $request->get('id');
$service = new AttachmentAuditService();
$result = $service->auditAttachment($attachmentId, $status, $rejectReason);
if (!$result) {
$this->response(-1, '审核失败');
}
$this->response(0, '审核成功');
}
}
<?php
namespace App\Http\Controllers;
use App\Model\AttachmentAuditModel;
use Illuminate\Http\Request;
class AttachmentAuditController extends Controller
{
public function info(Request $request, $id = '')
{
if ($request->path() == '/') {
$path = 'web/index';
} else {
$path = $request->path();
}
$this->data = [
'menus' => $request->menus,
'header' => $request->user->header,
'username' => $request->user->email,
'user_email' => $request->user->email,
'uri' => '/' . $path,
'id' => $id
];
return $this->$id($request);
}
public function __call($name, $arr)
{
$data['errinfo'] = '访问路径错误';
return view('errors.error', $data);
}
/**
* 附件审核列表
*/
public function AttachmentAuditList($request)
{
$this->data['auditUidList'] = AttachmentAuditModel::pluck('audit_name', 'audit_name')->toArray();
$this->data['title'] = '附件审核列表';
return $this->view('附件审核列表');
}
/**
* 审核附件
*/
public function AuditAttachment($request)
{
$id = $request->get('id');
$attachment = AttachmentAuditModel::with('supplier')->where('id', $id)->first()->toArray();
$attachment['supplier_group_name'] = array_get(config('fixed.SupplierGroup'), $attachment['supplier']['supplier_group']);
$this->data['attachment'] = $attachment;
$this->data['title'] = '附件审核';
return $this->view('附件审核');
}
}
<?php
namespace App\Http\Controllers\Filter;
use App\Model\AttachmentAuditModel;
use App\Model\SupplierChannelModel;
use App\Http\Services\AdminUserService;
use App\Http\Services\DepartmentService;
class AttachmentAuditFilter
{
/**
* 查询条件过滤
*/
public function listFilter($map)
{
$userId = request()->user->userId;
$codeId = request()->user->codeId;
$canViewAllSupplier = checkPerm('ViewAllSupplier');
$canViewSubordinateSupplier = checkPerm('ViewSubordinateSupplier');
$model = new AttachmentAuditModel();
$query = $model->with('supplier')->orderBy('id', 'desc');
// 权限相关的条件
if (!$canViewAllSupplier) {
if ($canViewSubordinateSupplier) {
$departmentService = new DepartmentService();
$subordinateUserIds = $departmentService->getSubordinateUserIds($userId);
$adminUserService = new AdminUserService();
$subordinateCodeIds = $adminUserService->getCodeIdsByUserIds($subordinateUserIds);
$subordinateCodeIds = $subordinateCodeIds->toArray();
$likeSqlRaw = implode('|', $subordinateCodeIds);
$inCodeIdSql = implode(',', $subordinateCodeIds);
$inUserIdSql = implode(',', $subordinateUserIds);
$inCodeIdSql = "(" . $inCodeIdSql . ")";
$inUserIdSql = "(" . $inUserIdSql . ")";
if ($subordinateCodeIds) {
//找出相关的供应商id
$supplierIds = SupplierChannelModel::whereRaw("(create_uid in $inUserIdSql or purchase_uid in $inCodeIdSql or channel_uid REGEXP '$likeSqlRaw')")->pluck('supplier_id')->toArray();
$query->whereIn('supplier_id', $supplierIds);
} else {
$query->whereRaw("(create_uid in $inUserIdSql)");
}
}
}
// 默认只显示审核中的数据
if (empty($map['status'])) {
$query->where('status', AttachmentAuditModel::STATUS_PENDING);
} else {
$query->where('status', $map['status']);
}
// 供应商名称筛选
if (!empty($map['supplier_name'])) {
$query->whereHas('supplier', function ($q) use ($map) {
$q->where('supplier_name', 'like', "%{$map['supplier_name']}%");
});
}
// 供应商编码筛选
if (!empty($map['supplier_code'])) {
$query->whereHas('supplier', function ($q) use ($map) {
$q->where('supplier_code', 'like', "%{$map['supplier_code']}%");
});
}
// 文件类型筛选
if (!empty($map['type'])) {
$query->where('type', 'like', "%{$map['type']}%");
}
// 文件名称筛选
if (!empty($map['file_name'])) {
$query->where('file_name', 'like', "%{$map['file_name']}%");
}
// 审核人筛选
if (!empty($map['audit_name'])) {
$query->where('audit_name', 'like', "%{$map['audit_name']}%");
}
// 上传人筛选
if (!empty($map['create_name'])) {
$query->where('create_name', 'like', "%{$map['create_name']}%");
}
// 时间范围筛选
if (!empty($map['create_time_start'])) {
$query->where('create_time', '>=', strtotime($map['create_time_start']));
}
if (!empty($map['create_time_end'])) {
$query->where('create_time', '<=', strtotime($map['create_time_end'] . ' 23:59:59'));
}
return $query;
}
}
<?php
namespace App\Http\Services;
use Illuminate\Support\Facades\DB;
use App\Model\AttachmentAuditModel;
use App\Model\SupplierAttachmentsModel;
use App\Http\Transformers\AttachmentAuditTransformer;
use App\Http\Controllers\Filter\AttachmentAuditFilter;
class AttachmentAuditService
{
/**
* 获取附件审核列表
*/
public function getAttachmentAuditList($map)
{
$limit = array_get($map, 'limit', 10);
$filter = new AttachmentAuditFilter();
$query = $filter->listFilter($map);
$list = $query->paginate($limit)->toArray();
$transformer = new AttachmentAuditTransformer();
$list['data'] = $transformer->transformList($list['data']);
return $list;
}
/**
* 审核附件
*/
public function auditAttachment($attachmentId, $status, $rejectReason)
{
//加入事务
DB::beginTransaction();
$result = AttachmentAuditModel::where('id', $attachmentId)->update([
'status' => $status,
'update_time' => time(),
'audit_time' => time(),
'audit_name' => request()->user->name,
'update_name' => request()->user->name,
'audit_content' => $rejectReason,
]);
//审核通过以后还要新增到附件表
if ($status == AttachmentAuditModel::STATUS_PASS) {
$this->addToAttachmentTable($attachmentId);
}
if ($result) {
DB::commit();
} else {
DB::rollBack();
}
return $result;
}
/**
* 审核通过后将附件信息添加到正式附件表
*/
private function addToAttachmentTable($attachmentId)
{
// 获取审核表中的附件信息
$auditAttachment = AttachmentAuditModel::find($attachmentId);
if (!$auditAttachment) {
return false;
}
// 检查是否已经存在相同的附件记录
$existingAttachment = SupplierAttachmentsModel::where('supplier_id', $auditAttachment->supplier_id)
->where('field_name', $auditAttachment->type)
->first();
if ($existingAttachment) {
// 如果已存在,更新记录
SupplierAttachmentsModel::where('attachment_id', $existingAttachment->attachment_id)->update([
'file_url' => $auditAttachment->file_url,
'validity_type' => $auditAttachment->validity_type,
'validity_start' => $auditAttachment->validity_start,
'validity_end' => $auditAttachment->validity_end,
'update_time' => time(),
'description' => '审核通过自动更新',
]);
} else {
// 如果不存在,创建新记录
SupplierAttachmentsModel::insert([
'supplier_id' => $auditAttachment->supplier_id,
'type_name' => array_get(config('fixed.FileNameMapping'), $auditAttachment->type),
'field_name' => $auditAttachment->type,
'file_name' => $auditAttachment->file_name,
'file_url' => $auditAttachment->file_url,
'validity_type' => $auditAttachment->validity_type,
'validity_start' => $auditAttachment->validity_start,
'validity_end' => $auditAttachment->validity_end,
'create_time' => time(),
'description' => '审核通过自动添加',
'create_name' => request()->user->name,
'create_uid' => request()->user->userId,
]);
}
return true;
}
}
<?php
namespace App\Http\Transformers;
use App\Http\Services\AdminUserService;
use App\Model\AttachmentAuditModel;
class AttachmentAuditTransformer
{
public function transformList($list)
{
$adminUserService = new AdminUserService();
foreach ($list as &$item) {
// 时间格式化
$item['create_time'] = $item['create_time'] ? date('Y-m-d H:i:s', $item['create_time']) : '';
$item['update_time'] = $item['update_time'] ? date('Y-m-d H:i:s', $item['update_time']) : '';
$item['audit_time'] = $item['audit_time'] ? date('Y-m-d H:i:s', $item['audit_time']) : '';
// 有效期格式化
if ($item['validity_type'] == AttachmentAuditModel::VALIDITY_TYPE_PERMANENT) {
$item['validity_period'] = '永久';
} else {
$startDate = $item['validity_start'] ? date('Y-m-d', $item['validity_start']) : '';
$endDate = $item['validity_end'] ? date('Y-m-d', $item['validity_end']) : '';
$item['validity_period'] = $startDate && $endDate ? "{$startDate}{$endDate}" : '';
}
// 状态名称
$item['status_name'] = array_get(config('field.AttachmentAuditStatus'), $item['status'], '未知');
// 供应商信息
if (isset($item['supplier'])) {
$item['supplier_name'] = $item['supplier']['supplier_name'];
$item['supplier_code'] = $item['supplier']['supplier_code'];
// 获取采购员信息
$yunxinChannelUid = $item['supplier']['yunxin_channel_uid'];
if ($yunxinChannelUid) {
$item['purchase_user_name'] = $adminUserService->getAdminUserNameByCodeId($yunxinChannelUid);
} else {
$item['purchase_user_name'] = '';
}
} else {
$item['supplier_name'] = '';
$item['supplier_code'] = '';
$item['purchase_user_name'] = '';
}
// 文件下载链接处理
if ($item['file_url']) {
$item['file_download_url'] = $item['file_url'];
} else {
$item['file_download_url'] = '';
}
$item['type_name'] = array_get(config('fixed.FileNameMapping'), $item['type'], '未知');
}
unset($item);
return $list;
}
}
......@@ -22,6 +22,7 @@ use App\Http\Services\CompanyService;
use Illuminate\Support\Facades\Route;
use App\Http\Services\DepartmentService;
use App\Http\Services\SupplierAccountService;
use App\Model\SupplierAttachmentsModel;
Route::group(['middleware' => ['web', 'menu']], function () {
Route::get('/', 'WebController@Entrance');
......@@ -43,6 +44,7 @@ Route::group(['middleware' => ['web', 'menu']], function () {
Route::match(['get', 'post'], '/chain/{key}', 'ChainController@info');
Route::match(['get', 'post'], '/supplier_memo/{key}', 'SupplierMemoController@info');
Route::match(['get', 'post'], '/supplier_contract/{key}', 'SupplierContractController@info');
Route::match(['get', 'post'], '/attachment_audit/{key}', 'AttachmentAuditController@info');
});
Route::group(['middleware' => ['web'], 'namespace' => 'Api'], function () {
......@@ -68,6 +70,7 @@ Route::group(['middleware' => ['web'], 'namespace' => 'Api'], function () {
Route::match(['get', 'post'], '/api/chain/{key}', 'ChainApiController@Entrance');
Route::match(['get', 'post'], '/api/supplier_memo/{key}', 'SupplierMemoApiController@Entrance');
Route::match(['get', 'post'], '/api/supplier_contract/{key}', 'SupplierContractApiController@Entrance');
Route::match(['get', 'post'], '/api/attachment_audit/{key}', 'AttachmentAuditApiController@Entrance');
//单独的统计接口
Route::match(['get', 'post'], '/statisticsSkuNumber', function () {
});
......@@ -94,6 +97,7 @@ Route::group(['middleware' => ['external'], 'namespace' => 'Sync'], function ()
Route::match(['get', 'post'], '/test', function () {
// DataService::initSupplierNationId();
// DataService::initSupplierReceiptNationId();
SupplierAccountService::initYunxinAccountName();
// DataService::syncSupplierToErp();
SupplierAttachmentsModel::where('type_name','芯链合作协议')->update([
'type_name'=>'采购合作框架协议'
]);
});
<?php
namespace App\Model;
use Illuminate\Database\Eloquent\Model;
class AttachmentAuditModel extends Model
{
protected $connection = 'web';
protected $table = 'supplier_attachment_audit';
protected $primaryKey = 'id';
public $timestamps = false;
// 审核状态常量
const STATUS_PENDING = 0; // 待审核
const STATUS_PASS = 1; // 审核通过
const STATUS_REJECT = -1; // 审核失败
// 有效期类型常量
const VALIDITY_TYPE_PERMANENT = 1; // 永久
const VALIDITY_TYPE_FIXED = 2; // 固定期限
/**
* 关联供应商信息
*/
public function supplier()
{
return $this->hasOne(SupplierChannelModel::class, 'supplier_id', 'supplier_id');
}
}
......@@ -265,6 +265,12 @@ return [
2 => '通过',
],
'AttachmentAuditStatus' => [
-1 => '审核不通过',
0 => '审核中',
1 => '审核通过',
],
//不同供应商性质的品牌数量限制最大值,具体供应商性质数据见 fixed.php 里的 SupplierGroup
'SupplierGroupMainBrandsLimitMap' => [
4 => -1, //其实就是无限制
......
-- 为附件审核表添加审核内容字段
ALTER TABLE `supplier_attachment_audit`
ADD COLUMN `audit_content` TEXT DEFAULT '' COMMENT '审核内容/拒绝原因' AFTER `audit_time`;
-- 测试附件审核流程的完整SQL
-- 1. 首先确保有供应商数据(假设supplier_id=1的供应商存在)
-- 如果没有,可以先插入一个测试供应商到 supplier_channel 表
-- 2. 插入测试的审核附件数据
INSERT INTO supplier_attachment_audit (
supplier_id,
type,
file_url,
file_name,
validity_type,
validity_start,
validity_end,
status,
create_name,
create_time,
update_name,
update_time,
audit_name,
audit_time
) VALUES
-- 待审核的附件
(1, '营业执照', 'https://example.com/files/license1.pdf', '营业执照副本.pdf', 1, 0, 0, 0, '张三', UNIX_TIMESTAMP(), '张三', UNIX_TIMESTAMP(), '', 0),
(1, 'ISO认证', 'https://example.com/files/iso1.pdf', 'ISO9001认证书.pdf', 2, UNIX_TIMESTAMP('2024-01-01'), UNIX_TIMESTAMP('2025-12-31'), 0, '李四', UNIX_TIMESTAMP(), '李四', UNIX_TIMESTAMP(), '', 0),
(1, '税务登记证', 'https://example.com/files/tax1.pdf', '税务登记证.pdf', 1, 0, 0, 0, '王五', UNIX_TIMESTAMP(), '王五', UNIX_TIMESTAMP(), '', 0);
-- 3. 查询待审核的附件
SELECT
a.id,
a.supplier_id,
a.type,
a.file_name,
a.validity_type,
a.status,
s.supplier_name,
s.supplier_code
FROM supplier_attachment_audit a
LEFT JOIN supplier_channel s ON a.supplier_id = s.supplier_id
WHERE a.status = 0;
-- 4. 模拟审核通过(这个操作通常通过API完成)
-- UPDATE supplier_attachment_audit
-- SET status = 1,
-- audit_time = UNIX_TIMESTAMP(),
-- audit_name = '审核员',
-- update_time = UNIX_TIMESTAMP(),
-- update_name = '审核员'
-- WHERE id = 1;
-- 5. 查看审核通过后,lie_supplier_attachments 表中是否有对应记录
-- SELECT * FROM lie_supplier_attachments WHERE supplier_id = 1;
# 附件审核模块 (AttachmentAudit)
## 概述
基于 SupplierApply 模块创建的附件审核功能模块,用于管理供应商附件的审核流程。
## 功能特性
### 列表展示字段
- 审核ID
- 文件类型
- 文件名称 (可点击下载)
- 有效期
- 状态
- 当前审核人
- 采购员
- 供应商编码
- 供应商名称
- 上传人
- 上传时间
- 申请时间
- 审核时间
### 审核弹窗字段
- 供应商编码&名称 (可点击查看详情)
- 文件类型
- 文件名称 (可点击跳转下载)
- 有效期
- 来源
- 审核意见: radio 通过和不通过
- 原因说明: 不通过时必填
### 核心业务流程
1. **待审核状态**: 列表默认展示审核中(待审核)的数据
2. **审核操作**: 支持通过/不通过两种审核结果
3. **审核通过**: 自动将附件信息同步到正式附件表 `lie_supplier_attachments`
4. **审核失败**: 记录拒绝原因到 `audit_content` 字段
5. **状态筛选**: 支持按状态筛选:待审核、审核通过、审核失败
## 文件结构
### 后端文件
```
app/Model/AttachmentAuditModel.php # 审核数据模型
app/Model/SupplierAttachmentsModel.php # 正式附件模型
app/Http/Controllers/AttachmentAuditController.php # 页面控制器
app/Http/Controllers/Api/AttachmentAuditApiController.php # API控制器
app/Http/Services/AttachmentAuditService.php # 业务逻辑服务
app/Http/Controllers/Filter/AttachmentAuditFilter.php # 查询过滤器
app/Http/Transformers/AttachmentAuditTransformer.php # 数据转换器
```
### 前端文件
```
resources/views/web/AttachmentAuditList.blade.php # 列表页面
resources/views/web/AuditAttachment.blade.php # 审核弹窗
resources/views/script/AttachmentAuditListScript.blade.php # 列表JS脚本
resources/views/script/AuditAttachmentScript.blade.php # 审核JS脚本
```
### 数据库文件
```
database/migrations/add_audit_content_to_attachment_audit_table.sql # 添加审核内容字段
database/test_attachment_audit_flow.sql # 测试流程SQL
```
### 路由配置
```php
// 页面路由
Route::match(['get', 'post'], '/attachment_audit/{key}', 'AttachmentAuditController@info');
// API路由
Route::match(['get', 'post'], '/api/attachment_audit/{key}', 'AttachmentAuditApiController@Entrance');
```
## 数据库表结构
### 审核表 `supplier_attachment_audit`
- id: 主键ID
- supplier_id: 供应商ID
- type: 附件类型
- file_url: 文件URL
- file_name: 文件名称
- validity_type: 有效期类型 (1:永久, 2:固定期限)
- validity_start/validity_end: 有效期开始/结束时间
- status: 审核状态 (0:待审核, 1:审核通过, -1:审核失败)
- create_name/audit_name: 创建人/审核人姓名
- create_time/audit_time: 创建时间/审核时间
- audit_content: 审核内容/拒绝原因
### 正式附件表 `lie_supplier_attachments`
- attachment_id: 主键ID
- supplier_id: 供应商ID
- type_name: 附件类型名称
- field_name: 附件表单域名称
- file_name: 附件文件名称
- file_url: 附件文件地址
- validity_type: 有效期类型
- validity_start/validity_end: 有效期时间
- create_time/update_time: 创建/更新时间
- description: 附件说明
- create_name/create_uid: 创建人信息
## 访问路径
- 列表页面: `/attachment_audit/AttachmentAuditList`
- 审核页面: `/attachment_audit/AuditAttachment?id={attachment_id}`
## API接口
- 获取列表: `POST /api/attachment_audit/GetAttachmentAuditList`
- 审核附件: `POST /api/attachment_audit/AuditAttachment`
## 业务逻辑说明
### 审核通过流程
1. 更新审核表状态为通过
2. 检查正式附件表是否已存在相同记录
3. 如存在则更新,不存在则新增
4. 记录审核人和审核时间
### 审核失败流程
1. 更新审核表状态为失败
2. 记录拒绝原因到 audit_content 字段
3. 记录审核人和审核时间
## 测试数据
可使用 `database/test_attachment_audit_flow.sql` 文件中的测试数据进行功能验证。
## 注意事项
1. 需要确保供应商数据存在于 supplier_channel 表中
2. 采购员信息通过 yunxin_channel_uid 字段关联获取
3. 文件下载功能依赖 file_url 字段的有效链接
4. 审核权限需要根据实际业务需求进行配置
5. 需要执行数据库迁移添加 audit_content 字段
6. 审核通过后会自动同步到正式附件表
<script>
layui.use(['table', 'form', 'element', 'layer', 'Split', 'admin', 'xmSelect'], function () {
let $ = layui.jquery;
let table = layui.table;
let form = layui.form;
let admin = layui.admin;
let xmSelect = layui.xmSelect;
let initCondition = {source_type: 'all'};
let whereCondition = initCondition;
let type = 'all';
//这个是页面点击刷新方法,隐藏起来是为了页面切换回这个列表的时候触发的
$('#refreshWindow').click(function () {
//判断当前是否有layui弹窗窗口,有的话不刷新
let hasLayerIframe = $('.layui-layer').size() > 0;
if (!hasLayerIframe) {
$('#getAttachmentAuditListButton').click();
}
});
let cols = [
{type: 'checkbox'},
{field: 'id', title: '审核ID', align: 'center', width: 80},
{field: 'type_name', title: '文件类型', align: 'center', width: 120},
{
field: 'file_name', title: '文件名称', align: 'center', width: 200,
templet: function (data) {
if (data.file_url) {
return '<a href="' + data.file_url + '" target="_blank" style="color: #1E9FFF;">' + data.file_name + '</a>';
} else {
return data.file_name;
}
}
},
{field: 'validity_period', title: '有效期', align: 'center', width: 150},
{field: 'status_name', title: '状态', align: 'center', width: 100,templet: function (data) {
if (data.status == 0) {
return `<span style="color: dodgerblue">审核中</span>`;
} else if (data.status == 1) {
return `<span style="color: green">审核通过</span>`;
} else {
return `<span style="color: red">审核不通过</span>`;
}
}},
{field: 'audit_name', title: '当前审核人', align: 'center', width: 120},
{field: 'purchase_user_name', title: '采购员', align: 'center', width: 100},
{field: 'supplier_code', title: '供应商编码', align: 'center', width: 120},
{field: 'supplier_name', title: '供应商名称', align: 'center', width: 200},
{field: 'create_name', title: '上传人', align: 'center', width: 100},
{field: 'create_time', title: '上传时间', align: 'center', width: 150},
{field: 'create_time', title: '申请时间', align: 'center', width: 150},
{field: 'audit_time', title: '审核时间', align: 'center', width: 150},
];
let currentPage = 0;
table.render({
elem: '#attachmentAuditList'
, url: '/api/attachment_audit/GetAttachmentAuditList'
, method: 'post'
, size: 'sm'
, limit: 20
, cellMinWidth: 50
, where: whereCondition
, loading: true
, first: true
, last: false
, cols: [cols]
, id: 'attachmentAuditList'
, page: {}
, done: function (res, curr, count) {
currentPage = curr;
}
});
// 搜索
form.on('submit(load)', function (data) {
whereCondition = Object.assign(initCondition, data.field);
table.reload('attachmentAuditList', {
where: whereCondition,
page: {curr: 1}
});
return false;
});
// 重置
form.on('submit(reset)', function (data) {
whereCondition = initCondition;
$('.layui-form')[0].reset();
layui.form.render();
table.reload('attachmentAuditList', {
where: whereCondition,
page: {curr: 1}
});
return false;
});
//审核附件
$("#audit_attachment").click(function () {
let checkStatus = table.checkStatus('attachmentAuditList');
let data = checkStatus.data;
let id = data[0].id;
if (!data.length) {
layer.msg('请先选择要操作的附件', {icon: 5})
} else {
if (data.length > 1) {
layer.msg('该操作不支持多选', {icon: 5})
return;
}
if (data[0].status !== 0) {
layer.msg('请选择"待审核"的数据进行审核操作', {icon: 5});
return;
}
layer.open({
type: 2,
content: '/attachment_audit/AuditAttachment?view=iframe&id=' + id,
area: ['800px', '600px'],
title: '附件审核',
end: function () {
table.reload('attachmentAuditList');
}
});
}
});
});
</script>
<script>
layui.use(['table', 'form', 'element', 'layer', 'admin'], function () {
let admin = layui.admin;
let form = layui.form;
let element = layui.element;
form.on('submit(auditAttachment)', function (data) {
admin.showLoading({type: 3});
let id = getQueryVariable('id');
let url = '/api/attachment_audit/AuditAttachment?id=' + id;
$.ajax({
url: url,
type: 'post',
data: data.field,
dataType: 'json',
timeout: 20000,
success: function (res) {
if (!res) return layer.msg('网络错误,请重试', {icon: 5});
if (res.err_code === 0) {
admin.removeLoading();
admin.closeThisDialog();
parent.layer.msg(res.err_msg, {icon: 6});
} else {
admin.removeLoading();
parent.layer.msg(res.err_msg, {icon: 5});
}
},
error: function () {
admin.removeLoading();
parent.layer.msg('网络错误,请重试', {icon: 5});
}
});
return false;
});
form.on('submit(cancel)', function (data) {
admin.closeThisDialog();
return false;
});
});
</script>
<div class="layui-collapse">
<form class="layui-form" style="margin-top: 15px">
<?php
$routerName = explode('/', request()->path())[1];
?>
<div class="layui-row">
<div class="layui-inline">
<label class="layui-form-label">供应商名称</label>
<div class="layui-input-inline">
<input type="text" value="" name="supplier_name" placeholder="支持模糊匹配" autocomplete="off"
class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">供应商编码</label>
<div class="layui-input-inline">
<input type="text" value="" name="supplier_code" placeholder="支持模糊匹配" autocomplete="off"
class="layui-input">
</div>
</div>
<div class="layui-inline">
@inject('statusPresenter','App\Presenters\StatusPresenter')
{!! $statusPresenter->render('status','状态',0,config('field.AttachmentAuditStatus')) !!}
</div>
<div class="layui-inline">
@inject('statusPresenter','App\Presenters\StatusPresenter')
{!! $statusPresenter->render('审核uid','审核人',request()->get('audit_uid'),$auditUidList) !!}
</div>
</div>
<div class="layui-row">
<div class="layui-inline" style="width: 600px">
@inject('transformableTimeIntervalPresenter','App\Presenters\Filter\TransformableTimeIntervalPresenter')
{!! $transformableTimeIntervalPresenter->render(['create_time'=>'上传时间','audit_time'=>'审核时间']) !!}
</div>
</div>
<div class="layui-row" style="margin-top:10px;margin-bottom: 10px;margin-left: 20px;">
<button class="layui-btn layui-btn-sm layui-btn load" lay-submit="" id="getAttachmentAuditListButton"
lay-filter="load">查询
</button>
<button type="button" class="layui-btn layui-btn-sm layui-btn" lay-submit="" lay-filter="reset">重置
</button>
</div>
</form>
</div>
<div style="margin-left: 20px;margin-right: 20px">
<div class="layui-btn-group demoTable" style="margin-top: 15px">
<button type="button" id="refreshWindow" style="display: none">刷新页面</button>
<button type="button" class="layui-btn layui-btn-sm" id="audit_attachment">审核</button>
</div>
<table class="layui-table" id="attachmentAuditList" lay-filter="attachmentAuditList"></table>
</div>
<script>
</script>
<style>
.layui-form-item {
margin-bottom: 5px;
}
</style>
<div class="layui-card">
<div class="layui-card-body">
<form class="layui-form" action="">
<input type="hidden" name="supplier_id" value="{{$attachment['supplier_id']}}">
<div class="layui-form-item">
<label class="layui-form-label">基本信息 : </label>
<div class="layui-input-block block-42" style="padding-top: 7px">
{{$attachment['supplier']['supplier_name']}}
<a style="color: dodgerblue;margin-left: 20px"
ew-href="/supplier/SupplierDetail?view=iframe&supplier_id={{$attachment['supplier_id']}}"
ew-title='供应商详情 - {{$attachment['supplier']['supplier_code']}}'
>{{$attachment['supplier']['supplier_code']}}</a>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">文件类型 : </label>
<div class="layui-input-block block-42" style="padding-top: 7px">
{{$attachment['type']}}
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">文件名称 : </label>
<div class="layui-input-block block-42" style="padding-top: 7px">
@if($attachment['file_url'])
<a href="{{$attachment['file_url']}}" target="_blank" style="color: #1E9FFF;">{{$attachment['file_name']}}</a>
@else
{{$attachment['file_name']}}
@endif
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">有效期 : </label>
<div class="layui-input-block block-42" style="padding-top: 7px">
@if($attachment['validity_type'] == 1)
永久
@else
{{$attachment['validity_start'] ? date('Y-m-d', $attachment['validity_start']) : ''}} 至 {{$attachment['validity_end'] ? date('Y-m-d', $attachment['validity_end']) : ''}}
@endif
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">来源 : </label>
<div class="layui-input-block block-42" style="padding-top: 7px">
供应商上传
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">审核意见 : </label>
<div class="layui-input-block">
<input type="radio" name="status" value="1" title="通过">
<input type="radio" name="status" value="-1" title="不通过">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">原因说明 : </label>
<div class="layui-input-block">
<textarea name="reject_reason" placeholder="不通过时必须填写原因" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item">
<div align="center" style="margin-top: 20px;text-align: right">
<button type="button" class="layui-btn layui-btn-sm layui-btn-info submit-loading" lay-submit
lay-filter="auditAttachment">确认
</button>
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary" lay-submit
lay-filter="cancel">取消
</button>
</div>
</div>
</form>
</div>
</div>
......@@ -232,7 +232,7 @@
<div class="layui-inline">
<?php $multiTransformableSelectPresenter = app('App\Presenters\Filter\MultiTransformableSelectPresenter'); ?>
<?php echo $multiTransformableSelectPresenter->render(['has_cooperation_agreement'=>'平台合作协议'],
['has_cooperation_agreement'=>[1=>'是',-1=>'否']]); ?>
['has_cooperation_agreement'=>[1=>'有',-1=>'无']]); ?>
</div>
<div class="layui-inline">
......@@ -248,7 +248,7 @@
</div>
<div class="layui-inline">
<?php $statusPresenter = app('App\Presenters\StatusPresenter'); ?>
<?php echo $statusPresenter->render('has_order_contract','通过芯链上传合同','',[1=>'有',-1=>'无']); ?>
<?php echo $statusPresenter->render('has_order_contract','通过芯链上传合同','',[1=>'是',-1=>'否']); ?>
</div>
<div class="layui-inline">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment