Commit 500638d3 by 杨树贤

Merge branch 'ysx-供应商标签系统修改-20240410' into ysx-华云改造-20240304

parents 60b07c12 7de705c5
<?php
namespace App\Console\Commands;
use App\Http\Services\DataService;
use App\Http\Services\StatisticsSkuUploadService;
use App\Http\Services\SupplierService;
use App\Http\Services\SyncSupplierService;
use App\Model\SupplierChannelModel;
use Illuminate\Console\Command;
use Illuminate\Foundation\Inspiring;
use PhpAmqpLib\Connection\AMQPStreamConnection;
//设置供应商是否需要跟进
class SyncAllSupplierToErp extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'sync_all_supplier_to_erp';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Display an inspiring quote';
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
ini_set('memory_limit', -1);
$supplierIds = SupplierChannelModel::where('is_type', 0)->where('group_code','!=','')
->pluck('supplier_id')->toArray();
$conn = new AMQPStreamConnection(config('database.connections.rabbitmq.host'),
config('database.connections.rabbitmq.port'),
config('database.connections.rabbitmq.login'),
config('database.connections.rabbitmq.password'));
foreach ($supplierIds as $supplierId) {
usleep(100000);
dump($supplierId);
(new SyncSupplierService())->syncSupplierToErp($supplierId, $conn);
}
}
}
......@@ -17,6 +17,7 @@ class Kernel extends ConsoleKernel
Commands\SetSupplierFollowUp::class,
Commands\RepairChannelUser::class,
Commands\RemoveEmptyContact::class,
Commands\SyncAllSupplierToErp::class,
];
/**
......
......@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Http\Services\LogService;
use App\Http\Services\SupplierAuditService;
use App\Http\Services\SyncSupplierService;
use App\Http\Transformers\LogTransformer;
use App\Http\Transformers\ReceiptTransformer;
use App\Http\Validators\ReceiptValidator;
......@@ -57,6 +58,7 @@ class SupplierReceiptApiController extends Controller
'certificate',
'account_name',
'remark',
//'international_code'
]);
$receipt['account_adderss'] = empty($receipt['account_adderss']) ? ' ' : $receipt['account_adderss'];
if ($receipt['receipt_type'] == 1) {
......@@ -79,21 +81,22 @@ class SupplierReceiptApiController extends Controller
//如果修改的只是备注,则不需要转成审核
$needAudit = $this->checkNeedAudit($oldReceipt, $newReceipt);
if ($needAudit || empty($request->get('receipt_id'))) {
// $supplierModel = new SupplierChannelModel();
$supplierModel = new SupplierChannelModel();
//修改供应商为审核状态
// $supplierModel->where('supplier_id', $supplierId)->update([
// 'update_time' => time(),
// 'status' => SupplierChannelModel::STATUS_PENDING,
// ]);
$supplierModel->where('supplier_id', $supplierId)->update([
'update_time' => time(),
'status' => SupplierChannelModel::STATUS_PENDING,
]);
}
$logService = new LogService();
$content = !empty($receipt['receipt_id']) ? '修改银行信息' : '添加银行信息';
$remark = json_encode($receipt);
$logService->AddLog($receipt['supplier_id'], LogModel::UPDATE_OPERATE, '修改供应商基本资料', $content, $remark);
(new SyncSupplierService())->syncSupplierToErp($supplierId);
$this->response(0, '操作成功');
}
$this->response(-1, '操作失败');
$this->response(-1, '没有内容变更,操作失败');
}
//判断是否要进入审核中状态,因为部分字段修改是不需要走审核的
......@@ -125,8 +128,24 @@ class SupplierReceiptApiController extends Controller
public function DeleteSupplierReceipt($request)
{
$receiptId = $request->get('receipt_id');
$receipt = SupplierReceiptModel::where('receipt_id', $receiptId)->first()->toArray();
$model = new SupplierReceiptModel();
$supplierModel = new SupplierChannelModel();
$supplier = $supplierModel->where('supplier_id', $receipt['supplier_id'])->first()->toArray();
$supplierId = $supplier['supplier_id'];
//修改供应商为审核状态
$supplierModel->where('supplier_id', $supplierId)->update([
'update_time' => time(),
'status' => SupplierChannelModel::STATUS_PENDING,
]);
$result = $model->where('receipt_id', $receiptId)->delete();
$logService = new LogService();
$content = '删除银行信息';
$remark = json_encode($receipt);
$logService->AddLog($receipt['supplier_id'], LogModel::UPDATE_OPERATE, '修改供应商基本资料', $content, $remark);
(new SyncSupplierService())->syncSupplierToErp($supplierId);
if ($result) {
$this->response(0, '操作成功');
}
......
......@@ -41,7 +41,7 @@ class SupplierShareApplyApiController extends Controller
}
$supplierModel = new SupplierChannelModel();
//下面的处理是为了兼容有问题的数据
if (!empty($supplier = $supplierModel->where('supplier_name', $supplierName)->first())) {
if (!empty($supplier = $supplierModel->where('supplier_name', $supplierName)->where('group_code', '!=', '')->first())) {
// $supplier = $supplierModel->where('supplier_name', 'like', "%$supplierName%")->whereNotIn('status',
// [SupplierChannelModel::STATUS_DISABLE, SupplierChannelModel::STATUS_REJECT])->first();
}
......@@ -61,8 +61,7 @@ class SupplierShareApplyApiController extends Controller
$q->orWhere('purchase_uid', $codeId)
->orwhere('channel_uid', 'like', "%$codeId%");
}
})
->where('is_type', 0)->first();
})->where('is_type', 0)->first();
if ($isOwn) {
$this->response(-1, '你已经可以管理该供应商,无需申请共用');
}
......
......@@ -41,6 +41,7 @@ class LogController extends Controller
return $this->errhtml('Not', '没有这个页面');
}
//供应商详情的操作日志
public function SupplierLog($request)
{
$supplierId = $request->get('supplier_id', 1);
......
......@@ -227,7 +227,7 @@ class SupplierController extends Controller
];
}, $systemTags);
$customerTags = $tagService->getTagsBySupplierId($supplierId, 2);
$supplier['customer_tags'] = $customerTags ? implode(',', $customerTags) : '';
$supplier['customer_tags'] = $customerTags ? implode(',', $customerTags['list']) : [];
$supplierModel = new SupplierChannelModel();
$supplierModel->where('supplier_id', $supplierId)->update([
'customer_tags' => $supplier['customer_tags'],
......
......@@ -18,6 +18,7 @@ use App\Model\StandardBrandModel;
use App\Model\SupplierAccountModel;
use App\Model\SupplierAttachmentsModel;
use App\Model\SupplierChannelModel;
use App\Model\SupplierContactModel;
use App\Model\UserInfoModel;
use Carbon\Carbon;
use GuzzleHttp\Client;
......@@ -442,4 +443,52 @@ class DataService
}
function syncDaigouSuppliersToErp()
{
$supplierIdList = SupplierChannelModel::whereIn('supplier_name', config('field.SkipChangeSupplierTypeNames'))->pluck('supplier_id')->toArray();
foreach ($supplierIdList as $supplierId) {
(new SyncSupplierService())->syncSupplierToErp($supplierId);
}
}
function exportContact()
{
$contacts = SupplierContactModel::where('can_check_uids', '10096')->get()->toArray();
Excel::create('联系人导出', function ($excel) use ($contacts) {
$header = [
'供应商编码',
'供应商名字',
'联系人',
'联系邮箱',
'联系手机',
'座机',
'职位',
'采购员',
];
$excelData = [];
foreach ($contacts as $contact) {
$supplierId = $contact['supplier_id'];
$supplier = SupplierChannelModel::select(['supplier_id', 'supplier_code', 'supplier_name'])->where('supplier_id', $supplierId)
->first()->toArray();
$excelData[] = [
$supplier['supplier_code'],
$supplier['supplier_name'],
$contact['supplier_consignee'],
$contact['supplier_email'],
$contact['supplier_mobile'],
$contact['supplier_telephone'],
$contact['supplier_position'],
"陈欢",
];
}
array_unshift($excelData, $header);
$excel->sheet('sheet1', function ($sheet) use ($excelData) {
$sheet->fromArray($excelData);
});
})->save('xlsx');
}
}
......@@ -120,9 +120,9 @@ class LogService
$filter = new LogFilter();
$query = $filter->defaultFilter($query);
if ($type) {
$logs = $query->where('supplier_id', $supplierId)->where('type', $type)->limit($limit)->get();
$logs = $query->where('supplier_id', $supplierId)->where('type', $type)->limit($limit)->get()->toArray();
} else {
$logs = $query->where('supplier_id', $supplierId)->limit($limit)->get();
$logs = $query->where('supplier_id', $supplierId)->limit($limit)->get()->toArray();
}
$transformer = new LogTransformer();
$logs = $transformer->transformList($logs);
......@@ -256,4 +256,4 @@ class LogService
}
}
\ No newline at end of file
}
......@@ -22,7 +22,7 @@ use PhpAmqpLib\Message\AMQPMessage;
class SyncSupplierService
{
//同步供应商到erp
public function syncSupplierToErp($supplierId)
public function syncSupplierToErp($supplierId, $conn = null)
{
//先去获取供应商的信息
$supplierModel = new SupplierChannelModel();
......@@ -93,15 +93,38 @@ class SyncSupplierService
$message['bankinfo'][] = [
"bank" => $receipt['bank_adderss'],
'bankaccount' => $receipt['account_no'],
'supplier' => $receipt['bank_name'],
'swiftCode' => $receipt['swift_code'],
'beneficiary' => $receipt['account_name'],
'bankAddress' => $receipt['account_adderss'],
'infoEvidence' => $receipt['certificate'],
//'bankaccount' => $receipt['international_code'],
];
}
}
//dd($message);
$conn = new AMQPStreamConnection(config('database.connections.rabbitmq.host'),
config('database.connections.rabbitmq.port'),
config('database.connections.rabbitmq.login'),
config('database.connections.rabbitmq.password'));
//审核流程
$updateLogs = (new LogService())->getLogs($supplierId, LogModel::UPDATE_OPERATE);
$reviewProcess = [];
if ($updateLogs) {
foreach ($updateLogs as $log) {
$content = is_array($log['content']) && !empty($log['content']) ? $log['content'][0] : $log['content'];
$reviewProcess[] = [
'operator' => $log['admin_name'],
'operateDate' => $log['add_time'],
'operate' => mb_substr($content, 0, 200) . '...',
];
}
}
$message['reviewProcess'] = $reviewProcess;
if ($conn) {
} else {
$conn = new AMQPStreamConnection(config('database.connections.rabbitmq.host'),
config('database.connections.rabbitmq.port'),
config('database.connections.rabbitmq.login'),
config('database.connections.rabbitmq.password'));
}
$channel = $conn->channel();
$channel->queue_declare('supplier_sync', false, true, false, false);
......
......@@ -5,6 +5,7 @@ namespace App\Http\Transformers;
use App\Http\Services\LogService;
use App\Model\SupplierReceiptModel;
class LogTransformer
{
......@@ -33,12 +34,59 @@ class LogTransformer
$item['content'] = $content;
}
if (!is_array($item['content'])&&strpos($item['content'], '联系') !== false) {
$item['content'] = $item['content'] .':'.$logService->getContactDesc($item['remark']);
//如果是和银行信息有关的,还要把具体的信息展示出来
if (is_string($item['content'])) {
if (strpos($item['content'], '银行信息') !== FALSE) {
if (!empty($item['remark'])) {
//获取当前的信息
$oldReceipt = json_decode($item['remark'], true);
//新增
if (empty($oldReceipt['receipt_id'])) {
$type = array_get($oldReceipt, 'receipt_type', 1);
$type = $type == 1 ? "大陆" : "香港以及国外";
$swiftCodeText = ($type =='香港以及国外') ? ' | 国际代码 : ' . array_get($oldReceipt, 'swift_code') : '';
$item['content'] .= ' : ' . "银行所在地 : {$type} | 银行名称 : {$oldReceipt['bank_name']} | 账户号码 : {$oldReceipt['account_no']} | 银行地址 : {$oldReceipt['account_adderss']}" . $swiftCodeText;
} else {
$newReceipt = SupplierReceiptModel::where('receipt_id', $oldReceipt['receipt_id'])->first();
if (!empty($newReceipt)) {
$newReceipt = $newReceipt->toArray();
$type = array_get($newReceipt, 'receipt_type', 1);
$type = $type == 1 ? "大陆" : "香港以及国外";
$swiftCodeText = ($type =='香港以及国外') ? ' | 国际代码 : ' . array_get($newReceipt, 'swift_code') : '';
$item['content'] .= ' : ' . "银行所在地 : {$type} | 银行名称 : {$newReceipt['bank_name']} | 账户号码 : {$newReceipt['account_no']} | 银行地址 : {$newReceipt['account_adderss']}".$swiftCodeText;
}
}
}
}
}
if (!is_array($item['content']) && strpos($item['content'], '联系') !== false) {
$item['content'] = $item['content'] . ':' . $logService->getContactDesc($item['remark']);
}
$item['content'] = $item['content'] ?: '没有内容变化';
}
return $item;
}
}
\ No newline at end of file
public static function transformReceiptLog($oldReceipt, $receipt)
{
if (empty($oldReceipt['receipt_id'])) {
//新增日志
$content = "银行名称 : {$oldReceipt['bank_name']} | 账户号码 : {$oldReceipt['account_no']}";
} else {
if ($receipt) {
//修改日志
} else {
//删除日志
}
}
}
}
......@@ -23,6 +23,9 @@ class ReceiptValidator
];
if ($receipt['receipt_type'] == 2) {
$rules["swift_code"] = 'required';
$rules["account_adderss"] = 'required';
$rules["account_name"] = 'required';
//$rules["international_code"] = 'required';
}
$messages = $this->messages();
$validator = Validator::make($receipt, $rules, $messages);
......@@ -47,6 +50,8 @@ class ReceiptValidator
'account_no.required' => '银行账号 不能为空',
'account_name.required' => '账户名称 不能为空',
'certificate.required' => '银行信息凭证 不能为空',
'account_adderss.required' => '银行地址 不能为空',
//'international_code.required' => '国际代码 不能为空',
];
}
}
\ No newline at end of file
}
......@@ -82,9 +82,5 @@ Route::group(['middleware' => ['external'], 'namespace' => 'Sync'], function ()
});
Route::match(['get', 'post'], '/test', function () {
//(new \App\Http\Services\StatisticsSkuUploadService())->statisticBrandSkuNum();
//(new \App\Http\Services\DataService())->exportSupplierDataForLevel();
\App\Model\SupplierChannelModel::where('supplier_code', 'L0016240')->update([
'supplier_name' => 'RUID (HONG KONG) ELECTRONICS CO., LIMITED'
]);
(new \App\Http\Services\SyncSupplierService())->syncSupplierToErp(12469);
});
......@@ -10,6 +10,7 @@
<script src="/js/jquery-2.2.1.js"></script>
<script type="text/javascript" src="/plugins/assets/libs/layui/layui.js"></script>
<script type="text/javascript" src="/plugins/assets/js/common.js?version={{time()}}"></script>
<script type="text/javascript" src="/plugins/assets/js/alpine.js" defer></script>
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
......
{!! Autograph() !!}
<script>
layui.use(['form', 'upload', 'admin'], function () {
const form = layui.form
const upload = layui.upload;
const admin = layui.admin;
document.addEventListener('alpine:init', () => {
Alpine.data('receiptForm', () => ({
receiptType: $('#receipt_type').val(),
init() {
let g = this;
layui.use(['form', 'upload', 'admin'], function () {
const form = layui.form
const upload = layui.upload;
const admin = layui.admin;
//提交数据
form.on('submit(addSupplierReceipt)', function (data) {
// layer.confirm('确定要保存银行信息吗?一旦保存,该供应商就会再次进入审核阶段', function (index) {
layer.confirm('确定要保存银行信息吗?', function (index) {
let res = ajax('/api/supplier_receipt/AddSupplierReceipt', data.field);
if (!res) {
layer.msg('网络错误,请重试', {icon: 6});
} else {
if (res.err_code === 0) {
admin.putTempData("needFreshList", 1);
admin.closeThisDialog();
parent.layer.msg(res.err_msg, {icon: 6});
} else {
parent.layer.msg(res.err_msg, {icon: 5});
}
}
return false;
});
return false;
})
//提交数据
form.on('submit(addSupplierReceipt)', function (data) {
// layer.confirm('确定要保存银行信息吗?一旦保存,该供应商就会再次进入审核阶段', function (index) {
layer.confirm('确定要保存银行信息吗?', function (index) {
let res = ajax('/api/supplier_receipt/AddSupplierReceipt', data.field);
if (!res) {
layer.msg('网络错误,请重试', {icon: 6});
} else {
if (res.err_code === 0) {
admin.putTempData("needFreshList", 1);
admin.closeThisDialog();
parent.layer.msg(res.err_msg, {icon: 6});
} else {
parent.layer.msg(res.err_msg, {icon: 5});
}
}
return false;
});
return false;
})
form.on('radio(receipt_type)', function (data) {
if (data.value == 1) {
$('#swift_code_div').hide();
} else {
$('#swift_code_div').show();
}
});
form.on('radio(receipt_type)', function (data) {
g.receiptType = data.value;
});
//图片上传
upload.render({
elem: '.upload-img'
, url: UploadImgUrl
, field: 'upload'
, data: {
k1: k1,
k2: k2,
source: 1,
cancel_time_verify: 1,
}
, accept: 'file'
, exts: 'jpg|png|bmp|jpeg|zip|pdf'
, size: 20000
, before: function (obj) {
layer.msg('加载中', {
icon: 16
, shade: 0.01
});
let item = this.item;
//预读本地文件示例,不支持ie8
obj.preview(function (index, file, result) {
// if (file.type.indexOf('image') !== -1){
// $('#' + item.attr('preview')).attr('src', result); //图片链接(base64)
// }else{
// $('#' + item.attr('preview')).attr('src', '/images/file.png');
// }
//图片上传
upload.render({
elem: '.upload-img'
, url: UploadImgUrl
, field: 'upload'
, data: {
k1: k1,
k2: k2,
source: 1,
cancel_time_verify: 1,
}
, accept: 'file'
, exts: 'jpg|png|bmp|jpeg|zip|pdf'
, size: 20000
, before: function (obj) {
layer.msg('加载中', {
icon: 16
, shade: 0.01
});
let item = this.item;
//预读本地文件示例,不支持ie8
obj.preview(function (index, file, result) {
// if (file.type.indexOf('image') !== -1){
// $('#' + item.attr('preview')).attr('src', result); //图片链接(base64)
// }else{
// $('#' + item.attr('preview')).attr('src', '/images/file.png');
// }
});
}
, done: function (res) {
if (res.code === 200) {
layer.msg('上传成功', {icon: 6});
let item = this.item;
$('#' + item.attr('data-obj')).val(res.data[0]);
$('#certificate_url').text(res.data[0]);
return false;
} else {
layer.msg('上传失败,' + res.message, {icon: 5});
return false;
}
}
, error: function (res) {
layer.msg('上传失败:' + res.message, {icon: 5});
return false;
}
});
});
}
, done: function (res) {
if (res.code === 200) {
layer.msg('上传成功', {icon: 6});
let item = this.item;
$('#' + item.attr('data-obj')).val(res.data[0]);
$('#certificate_url').text(res.data[0]);
return false;
} else {
layer.msg('上传失败,' + res.message, {icon: 5});
return false;
}
}
, error: function (res) {
layer.msg('上传失败:' + res.message, {icon: 5});
return false;
}
});
}));
});
</script>
\ No newline at end of file
</script>
......@@ -34,6 +34,7 @@
{field: 'account_no', title: '<span class="require">* </span>银行账号', align: 'center', width: 130},
{field: 'account_name', title: '账户名称', align: 'center', width: 150},
{field: 'swift_code', title: '电汇号码', align: 'center', width: 130},
// {field: 'international_code', title: '国际代码', align: 'center', width: 130},
{
field: 'certificate',
title: '<span class="require">* </span>信息凭证',
......@@ -101,4 +102,4 @@
}
});
});
</script>
\ No newline at end of file
</script>
......@@ -45,6 +45,7 @@
<!-- js部分 -->
<script type="text/javascript" src="/plugins/assets/libs/layui/layui.js"></script>
<script type="text/javascript" src="/plugins/assets/js/common.js?v=317"></script>
<script type="text/javascript" src="/plugins/assets/js/alpine.js"></script>
<script>
layui.use(['index', 'layer', 'admin'], function () {
var $ = layui.jquery;
......
......@@ -5,21 +5,22 @@
</style>
<div class="layui-card">
<div class="layui-card-body">
<form class="layui-form" action="">
<form class="layui-form" action="" x-data="receiptForm">
<input type="hidden" name="supplier_id" value="{{request()->get('supplier_id')}}">
<input type="hidden" name="receipt_id" value="{{request()->get('receipt_id')}}">
<div class="layui-form-item">
<label class="layui-form-label">银行类型 : </label>
<div class="layui-input-block">
<input type="hidden" id="receipt_type" value="{{$receipt['receipt_type'] or 1}}">
<input type="radio" name="receipt_type" lay-filter="receipt_type" value="1" title="国内"
@if((!empty($receipt['receipt_type'])&&$receipt['receipt_type']==1)||empty($receipt))
checked
@endif
checked
@endif
>
<input type="radio" name="receipt_type" lay-filter="receipt_type" value="2" title="港澳台和国外"
@if(!empty($receipt['receipt_type'])&&$receipt['receipt_type']==2)
checked
@endif
checked
@endif
>
</div>
</div>
......@@ -48,7 +49,10 @@
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">账户名称 : </label>
<label class="layui-form-label">
<span x-show="receiptType === '1'"> 账户名称 : </span>
<span x-show="receiptType === '2'"><span style="color: red">* </span> 国外受益人 : </span>
</label>
<div class="layui-input-block block-42">
<input type="text" name="account_name" id="account_name"
placeholder="请输入账户名称" class="layui-input"
......@@ -56,16 +60,26 @@
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">银行地址 : </label>
<label class="layui-form-label">
<span style="color: red" x-show="receiptType === '2'">* </span>
银行地址 : </label>
<div class="layui-input-block block-42">
<input type="text" name="account_adderss" id="account_adderss"
placeholder="请输入银行具体地址,精确到街道" class="layui-input"
value="{{$receipt['account_adderss'] or ''}}">
</div>
</div>
<div class="layui-form-item" id="swift_code_div"
@if((!empty($receipt['receipt_type'])&&$receipt['receipt_type']==1)||empty($receipt['receipt_type']))
style="display: none" @endif>
{{-- <div class="layui-form-item" x-show="receiptType === '2'">--}}
{{-- <label class="layui-form-label">--}}
{{-- <span style="color: red">* </span>--}}
{{-- 国际代码 : </label>--}}
{{-- <div class="layui-input-block block-42">--}}
{{-- <input type="text" name="international_code" id="international_code"--}}
{{-- placeholder="请输入银行国际代码" class="layui-input"--}}
{{-- value="{{$receipt['international_code'] or ''}}">--}}
{{-- </div>--}}
{{-- </div>--}}
<div class="layui-form-item" id="swift_code_div" x-show="receiptType === '2'">
<label class="layui-form-label"><span class="require">*</span>Swift Code : </label>
<div class="layui-input-block block-42">
<input type="text" name="swift_code" id="Swift Code"
......@@ -84,9 +98,10 @@
<button type="button" class="layui-btn upload-img" preview="preview" data-obj="certificate">
<i class="layui-icon">&#xe67c;</i>上传文件
</button>
<a target="_blank" id="certificate_url" href="{{$receipt['certificate'] or ''}}">{{$receipt['certificate'] or ''}}</a>
{{-- <img @if(!empty($receipt['certificate'])) src="{{$receipt['certificate'] or ''}}"--}}
{{-- @endif class="layui-upload-img" width="50px" height="50px" id="preview">--}}
<a target="_blank" id="certificate_url"
href="{{$receipt['certificate'] or ''}}">{{$receipt['certificate'] or ''}}</a>
{{-- <img @if(!empty($receipt['certificate'])) src="{{$receipt['certificate'] or ''}}"--}}
{{-- @endif class="layui-upload-img" width="50px" height="50px" id="preview">--}}
</div>
</div>
<div class="layui-form-item">
......@@ -107,4 +122,4 @@
</div>
</form>
</div>
</div>
\ No newline at end of file
</div>
......@@ -9,4 +9,4 @@
<table class="layui-table" lay-filter="receiptList" id="receiptList"></table>
</div>
@include('script.supplier.SupplierReceiptScript')
\ No newline at end of file
@include('script.supplier.SupplierReceiptScript')
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