diff --git a/api/path/to/file b/api/path/to/file new file mode 100644 index 0000000..0fb6a35 --- /dev/null +++ b/api/path/to/file @@ -0,0 +1,3 @@ +user_id,comment,labels +wxxwjef,This is a way,[] +hahah,No matter,[] \ No newline at end of file diff --git a/api/src/main/java/com/wx/application/adapter/controller/GorseController.java b/api/src/main/java/com/wx/application/adapter/controller/GorseController.java index 0763a9f..57c72da 100644 --- a/api/src/main/java/com/wx/application/adapter/controller/GorseController.java +++ b/api/src/main/java/com/wx/application/adapter/controller/GorseController.java @@ -6,8 +6,7 @@ import java.util.List; import java.util.Map; import com.alibaba.fastjson.JSONObject; -import com.wx.application.gorse4j.GorsePage; -import com.wx.application.gorse4j.User; +import com.wx.application.gorse4j.*; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -17,8 +16,6 @@ import com.wx.application.base.BaseController; import com.wx.application.base.ResponseData; import com.wx.application.core.service.EntrysService; import com.wx.application.core.service.RiskUserService; -import com.wx.application.gorse4j.GorseService; -import com.wx.application.gorse4j.Item; import com.wx.application.nebula.graph.query.NebulaModel; import com.wx.application.nebula.graph.query.NebulaNode; import com.wx.application.nebula.graph.service.ImportGraphService; @@ -35,12 +32,6 @@ public class GorseController extends BaseController { @Autowired GorseService gorseService; - @Autowired - RiskUserService riskUserService; - - @Autowired - EntrysService entrysService; - @Autowired NebulaOperateService nebulaOperateService; @@ -56,13 +47,7 @@ public class GorseController extends BaseController { */ @PostMapping(value = "/recommend_by_userid") public ResponseData recommendByUserId(@RequestBody GorseQ gQo) throws Exception { - List res = gorseService.getRecommend(gQo.getUserId()); - if (res == null || res.size() == 0) { - return success(); - } - Map mQ = new HashMap<>(); - mQ.put("INS_fid", StringUtils.join(res, ",")); - return success(entrysService.queryList(mQ)); + return success(gorseService.getRecommend(gQo.getUserId())); } /** @@ -85,6 +70,26 @@ public class GorseController extends BaseController { return success(); } + @PostMapping(value = "/delete_user/{userId}") + public ResponseData deleteUser(@PathVariable("userId") String userId) throws Exception { + return success(gorseService.deleteUser(userId)); + } + + @GetMapping(value = "/get_item/{itemId}") + public ResponseData getItem(@PathVariable("itemId") String itemId) throws Exception { + return success(gorseService.getItem(itemId)); + } + + @GetMapping(value = "/get_user/{userId}") + public ResponseData getUser(@PathVariable("userId") String userId) throws Exception { + return success(gorseService.getUser(userId)); + } + + @PostMapping(value = "/delete_item/{itemId}") + public ResponseData deleteItem(@PathVariable("itemId") String itemId) throws Exception { + return success(gorseService.deleteItem(itemId)); + } + /** * 推荐根据知识图谱 * @@ -102,13 +107,7 @@ public class GorseController extends BaseController { nodes.get(0).getVid(); } - List res = gorseService.getRecommend(gQo.getUserId()); - if (res == null || res.size() == 0) { - return success(); - } - Map mQ = new HashMap<>(); - mQ.put("INS_fid", StringUtils.join(res, ",")); - return success(entrysService.queryList(mQ)); + return success(gorseService.getRecommend(gQo.getUserId())); } @PostMapping(value = "/get_similar_user") @@ -116,6 +115,11 @@ public class GorseController extends BaseController { return success(gorseService.getSimilarUser(gQo.getUserId())); } + @PostMapping(value = "/get_similar_item") + public ResponseData getSimilarItem(@RequestBody GorseQ gQo) throws Exception { + return success(gorseService.getSimilarItem(gQo.getItemId(), gQo.getCategory(), gQo.getN())); + } + @PostMapping(value = "/get_recommend_by_user") public ResponseData getRecommendByUser(@RequestBody GorseQ gQo) throws Exception { return success(gorseService.getRecommendByUser(gQo.getUserId(), gQo.getRecommendation(), gQo.getCategory(), gQo.getN())); @@ -126,6 +130,16 @@ public class GorseController extends BaseController { return success(gorseService.listFeedback(userId, type)); } + @PostMapping(value = "/insert_feedback/{type}/{userId}/{itemId}") + public ResponseData insertFeedback(@PathVariable("userId") String userId, @PathVariable("type") String type, + @PathVariable("itemId") String itemId) throws Exception { + List list = new ArrayList<>(); + Feedback fb = new Feedback(); + fb.init(userId, itemId, type); + list.add(fb); + return success(gorseService.insertFeedback(list)); + } + @PutMapping(value = "/bulk/{type}") public ResponseData bulkUserOrItem(@RequestParam Map data, @RequestParam("file") MultipartFile file, @PathVariable("type") String type) throws Exception { return success(gorseService.bulkUserOrItem(data, file, type)); @@ -138,74 +152,22 @@ public class GorseController extends BaseController { @GetMapping(value = "/query_users") public ResponseData queryUsers(@RequestParam("cursor") String cursor) throws Exception { - GorsePage page = gorseService.getUserPageByCursor(cursor); - if (page.getUsers() == null || page.getUsers().size() == 0) { - return success(page); - } - List ids = new ArrayList<>(); - for (User user : page.getUsers()) { - ids.add(user.getUserId()); - } - Map mQ = new HashMap<>(); - mQ.put("INS_fid", StringUtils.join(ids, ",")); - - JSONObject obj = new JSONObject(); - obj.put("cursor", page.getCursor()); - obj.put("users", riskUserService.queryList(mQ)); - return success(obj); + return success(gorseService.getUserPageByCursor(cursor)); } @GetMapping(value = "/query_user/{id}") - public ResponseData queryUser(@PathVariable("id") String id) { - User user = null; - try { - user = gorseService.getUserById(id); - } catch (Exception e) { - - } - - if (user == null) { - return success(); - } - Map mQ = new HashMap<>(); - mQ.put("EQS_fid", user.getUserId()); - return success(riskUserService.queryUnique(mQ)); + public ResponseData queryUser(@PathVariable("id") String id) throws Exception { + return success(gorseService.getUserById(id)); } @GetMapping(value = "/query_items") public ResponseData queryItems(@RequestParam("cursor") String cursor) throws Exception { - GorsePage page = gorseService.getItemPageByCursor(cursor); - if (page.getItems() == null || page.getItems().size() == 0) { - return success(page); - } - List ids = new ArrayList<>(); - for (Item item : page.getItems()) { - ids.add(item.getItemId()); - } - Map mQ = new HashMap<>(); - mQ.put("INS_fid", StringUtils.join(ids, ",")); - - JSONObject obj = new JSONObject(); - obj.put("cursor", page.getCursor()); - obj.put("items", entrysService.queryList(mQ)); - return success(obj); + return success(gorseService.getItemPageByCursor(cursor)); } @GetMapping(value = "/query_item/{id}") - public ResponseData queryItem(@PathVariable("id") String id) { - Item item = null; - try { - item = gorseService.getItemById(id); - } catch (Exception e) { - - } - - if (item == null) { - return success(); - } - Map mQ = new HashMap<>(); - mQ.put("EQS_fid", item.getItemId()); - return success(entrysService.queryUnique(mQ)); + public ResponseData queryItem(@PathVariable("id") String id) throws Exception { + return success(gorseService.getItemById(id)); } diff --git a/api/src/main/java/com/wx/application/adapter/controller/LoginController.java b/api/src/main/java/com/wx/application/adapter/controller/LoginController.java index fb44872..0088627 100644 --- a/api/src/main/java/com/wx/application/adapter/controller/LoginController.java +++ b/api/src/main/java/com/wx/application/adapter/controller/LoginController.java @@ -10,8 +10,15 @@ import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.api.R; +import com.wx.application.core.mapper.RiskUserMapper; +import com.wx.application.gorse4j.GorseService; +import com.wx.application.gorse4j.User; +import org.apache.commons.lang3.StringUtils; import org.bouncycastle.jce.provider.BouncyCastleProvider; //import org.redisson.api.RedissonClient; +import org.checkerframework.checker.units.qual.A; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -40,11 +47,14 @@ import lombok.extern.slf4j.Slf4j; @RestController("loginController") public class LoginController extends BaseController { - @Autowired - RiskUserService riskUserService; - - /*@Autowired - RedissonClient redissonClient;*/ + @Autowired + RiskUserService riskUserService; + + @Autowired + RiskUserMapper userMapper; + + @Autowired + GorseService gorseService; @Autowired private Kaptcha kaptcha; @@ -72,68 +82,75 @@ public class LoginController extends BaseController { kaptcha.render(); } - - /** - * 登录 - */ - @PostMapping(value = "/user") - public ResponseData login(@RequestBody RiskUserQ loginQo) throws Exception { - -// if(StringUtils.isBlank(loginQo.getCode())) { -// Map data = new HashMap<>(); -// data.put("msg", "验证码不能为空"); -// return error(ErrorCodeEnum.USER_NOT_EXIST,data); -// } -// -// try { -// kaptcha.validate(loginQo.getCode()); -// } catch (Exception e) { -// Map data = new HashMap<>(); -// data.put("msg", "验证码错误"); -// return error(ErrorCodeEnum.USER_NOT_EXIST,data); -// } - /*if(StringUtils.isBlank(loginQo.getCode())) { - Map data = new HashMap<>(); - data.put("msg", "验证码不能为空"); - return error(ErrorCodeEnum.USER_NOT_EXIST,data); - } - - try { - kaptcha.validate(loginQo.getCode()); - } catch (Exception e) { - Map data = new HashMap<>(); - data.put("msg", "验证码错误"); - return error(ErrorCodeEnum.USER_NOT_EXIST,data); - }*/ - - /** - * 将密码改成md5加密查询 - */ - Map mQ = new HashMap<>(); - mQ.put("EQS_username", loginQo.getUsername()); - mQ.put("EQS_password", MD5Util.MD5(loginQo.getPassword())); - mQ.put("EQS_type", loginQo.getType()); - - RiskUser riskUser = riskUserService.queryUnique(mQ); - - if(riskUser != null) { - String token = JwtUtils.generateJwtToken(riskUser.getId(), CONSTANT.LOGIN_TYPE_ADMIN, riskUser); - - RiskUser _riskUser = new RiskUser(); - _riskUser.setRealname(riskUser.getRealname()); - _riskUser.setUsername(riskUser.getUsername()); - - return success(ImmutableMap.builder() - .put("Authorization",token) - .put("user", _riskUser) - .build()); - } - Map data = new HashMap<>(); - data.put("msg", "用户名密码错误"); - return error(ErrorCodeEnum.USER_NOT_EXIST,data); + /** + * 登录 + */ + @PostMapping(value = "/user") + public ResponseData login(@RequestBody RiskUserQ loginQo) throws Exception { + + /** + * 将密码改成md5加密查询 + */ + Map mQ = new HashMap<>(); + mQ.put("EQS_username", loginQo.getUsername()); + mQ.put("EQS_password", MD5Util.MD5(loginQo.getPassword())); + mQ.put("EQS_type", loginQo.getType()); + + RiskUser riskUser = riskUserService.queryUnique(mQ); + + if (riskUser != null) { + String token = JwtUtils.generateJwtToken(riskUser.getId(), CONSTANT.LOGIN_TYPE_ADMIN, riskUser); + + RiskUser _riskUser = new RiskUser(); + _riskUser.setRealname(riskUser.getUsername()); + _riskUser.setUsername(riskUser.getUsername()); + + return success(ImmutableMap.builder() + .put("Authorization", token) + .put("user", _riskUser) + .build()); + } + Map data = new HashMap<>(); + data.put("msg", "用户名密码错误"); + return error(ErrorCodeEnum.USER_NOT_EXIST, data); } - + + /** + * 注册 + */ + @PostMapping(value = "/register") + public ResponseData register(@RequestBody RiskUserQ registerQ) throws Exception { + + + Map data = new HashMap<>(); + if (StringUtils.isEmpty(registerQ.getUsername()) || StringUtils.isEmpty(registerQ.getPassword())) { + data.put("msg", "用户名密码不能为空"); + return error(ErrorCodeEnum.PARAM_ERROR, data); + } + + int blankUserCount = userMapper.selectCount(new QueryWrapper().lambda().eq(RiskUser::getUsername, registerQ.getUsername())); + if (blankUserCount > 0) { + data.put("msg", "用户名已存在"); + return error(ErrorCodeEnum.MOBILE_USED, data); + } + + + /** + * 将密码改成md5加密 + */ + RiskUser nowUser = new RiskUser(); + nowUser.setUsername(registerQ.getUsername()); + nowUser.setPassword(MD5Util.MD5(registerQ.getPassword())); + nowUser.setType(registerQ.getType()); + + userMapper.insert(nowUser); +// User user = new User(registerQ.getUsername(), null); +// gorseService.insertUser(user); + return success(); + + } + /** * 解密用户敏感数据获取用户信息 * diff --git a/api/src/main/java/com/wx/application/gorse4j/Feedback.java b/api/src/main/java/com/wx/application/gorse4j/Feedback.java index 7d7783c..9cb5a63 100644 --- a/api/src/main/java/com/wx/application/gorse4j/Feedback.java +++ b/api/src/main/java/com/wx/application/gorse4j/Feedback.java @@ -17,6 +17,12 @@ public class Feedback { public Feedback() { } + public void init(String userId, String itemId, String feedbackType) { + this.itemId = itemId; + this.userId = userId; + this.feedbackType = feedbackType; + } + public Feedback(String feedbackType, String userId, String itemId, String timestamp, Item item) { this.feedbackType = feedbackType; this.userId = userId; diff --git a/api/src/main/java/com/wx/application/gorse4j/GorseService.java b/api/src/main/java/com/wx/application/gorse4j/GorseService.java index a4b3f26..a454988 100644 --- a/api/src/main/java/com/wx/application/gorse4j/GorseService.java +++ b/api/src/main/java/com/wx/application/gorse4j/GorseService.java @@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.databind.ObjectMapper; +import com.wx.application.util.CSVUtils; +import com.wx.application.util.HttpUtils; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; @@ -13,12 +15,11 @@ import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; -import java.io.DataOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; +import java.io.*; import java.net.HttpURLConnection; import java.net.URL; +import java.net.URLConnection; +import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -65,8 +66,9 @@ public class GorseService { return this.request("DELETE", this.endpoint + "/api/item/" + itemId, null, RowAffected.class); } - public RowAffected insertFeedback(List feedbacks) throws IOException { - return this.request("POST", this.endpoint + "/api/feedback", feedbacks, RowAffected.class); + public Object insertFeedback(List feedbacks) throws IOException { + return HttpUtils.doPost(this.endpoint + "/api/feedback", JSONObject.toJSONString(feedbacks)); +// return this.request("POST", this.endpoint + "/api/feedback", feedbacks, RowAffected.class); } public List listFeedback(String userId, String feedbackType) throws IOException { @@ -152,6 +154,7 @@ public class GorseService { */ public JSONObject bulkUserOrItem(Map data, MultipartFile multipartFile, String type) throws IOException { File file = new File("path/to/file"); + FileUtils.writeByteArrayToFile(file, multipartFile.getBytes()); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); @@ -159,6 +162,14 @@ public class GorseService { builder.addTextBody(entry.getKey(), entry.getValue()); } + // 导入附加的属性数据到mysql + if ("users".equals(type)) { + List> rows = CSVUtils.parseCSV(file, data.get("sep")); + + } else if ("items".equals(type)) { + List> rows = CSVUtils.parseCSV(file, data.get("sep")); + } + builder.addBinaryBody("file", file, ContentType.APPLICATION_OCTET_STREAM, multipartFile.getOriginalFilename()); return this.sendPostFormData(this.endpoint + "/api/bulk/" + type, builder); } @@ -200,12 +211,15 @@ public class GorseService { if (request != null) { connection.setDoOutput(true); String requestBody = mapper.writeValueAsString(request); - DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); + OutputStream outputStream = connection.getOutputStream(); outputStream.write(requestBody.getBytes()); + outputStream.flush(); outputStream.close(); } // Get Response InputStream inputStream = connection.getInputStream(); return mapper.readValue(inputStream, responseClass); } + + } \ No newline at end of file diff --git a/api/src/main/java/com/wx/application/util/CSVUtils.java b/api/src/main/java/com/wx/application/util/CSVUtils.java new file mode 100644 index 0000000..eea0bf9 --- /dev/null +++ b/api/src/main/java/com/wx/application/util/CSVUtils.java @@ -0,0 +1,52 @@ +package com.wx.application.util; + +import org.apache.commons.lang3.StringUtils; + +import java.io.File; +import java.io.FileNotFoundException; +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +public class CSVUtils { + + /** + * @param file + * @param sep 属性分隔符 + * @return + * @throws FileNotFoundException + */ + public static List> parseCSV(File file, String sep) throws FileNotFoundException { + List> rows = new ArrayList<>(); + + if (file == null) { + return rows; + } + + if (StringUtils.isEmpty(sep)) { + sep = ","; + } + + try { + Scanner scanner = new Scanner(file); + + while (scanner.hasNextLine()) { + String line = scanner.nextLine(); + String[] values = line.split(sep); + List row = new ArrayList<>(); + + for (String value : values) { + row.add(value); + } + + rows.add(row); + } + + scanner.close(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + + return rows; + } +} diff --git a/api/src/main/java/com/wx/application/util/HttpUtils.java b/api/src/main/java/com/wx/application/util/HttpUtils.java new file mode 100644 index 0000000..af0b139 --- /dev/null +++ b/api/src/main/java/com/wx/application/util/HttpUtils.java @@ -0,0 +1,191 @@ +package com.wx.application.util; + +import org.apache.http.HttpEntity; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; +import org.apache.http.util.EntityUtils; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.net.URL; +import java.net.URLConnection; +import java.util.List; +import java.util.Map; + +public class HttpUtils { + + + private static PoolingHttpClientConnectionManager connMgr = new PoolingHttpClientConnectionManager(); + private static RequestConfig requestConfig; + + /** + * 情况方法直接放这里就行 + */ + + + static { + connMgr.setMaxTotal(100); + connMgr.setDefaultMaxPerRoute(connMgr.getMaxTotal()); + RequestConfig.Builder configBuilder = RequestConfig.custom(); + configBuilder.setConnectTimeout(60000); + configBuilder.setSocketTimeout(70000); + configBuilder.setConnectionRequestTimeout(30000); + requestConfig = configBuilder.build(); + } + + /** + * 向指定URL发送GET方法的请求 + * + * @param url 发送请求的URL + * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 + * @return URL 所代表远程资源的响应结果 + */ + public Object sendGet(String url, String param) { + String result = ""; + BufferedReader in = null; + try { + String urlNameString = url + "?" + param; + URL realUrl = new URL(urlNameString); + // 打开和URL之间的连接 + URLConnection connection = realUrl.openConnection(); + // 设置通用的请求属性 + connection.setRequestProperty("accept", "*/*"); + connection.setRequestProperty("connection", "Keep-Alive"); + connection.setRequestProperty("user-agent", + "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); + // 建立实际的连接 + connection.connect(); + // 获取所有响应头字段 + Map> map = connection.getHeaderFields(); + // 遍历所有的响应头字段 + for (String key : map.keySet()) { + System.out.println(key + "--->" + map.get(key)); + } + // 定义 BufferedReader输入流来读取URL的响应 + in = new BufferedReader(new InputStreamReader( + connection.getInputStream())); + String line; + while ((line = in.readLine()) != null) { + result += line; + } + } catch (Exception e) { + System.out.println("发送GET请求出现异常!" + e); + e.printStackTrace(); + } + // 使用finally块来关闭输入流 + finally { + try { + if (in != null) { + in.close(); + } + } catch (Exception e2) { + e2.printStackTrace(); + } + } + return result; + } + + /** + * 向指定 URL 发送POST方法的请求 + * + * @param url 发送请求的 URL + * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 + * @return 所代表远程资源的响应结果 + */ + public static Object sendPost(String url, String param) { + PrintWriter out = null; + BufferedReader in = null; + String result = ""; + try { + URL realUrl = new URL(url); + // 打开和URL之间的连接 + URLConnection conn = realUrl.openConnection(); + // 设置通用的请求属性 + conn.setRequestProperty("accept", "*/*"); + conn.setRequestProperty("connection", "Keep-Alive"); + conn.setRequestProperty("user-agent", + "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); + // 发送POST请求必须设置如下两行 + conn.setDoOutput(true); + conn.setDoInput(true); + // 获取URLConnection对象对应的输出流 + out = new PrintWriter(conn.getOutputStream()); + // 发送请求参数 + out.print(param); + // flush输出流的缓冲 + out.flush(); + // 定义BufferedReader输入流来读取URL的响应 + in = new BufferedReader( + new InputStreamReader(conn.getInputStream())); + String line; + while ((line = in.readLine()) != null) { + result += line; + } + + } catch (Exception e) { + System.out.println("发送 POST 请求出现异常!" + e); + e.printStackTrace(); + } + //使用finally块来关闭输出流、输入流 + finally { + try { + if (out != null) { + out.close(); + } + if (in != null) { + in.close(); + } + } catch (IOException ex) { + ex.printStackTrace(); + } + } + return result; + } + + /** + * post,以 application/json 形式 + * @param apiUrl + * @param json + * @return + */ + public static String doPost(String apiUrl, String json) { + long start = System.currentTimeMillis(); + CloseableHttpClient httpClient = HttpClients.createDefault(); + String httpStr = null; + HttpPost httpPost = new HttpPost(apiUrl); + CloseableHttpResponse response = null; + int statusCode = -999; + try { + httpPost.setConfig(requestConfig); + StringEntity stringEntity = new StringEntity(json.toString(), "UTF-8"); + stringEntity.setContentEncoding("UTF-8"); + stringEntity.setContentType("application/json"); + httpPost.setEntity(stringEntity); + response = httpClient.execute(httpPost); + HttpEntity entity = response.getEntity(); + statusCode = response.getStatusLine().getStatusCode(); + httpStr = EntityUtils.toString(entity, "UTF-8"); + } catch (Exception var20) { + var20.printStackTrace(); + } finally { + if (response != null) { + try { + EntityUtils.consume(response.getEntity()); + } catch (IOException var19) { + var19.printStackTrace(); + } + } + + } + + return httpStr; + } + +} diff --git a/web/src/assets/image/614/1a.jpg b/web/src/assets/image/614/1a.jpg deleted file mode 100644 index a358fcc..0000000 Binary files a/web/src/assets/image/614/1a.jpg and /dev/null differ diff --git a/web/src/assets/image/614/1b.jpg b/web/src/assets/image/614/1b.jpg deleted file mode 100644 index 6ed8723..0000000 Binary files a/web/src/assets/image/614/1b.jpg and /dev/null differ diff --git a/web/src/assets/image/614/2a.jpg b/web/src/assets/image/614/2a.jpg deleted file mode 100644 index 54d92f6..0000000 Binary files a/web/src/assets/image/614/2a.jpg and /dev/null differ diff --git a/web/src/assets/image/614/2b.jpg b/web/src/assets/image/614/2b.jpg deleted file mode 100644 index 845c0fe..0000000 Binary files a/web/src/assets/image/614/2b.jpg and /dev/null differ diff --git a/web/src/assets/image/614/2c.jpg b/web/src/assets/image/614/2c.jpg deleted file mode 100644 index d622450..0000000 Binary files a/web/src/assets/image/614/2c.jpg and /dev/null differ diff --git a/web/src/assets/image/614/2d.jpg b/web/src/assets/image/614/2d.jpg deleted file mode 100644 index 7ec3ad9..0000000 Binary files a/web/src/assets/image/614/2d.jpg and /dev/null differ diff --git a/web/src/assets/image/614/2f.jpg b/web/src/assets/image/614/2f.jpg deleted file mode 100644 index 290a0fe..0000000 Binary files a/web/src/assets/image/614/2f.jpg and /dev/null differ diff --git a/web/src/assets/image/614/3a.jpg b/web/src/assets/image/614/3a.jpg deleted file mode 100644 index dcb02d5..0000000 Binary files a/web/src/assets/image/614/3a.jpg and /dev/null differ diff --git a/web/src/assets/image/614/3b.jpg b/web/src/assets/image/614/3b.jpg deleted file mode 100644 index d4a1bd0..0000000 Binary files a/web/src/assets/image/614/3b.jpg and /dev/null differ diff --git a/web/src/assets/image/614/3c.jpg b/web/src/assets/image/614/3c.jpg deleted file mode 100644 index 5d36433..0000000 Binary files a/web/src/assets/image/614/3c.jpg and /dev/null differ diff --git a/web/src/assets/image/614/3d.jpg b/web/src/assets/image/614/3d.jpg deleted file mode 100644 index 7f7adfc..0000000 Binary files a/web/src/assets/image/614/3d.jpg and /dev/null differ diff --git a/web/src/assets/image/614/3e.jpg b/web/src/assets/image/614/3e.jpg deleted file mode 100644 index eb73392..0000000 Binary files a/web/src/assets/image/614/3e.jpg and /dev/null differ diff --git a/web/src/assets/image/614/3f.jpg b/web/src/assets/image/614/3f.jpg deleted file mode 100644 index 2967328..0000000 Binary files a/web/src/assets/image/614/3f.jpg and /dev/null differ diff --git a/web/src/assets/image/614/3g.jpg b/web/src/assets/image/614/3g.jpg deleted file mode 100644 index 6b352cd..0000000 Binary files a/web/src/assets/image/614/3g.jpg and /dev/null differ diff --git a/web/src/assets/image/614/3h.jpg b/web/src/assets/image/614/3h.jpg deleted file mode 100644 index d047133..0000000 Binary files a/web/src/assets/image/614/3h.jpg and /dev/null differ diff --git a/web/src/assets/image/614/3i.jpg b/web/src/assets/image/614/3i.jpg deleted file mode 100644 index acdaabe..0000000 Binary files a/web/src/assets/image/614/3i.jpg and /dev/null differ diff --git a/web/src/assets/image/614/3j.jpg b/web/src/assets/image/614/3j.jpg deleted file mode 100644 index 3f0aedf..0000000 Binary files a/web/src/assets/image/614/3j.jpg and /dev/null differ diff --git a/web/src/assets/image/614/3k.jpg b/web/src/assets/image/614/3k.jpg deleted file mode 100644 index 6788c95..0000000 Binary files a/web/src/assets/image/614/3k.jpg and /dev/null differ diff --git a/web/src/assets/image/614/3l.jpg b/web/src/assets/image/614/3l.jpg deleted file mode 100644 index d650009..0000000 Binary files a/web/src/assets/image/614/3l.jpg and /dev/null differ diff --git a/web/src/assets/image/614/3m.jpg b/web/src/assets/image/614/3m.jpg deleted file mode 100644 index 0bd1136..0000000 Binary files a/web/src/assets/image/614/3m.jpg and /dev/null differ diff --git a/web/src/assets/image/614/3n.jpg b/web/src/assets/image/614/3n.jpg deleted file mode 100644 index 4b9d918..0000000 Binary files a/web/src/assets/image/614/3n.jpg and /dev/null differ diff --git a/web/src/assets/image/614/3o.jpg b/web/src/assets/image/614/3o.jpg deleted file mode 100644 index 5bcf39a..0000000 Binary files a/web/src/assets/image/614/3o.jpg and /dev/null differ diff --git a/web/src/assets/image/614/3p.jpg b/web/src/assets/image/614/3p.jpg deleted file mode 100644 index 1402098..0000000 Binary files a/web/src/assets/image/614/3p.jpg and /dev/null differ diff --git a/web/src/assets/image/614/3q.jpg b/web/src/assets/image/614/3q.jpg deleted file mode 100644 index a5f3f4f..0000000 Binary files a/web/src/assets/image/614/3q.jpg and /dev/null differ diff --git a/web/src/assets/image/614/4a.jpg b/web/src/assets/image/614/4a.jpg deleted file mode 100644 index c25f2d1..0000000 Binary files a/web/src/assets/image/614/4a.jpg and /dev/null differ diff --git a/web/src/assets/image/614/4b.jpg b/web/src/assets/image/614/4b.jpg deleted file mode 100644 index a7a7240..0000000 Binary files a/web/src/assets/image/614/4b.jpg and /dev/null differ diff --git a/web/src/assets/image/614/4c.jpg b/web/src/assets/image/614/4c.jpg deleted file mode 100644 index b623fba..0000000 Binary files a/web/src/assets/image/614/4c.jpg and /dev/null differ diff --git a/web/src/assets/image/614/4d.jpg b/web/src/assets/image/614/4d.jpg deleted file mode 100644 index ce6633a..0000000 Binary files a/web/src/assets/image/614/4d.jpg and /dev/null differ diff --git a/web/src/assets/image/614/4e.jpg b/web/src/assets/image/614/4e.jpg deleted file mode 100644 index 5e1f894..0000000 Binary files a/web/src/assets/image/614/4e.jpg and /dev/null differ diff --git a/web/src/assets/image/614/4f.jpg b/web/src/assets/image/614/4f.jpg deleted file mode 100644 index 2eb0182..0000000 Binary files a/web/src/assets/image/614/4f.jpg and /dev/null differ diff --git a/web/src/assets/image/614/4g.jpg b/web/src/assets/image/614/4g.jpg deleted file mode 100644 index 194c548..0000000 Binary files a/web/src/assets/image/614/4g.jpg and /dev/null differ diff --git a/web/src/assets/image/614/4h.jpg b/web/src/assets/image/614/4h.jpg deleted file mode 100644 index 0ba0f25..0000000 Binary files a/web/src/assets/image/614/4h.jpg and /dev/null differ diff --git a/web/src/assets/image/614/4j.jpg b/web/src/assets/image/614/4j.jpg deleted file mode 100644 index 2586fff..0000000 Binary files a/web/src/assets/image/614/4j.jpg and /dev/null differ diff --git a/web/src/assets/image/614/5a.jpg b/web/src/assets/image/614/5a.jpg deleted file mode 100644 index ca49e00..0000000 Binary files a/web/src/assets/image/614/5a.jpg and /dev/null differ diff --git a/web/src/assets/image/614/5b.jpg b/web/src/assets/image/614/5b.jpg deleted file mode 100644 index 242d056..0000000 Binary files a/web/src/assets/image/614/5b.jpg and /dev/null differ diff --git a/web/src/assets/image/614/5c.jpg b/web/src/assets/image/614/5c.jpg deleted file mode 100644 index 3cc297c..0000000 Binary files a/web/src/assets/image/614/5c.jpg and /dev/null differ diff --git a/web/src/assets/image/614/5d.jpg b/web/src/assets/image/614/5d.jpg deleted file mode 100644 index 6ad740f..0000000 Binary files a/web/src/assets/image/614/5d.jpg and /dev/null differ diff --git a/web/src/assets/image/614/5e.jpg b/web/src/assets/image/614/5e.jpg deleted file mode 100644 index d0b0285..0000000 Binary files a/web/src/assets/image/614/5e.jpg and /dev/null differ diff --git a/web/src/assets/image/614/5f.jpg b/web/src/assets/image/614/5f.jpg deleted file mode 100644 index c14ce0d..0000000 Binary files a/web/src/assets/image/614/5f.jpg and /dev/null differ diff --git a/web/src/assets/image/614/5g.jpg b/web/src/assets/image/614/5g.jpg deleted file mode 100644 index e516d13..0000000 Binary files a/web/src/assets/image/614/5g.jpg and /dev/null differ diff --git a/web/src/assets/image/614/5h.jpg b/web/src/assets/image/614/5h.jpg deleted file mode 100644 index 88209ff..0000000 Binary files a/web/src/assets/image/614/5h.jpg and /dev/null differ diff --git a/web/src/assets/image/614/6a.jpg b/web/src/assets/image/614/6a.jpg deleted file mode 100644 index 60f860c..0000000 Binary files a/web/src/assets/image/614/6a.jpg and /dev/null differ diff --git a/web/src/assets/image/614/6b.jpg b/web/src/assets/image/614/6b.jpg deleted file mode 100644 index 38dd1e8..0000000 Binary files a/web/src/assets/image/614/6b.jpg and /dev/null differ diff --git a/web/src/assets/image/614/6c.jpg b/web/src/assets/image/614/6c.jpg deleted file mode 100644 index 6f4c5ba..0000000 Binary files a/web/src/assets/image/614/6c.jpg and /dev/null differ diff --git a/web/src/assets/image/614/6d.jpg b/web/src/assets/image/614/6d.jpg deleted file mode 100644 index ed05b9e..0000000 Binary files a/web/src/assets/image/614/6d.jpg and /dev/null differ diff --git a/web/src/assets/image/614/6e.jpg b/web/src/assets/image/614/6e.jpg deleted file mode 100644 index 85ed32e..0000000 Binary files a/web/src/assets/image/614/6e.jpg and /dev/null differ diff --git a/web/src/assets/image/614/6f.jpg b/web/src/assets/image/614/6f.jpg deleted file mode 100644 index aaf517e..0000000 Binary files a/web/src/assets/image/614/6f.jpg and /dev/null differ diff --git a/web/src/assets/image/614/6g.jpg b/web/src/assets/image/614/6g.jpg deleted file mode 100644 index ac8fad6..0000000 Binary files a/web/src/assets/image/614/6g.jpg and /dev/null differ diff --git a/web/src/components/menus/EntrysManage.vue b/web/src/components/menus/EntrysManage.vue index 2f4aeb2..60c9a54 100644 --- a/web/src/components/menus/EntrysManage.vue +++ b/web/src/components/menus/EntrysManage.vue @@ -27,46 +27,50 @@
- 添 加 + 导出物类 导入物类
- - + +
-