修改文件 plugin/admin/app/common/Layui.php
第306行,修改方法 upload()
public function upload($options)
{
[$label, $field, $value, $props, $verify_string, $required_string, $class] = $this->options($options);
$props['accept'] = $props['accept'] ?? 'file';
$props['url'] = $props['url'] ?? '/app/admin/upload/file';
$id = $this->createId($field);
$props['field'] = $props['field'] ?? '__file__';
unset($props['lay-verify']);
$options_string = '';
foreach ($props as $key => $item) {
if (is_array($item)) {
$item = json_encode($item, JSON_UNESCAPED_UNICODE);
$options_string .= "\n $key: $item,";
} else {
$options_string .= "\n $key: \"$item\",";
}
}
//多图上传
if(isset($props['multiple']) && $props['multiple']){
$this->htmlContent .= <<<EOF
<div class="layui-form-item">
$label
<div class="$class">
<div class="file-box"></div>
<input type="text" style="display:none" name="$field" value="$value" />
<button type="button" class="pear-btn pear-btn-primary pear-btn-sm" id="$id" permission="app.admin.upload.image">
<i class="layui-icon layui-icon-upload"></i>上传文件
</button>
<button type="button" class="pear-btn pear-btn-primary pear-btn-sm" id="attachment-choose-$id" permission="app.admin.upload.attachment">
<i class="layui-icon layui-icon-align-left"></i>选择文件
</button>
<button type="button" class="pear-btn pear-btn-primary pear-btn-sm" id="clear-imgs-$id">
<i class="layui-icon layui-icon-clear"></i>清除
</button>
</div>
</div>
EOF;
$this->jsContent .= <<<EOF
// 字段 {$options['label']} $field
layui.use(["upload", "layer","jquery"], function() {
let input = layui.$("#$id").prev();
let imgs = input.val().split(',');
if(imgs.length > 0){
let str = '';
for(let i=0;i<imgs.length;i++){
str += '<div>' + imgs[i] + '</div>';
}
input.prev().html(str);
}
layui.$("#attachment-choose-$id").on("click", function() {
parent.layer.open({
type: 2,
title: "选择附件",
content: "/app/admin/upload/attachment",
area: ["95%", "90%"],
success: function (layero, index) {
parent.layui.$("#layui-layer" + index).data("callback", function (data) {
let val = input.val();
if(val){
val += ',' + data.url;
}else{
val = data.url;
}
input.val(val).prev().append('<div> src="' + data.url + '" </div>');
});
}
});
});
layui.upload.render({
elem: "#$id",$options_string
done: function (res) {
if (res.code > 0) return layui.layer.msg(res.msg);
let val = this.item.prev().val();
if(val){
val += ',' + res.data.url;
}else{
val = res.data.url;
}
this.item.prev().val(val).prev().append('<div>' + res.data.url + '</div>');
}
});
layui.$(document).on('click','#clear-imgs-$id',function(){
let input = layui.$("#$id").prev();
input.val('').prev().html('');
})
});
EOF;
}else{
$this->htmlContent .= <<<EOF
<div class="layui-form-item">
$label
<div class="$class">
<span>$value</span>
<input type="text" style="display:none" name="$field" value="$value" />
<button type="button" class="pear-btn pear-btn-primary pear-btn-sm" id="$id" permission="app.admin.upload.file">
<i class="layui-icon layui-icon-upload"></i>上传文件
</button>
<button type="button" class="pear-btn pear-btn-primary pear-btn-sm" id="attachment-choose-$id" permission="app.admin.upload.attachment">
<i class="layui-icon layui-icon-align-left"></i>选择文件
</button>
</div>
</div>
EOF;
$this->jsContent .= <<<EOF
// 字段 {$options['label']} $field
layui.use(["upload", "layer", "popup", "util"], function() {
let input = layui.$("#$id").prev();
input.prev().html(layui.util.escape(input.val()));
layui.$("#attachment-choose-$id").on("click", function() {
parent.layer.open({
type: 2,
title: "选择附件",
content: "/app/admin/upload/attachment",
area: ["95%", "90%"],
success: function (layero, index) {
parent.layui.$("#layui-layer" + index).data("callback", function (data) {
input.val(data.url).prev().html(layui.util.escape(data.url));
});
}
});
});
layui.upload.render({
elem: "#$id",$options_string
done: function (res) {
if (res.code) return layui.popup.failure(res.msg);
this.item.prev().val(res.data.url).prev().html(layui.util.escape(res.data.url));
}
});
});
EOF;
}
}