From ff327ba2fd7da84e72f98eb3a5bb769829c15b24 Mon Sep 17 00:00:00 2001 From: ZhangAo Date: Wed, 17 Dec 2025 17:28:57 +0800 Subject: [PATCH] u --- .../identity/model/dto/AuthRegisterDTO.java | 2 +- .../identity/service/AuthIdentityService.java | 2 +- .../base/controller/FileController.java | 40 + .../cn/link56/base/mapper/FileMapper.java | 9 + .../cn/link56/base/model/dto/AddFileDTO.java | 27 + .../java/cn/link56/base/model/po/FilePO.java | 41 + .../cn/link56/base/model/vo/AliyunKeyVO.java | 18 + .../cn/link56/base/service/FileService.java | 37 + .../java/cn/link56/common/BasePageVO.java | 19 + .../cn/link56/common/config/WebMvcConfig.java | 4 +- .../cn/link56/common/utils/HttpUtils.java | 197 ++ .../company/controller/CompanyController.java | 27 +- .../company/model/dto/PageCompanyDTO.java | 19 + .../cn/link56/company/model/po/CompanyPO.java | 4 +- .../company/model/vo/CompanyDetailVO.java | 37 + .../company/model/vo/PageCompanyVO.java | 23 + .../company/service/CompanyService.java | 93 + .../company/service/CompanyUserService.java | 7 + .../link56/company/mapper/CompanyMapper.xml | 2 +- code/link56/link56-frontend-new/package.json | 2 + .../link56/link56-frontend-new/pnpm-lock.yaml | 488 +++ .../src/components/QueryCompany.vue | 12 +- .../src/components/upload-progress/index.ts | 38 + .../src/components/upload-progress/index.vue | 128 + .../src/components/wang-editor/config.ts | 67 + .../src/components/wang-editor/index.vue | 180 ++ .../wang-editor/modules/directory.vue | 176 ++ .../wang-editor/modules/preview.vue | 125 + .../src/layout/components/header.vue | 12 +- .../link56-frontend-new/src/layout/index.vue | 10 +- .../src/request/api/base/index.ts | 12 +- .../src/request/api/company/index.ts | 12 +- .../link56-frontend-new/src/router/index.ts | 8 +- .../link56-frontend-new/src/store/common.ts | 53 - .../src/styles/css/global.css | 4 + .../src/types/auto-import.d.ts | 20 + .../src/types/base/index.ts | 18 +- .../src/types/company/index.ts | 41 + .../link56-frontend-new/src/types/global.d.ts | 11 + .../link56-frontend-new/src/utils/file.ts | 243 ++ .../src/views/auth/forget.vue | 1 + .../src/views/auth/login.vue | 2 +- .../src/views/company/detail/index.vue | 235 ++ .../src/views/company/index.vue | 264 +- .../src/views/home/components/recommend.vue | 3 +- .../src/views/settings/index.vue | 12 + code/link56/link56-frontend-new/test.html | 2807 ++++++++++------- 47 files changed, 4362 insertions(+), 1230 deletions(-) create mode 100644 code/link56/link56-backend/src/main/java/cn/link56/base/controller/FileController.java create mode 100644 code/link56/link56-backend/src/main/java/cn/link56/base/mapper/FileMapper.java create mode 100644 code/link56/link56-backend/src/main/java/cn/link56/base/model/dto/AddFileDTO.java create mode 100644 code/link56/link56-backend/src/main/java/cn/link56/base/model/po/FilePO.java create mode 100644 code/link56/link56-backend/src/main/java/cn/link56/base/model/vo/AliyunKeyVO.java create mode 100644 code/link56/link56-backend/src/main/java/cn/link56/base/service/FileService.java create mode 100644 code/link56/link56-backend/src/main/java/cn/link56/common/BasePageVO.java create mode 100644 code/link56/link56-backend/src/main/java/cn/link56/common/utils/HttpUtils.java create mode 100644 code/link56/link56-backend/src/main/java/cn/link56/company/model/dto/PageCompanyDTO.java create mode 100644 code/link56/link56-backend/src/main/java/cn/link56/company/model/vo/CompanyDetailVO.java create mode 100644 code/link56/link56-backend/src/main/java/cn/link56/company/model/vo/PageCompanyVO.java create mode 100644 code/link56/link56-frontend-new/src/components/upload-progress/index.ts create mode 100644 code/link56/link56-frontend-new/src/components/upload-progress/index.vue create mode 100644 code/link56/link56-frontend-new/src/components/wang-editor/config.ts create mode 100644 code/link56/link56-frontend-new/src/components/wang-editor/index.vue create mode 100644 code/link56/link56-frontend-new/src/components/wang-editor/modules/directory.vue create mode 100644 code/link56/link56-frontend-new/src/components/wang-editor/modules/preview.vue create mode 100644 code/link56/link56-frontend-new/src/utils/file.ts create mode 100644 code/link56/link56-frontend-new/src/views/company/detail/index.vue create mode 100644 code/link56/link56-frontend-new/src/views/settings/index.vue diff --git a/code/link56/link56-backend/src/main/java/cn/link56/auth/identity/model/dto/AuthRegisterDTO.java b/code/link56/link56-backend/src/main/java/cn/link56/auth/identity/model/dto/AuthRegisterDTO.java index 1b6b217d..4c2ee87c 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/auth/identity/model/dto/AuthRegisterDTO.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/auth/identity/model/dto/AuthRegisterDTO.java @@ -23,7 +23,7 @@ public class AuthRegisterDTO { @NotBlank(message = "所属行业不能为空") private String industry; @NotBlank(message = "公司地址不能为空") - private String address; + private String area; private String phone; private String email; private String profile; diff --git a/code/link56/link56-backend/src/main/java/cn/link56/auth/identity/service/AuthIdentityService.java b/code/link56/link56-backend/src/main/java/cn/link56/auth/identity/service/AuthIdentityService.java index ade7b16e..6eaadaef 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/auth/identity/service/AuthIdentityService.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/auth/identity/service/AuthIdentityService.java @@ -61,7 +61,7 @@ public class AuthIdentityService { .setId(companyId) .setName(company.getName()) .setIndustry(company.getIndustry()) - .setAddress(company.getAddress()) + .setArea(company.getArea()) .setPhone(company.getPhone()) .setEmail(company.getEmail()) .setProfile(company.getProfile()) diff --git a/code/link56/link56-backend/src/main/java/cn/link56/base/controller/FileController.java b/code/link56/link56-backend/src/main/java/cn/link56/base/controller/FileController.java new file mode 100644 index 00000000..d6d24d1a --- /dev/null +++ b/code/link56/link56-backend/src/main/java/cn/link56/base/controller/FileController.java @@ -0,0 +1,40 @@ +package cn.link56.base.controller; + +import cn.link56.base.model.dto.AddFileDTO; +import cn.link56.base.model.vo.AliyunKeyVO; +import cn.link56.base.service.FileService; +import cn.link56.common.Result; +import cn.link56.common.utils.HttpUtils; +import cn.link56.common.utils.JsonUtils; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("/base/file") +public class FileController { + @Resource + private FileService fileService; + + @PostMapping("/getAliyunKey") + public Result getAliyunKey() { + String requestUrl = "http://g3oss.g3soft.cn:8082/upload?orgid=link56&bucket=g3hdzjsj"; + String s = HttpUtils.sendGet(requestUrl); + AliyunKeyVO aliyunKeyVO = (AliyunKeyVO) JsonUtils.toBean(s, AliyunKeyVO.class); + + assert aliyunKeyVO != null; + + return Result.success(aliyunKeyVO); + } + + @PostMapping("/add") + public Result insertFile(@RequestBody @Validated AddFileDTO addFileDTO) { + fileService.addFile(addFileDTO); + + return Result.success(); + } +} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/base/mapper/FileMapper.java b/code/link56/link56-backend/src/main/java/cn/link56/base/mapper/FileMapper.java new file mode 100644 index 00000000..9b5aa21e --- /dev/null +++ b/code/link56/link56-backend/src/main/java/cn/link56/base/mapper/FileMapper.java @@ -0,0 +1,9 @@ +package cn.link56.base.mapper; + +import cn.link56.base.model.po.FilePO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface FileMapper extends BaseMapper { +} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/base/model/dto/AddFileDTO.java b/code/link56/link56-backend/src/main/java/cn/link56/base/model/dto/AddFileDTO.java new file mode 100644 index 00000000..b70e2b55 --- /dev/null +++ b/code/link56/link56-backend/src/main/java/cn/link56/base/model/dto/AddFileDTO.java @@ -0,0 +1,27 @@ +package cn.link56.base.model.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AddFileDTO { + @NotBlank( + message = "文件名称不能为空" + ) + private String fileName; + + @NotBlank( + message = "文件大小不能为空" + ) + private String fileSize; + + @NotBlank( + message = "文件全路径oss不能为空" + ) + private String fileMapName; +} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/base/model/po/FilePO.java b/code/link56/link56-backend/src/main/java/cn/link56/base/model/po/FilePO.java new file mode 100644 index 00000000..bd530ff8 --- /dev/null +++ b/code/link56/link56-backend/src/main/java/cn/link56/base/model/po/FilePO.java @@ -0,0 +1,41 @@ +package cn.link56.base.model.po; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName("b_file") +@Accessors(chain = true) +public class FilePO { + @TableId(value = "b_id") + private String id; + + @TableField("mx_filename") + private String name; + + @TableField("mx_filesize") + private String size; + + @TableField("mx_fileext") + private String ext; + + @TableField("mx_mapfilename") + private String mapName; + + @TableField( + value = "b_create_time", + fill = FieldFill.INSERT + ) + private String createTime; + + @TableField( + value = "b_create_by", + fill = FieldFill.INSERT + ) + private String createBy; +} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/base/model/vo/AliyunKeyVO.java b/code/link56/link56-backend/src/main/java/cn/link56/base/model/vo/AliyunKeyVO.java new file mode 100644 index 00000000..94b89395 --- /dev/null +++ b/code/link56/link56-backend/src/main/java/cn/link56/base/model/vo/AliyunKeyVO.java @@ -0,0 +1,18 @@ +package cn.link56.base.model.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AliyunKeyVO { + private String accessid; + private String policy; + private String signature; + private String dir; + private String host; + private String expire; + private String callback; +} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/base/service/FileService.java b/code/link56/link56-backend/src/main/java/cn/link56/base/service/FileService.java new file mode 100644 index 00000000..138377bb --- /dev/null +++ b/code/link56/link56-backend/src/main/java/cn/link56/base/service/FileService.java @@ -0,0 +1,37 @@ +package cn.link56.base.service; + +import cn.link56.base.mapper.FileMapper; +import cn.link56.base.model.dto.AddFileDTO; +import cn.link56.base.model.po.FilePO; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; + +@Service +public class FileService extends ServiceImpl { + @Resource + private FileMapper fileMapper; + + @Transactional + public void addFile(AddFileDTO addFileDTO){ + String fileName = addFileDTO.getFileName(); + String fileSize = addFileDTO.getFileSize(); + String fileMapName = addFileDTO.getFileMapName(); + + String suffix = ""; + if (StringUtils.isNotEmpty(fileName)) { + int lastDotIndex = fileName.lastIndexOf(46); + if (lastDotIndex != -1 && lastDotIndex < fileName.length() - 1) { + suffix = fileName.substring(lastDotIndex + 1); + } + } + + FilePO filePO = new FilePO(); + filePO.setExt(suffix).setName(fileName).setMapName(fileMapName).setSize(fileSize); + fileMapper.insert(filePO); + } + +} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/common/BasePageVO.java b/code/link56/link56-backend/src/main/java/cn/link56/common/BasePageVO.java new file mode 100644 index 00000000..aec5676d --- /dev/null +++ b/code/link56/link56-backend/src/main/java/cn/link56/common/BasePageVO.java @@ -0,0 +1,19 @@ +package cn.link56.common; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Accessors(chain = true) +public class BasePageVO { + private long total; + private List records; +} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/common/config/WebMvcConfig.java b/code/link56/link56-backend/src/main/java/cn/link56/common/config/WebMvcConfig.java index 059fc8a1..9dab5cc4 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/common/config/WebMvcConfig.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/common/config/WebMvcConfig.java @@ -19,8 +19,8 @@ public class WebMvcConfig implements WebMvcConfigurer { .addPathPatterns("/**") .excludePathPatterns( "/auth/**", - "/company/getCompanyPage", - "/company/getPublicDetail", + "/company/query", + "/company/detail/**", "/company/recommend", "/company/recommend/hot", diff --git a/code/link56/link56-backend/src/main/java/cn/link56/common/utils/HttpUtils.java b/code/link56/link56-backend/src/main/java/cn/link56/common/utils/HttpUtils.java new file mode 100644 index 00000000..55b3d79c --- /dev/null +++ b/code/link56/link56-backend/src/main/java/cn/link56/common/utils/HttpUtils.java @@ -0,0 +1,197 @@ +package cn.link56.common.utils; + +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; + +import javax.net.ssl.*; +import java.io.*; +import java.net.ConnectException; +import java.net.SocketTimeoutException; +import java.net.URL; +import java.net.URLConnection; +import java.nio.charset.StandardCharsets; +import java.security.SecureRandom; +import java.security.cert.X509Certificate; + +@Slf4j +public class HttpUtils { + + public static String sendGet(String url) { + return sendGet(url, ""); + } + + public static String sendGet(String url, String param) { + return sendGet(url, param, "UTF-8"); + } + + public static String sendGet(String url, String param, String contentType) { + StringBuilder result = new StringBuilder(); + BufferedReader in = null; + + try { + String urlNameString = StringUtils.isNotBlank(param) ? url + "?" + param : url; + URL realUrl = new URL(urlNameString); + URLConnection connection = realUrl.openConnection(); + connection.setRequestProperty("accept", "*/*"); + connection.setRequestProperty("connection", "Keep-Alive"); + connection.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"); + connection.connect(); + in = new BufferedReader(new InputStreamReader(connection.getInputStream(), contentType)); + + String line; + while((line = in.readLine()) != null) { + result.append(line); + } + } catch (ConnectException e) { + log.error("调用HttpUtils.sendGet ConnectException, url=" + url + ",param=" + param, e); + } catch (SocketTimeoutException e) { + log.error("调用HttpUtils.sendGet SocketTimeoutException, url=" + url + ",param=" + param, e); + } catch (IOException e) { + log.error("调用HttpUtils.sendGet IOException, url=" + url + ",param=" + param, e); + } catch (Exception e) { + log.error("调用HttpsUtil.sendGet Exception, url=" + url + ",param=" + param, e); + } finally { + try { + if (in != null) { + in.close(); + } + } catch (Exception ex) { + log.error("调用in.close Exception, url=" + url + ",param=" + param, ex); + } + + } + + return result.toString(); + } + + public static String sendPost(String url, String param) { + return sendPost(url, param, "application/x-www-form-urlencoded"); + } + + public static String sendPost(String url, String param, String contentType) { + PrintWriter out = null; + BufferedReader in = null; + StringBuilder result = new StringBuilder(); + + try { + log.info("sendPost - {}", url); + URL realUrl = new URL(url); + URLConnection conn = realUrl.openConnection(); + conn.setRequestProperty("accept", "*/*"); + conn.setRequestProperty("connection", "Keep-Alive"); + conn.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"); + conn.setRequestProperty("Accept-Charset", "utf-8"); + conn.setRequestProperty("Content-Type", contentType); + conn.setDoOutput(true); + conn.setDoInput(true); + out = new PrintWriter(conn.getOutputStream()); + out.print(param); + out.flush(); + in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8)); + + String line; + while((line = in.readLine()) != null) { + result.append(line); + } + + log.info("recv - {}", result); + } catch (ConnectException e) { + log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e); + } catch (SocketTimeoutException e) { + log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e); + } catch (IOException e) { + log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e); + } catch (Exception e) { + log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e); + } finally { + try { + if (out != null) { + out.close(); + } + + if (in != null) { + in.close(); + } + } catch (IOException ex) { + log.error("调用in.close Exception, url=" + url + ",param=" + param, ex); + } + + } + + return result.toString(); + } + + public static String sendSSLPost(String url, String param) { + return sendSSLPost(url, param, "application/x-www-form-urlencoded"); + } + + public static String sendSSLPost(String url, String param, String contentType) { + StringBuilder result = new StringBuilder(); + String urlNameString = url + "?" + param; + + try { + log.info("sendSSLPost - {}", urlNameString); + SSLContext sc = SSLContext.getInstance("SSL"); + sc.init((KeyManager[])null, new TrustManager[]{new TrustAnyTrustManager()}, new SecureRandom()); + URL console = new URL(urlNameString); + HttpsURLConnection conn = (HttpsURLConnection)console.openConnection(); + conn.setRequestProperty("accept", "*/*"); + conn.setRequestProperty("connection", "Keep-Alive"); + conn.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"); + conn.setRequestProperty("Accept-Charset", "utf-8"); + conn.setRequestProperty("Content-Type", contentType); + conn.setDoOutput(true); + conn.setDoInput(true); + conn.setSSLSocketFactory(sc.getSocketFactory()); + conn.setHostnameVerifier(new TrustAnyHostnameVerifier()); + conn.connect(); + InputStream is = conn.getInputStream(); + BufferedReader br = new BufferedReader(new InputStreamReader(is)); + String ret = ""; + + while((ret = br.readLine()) != null) { + if (ret != null && !"".equals(ret.trim())) { + result.append(new String(ret.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8)); + } + } + + log.info("recv - {}", result); + conn.disconnect(); + br.close(); + } catch (ConnectException e) { + log.error("调用HttpUtils.sendSSLPost ConnectException, url=" + url + ",param=" + param, e); + } catch (SocketTimeoutException e) { + log.error("调用HttpUtils.sendSSLPost SocketTimeoutException, url=" + url + ",param=" + param, e); + } catch (IOException e) { + log.error("调用HttpUtils.sendSSLPost IOException, url=" + url + ",param=" + param, e); + } catch (Exception e) { + log.error("调用HttpsUtil.sendSSLPost Exception, url=" + url + ",param=" + param, e); + } + + return result.toString(); + } + + private static class TrustAnyTrustManager implements X509TrustManager { + private TrustAnyTrustManager() { + } + + public void checkClientTrusted(X509Certificate[] chain, String authType) { + } + + public void checkServerTrusted(X509Certificate[] chain, String authType) { + } + + public X509Certificate[] getAcceptedIssuers() { + return new X509Certificate[0]; + } + } + + private static class TrustAnyHostnameVerifier implements HostnameVerifier { + private TrustAnyHostnameVerifier() { + } + + public boolean verify(String hostname, SSLSession session) { + return true; + } + } +} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/company/controller/CompanyController.java b/code/link56/link56-backend/src/main/java/cn/link56/company/controller/CompanyController.java index d51d9b0c..e6fa1546 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/company/controller/CompanyController.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/company/controller/CompanyController.java @@ -1,12 +1,16 @@ package cn.link56.company.controller; +import cn.link56.common.BasePageVO; import cn.link56.common.Result; +import cn.link56.company.model.dto.PageCompanyDTO; +import cn.link56.company.model.vo.CompanyDetailVO; +import cn.link56.company.model.vo.PageCompanyVO; import cn.link56.company.model.vo.RecommendCompanyVO; import cn.link56.company.model.vo.RecommendHotCompanyVO; import cn.link56.company.service.CompanyService; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; @@ -17,15 +21,32 @@ public class CompanyController { @Resource private CompanyService companyService; + // 公司分页 + @PostMapping("/query") + public Result> query(@RequestBody PageCompanyDTO pageCompanyDTO){ + BasePageVO data = companyService.queryCompany(pageCompanyDTO); + return Result.success(data); + } + + // 企业名录 @GetMapping("/recommend") public Result> listRecommend(){ List list = companyService.listRecommend(); return Result.success(list); } + // 热门推荐 @GetMapping("/recommend/hot") public Result> listHot(){ List list = companyService.listHot(); return Result.success(list); } + + // 公司详细 + @GetMapping("/detail/{id}") + public Result getCompanyDetail(@PathVariable Long id){ + CompanyDetailVO companyDetailVO = companyService.getCompanyDetail(id); + return Result.success(companyDetailVO); + } + } diff --git a/code/link56/link56-backend/src/main/java/cn/link56/company/model/dto/PageCompanyDTO.java b/code/link56/link56-backend/src/main/java/cn/link56/company/model/dto/PageCompanyDTO.java new file mode 100644 index 00000000..ed88d031 --- /dev/null +++ b/code/link56/link56-backend/src/main/java/cn/link56/company/model/dto/PageCompanyDTO.java @@ -0,0 +1,19 @@ +package cn.link56.company.model.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PageCompanyDTO { + private Integer currentPage; + private Integer pageSize; + + private List areas; + private List industries; + private String name; +} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/company/model/po/CompanyPO.java b/code/link56/link56-backend/src/main/java/cn/link56/company/model/po/CompanyPO.java index ffa92ff6..4767a90e 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/company/model/po/CompanyPO.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/company/model/po/CompanyPO.java @@ -30,8 +30,8 @@ public class CompanyPO { @TableField("b_phone") private String phone; - @TableField("b_address") - private String address; + @TableField("b_area") + private String area; @TableField("b_industry") private String industry; diff --git a/code/link56/link56-backend/src/main/java/cn/link56/company/model/vo/CompanyDetailVO.java b/code/link56/link56-backend/src/main/java/cn/link56/company/model/vo/CompanyDetailVO.java new file mode 100644 index 00000000..8d57ae25 --- /dev/null +++ b/code/link56/link56-backend/src/main/java/cn/link56/company/model/vo/CompanyDetailVO.java @@ -0,0 +1,37 @@ +package cn.link56.company.model.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CompanyDetailVO { + private Long id; + private String name; + private List areas; + private List industries; + private String logo; + private String profile; + private String email; + private String phone; + private String description; + private List users; + + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class User{ + private Long id; + private Long companyId; + private String email; + private String phone; + private Integer role; + private String position; + private String name; + } + +} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/company/model/vo/PageCompanyVO.java b/code/link56/link56-backend/src/main/java/cn/link56/company/model/vo/PageCompanyVO.java new file mode 100644 index 00000000..3e9733a5 --- /dev/null +++ b/code/link56/link56-backend/src/main/java/cn/link56/company/model/vo/PageCompanyVO.java @@ -0,0 +1,23 @@ +package cn.link56.company.model.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = true) +public class PageCompanyVO { + private Long id; + private String name; + private List areas; + private List industries; + private String logo; + private String profile; + private String phone; + private String email; +} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/company/service/CompanyService.java b/code/link56/link56-backend/src/main/java/cn/link56/company/service/CompanyService.java index 952b27e9..bd844ac0 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/company/service/CompanyService.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/company/service/CompanyService.java @@ -1,15 +1,26 @@ package cn.link56.company.service; +import cn.link56.common.BasePageVO; import cn.link56.company.mapper.CompanyMapper; +import cn.link56.company.mapper.CompanyUserMapper; +import cn.link56.company.model.dto.PageCompanyDTO; import cn.link56.company.model.middle.RecommendCompanyRow; import cn.link56.company.model.po.CompanyPO; +import cn.link56.company.model.po.CompanyUserPO; +import cn.link56.company.model.vo.CompanyDetailVO; +import cn.link56.company.model.vo.PageCompanyVO; import cn.link56.company.model.vo.RecommendCompanyVO; import cn.link56.company.model.vo.RecommendHotCompanyVO; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -17,6 +28,8 @@ import java.util.stream.Collectors; public class CompanyService extends ServiceImpl { @Resource private CompanyMapper companyMapper; + @Resource + private CompanyUserService companyUserService; public List listRecommend() { List rows = companyMapper.listRecommend(); @@ -86,4 +99,84 @@ public class CompanyService extends ServiceImpl { return count > 0; } + public BasePageVO queryCompany(PageCompanyDTO pageCompanyDTO) { + Integer currentPage = pageCompanyDTO.getCurrentPage(); + Integer pageSize = pageCompanyDTO.getPageSize(); + + String name = pageCompanyDTO.getName(); + List areas = pageCompanyDTO.getAreas(); + List industries = pageCompanyDTO.getIndustries(); + + // 分页 + Page companyPage = new Page<>(currentPage,pageSize); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + + // 名称 + if (StringUtils.isNotBlank(name)){ + queryWrapper.like(CompanyPO::getName,name); + } + + // 地区 + if (areas != null && !areas.isEmpty()){ + queryWrapper.and(wrapper -> { + for (String area : areas) { + wrapper.or(w -> w.like(CompanyPO::getArea, area)); + } + }); + } + + // 行业 + if (industries != null && !industries.isEmpty()) { + queryWrapper.and(wrapper -> { + for (String industry : industries) { + wrapper.or(w -> w.like(CompanyPO::getIndustry, industry)); + } + }); + } + + queryWrapper.eq(CompanyPO::getCanuse,"1"); + + List result = companyMapper.selectList(companyPage, queryWrapper).stream().map(item -> { + PageCompanyVO pageCompanyVO = new PageCompanyVO(); + + pageCompanyVO.setId(item.getId()); + pageCompanyVO.setName(item.getName()); + pageCompanyVO.setProfile(item.getProfile()); + pageCompanyVO.setLogo(item.getLogo()); + pageCompanyVO.setAreas(Arrays.stream(item.getArea().split(",")) + .collect(Collectors.toList())); + + pageCompanyVO.setIndustries(Arrays.stream(item.getIndustry().split(",")) + .collect(Collectors.toList())); + return pageCompanyVO; + }).collect(Collectors.toList()); + + + return new BasePageVO() + .setRecords(result) + .setTotal(companyPage.getTotal()); + } + + public CompanyDetailVO getCompanyDetail(Long companyId) { + CompanyPO companyPO = companyMapper.selectById(companyId); + List companyUserPOS = companyUserService.listByCompanyId(companyId); + + CompanyDetailVO companyDetailVO = new CompanyDetailVO(); + + BeanUtils.copyProperties(companyPO,companyDetailVO); + companyDetailVO.setAreas(Arrays.stream(companyPO.getArea().split(",")) + .collect(Collectors.toList())); + companyDetailVO.setIndustries(Arrays.stream(companyPO.getIndustry().split(",")) + .collect(Collectors.toList())); + + companyDetailVO.setUsers(companyUserPOS.stream() + .map(item -> { + CompanyDetailVO.User user = new CompanyDetailVO.User(); + BeanUtils.copyProperties(item, user); // 复制属性 + return user; + }) + .collect(Collectors.toList())); + + return companyDetailVO; + } } diff --git a/code/link56/link56-backend/src/main/java/cn/link56/company/service/CompanyUserService.java b/code/link56/link56-backend/src/main/java/cn/link56/company/service/CompanyUserService.java index 3a17a4b9..2552e9af 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/company/service/CompanyUserService.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/company/service/CompanyUserService.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.List; @Service public class CompanyUserService extends ServiceImpl { @@ -56,4 +57,10 @@ public class CompanyUserService extends ServiceImpl listByCompanyId(Long companyId){ + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(CompanyUserPO::getCompanyId,companyId); + + return companyUserMapper.selectList(queryWrapper); + } } diff --git a/code/link56/link56-backend/src/main/resources/cn/link56/company/mapper/CompanyMapper.xml b/code/link56/link56-backend/src/main/resources/cn/link56/company/mapper/CompanyMapper.xml index 5b717486..a1aa5904 100644 --- a/code/link56/link56-backend/src/main/resources/cn/link56/company/mapper/CompanyMapper.xml +++ b/code/link56/link56-backend/src/main/resources/cn/link56/company/mapper/CompanyMapper.xml @@ -19,7 +19,7 @@ LEFT JOIN b_company c ON c.b_canuse = '1' AND c.b_recommend = '1' - AND c.b_address LIKE '%' + shi.b_name + '%' + AND c.b_area LIKE '%' + shi.b_name + '%' WHERE shi.b_canuse = '1' diff --git a/code/link56/link56-frontend-new/package.json b/code/link56/link56-frontend-new/package.json index 65e11d17..af2fc5a7 100644 --- a/code/link56/link56-frontend-new/package.json +++ b/code/link56/link56-frontend-new/package.json @@ -12,6 +12,8 @@ }, "dependencies": { "@element-plus/icons-vue": "^2.3.2", + "@wangeditor/editor": "^5.1.23", + "@wangeditor/editor-for-vue": "^5.1.12", "axios": "^1.13.2", "dayjs": "^1.11.19", "element-plus": "^2.12.0", diff --git a/code/link56/link56-frontend-new/pnpm-lock.yaml b/code/link56/link56-frontend-new/pnpm-lock.yaml index 38eabf98..03856b4b 100644 --- a/code/link56/link56-frontend-new/pnpm-lock.yaml +++ b/code/link56/link56-frontend-new/pnpm-lock.yaml @@ -11,6 +11,12 @@ importers: '@element-plus/icons-vue': specifier: ^2.3.2 version: 2.3.2(vue@3.5.25(typescript@5.9.3)) + '@wangeditor/editor': + specifier: ^5.1.23 + version: 5.1.23 + '@wangeditor/editor-for-vue': + specifier: ^5.1.12 + version: 5.1.12(@wangeditor/editor@5.1.23)(vue@3.5.25(typescript@5.9.3)) axios: specifier: ^1.13.2 version: 1.13.2 @@ -149,6 +155,10 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + engines: {node: '>=6.9.0'} + '@babel/types@7.28.5': resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} engines: {node: '>=6.9.0'} @@ -686,12 +696,18 @@ packages: '@sxzz/popperjs-es@2.11.7': resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==} + '@transloadit/prettier-bytes@0.0.7': + resolution: {integrity: sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==} + '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/event-emitter@0.3.5': + resolution: {integrity: sha512-zx2/Gg0Eg7gwEiOIIh5w9TrhKKTeQh7CPCOPNc0el4pLSwzebA8SmnHwZs2dWlLONvyulykSwGSQxQHLhjGLvQ==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -775,6 +791,23 @@ packages: resolution: {integrity: sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@uppy/companion-client@2.2.2': + resolution: {integrity: sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==} + + '@uppy/core@2.3.4': + resolution: {integrity: sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==} + + '@uppy/store-default@2.1.1': + resolution: {integrity: sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ==} + + '@uppy/utils@4.1.3': + resolution: {integrity: sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==} + + '@uppy/xhr-upload@2.1.3': + resolution: {integrity: sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==} + peerDependencies: + '@uppy/core': ^2.3.3 + '@vitejs/plugin-vue@6.0.2': resolution: {integrity: sha512-iHmwV3QcVGGvSC1BG5bZ4z6iwa1SOpAPWmnjOErd4Ske+lZua5K9TtAVdx0gMBClJ28DViCbSmZitjWZsWO3LA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -873,6 +906,93 @@ packages: '@vueuse/shared@9.13.0': resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} + '@wangeditor/basic-modules@1.1.7': + resolution: {integrity: sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + lodash.throttle: ^4.1.1 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/code-highlight@1.0.3': + resolution: {integrity: sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/core@1.1.19': + resolution: {integrity: sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==} + peerDependencies: + '@uppy/core': ^2.1.1 + '@uppy/xhr-upload': ^2.0.3 + dom7: ^3.0.0 + is-hotkey: ^0.2.0 + lodash.camelcase: ^4.3.0 + lodash.clonedeep: ^4.5.0 + lodash.debounce: ^4.0.8 + lodash.foreach: ^4.5.0 + lodash.isequal: ^4.5.0 + lodash.throttle: ^4.1.1 + lodash.toarray: ^4.4.0 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/editor-for-vue@5.1.12': + resolution: {integrity: sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==} + peerDependencies: + '@wangeditor/editor': '>=5.1.0' + vue: ^3.0.5 + + '@wangeditor/editor@5.1.23': + resolution: {integrity: sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==} + + '@wangeditor/list-module@1.0.5': + resolution: {integrity: sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/table-module@1.1.4': + resolution: {integrity: sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + lodash.isequal: ^4.5.0 + lodash.throttle: ^4.1.1 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/upload-image-module@1.0.2': + resolution: {integrity: sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==} + peerDependencies: + '@uppy/core': ^2.0.3 + '@uppy/xhr-upload': ^2.0.3 + '@wangeditor/basic-modules': 1.x + '@wangeditor/core': 1.x + dom7: ^3.0.0 + lodash.foreach: ^4.5.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/video-module@1.1.4': + resolution: {integrity: sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==} + peerDependencies: + '@uppy/core': ^2.1.4 + '@uppy/xhr-upload': ^2.0.7 + '@wangeditor/core': 1.x + dom7: ^3.0.0 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -1000,6 +1120,9 @@ packages: resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} engines: {node: '>= 12.0.0'} + compute-scroll-into-view@1.0.20: + resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -1028,6 +1151,10 @@ packages: csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + d@1.0.2: + resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} + engines: {node: '>=0.12'} + dayjs@1.11.19: resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} @@ -1069,6 +1196,9 @@ packages: resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dom7@3.0.0: + resolution: {integrity: sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==} + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -1109,6 +1239,17 @@ packages: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} + es5-ext@0.10.64: + resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} + engines: {node: '>=0.10'} + + es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + + es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} + engines: {node: '>=0.12'} + esbuild@0.25.12: resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} engines: {node: '>=18'} @@ -1313,6 +1454,10 @@ packages: jiti: optional: true + esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} + engines: {node: '>=0.10'} + espree@10.4.0: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1340,9 +1485,15 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + exsolve@1.0.8: resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} + ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -1480,6 +1631,12 @@ packages: html-entities@2.6.0: resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} + html-void-elements@2.0.1: + resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} + + i18next@20.6.1: + resolution: {integrity: sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==} + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -1488,6 +1645,9 @@ packages: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} + immer@9.0.21: + resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + immutable@5.1.4: resolution: {integrity: sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==} @@ -1515,10 +1675,20 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-hotkey@0.2.0: + resolution: {integrity: sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==} + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + is-url@1.2.4: + resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} + is-what@5.5.0: resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} engines: {node: '>=18'} @@ -1585,9 +1755,31 @@ packages: lodash: '*' lodash-es: '*' + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.foreach@4.5.0: + resolution: {integrity: sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + + lodash.toarray@4.4.0: + resolution: {integrity: sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==} + lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -1738,6 +1930,9 @@ packages: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} + mime-match@1.0.2: + resolution: {integrity: sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==} + mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} @@ -1761,6 +1956,9 @@ packages: muggle-string@0.4.1: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + namespace-emitter@2.0.1: + resolution: {integrity: sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==} + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -1773,6 +1971,9 @@ packages: resolution: {integrity: sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==} engines: {node: '>=18'} + next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} @@ -1889,6 +2090,9 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} + preact@10.28.0: + resolution: {integrity: sha512-rytDAoiXr3+t6OIP3WGlDd0ouCUG1iCWzkcY3++Nreuoi17y6T5i/zRhe6uYfoVcxq6YU+sBtJouuRDsq8vvqA==} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -1902,6 +2106,10 @@ packages: engines: {node: '>=14'} hasBin: true + prismjs@1.30.0: + resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} + engines: {node: '>=6'} + proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} @@ -1956,6 +2164,9 @@ packages: engines: {node: '>=14.0.0'} hasBin: true + scroll-into-view-if-needed@2.2.31: + resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} + scslre@0.3.0: resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} engines: {node: ^14.0.0 || >=16.0.0} @@ -1976,6 +2187,18 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + slate-history@0.66.0: + resolution: {integrity: sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==} + peerDependencies: + slate: '>=0.65.3' + + slate@0.72.8: + resolution: {integrity: sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==} + + snabbdom@3.6.3: + resolution: {integrity: sha512-W2lHLLw2qR2Vv0DcMmcxXqcfdBaIcoN+y/86SmHv8fn4DazEQSH6KN3TjZcWvwujW56OHiiirsbHWZb4vx/0fg==} + engines: {node: '>=12.17.0'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -1993,6 +2216,9 @@ packages: resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} engines: {node: '>=0.10.0'} + ssr-window@3.0.0: + resolution: {integrity: sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==} + strip-indent@4.1.1: resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==} engines: {node: '>=12'} @@ -2017,6 +2243,9 @@ packages: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} + tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + tinyexec@1.0.2: resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} engines: {node: '>=18'} @@ -2052,6 +2281,9 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} + type@2.7.3: + resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} + typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} @@ -2218,6 +2450,9 @@ packages: engines: {node: '>= 8'} hasBin: true + wildcard@1.1.2: + resolution: {integrity: sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==} + word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -2305,6 +2540,8 @@ snapshots: dependencies: '@babel/types': 7.28.5 + '@babel/runtime@7.28.4': {} + '@babel/types@7.28.5': dependencies: '@babel/helper-string-parser': 7.27.1 @@ -2705,12 +2942,16 @@ snapshots: '@sxzz/popperjs-es@2.11.7': {} + '@transloadit/prettier-bytes@0.0.7': {} + '@types/debug@4.1.12': dependencies: '@types/ms': 2.1.0 '@types/estree@1.0.8': {} + '@types/event-emitter@0.3.5': {} + '@types/json-schema@7.0.15': {} '@types/lodash-es@4.17.12': @@ -2824,6 +3065,35 @@ snapshots: '@typescript-eslint/types': 8.49.0 eslint-visitor-keys: 4.2.1 + '@uppy/companion-client@2.2.2': + dependencies: + '@uppy/utils': 4.1.3 + namespace-emitter: 2.0.1 + + '@uppy/core@2.3.4': + dependencies: + '@transloadit/prettier-bytes': 0.0.7 + '@uppy/store-default': 2.1.1 + '@uppy/utils': 4.1.3 + lodash.throttle: 4.1.1 + mime-match: 1.0.2 + namespace-emitter: 2.0.1 + nanoid: 3.3.11 + preact: 10.28.0 + + '@uppy/store-default@2.1.1': {} + + '@uppy/utils@4.1.3': + dependencies: + lodash.throttle: 4.1.1 + + '@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4)': + dependencies: + '@uppy/companion-client': 2.2.2 + '@uppy/core': 2.3.4 + '@uppy/utils': 4.1.3 + nanoid: 3.3.11 + '@vitejs/plugin-vue@6.0.2(vite@7.2.7(@types/node@24.10.3)(sass@1.96.0)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.50 @@ -2962,6 +3232,114 @@ snapshots: - '@vue/composition-api' - vue + '@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)': + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3) + dom7: 3.0.0 + is-url: 1.2.4 + lodash.throttle: 4.1.1 + nanoid: 3.3.11 + slate: 0.72.8 + snabbdom: 3.6.3 + + '@wangeditor/code-highlight@1.0.3(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.3)': + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3) + dom7: 3.0.0 + prismjs: 1.30.0 + slate: 0.72.8 + snabbdom: 3.6.3 + + '@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)': + dependencies: + '@types/event-emitter': 0.3.5 + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + dom7: 3.0.0 + event-emitter: 0.3.5 + html-void-elements: 2.0.1 + i18next: 20.6.1 + is-hotkey: 0.2.0 + lodash.camelcase: 4.3.0 + lodash.clonedeep: 4.5.0 + lodash.debounce: 4.0.8 + lodash.foreach: 4.5.0 + lodash.isequal: 4.5.0 + lodash.throttle: 4.1.1 + lodash.toarray: 4.4.0 + nanoid: 3.3.11 + scroll-into-view-if-needed: 2.2.31 + slate: 0.72.8 + slate-history: 0.66.0(slate@0.72.8) + snabbdom: 3.6.3 + + '@wangeditor/editor-for-vue@5.1.12(@wangeditor/editor@5.1.23)(vue@3.5.25(typescript@5.9.3))': + dependencies: + '@wangeditor/editor': 5.1.23 + vue: 3.5.25(typescript@5.9.3) + + '@wangeditor/editor@5.1.23': + dependencies: + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3) + '@wangeditor/code-highlight': 1.0.3(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.3) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3) + '@wangeditor/list-module': 1.0.5(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.3) + '@wangeditor/table-module': 1.1.4(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3) + '@wangeditor/upload-image-module': 1.0.2(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.foreach@4.5.0)(slate@0.72.8)(snabbdom@3.6.3) + '@wangeditor/video-module': 1.1.4(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3) + dom7: 3.0.0 + is-hotkey: 0.2.0 + lodash.camelcase: 4.3.0 + lodash.clonedeep: 4.5.0 + lodash.debounce: 4.0.8 + lodash.foreach: 4.5.0 + lodash.isequal: 4.5.0 + lodash.throttle: 4.1.1 + lodash.toarray: 4.4.0 + nanoid: 3.3.11 + slate: 0.72.8 + snabbdom: 3.6.3 + + '@wangeditor/list-module@1.0.5(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.3)': + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3) + dom7: 3.0.0 + slate: 0.72.8 + snabbdom: 3.6.3 + + '@wangeditor/table-module@1.1.4(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)': + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3) + dom7: 3.0.0 + lodash.isequal: 4.5.0 + lodash.throttle: 4.1.1 + nanoid: 3.3.11 + slate: 0.72.8 + snabbdom: 3.6.3 + + '@wangeditor/upload-image-module@1.0.2(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.foreach@4.5.0)(slate@0.72.8)(snabbdom@3.6.3)': + dependencies: + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3) + dom7: 3.0.0 + lodash.foreach: 4.5.0 + slate: 0.72.8 + snabbdom: 3.6.3 + + '@wangeditor/video-module@1.1.4(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3))(dom7@3.0.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3)': + dependencies: + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.3) + dom7: 3.0.0 + nanoid: 3.3.11 + slate: 0.72.8 + snabbdom: 3.6.3 + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -3075,6 +3453,8 @@ snapshots: comment-parser@1.4.1: {} + compute-scroll-into-view@1.0.20: {} + concat-map@0.0.1: {} confbox@0.1.8: {} @@ -3099,6 +3479,11 @@ snapshots: csstype@3.2.3: {} + d@1.0.2: + dependencies: + es5-ext: 0.10.64 + type: 2.7.3 + dayjs@1.11.19: {} debug@4.4.3: @@ -3126,6 +3511,10 @@ snapshots: diff-sequences@27.5.1: {} + dom7@3.0.0: + dependencies: + ssr-window: 3.0.0 + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -3178,6 +3567,24 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.2 + es5-ext@0.10.64: + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + esniff: 2.0.1 + next-tick: 1.1.0 + + es6-iterator@2.0.3: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-symbol: 3.1.4 + + es6-symbol@3.1.4: + dependencies: + d: 1.0.2 + ext: 1.7.0 + esbuild@0.25.12: optionalDependencies: '@esbuild/aix-ppc64': 0.25.12 @@ -3487,6 +3894,13 @@ snapshots: transitivePeerDependencies: - supports-color + esniff@2.0.1: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-emitter: 0.3.5 + type: 2.7.3 + espree@10.4.0: dependencies: acorn: 8.15.0 @@ -3513,8 +3927,17 @@ snapshots: esutils@2.0.3: {} + event-emitter@0.3.5: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + exsolve@1.0.8: {} + ext@1.7.0: + dependencies: + type: 2.7.3 + fast-deep-equal@3.1.3: {} fast-diff@1.3.0: {} @@ -3629,10 +4052,18 @@ snapshots: html-entities@2.6.0: {} + html-void-elements@2.0.1: {} + + i18next@20.6.1: + dependencies: + '@babel/runtime': 7.28.4 + ignore@5.3.2: {} ignore@7.0.5: {} + immer@9.0.21: {} + immutable@5.1.4: {} import-fresh@3.3.1: @@ -3654,9 +4085,15 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-hotkey@0.2.0: {} + is-number@7.0.0: optional: true + is-plain-object@5.0.0: {} + + is-url@1.2.4: {} + is-what@5.5.0: {} isexe@2.0.0: {} @@ -3713,8 +4150,22 @@ snapshots: lodash: 4.17.21 lodash-es: 4.17.21 + lodash.camelcase@4.3.0: {} + + lodash.clonedeep@4.5.0: {} + + lodash.debounce@4.0.8: {} + + lodash.foreach@4.5.0: {} + + lodash.isequal@4.5.0: {} + lodash.merge@4.6.2: {} + lodash.throttle@4.1.1: {} + + lodash.toarray@4.4.0: {} + lodash@4.17.21: {} longest-streak@3.1.0: {} @@ -4048,6 +4499,10 @@ snapshots: mime-db@1.52.0: {} + mime-match@1.0.2: + dependencies: + wildcard: 1.1.2 + mime-types@2.1.35: dependencies: mime-db: 1.52.0 @@ -4073,12 +4528,16 @@ snapshots: muggle-string@0.4.1: {} + namespace-emitter@2.0.1: {} + nanoid@3.3.11: {} natural-compare@1.4.0: {} natural-orderby@5.0.0: {} + next-tick@1.1.0: {} + node-addon-api@7.1.1: optional: true @@ -4182,6 +4641,8 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + preact@10.28.0: {} + prelude-ls@1.2.1: {} prettier-linter-helpers@1.0.0: @@ -4190,6 +4651,8 @@ snapshots: prettier@3.7.4: {} + prismjs@1.30.0: {} + proxy-from-env@1.1.0: {} punycode@2.3.1: {} @@ -4257,6 +4720,10 @@ snapshots: optionalDependencies: '@parcel/watcher': 2.5.1 + scroll-into-view-if-needed@2.2.31: + dependencies: + compute-scroll-into-view: 1.0.20 + scslre@0.3.0: dependencies: '@eslint-community/regexpp': 4.12.2 @@ -4273,6 +4740,19 @@ snapshots: sisteransi@1.0.5: {} + slate-history@0.66.0(slate@0.72.8): + dependencies: + is-plain-object: 5.0.0 + slate: 0.72.8 + + slate@0.72.8: + dependencies: + immer: 9.0.21 + is-plain-object: 5.0.0 + tiny-warning: 1.0.3 + + snabbdom@3.6.3: {} + source-map-js@1.2.1: {} spdx-exceptions@2.5.0: {} @@ -4286,6 +4766,8 @@ snapshots: speakingurl@14.0.1: {} + ssr-window@3.0.0: {} + strip-indent@4.1.1: {} strip-json-comments@3.1.1: {} @@ -4304,6 +4786,8 @@ snapshots: tapable@2.3.0: {} + tiny-warning@1.0.3: {} + tinyexec@1.0.2: {} tinyglobby@0.2.15: @@ -4338,6 +4822,8 @@ snapshots: dependencies: prelude-ls: 1.2.1 + type@2.7.3: {} + typescript@5.9.3: {} ufo@1.6.1: {} @@ -4474,6 +4960,8 @@ snapshots: dependencies: isexe: 2.0.0 + wildcard@1.1.2: {} + word-wrap@1.2.5: {} xml-name-validator@4.0.0: {} diff --git a/code/link56/link56-frontend-new/src/components/QueryCompany.vue b/code/link56/link56-frontend-new/src/components/QueryCompany.vue index bd4e566e..1d733ca7 100644 --- a/code/link56/link56-frontend-new/src/components/QueryCompany.vue +++ b/code/link56/link56-frontend-new/src/components/QueryCompany.vue @@ -3,7 +3,15 @@ import { useCommonStore } from '@/store/common' import AreaSelect from './AreaSelect.vue' import IndustrySelect from './IndustrySelect.vue' +const emit = defineEmits<{ + (e: 'search'): void +}>() + const commonStore = useCommonStore() + +function onSearch() { + emit('search') +}