自动化立体仓库 - WMS系统
czkh
昨天 975823f4d07c91a67162f553be9ff4ac25f3d47d
Merge remote-tracking branch 'origin/czkhasrs' into czkhasrs

# Conflicts:
# src/main/java/com/zy/common/service/CommonService.java
# src/main/webapp/static/js/locDetl/locDetl.js
18个文件已修改
1个文件已添加
336 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/BarcodeMatnrController.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/ImagePreviewController.java 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/ImageView.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/CommonService.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/web/AuthController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/system/mapper/UserLoginMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/system/mapper/UserMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/system/service/UserLoginService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/system/service/UserService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/system/service/impl/UserLoginServiceImpl.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/system/service/impl/UserServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/barcodeMatnr/barcodeMatnr.js 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/locDetl/locDetl.js 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/mat/mat.js 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/barcodeMatnr/barcodeMatnr.html 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/barcodeMatnr/barcodeMatnr_clamp.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/barcodeMatnr/barcodeMatnr_comb.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/locDetl/locDetl.html 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/mat/mat.html 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/BarcodeMatnrController.java
@@ -121,7 +121,7 @@
    /*组托
    *
    * */
    @RequestMapping(value = "/barcodeMatnr/add1/auth")
    @RequestMapping(value = "/barcodeMatnr/comb/auth")
    @ManagerAuth
    public R comb(WaitPakin waitPakin) {
        Mat mat = matService.selectById(waitPakin.getModiUser());
@@ -146,7 +146,7 @@
    /*并板
    *
    * */
    @RequestMapping(value = "/barcodeMatnr/add2/auth")
//    @RequestMapping(value = "/barcodeMatnr/clamp/auth")
    @ManagerAuth
    public R clamp(WaitPakin waitPakin) {
        if (Cools.isEmpty(waitPakin.getBarcode())||Cools.isEmpty(waitPakin.getModiUser())){
@@ -174,4 +174,26 @@
        mobileService.adjustNew(combParam, Boolean.TRUE, getUserId());
        return R.ok("并板成功");
    }
    /*批量并板*/
    @RequestMapping(value = "/barcodeMatnr/clamp/auth")
    @ManagerAuth
    public R clamp2(@RequestBody List<MatBarcode> list){
        if (Cools.isEmpty(list)){
            return R.error(BaseRes.PARAM);
        }
        for (MatBarcode matBarcode : list) {
            MobileAdjustParam combParam=new MobileAdjustParam();
            ArrayList<CombParam.CombMat> combMats=new ArrayList<>();
            CombParam.CombMat combMat=new CombParam.CombMat();
            combMat.setMatnr(matBarcode.getMatnr());
            combMat.setMaktx(matBarcode.getMaktx());
            combMat.setAnfme(1.0);
            combMats.add(combMat);
            combParam.setBarcode(matBarcode.getZpallet());
            combParam.setCombMats(combMats);
            mobileService.adjustNew(combParam, Boolean.TRUE, getUserId());
        }
        return R.ok("并板成功");
    }
}
src/main/java/com/zy/asrs/controller/ImagePreviewController.java
@@ -1,10 +1,14 @@
package com.zy.asrs.controller;
import com.core.common.R;
import com.sun.prism.Image;
import com.zy.asrs.entity.ImageView;
import com.zy.asrs.utils.ImagePreviewUtils;
import com.zy.common.web.BaseController;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -14,50 +18,50 @@
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.file.Files;
import java.util.*;
@Slf4j
@RestController
@RequestMapping()
public class ImagePreviewController extends BaseController {
    //上传图片
    @ApiResponses({@ApiResponse(code = 200, message = "上传成功"), @ApiResponse(code = 400, message = "上传失败"), @ApiResponse(code = 500, message = "服务器内部错误")})
    //@RequestMapping(value = "/saveImage", method = RequestMethod.POST)
    public Map<String, Object> saveImage(@RequestParam("files") MultipartFile[] files) {
        Map<String, Object> map = new HashMap<>();
    @RequestMapping(value = "/saveImage", method = RequestMethod.POST)
    public R saveImage(@RequestParam("files") MultipartFile[] files) {
//        Map<String, Object> map = new HashMap<>();
        List<String> list = new ArrayList<>();
        for (int i = 0; i < files.length; i++) {
            MultipartFile mfile = files[i];
            //获取文件后缀
            String suffixName = ImagePreviewUtils.getSaveImagePath(mfile);
            //生成新文件名称
            String newFileName = ImagePreviewUtils.getNewImageFileName(suffixName);
            //String newFileName = ImagePreviewUtils.getNewImageFileName(suffixName);
            //保存文件
            File file = new File(ImagePreviewUtils.getNewImagePath(newFileName));
            File file = new File(ImagePreviewUtils.getNewImagePath(mfile.getOriginalFilename()));
            boolean state = ImagePreviewUtils.saveImage(mfile, file);
            if (state) {
//                 list.add(ImageUtil.getNewImagePath(newFileName));
                //保存数据库的图片路径为  相对路径
                list.add("uploadimage/" + newFileName);
                list.add("uploadimage/" + mfile.getOriginalFilename());
            }
        }
        map.put("imgList", list);
        return map;
//        map.put("imgList", list);
        return R.ok("上传成功");
    }
    //预览图片
    //@RequestMapping("previewImage")
    @RequestMapping("/previewImage")
    @ApiOperation(value = "根据文件名实现预览功能")
    public void previewFile(
            HttpServletResponse response) throws IOException {
        showImg("D:\\"+"images\\"+"20251022efda188c-56b3-4c38-9940-78d0b61b43a1.png", response);
    }
    public static void showImg(String path, HttpServletResponse response){
        if(path!=null&&!path.equals("")){
    public String previewFile(
            HttpServletResponse response,String maktx) throws IOException {
//        String[] s = matnr.split("__");
        showImg("D:\\"+"images\\"+maktx+".png", response,maktx);
        if("D:\\"+"images\\"+maktx+".png"!=null){
            try {
                FileInputStream fis = new FileInputStream(path);
                FileInputStream fis = new FileInputStream("D:\\"+"images\\"+maktx+".png");
                ServletOutputStream os = response.getOutputStream();
                byte [] b = new byte[1024*8];
@@ -66,9 +70,37 @@
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
                return "该简图不存在,请上传";
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return "";
    }
    public static void showImg(String path, HttpServletResponse response,String maktx){
    }
    public static R showImgToBase64(String path, HttpServletResponse response,String maktx){
            byte[] imageBytes = null;
            try {
                File file =new File(path);
                imageBytes = Files.readAllBytes(file.toPath());
            }catch (IOException e){
                e.printStackTrace();
                return null;
            }
            String pics = Base64.getEncoder().encodeToString(imageBytes);
            List<String> list = new ArrayList<>();
            List<ImageView> imageViewList = new ArrayList<>();
            ImageView imageView = new ImageView();
            //String s = "http://192.168.0.2/image/"+pics+".jpg";
            list.add(pics);
            imageView.setPics(list);
            imageView.setMaktx(maktx);
            imageViewList.add(imageView);
            //log.info(s);
            log.info(pics);
            return R.ok().add(imageViewList);
    }
}
src/main/java/com/zy/asrs/entity/ImageView.java
New file
@@ -0,0 +1,13 @@
package com.zy.asrs.entity;
import lombok.Data;
import java.util.List;
@Data
public class ImageView {
    //图片的base64
    private List<String> pics;
    private String maktx;
}
src/main/java/com/zy/common/service/CommonService.java
@@ -338,12 +338,26 @@
                    continue;
                }
                String shallowLoc = Utils.getDeepLoc(slaveProperties, locMast1.getLocNo());
                LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLoc).eq("loc_sts", "O"));
                //LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locMast1.getLocNo()).eq("loc_sts", "O"));
                if (Cools.isEmpty(locMast2)) {
                LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLoc));
                if (Cools.isEmpty(locMast2)){
                    continue;
                }
                if (locMast2.getLocSts().equals("P")||locMast2.getLocSts().equals("Q")||locMast2.getLocSts().equals("R")||locMast2.getLocSts().equals("S")){
                    continue;
                }
                if (!Cools.isEmpty(locMast2)&&locMast2.getLocSts().equals("O")){
                    locMast = locMast2;
                    break;
                }
                if (!Cools.isEmpty(locMast2)&&(locMast2.getLocSts().equals("F")||locMast2.getLocSts().equals("D"))){
                    locMast = locMast1;
                    break;
                }
//                LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLoc).eq("loc_sts", "O"));
//                if (Cools.isEmpty(locMast2)) {
//                    locMast = locMast1;
//                    break;
//                }
            }
        }
src/main/java/com/zy/common/web/AuthController.java
@@ -18,6 +18,7 @@
import com.zy.system.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@@ -382,4 +383,16 @@
        return R.ok("激活成功,有效期至"+DateUtils.convert(exprTime));
    }
//    @Scheduled(cron = "*/30 * * * * *")
//    public void deleteToken(){
//        List<User> userList = userService.selectAll();
//        for (User user : userList) {
//           UserLogin userLogin = userLoginService.selectByUserId(user.getId());
//            if (System.currentTimeMillis() - userLogin.getCreateTime().getTime() > 30){
//                    userLoginService.delete(new EntityWrapper<UserLogin>().eq("user_id", userLogin.getId()));
//                }
//        }
//    }
}
src/main/java/com/zy/system/mapper/UserLoginMapper.java
@@ -6,6 +6,8 @@
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface UserLoginMapper extends BaseMapper<UserLogin> {
@@ -13,4 +15,7 @@
    @Select("select count(1) from sys_user_login where yearweek(date_format(create_time,'%Y-%m-%d')) = yearweek(now())")
    int selectCountByCurrentWeek();
    @Select("select * from sys_user_login where user_id = #{userId}")
    UserLogin selectByUserId(Long id);
}
src/main/java/com/zy/system/mapper/UserMapper.java
@@ -3,10 +3,15 @@
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.zy.system.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface UserMapper extends BaseMapper<User> {
    @Select("select * from sys_user;")
    List<User> selectAll();
}
src/main/java/com/zy/system/service/UserLoginService.java
@@ -3,8 +3,11 @@
import com.baomidou.mybatisplus.service.IService;
import com.zy.system.entity.UserLogin;
import java.util.List;
public interface UserLoginService extends IService<UserLogin> {
    int selectCountByCurrentWeek();
    UserLogin selectByUserId(Long id);
}
src/main/java/com/zy/system/service/UserService.java
@@ -3,6 +3,9 @@
import com.baomidou.mybatisplus.service.IService;
import com.zy.system.entity.User;
import java.util.List;
public interface UserService extends IService<User> {
    List<User> selectAll();
}
src/main/java/com/zy/system/service/impl/UserLoginServiceImpl.java
@@ -7,6 +7,9 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
@Service("userLoginService")
public class UserLoginServiceImpl extends ServiceImpl<UserLoginMapper, UserLogin> implements UserLoginService {
@@ -17,4 +20,9 @@
    public int selectCountByCurrentWeek() {
        return userLoginMapper.selectCountByCurrentWeek();
    }
    @Override
    public UserLogin selectByUserId(Long id) {
        return userLoginMapper.selectByUserId(id);
    }
}
src/main/java/com/zy/system/service/impl/UserServiceImpl.java
@@ -4,9 +4,19 @@
import com.zy.system.entity.User;
import com.zy.system.mapper.UserMapper;
import com.zy.system.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
@Service("userService")
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
    @Autowired
    private UserMapper userMapper;
    @Override
    public List<User> selectAll() {
        return userMapper.selectAll();
    }
}
src/main/webapp/static/js/barcodeMatnr/barcodeMatnr.js
@@ -185,19 +185,46 @@
                    });
                }
                break;
            // case 'clampData':
            //     layer.open({
            //         type: 2,
            //         title: '并板',
            //         maxmin: true,
            //         area: [top.detailWidth, top.detailHeight],
            //         content: 'barcodeMatnr_clamp.html',
            //         success: function(layero, index){
            //             layer.getChildFrame('#data-detail-submit-edit', index).hide();
            //             clearFormVal(layer.getChildFrame('#detail', index));
            //             layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
            //         }
            //     });
            //     break;
            case 'clampData':
                layer.open({
                    type: 2,
                    title: '并板',
                    maxmin: true,
                    area: [top.detailWidth, top.detailHeight],
                    content: 'barcodeMatnr_clamp.html',
                    success: function(layero, index){
                        layer.getChildFrame('#data-detail-submit-edit', index).hide();
                        clearFormVal(layer.getChildFrame('#detail', index));
                        layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
                    }
                });
                if (checkStatus.data.length === 0){
                    layer.msg('请至少选择一条数据', {icon: 2});
                } else {
                    layer.confirm('确定并板吗', function(){
                        $.ajax({
                            url: baseUrl+"/barcodeMatnr/clamp/auth",
                            headers: {'token': localStorage.getItem('token')},
                            data: JSON.stringify(checkStatus.data),
                            contentType:'application/json;charset=UTF-8',
                            method: 'POST',
                            traditional:true,
                            success: function (res) {
                                if (res.code === 200){
                                    layer.closeAll();
                                    tableReload(false);
                                    layer.msg(res.msg, {icon: 1})
                                } else if (res.code === 403){
                                    top.location.href = baseUrl+"/";
                                } else {
                                    layer.msg(res.msg, {icon: 2})
                                }
                            }
                        })
                    });
                }
                break;
            case 'exportData':
                layer.confirm('确定导出Excel吗', {shadeClose: true}, function(){
@@ -367,20 +394,20 @@
        method("add");
    });
    form.on('submit(save1)', function () {
    form.on('submit(comb)', function () {
        if (banMsg != null){
            layer.msg(banMsg);
            return;
        }
        method("add1");
        method("comb");
    });
    form.on('submit(save2)', function () {
    form.on('submit(clamp)', function () {
        if (banMsg != null){
            layer.msg(banMsg);
            return;
        }
        method("add2");
        method("clamp");
    });
    // 数据修改动作
src/main/webapp/static/js/locDetl/locDetl.js
@@ -17,7 +17,20 @@
        ,{field: 'brand', align: 'center',title: '品牌', hide: true}
        ,{field: 'unit', align: 'center',title: '单位', hide: true}
        ,{field: 'price', align: 'center',title: '单价', hide: true}
        ,{field: 'sku', align: 'center',title: '简图', hide: true}
        //,{fixed: 'right', title:'简图', align: 'center', toolbar: '#operate1', width: 300}
        // ,{fixed: 'right', align: 'center',title: '简图', templet:function(row){
        //         var html = "<img  src='http://127.0.0.1:8080/czkhasrs/previewImage?maktx=" +row.maktx+"'/>";
        //         return html;
        // }}
        // ,{fixed: 'right', align: 'center', title: '简图', templet: function(row){
        //         var html = "<a href='http://127.0.0.1:8080/czkhasrs/previewImage?maktx=" + row.maktx + "' target='_blank' rel='noopener noreferrer'>查看简图</a>";
        //         return html;
        // }}
        ,{field: 'units', align: 'center',title: '单位量', hide: true}
        ,{field: 'barcode', align: 'center',title: '条码', hide: true}
        ,{field: 'origin', align: 'center',title: '产地', hide: true}
@@ -371,6 +384,48 @@
                   });
                }
                break;
            // 查看简图
            // case 'showPic':
            //     let imgHtml = '<div style="height:100%;display: flex;justify-content: space-around;align-items: center;flex-wrap: wrap;">';
            //     $.ajax({
            //         url: baseUrl+"/previewImage",
            //         headers: {'token': localStorage.getItem('token')},
            //         data: {
            //             maktx: data.maktx
            //         },
            //         method: 'GET',
            //         traditional:true,
            //         success: function (res) {
            //             if (res.code === 200){
            //                 res.data.forEach((item) => {
            //                     let maktx = item.maktx;
            //                     let pics = item.pics;
            //                     pics.forEach((pic) => {
            //                         let tmp = '<div><div><img width="600" src="' + pic + '" /></div><div>' + maktx + '</div></div>';
            //                         imgHtml += tmp;
            //                     })
            //                 })
            //                 imgHtml += "</div>";
            //
            //                 layer.open({
            //                     type: 1,
            //                     title: '查看简图',
            //                     area: [top.detailWidth, top.detailHeight],
            //                     shadeClose: true,
            //                     content: imgHtml,
            //                     success: function(layero, index){
            //                     }
            //                 });
            //
            //             } else if (res.code === 403){
            //                 top.location.href = baseUrl+"/";
            //             } else {
            //                 layer.msg(res.msg)
            //             }
            //         }
            //     });
            //     console.log(imgHtml)
            //     break;
        }
    });
src/main/webapp/static/js/mat/mat.js
@@ -461,6 +461,10 @@
function importExcel() {
    $("#importExcel").trigger("click");
}
// 简图上传
function importImage() {
    $("#importImage").trigger("click");
}
function upload(obj){
    if(!obj.files) {
        return;
@@ -490,6 +494,35 @@
        $("#importExcel").val("");
    });
}
function uploadImage(obj){
    if(!obj.files) {
        return;
    }
    var file = obj.files[0];
    admin.confirm('确认同步 [' + file.name +'] 文件吗?', function (index) {
        layer.load(1, {shade: [0.1,'#fff']});
        var url = baseUrl + "/saveImage";
        var form = new FormData();
        form.append("files", file);
        xhr = new XMLHttpRequest();
        xhr.open("post", url, true); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。
        xhr.setRequestHeader('token', localStorage.getItem('token'));
        xhr.onload = uploadComplete; //请求完成
        xhr.onerror =  uploadFailed; //请求失败
        xhr.onloadend = function () { // // 上传完成重置文件流
            layer.closeAll('loading');
            $("#importImage").val("");
        };
        // xhr.upload.onprogress = progressFunction;//【上传进度调用方法实现】
        xhr.upload.onloadstart = function(){//上传开始执行方法
            ot = new Date().getTime();   //设置上传开始时间
            oloaded = 0;//设置上传开始时,以上传的文件大小为0
        };
        xhr.send(form);
    }, function(index){
        $("#importImage").val("");
    });
}
function uploadComplete(evt) {
    var res = JSON.parse(evt.target.responseText);
    if(res.code === 200) {
src/main/webapp/views/barcodeMatnr/barcodeMatnr.html
@@ -24,6 +24,11 @@
            <input class="layui-input" type="text" name="matnr" placeholder="商品模具名称" autocomplete="off">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <input class="layui-input" type="text" name="specs" placeholder="规格" autocomplete="off">
        </div>
    </div>
    <!-- 日期范围 -->
<!--    <div class="layui-inline" style="width: 300px">-->
<!--        <div class="layui-input-inline">-->
src/main/webapp/views/barcodeMatnr/barcodeMatnr_clamp.html
@@ -112,7 +112,7 @@
        <hr class="layui-bg-gray">
        <div id="data-detail-btn" class="layui-btn-container layui-form-item">
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save2">保存</div>
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="clamp">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">关闭</div>
        </div>
src/main/webapp/views/barcodeMatnr/barcodeMatnr_comb.html
@@ -112,7 +112,7 @@
        <hr class="layui-bg-gray">
        <div id="data-detail-btn" class="layui-btn-container layui-form-item">
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save1">保存</div>
            <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="comb">保存</div>
            <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">修改</div>
            <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">关闭</div>
        </div>
src/main/webapp/views/locDetl/locDetl.html
@@ -88,7 +88,9 @@
<script type="text/html" id="operate">
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">详情</a>
</script>
<!--<script type="text/html" id="operate1">-->
<!--    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="showPic" >查看简图</a>-->
<!--</script>-->
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
src/main/webapp/views/mat/mat.html
@@ -128,6 +128,8 @@
        <button class="layui-btn layui-btn-sm" id="btn-print-batch" lay-event="btnPrintBatch">批量打印</button>
        <button class="layui-btn layui-btn-sm layui-btn-normal" id="btn-add" lay-event="addData">新增</button>
        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">删除</button>
<!--        <button class="layui-btn layui-btn-sm layui-btn-danger"><a onclick="importImage()" style="font-size: 15px"><i class="layui-icon layui-icon-upload"></i>上传简图</a></button>-->
<!--        <li style="display: none"><input id="importImage" type="file" onchange="uploadImage(this)" ></li>-->
        <!-- 商品/物料 数据中心 -->
        <div class="dropdown-menu" style="float: right">
            <button class="layui-btn layui-btn-primary layui-border-black icon-btn layui-btn-sm">&nbsp;数据同步 <i class="layui-icon layui-icon-drop"></i></button>