فهرست منبع

Merge remote-tracking branch 'origin/master'

lizeyu 1 سال پیش
والد
کامیت
a68d939806
53فایلهای تغییر یافته به همراه1285 افزوده شده و 328 حذف شده
  1. 66 53
      doc/就业驿站管理系统.pdb
  2. 61 50
      doc/就业驿站管理系统.pdm
  3. 5 4
      doc/待更新脚本
  4. 10 0
      doc/正式平台发布Url地址配置
  5. 1 1
      h5app/public/appconfig.json
  6. 105 0
      h5app/src/components/areaPicker.vue
  7. 35 8
      h5app/src/router/index.ts
  8. 1 1
      h5app/src/utils/config.ts
  9. 1 1
      h5app/src/views/pages/jobhunt/edit.vue
  10. 5 3
      h5app/src/views/pages/userQrCode/index.vue
  11. 38 39
      h5app/src/views/pages/work/log/list.vue
  12. 1 1
      h5app/src/views/pages/work/task/list.vue
  13. 158 0
      h5app/src/views/pages/wxMessage/companyInfo.vue
  14. 192 0
      h5app/src/views/pages/wxMessage/jobUserInfo.vue
  15. 7 16
      h5app/src/views/sapp/tabMain.vue
  16. 6 0
      h5app/src/views/sapp/tabWork.vue
  17. 3 1
      src/main/java/com/hz/employmentsite/controller/baseSettings/SiteUserController.java
  18. 2 2
      src/main/java/com/hz/employmentsite/controller/companyService/CompanyController.java
  19. 8 11
      src/main/java/com/hz/employmentsite/controller/companyService/PostController.java
  20. 1 1
      src/main/java/com/hz/employmentsite/mapper/cquery/PostCQuery.java
  21. 4 4
      src/main/java/com/hz/employmentsite/model/PcCompany.java
  22. 10 20
      src/main/java/com/hz/employmentsite/model/PcCompanyExample.java
  23. 10 0
      src/main/java/com/hz/employmentsite/model/WxMessagestatus.java
  24. 70 0
      src/main/java/com/hz/employmentsite/model/WxMessagestatusExample.java
  25. 10 4
      src/main/java/com/hz/employmentsite/services/impl/WechatServiceImpl.java
  26. 26 8
      src/main/java/com/hz/employmentsite/services/impl/baseSettings/SiteInfoImpl.java
  27. 11 1
      src/main/java/com/hz/employmentsite/services/impl/companyService/CompanyServiceImpl.java
  28. 66 13
      src/main/java/com/hz/employmentsite/services/impl/companyService/PostServiceImpl.java
  29. 1 1
      src/main/java/com/hz/employmentsite/services/impl/jobUserManager/RecommendMgtServiceImpl.java
  30. 5 2
      src/main/java/com/hz/employmentsite/services/impl/system/CityAreaImpl.java
  31. 2 2
      src/main/java/com/hz/employmentsite/services/service/companyService/PostService.java
  32. 4 1
      src/main/java/com/hz/employmentsite/vo/companyService/CompanyVo.java
  33. 2 0
      src/main/java/com/hz/employmentsite/vo/companyService/PostVo.java
  34. 1 1
      src/main/resources/application.yml
  35. 0 1
      src/main/resources/generatorConfig.xml
  36. 9 9
      src/main/resources/mapping/PcCompanyMapper.xml
  37. 24 7
      src/main/resources/mapping/WxMessagestatusMapper.xml
  38. 0 3
      src/main/resources/mapping/cquery/PostCQuery.xml
  39. BIN
      src/main/resources/static/doc/template/企业信息导入模板.xlsx
  40. BIN
      src/main/resources/static/doc/template/岗位信息导入模板.xlsx
  41. 3 3
      vue/src/api/companyService/company.ts
  42. 2 2
      vue/src/api/companyService/post.ts
  43. 2 2
      vue/src/components/basic/excel/importExcel/importExcel.vue
  44. 3 1
      vue/src/router/asyncModules/companyService.ts
  45. 61 1
      vue/src/views/baseSettings/siteInfo/detail.vue
  46. 95 0
      vue/src/views/companyService/company/detail.vue
  47. 2 2
      vue/src/views/companyService/company/edit.vue
  48. 20 15
      vue/src/views/companyService/company/index.vue
  49. 2 2
      vue/src/views/companyService/company/show.vue
  50. 97 0
      vue/src/views/companyService/post/detail.vue
  51. 24 13
      vue/src/views/companyService/post/edit.vue
  52. 12 15
      vue/src/views/companyService/post/index.vue
  53. 1 3
      vue/src/views/jobUserManager/jobhunt/edit.vue

+ 66 - 53
doc/就业驿站管理系统.pdb

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?PowerDesigner AppLocale="UTF16" ID="{2D964471-9870-48BE-90E9-524D40D03B42}" Label="" LastModificationDate="1713443051" Name="就业驿站管理系统" Objects="512" Symbols="45" Target="MySQL 5.0" Type="{CDE44E21-9669-11D1-9914-006097355D9B}" signature="PDM_DATA_MODEL_XML" version="16.0.0.3514"?>
+<?PowerDesigner AppLocale="UTF16" ID="{2D964471-9870-48BE-90E9-524D40D03B42}" Label="" LastModificationDate="1713491209" Name="就业驿站管理系统" Objects="512" Symbols="45" Target="MySQL 5.0" Type="{CDE44E21-9669-11D1-9914-006097355D9B}" signature="PDM_DATA_MODEL_XML" version="16.0.0.3514"?>
 <!-- do not edit this file -->
 
 <Model xmlns:a="attribute" xmlns:c="collection" xmlns:o="object">
@@ -5329,7 +5329,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:CreationDate>1713436879</a:CreationDate>
 <a:ModificationDate>1713437121</a:ModificationDate>
 <a:IconMode>-1</a:IconMode>
-<a:Rect>((-5963,-32235), (5958,-20922))</a:Rect>
+<a:Rect>((-6079,-32722), (6074,-20435))</a:Rect>
 <a:LineColor>16512</a:LineColor>
 <a:FillColor>166354</a:FillColor>
 <a:ShadowColor>12632256</a:ShadowColor>
@@ -9214,7 +9214,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:Code>wx_messageStatus</a:Code>
 <a:CreationDate>1713436879</a:CreationDate>
 <a:Creator>bowin90</a:Creator>
-<a:ModificationDate>1713437237</a:ModificationDate>
+<a:ModificationDate>1713491204</a:ModificationDate>
 <a:Modifier>bowin90</a:Modifier>
 <a:TotalSavingCurrency/>
 <c:Columns>
@@ -9267,6 +9267,17 @@ LABL 0 Arial,8,N</a:FontList>
 <a:DataType>text</a:DataType>
 </o:Column>
 <o:Column Id="o417">
+<a:ObjectID>AC18E990-27B9-4F67-A16C-23925A51DCFA</a:ObjectID>
+<a:Name>url</a:Name>
+<a:Code>url</a:Code>
+<a:CreationDate>1713491179</a:CreationDate>
+<a:Creator>bowin90</a:Creator>
+<a:ModificationDate>1713491209</a:ModificationDate>
+<a:Modifier>bowin90</a:Modifier>
+<a:DataType>varchar1000)</a:DataType>
+<a:Length>1000</a:Length>
+</o:Column>
+<o:Column Id="o418">
 <a:ObjectID>C2AE553A-6601-4B06-B346-50EE169BE412</a:ObjectID>
 <a:Name>推送时间</a:Name>
 <a:Code>sendTime</a:Code>
@@ -9277,7 +9288,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:Comment>推送时间</a:Comment>
 <a:DataType>datetime</a:DataType>
 </o:Column>
-<o:Column Id="o418">
+<o:Column Id="o419">
 <a:ObjectID>16E88D0D-B4B6-43B2-A16E-7C2A64E17A25</a:ObjectID>
 <a:Name>状态</a:Name>
 <a:Code>recordStatus</a:Code>
@@ -9288,7 +9299,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:Comment>状态,0未推送,1已推送</a:Comment>
 <a:DataType>int</a:DataType>
 </o:Column>
-<o:Column Id="o419">
+<o:Column Id="o420">
 <a:ObjectID>73ED08AC-7B97-4372-A56C-EDC66E8CC4AB</a:ObjectID>
 <a:Name>创建人</a:Name>
 <a:Code>createUserID</a:Code>
@@ -9300,7 +9311,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:DataType>varchar(50)</a:DataType>
 <a:Length>50</a:Length>
 </o:Column>
-<o:Column Id="o420">
+<o:Column Id="o421">
 <a:ObjectID>771B6440-956C-41CF-A3C9-F67876E4936A</a:ObjectID>
 <a:Name>创建时间</a:Name>
 <a:Code>createTime</a:Code>
@@ -9311,7 +9322,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:Comment>创建时间</a:Comment>
 <a:DataType>datetime</a:DataType>
 </o:Column>
-<o:Column Id="o421">
+<o:Column Id="o422">
 <a:ObjectID>3A8D896F-2710-4FB6-8FC6-3D7DAA2E2B47</a:ObjectID>
 <a:Name>修改人</a:Name>
 <a:Code>modifyUserID</a:Code>
@@ -9323,7 +9334,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:DataType>varchar(50)</a:DataType>
 <a:Length>50</a:Length>
 </o:Column>
-<o:Column Id="o422">
+<o:Column Id="o423">
 <a:ObjectID>7C39DC5E-DB29-459A-A803-CF3EAABD4143</a:ObjectID>
 <a:Name>修改时间</a:Name>
 <a:Code>modifyTime</a:Code>
@@ -9336,7 +9347,7 @@ LABL 0 Arial,8,N</a:FontList>
 </o:Column>
 </c:Columns>
 <c:Keys>
-<o:Key Id="o423">
+<o:Key Id="o424">
 <a:ObjectID>B8FCFC4F-8EE5-4A53-91B0-10071641EE3C</a:ObjectID>
 <a:Name>Key_1</a:Name>
 <a:Code>Key_1</a:Code>
@@ -9350,7 +9361,7 @@ LABL 0 Arial,8,N</a:FontList>
 </o:Key>
 </c:Keys>
 <c:PrimaryKey>
-<o:Key Ref="o423"/>
+<o:Key Ref="o424"/>
 </c:PrimaryKey>
 </o:Table>
 <o:Table Id="o93">
@@ -9363,7 +9374,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:Modifier>bowin90</a:Modifier>
 <a:TotalSavingCurrency/>
 <c:Columns>
-<o:Column Id="o424">
+<o:Column Id="o425">
 <a:ObjectID>C7465F14-9DE1-4590-B922-6BA638A38A3D</a:ObjectID>
 <a:Name>微信消息模板编码</a:Name>
 <a:Code>templateNo</a:Code>
@@ -9376,7 +9387,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:Length>10</a:Length>
 <a:Column.Mandatory>1</a:Column.Mandatory>
 </o:Column>
-<o:Column Id="o425">
+<o:Column Id="o426">
 <a:ObjectID>9454C1FA-0CE3-4BA4-9448-E005B1D204B0</a:ObjectID>
 <a:Name>微信消息模板名称</a:Name>
 <a:Code>templateName</a:Code>
@@ -9388,7 +9399,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:DataType>varchar(50)</a:DataType>
 <a:Length>50</a:Length>
 </o:Column>
-<o:Column Id="o426">
+<o:Column Id="o427">
 <a:ObjectID>907393F7-CDCA-42B7-AA04-B541C0EE497B</a:ObjectID>
 <a:Name>微信消息模板ID</a:Name>
 <a:Code>templateId</a:Code>
@@ -9400,7 +9411,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:DataType>varchar(300)</a:DataType>
 <a:Length>300</a:Length>
 </o:Column>
-<o:Column Id="o427">
+<o:Column Id="o428">
 <a:ObjectID>8600CCC7-2960-4703-9562-AE96E2CF3F97</a:ObjectID>
 <a:Name>模板跳转url</a:Name>
 <a:Code>url</a:Code>
@@ -9414,7 +9425,7 @@ LABL 0 Arial,8,N</a:FontList>
 </o:Column>
 </c:Columns>
 <c:Keys>
-<o:Key Id="o428">
+<o:Key Id="o429">
 <a:ObjectID>F1B3FF1D-0B67-4C0A-860E-BB3EFCFBCA1F</a:ObjectID>
 <a:Name>Key_1</a:Name>
 <a:Code>Key_1</a:Code>
@@ -9423,12 +9434,12 @@ LABL 0 Arial,8,N</a:FontList>
 <a:ModificationDate>1713441468</a:ModificationDate>
 <a:Modifier>bowin90</a:Modifier>
 <c:Key.Columns>
-<o:Column Ref="o424"/>
+<o:Column Ref="o425"/>
 </c:Key.Columns>
 </o:Key>
 </c:Keys>
 <c:PrimaryKey>
-<o:Key Ref="o428"/>
+<o:Key Ref="o429"/>
 </c:PrimaryKey>
 </o:Table>
 <o:Table Id="o94">
@@ -9437,11 +9448,11 @@ LABL 0 Arial,8,N</a:FontList>
 <a:Code>wx_messageTempSetting_field</a:Code>
 <a:CreationDate>1713442884</a:CreationDate>
 <a:Creator>bowin90</a:Creator>
-<a:ModificationDate>1713443011</a:ModificationDate>
+<a:ModificationDate>1713443103</a:ModificationDate>
 <a:Modifier>bowin90</a:Modifier>
 <a:TotalSavingCurrency/>
 <c:Columns>
-<o:Column Id="o429">
+<o:Column Id="o430">
 <a:ObjectID>F5E9C7FD-BC70-4A21-B07D-072CDA88A141</a:ObjectID>
 <a:Name>微信消息模板编码</a:Name>
 <a:Code>templateNo</a:Code>
@@ -9454,19 +9465,20 @@ LABL 0 Arial,8,N</a:FontList>
 <a:Length>10</a:Length>
 <a:Column.Mandatory>1</a:Column.Mandatory>
 </o:Column>
-<o:Column Id="o430">
+<o:Column Id="o431">
 <a:ObjectID>C1D08037-2874-40A3-BCF2-FF8CE3920A41</a:ObjectID>
 <a:Name>wxFieldName</a:Name>
 <a:Code>wxFieldName</a:Code>
 <a:CreationDate>1713442884</a:CreationDate>
 <a:Creator>bowin90</a:Creator>
-<a:ModificationDate>1713443011</a:ModificationDate>
+<a:ModificationDate>1713443103</a:ModificationDate>
 <a:Modifier>bowin90</a:Modifier>
 <a:Comment>微信字段名称</a:Comment>
 <a:DataType>varchar(30)</a:DataType>
 <a:Length>30</a:Length>
+<a:Column.Mandatory>1</a:Column.Mandatory>
 </o:Column>
-<o:Column Id="o431">
+<o:Column Id="o432">
 <a:ObjectID>8CC02B30-DA95-4D69-8223-4F4DDCAA310E</a:ObjectID>
 <a:Name>sysFieldName</a:Name>
 <a:Code>sysFieldName</a:Code>
@@ -9480,21 +9492,22 @@ LABL 0 Arial,8,N</a:FontList>
 </o:Column>
 </c:Columns>
 <c:Keys>
-<o:Key Id="o432">
+<o:Key Id="o433">
 <a:ObjectID>A9ECA0F3-2901-45AB-9B65-AEB7A716B0BA</a:ObjectID>
 <a:Name>Key_1</a:Name>
 <a:Code>Key_1</a:Code>
 <a:CreationDate>1713442884</a:CreationDate>
 <a:Creator>bowin90</a:Creator>
-<a:ModificationDate>1713443011</a:ModificationDate>
+<a:ModificationDate>1713443103</a:ModificationDate>
 <a:Modifier>bowin90</a:Modifier>
 <c:Key.Columns>
-<o:Column Ref="o429"/>
+<o:Column Ref="o430"/>
+<o:Column Ref="o431"/>
 </c:Key.Columns>
 </o:Key>
 </c:Keys>
 <c:PrimaryKey>
-<o:Key Ref="o432"/>
+<o:Key Ref="o433"/>
 </c:PrimaryKey>
 </o:Table>
 </c:Tables>
@@ -9520,7 +9533,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o127"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o433">
+<o:ReferenceJoin Id="o434">
 <a:ObjectID>54F04187-9C05-49AC-A2AE-0F6805B87FA6</a:ObjectID>
 <a:CreationDate>1700727651</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9556,7 +9569,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o112"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o434">
+<o:ReferenceJoin Id="o435">
 <a:ObjectID>1C1F4C11-0B3A-4093-A82E-6A9FD4FD25D0</a:ObjectID>
 <a:CreationDate>1700727797</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9592,7 +9605,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o112"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o435">
+<o:ReferenceJoin Id="o436">
 <a:ObjectID>40A0CA90-8614-4815-97AD-0EBD6F0B71D9</a:ObjectID>
 <a:CreationDate>1700730987</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9628,7 +9641,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o112"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o436">
+<o:ReferenceJoin Id="o437">
 <a:ObjectID>FB4FAA07-CE83-4FCA-A8D0-3EAF2B4D6E07</a:ObjectID>
 <a:CreationDate>1700731007</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9664,7 +9677,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o163"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o437">
+<o:ReferenceJoin Id="o438">
 <a:ObjectID>D517805A-E4C7-4403-8465-67312BEA0D62</a:ObjectID>
 <a:CreationDate>1700731026</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9700,7 +9713,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o270"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o438">
+<o:ReferenceJoin Id="o439">
 <a:ObjectID>7A61F341-556C-4479-A342-A7646603F9F3</a:ObjectID>
 <a:CreationDate>1700731151</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9736,7 +9749,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o221"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o439">
+<o:ReferenceJoin Id="o440">
 <a:ObjectID>690001A1-24C5-4BB0-860C-27E191E15580</a:ObjectID>
 <a:CreationDate>1700731191</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9772,7 +9785,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o112"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o440">
+<o:ReferenceJoin Id="o441">
 <a:ObjectID>0B8B962D-B921-4C57-9B91-8C15F33BED75</a:ObjectID>
 <a:CreationDate>1700731590</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9808,7 +9821,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o270"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o441">
+<o:ReferenceJoin Id="o442">
 <a:ObjectID>CF00EFE5-091D-4B44-9BC6-78E0E41801E0</a:ObjectID>
 <a:CreationDate>1700731650</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9844,7 +9857,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o270"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o442">
+<o:ReferenceJoin Id="o443">
 <a:ObjectID>451F9C5E-5174-4834-8447-8BFBF152415E</a:ObjectID>
 <a:CreationDate>1700731691</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9880,7 +9893,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o270"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o443">
+<o:ReferenceJoin Id="o444">
 <a:ObjectID>348ADE0B-66DB-4664-989D-92DEC0AF1BCD</a:ObjectID>
 <a:CreationDate>1700731736</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9916,7 +9929,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o221"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o444">
+<o:ReferenceJoin Id="o445">
 <a:ObjectID>ABE69D56-EB12-409A-94E0-7250DB96B800</a:ObjectID>
 <a:CreationDate>1700731802</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9952,7 +9965,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o270"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o445">
+<o:ReferenceJoin Id="o446">
 <a:ObjectID>08EDE705-0BB1-4605-9A44-22080589321A</a:ObjectID>
 <a:CreationDate>1700731807</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9988,7 +10001,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o357"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o446">
+<o:ReferenceJoin Id="o447">
 <a:ObjectID>9948DA1B-7F6D-4BFD-944D-78B0BB942C79</a:ObjectID>
 <a:CreationDate>1701227667</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -10024,7 +10037,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o188"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o447">
+<o:ReferenceJoin Id="o448">
 <a:ObjectID>B70423BB-9802-457F-AE23-4CBF7D842F4E</a:ObjectID>
 <a:CreationDate>1701660221</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -10057,7 +10070,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Table Ref="o86"/>
 </c:ChildTable>
 <c:Joins>
-<o:ReferenceJoin Id="o448">
+<o:ReferenceJoin Id="o449">
 <a:ObjectID>5E4AB2FC-A524-45F4-9FE1-E46F2AFC9564</a:ObjectID>
 <a:CreationDate>1701661219</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -10093,7 +10106,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o112"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o449">
+<o:ReferenceJoin Id="o450">
 <a:ObjectID>3629C8A8-9FDA-42D0-825C-8B0997759790</a:ObjectID>
 <a:CreationDate>1701934197</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -10129,7 +10142,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o383"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o450">
+<o:ReferenceJoin Id="o451">
 <a:ObjectID>2374EDD3-256A-4744-B800-C1EAC2B3A8BA</a:ObjectID>
 <a:CreationDate>1703661458</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -10165,7 +10178,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o401"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o451">
+<o:ReferenceJoin Id="o452">
 <a:ObjectID>E869B4C1-58EF-4215-B2EE-702BC081782A</a:ObjectID>
 <a:CreationDate>1703661902</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -10201,7 +10214,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o221"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o452">
+<o:ReferenceJoin Id="o453">
 <a:ObjectID>9CCCDB43-37CB-4FEC-9728-5E1C604B931C</a:ObjectID>
 <a:CreationDate>1703727031</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -10237,7 +10250,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o412"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o453">
+<o:ReferenceJoin Id="o454">
 <a:ObjectID>69BDF72C-5720-4C82-887C-A74DF7E2A01D</a:ObjectID>
 <a:CreationDate>1713147069</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -10270,27 +10283,27 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Table Ref="o94"/>
 </c:ChildTable>
 <c:ParentKey>
-<o:Key Ref="o428"/>
+<o:Key Ref="o429"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o454">
+<o:ReferenceJoin Id="o455">
 <a:ObjectID>EA16D89A-A814-4871-B1D9-CCB394F38D05</a:ObjectID>
 <a:CreationDate>1713443051</a:CreationDate>
 <a:Creator>bowin90</a:Creator>
 <a:ModificationDate>1713443051</a:ModificationDate>
 <a:Modifier>bowin90</a:Modifier>
 <c:Object1>
-<o:Column Ref="o424"/>
+<o:Column Ref="o425"/>
 </c:Object1>
 <c:Object2>
-<o:Column Ref="o429"/>
+<o:Column Ref="o430"/>
 </c:Object2>
 </o:ReferenceJoin>
 </c:Joins>
 </o:Reference>
 </c:References>
 <c:DefaultGroups>
-<o:Group Id="o455">
+<o:Group Id="o456">
 <a:ObjectID>9EC8D640-B68B-4B22-9ECC-8604531BD893</a:ObjectID>
 <a:Name>PUBLIC</a:Name>
 <a:Code>PUBLIC</a:Code>
@@ -10301,7 +10314,7 @@ LABL 0 Arial,8,N</a:FontList>
 </o:Group>
 </c:DefaultGroups>
 <c:TargetModels>
-<o:TargetModel Id="o456">
+<o:TargetModel Id="o457">
 <a:ObjectID>F5495246-0AD0-47FB-87F5-4932E41412CF</a:ObjectID>
 <a:Name>MySQL 5.0</a:Name>
 <a:Code>MYSQL50</a:Code>

+ 61 - 50
doc/就业驿站管理系统.pdm

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?PowerDesigner AppLocale="UTF16" ID="{2D964471-9870-48BE-90E9-524D40D03B42}" Label="" LastModificationDate="1713443103" Name="就业驿站管理系统" Objects="512" Symbols="45" Target="MySQL 5.0" Type="{CDE44E21-9669-11D1-9914-006097355D9B}" signature="PDM_DATA_MODEL_XML" version="16.0.0.3514"?>
+<?PowerDesigner AppLocale="UTF16" ID="{2D964471-9870-48BE-90E9-524D40D03B42}" Label="" LastModificationDate="1713491246" Name="就业驿站管理系统" Objects="512" Symbols="45" Target="MySQL 5.0" Type="{CDE44E21-9669-11D1-9914-006097355D9B}" signature="PDM_DATA_MODEL_XML" version="16.0.0.3514"?>
 <!-- do not edit this file -->
 
 <Model xmlns:a="attribute" xmlns:c="collection" xmlns:o="object">
@@ -5329,7 +5329,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:CreationDate>1713436879</a:CreationDate>
 <a:ModificationDate>1713437121</a:ModificationDate>
 <a:IconMode>-1</a:IconMode>
-<a:Rect>((-5963,-32235), (5958,-20922))</a:Rect>
+<a:Rect>((-6196,-32722), (6188,-20435))</a:Rect>
 <a:LineColor>16512</a:LineColor>
 <a:FillColor>166354</a:FillColor>
 <a:ShadowColor>12632256</a:ShadowColor>
@@ -9214,7 +9214,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:Code>wx_messageStatus</a:Code>
 <a:CreationDate>1713436879</a:CreationDate>
 <a:Creator>bowin90</a:Creator>
-<a:ModificationDate>1713437237</a:ModificationDate>
+<a:ModificationDate>1713491204</a:ModificationDate>
 <a:Modifier>bowin90</a:Modifier>
 <a:TotalSavingCurrency/>
 <c:Columns>
@@ -9267,6 +9267,17 @@ LABL 0 Arial,8,N</a:FontList>
 <a:DataType>text</a:DataType>
 </o:Column>
 <o:Column Id="o417">
+<a:ObjectID>AC18E990-27B9-4F67-A16C-23925A51DCFA</a:ObjectID>
+<a:Name>url</a:Name>
+<a:Code>url</a:Code>
+<a:CreationDate>1713491179</a:CreationDate>
+<a:Creator>bowin90</a:Creator>
+<a:ModificationDate>1713491246</a:ModificationDate>
+<a:Modifier>bowin90</a:Modifier>
+<a:DataType>varchar(1000)</a:DataType>
+<a:Length>1000</a:Length>
+</o:Column>
+<o:Column Id="o418">
 <a:ObjectID>C2AE553A-6601-4B06-B346-50EE169BE412</a:ObjectID>
 <a:Name>推送时间</a:Name>
 <a:Code>sendTime</a:Code>
@@ -9277,7 +9288,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:Comment>推送时间</a:Comment>
 <a:DataType>datetime</a:DataType>
 </o:Column>
-<o:Column Id="o418">
+<o:Column Id="o419">
 <a:ObjectID>16E88D0D-B4B6-43B2-A16E-7C2A64E17A25</a:ObjectID>
 <a:Name>状态</a:Name>
 <a:Code>recordStatus</a:Code>
@@ -9288,7 +9299,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:Comment>状态,0未推送,1已推送</a:Comment>
 <a:DataType>int</a:DataType>
 </o:Column>
-<o:Column Id="o419">
+<o:Column Id="o420">
 <a:ObjectID>73ED08AC-7B97-4372-A56C-EDC66E8CC4AB</a:ObjectID>
 <a:Name>创建人</a:Name>
 <a:Code>createUserID</a:Code>
@@ -9300,7 +9311,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:DataType>varchar(50)</a:DataType>
 <a:Length>50</a:Length>
 </o:Column>
-<o:Column Id="o420">
+<o:Column Id="o421">
 <a:ObjectID>771B6440-956C-41CF-A3C9-F67876E4936A</a:ObjectID>
 <a:Name>创建时间</a:Name>
 <a:Code>createTime</a:Code>
@@ -9311,7 +9322,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:Comment>创建时间</a:Comment>
 <a:DataType>datetime</a:DataType>
 </o:Column>
-<o:Column Id="o421">
+<o:Column Id="o422">
 <a:ObjectID>3A8D896F-2710-4FB6-8FC6-3D7DAA2E2B47</a:ObjectID>
 <a:Name>修改人</a:Name>
 <a:Code>modifyUserID</a:Code>
@@ -9323,7 +9334,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:DataType>varchar(50)</a:DataType>
 <a:Length>50</a:Length>
 </o:Column>
-<o:Column Id="o422">
+<o:Column Id="o423">
 <a:ObjectID>7C39DC5E-DB29-459A-A803-CF3EAABD4143</a:ObjectID>
 <a:Name>修改时间</a:Name>
 <a:Code>modifyTime</a:Code>
@@ -9336,7 +9347,7 @@ LABL 0 Arial,8,N</a:FontList>
 </o:Column>
 </c:Columns>
 <c:Keys>
-<o:Key Id="o423">
+<o:Key Id="o424">
 <a:ObjectID>B8FCFC4F-8EE5-4A53-91B0-10071641EE3C</a:ObjectID>
 <a:Name>Key_1</a:Name>
 <a:Code>Key_1</a:Code>
@@ -9350,7 +9361,7 @@ LABL 0 Arial,8,N</a:FontList>
 </o:Key>
 </c:Keys>
 <c:PrimaryKey>
-<o:Key Ref="o423"/>
+<o:Key Ref="o424"/>
 </c:PrimaryKey>
 </o:Table>
 <o:Table Id="o93">
@@ -9363,7 +9374,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:Modifier>bowin90</a:Modifier>
 <a:TotalSavingCurrency/>
 <c:Columns>
-<o:Column Id="o424">
+<o:Column Id="o425">
 <a:ObjectID>C7465F14-9DE1-4590-B922-6BA638A38A3D</a:ObjectID>
 <a:Name>微信消息模板编码</a:Name>
 <a:Code>templateNo</a:Code>
@@ -9376,7 +9387,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:Length>10</a:Length>
 <a:Column.Mandatory>1</a:Column.Mandatory>
 </o:Column>
-<o:Column Id="o425">
+<o:Column Id="o426">
 <a:ObjectID>9454C1FA-0CE3-4BA4-9448-E005B1D204B0</a:ObjectID>
 <a:Name>微信消息模板名称</a:Name>
 <a:Code>templateName</a:Code>
@@ -9388,7 +9399,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:DataType>varchar(50)</a:DataType>
 <a:Length>50</a:Length>
 </o:Column>
-<o:Column Id="o426">
+<o:Column Id="o427">
 <a:ObjectID>907393F7-CDCA-42B7-AA04-B541C0EE497B</a:ObjectID>
 <a:Name>微信消息模板ID</a:Name>
 <a:Code>templateId</a:Code>
@@ -9400,7 +9411,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:DataType>varchar(300)</a:DataType>
 <a:Length>300</a:Length>
 </o:Column>
-<o:Column Id="o427">
+<o:Column Id="o428">
 <a:ObjectID>8600CCC7-2960-4703-9562-AE96E2CF3F97</a:ObjectID>
 <a:Name>模板跳转url</a:Name>
 <a:Code>url</a:Code>
@@ -9414,7 +9425,7 @@ LABL 0 Arial,8,N</a:FontList>
 </o:Column>
 </c:Columns>
 <c:Keys>
-<o:Key Id="o428">
+<o:Key Id="o429">
 <a:ObjectID>F1B3FF1D-0B67-4C0A-860E-BB3EFCFBCA1F</a:ObjectID>
 <a:Name>Key_1</a:Name>
 <a:Code>Key_1</a:Code>
@@ -9423,12 +9434,12 @@ LABL 0 Arial,8,N</a:FontList>
 <a:ModificationDate>1713441468</a:ModificationDate>
 <a:Modifier>bowin90</a:Modifier>
 <c:Key.Columns>
-<o:Column Ref="o424"/>
+<o:Column Ref="o425"/>
 </c:Key.Columns>
 </o:Key>
 </c:Keys>
 <c:PrimaryKey>
-<o:Key Ref="o428"/>
+<o:Key Ref="o429"/>
 </c:PrimaryKey>
 </o:Table>
 <o:Table Id="o94">
@@ -9441,7 +9452,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:Modifier>bowin90</a:Modifier>
 <a:TotalSavingCurrency/>
 <c:Columns>
-<o:Column Id="o429">
+<o:Column Id="o430">
 <a:ObjectID>F5E9C7FD-BC70-4A21-B07D-072CDA88A141</a:ObjectID>
 <a:Name>微信消息模板编码</a:Name>
 <a:Code>templateNo</a:Code>
@@ -9454,7 +9465,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:Length>10</a:Length>
 <a:Column.Mandatory>1</a:Column.Mandatory>
 </o:Column>
-<o:Column Id="o430">
+<o:Column Id="o431">
 <a:ObjectID>C1D08037-2874-40A3-BCF2-FF8CE3920A41</a:ObjectID>
 <a:Name>wxFieldName</a:Name>
 <a:Code>wxFieldName</a:Code>
@@ -9467,7 +9478,7 @@ LABL 0 Arial,8,N</a:FontList>
 <a:Length>30</a:Length>
 <a:Column.Mandatory>1</a:Column.Mandatory>
 </o:Column>
-<o:Column Id="o431">
+<o:Column Id="o432">
 <a:ObjectID>8CC02B30-DA95-4D69-8223-4F4DDCAA310E</a:ObjectID>
 <a:Name>sysFieldName</a:Name>
 <a:Code>sysFieldName</a:Code>
@@ -9481,7 +9492,7 @@ LABL 0 Arial,8,N</a:FontList>
 </o:Column>
 </c:Columns>
 <c:Keys>
-<o:Key Id="o432">
+<o:Key Id="o433">
 <a:ObjectID>A9ECA0F3-2901-45AB-9B65-AEB7A716B0BA</a:ObjectID>
 <a:Name>Key_1</a:Name>
 <a:Code>Key_1</a:Code>
@@ -9490,13 +9501,13 @@ LABL 0 Arial,8,N</a:FontList>
 <a:ModificationDate>1713443103</a:ModificationDate>
 <a:Modifier>bowin90</a:Modifier>
 <c:Key.Columns>
-<o:Column Ref="o429"/>
 <o:Column Ref="o430"/>
+<o:Column Ref="o431"/>
 </c:Key.Columns>
 </o:Key>
 </c:Keys>
 <c:PrimaryKey>
-<o:Key Ref="o432"/>
+<o:Key Ref="o433"/>
 </c:PrimaryKey>
 </o:Table>
 </c:Tables>
@@ -9522,7 +9533,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o127"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o433">
+<o:ReferenceJoin Id="o434">
 <a:ObjectID>54F04187-9C05-49AC-A2AE-0F6805B87FA6</a:ObjectID>
 <a:CreationDate>1700727651</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9558,7 +9569,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o112"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o434">
+<o:ReferenceJoin Id="o435">
 <a:ObjectID>1C1F4C11-0B3A-4093-A82E-6A9FD4FD25D0</a:ObjectID>
 <a:CreationDate>1700727797</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9594,7 +9605,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o112"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o435">
+<o:ReferenceJoin Id="o436">
 <a:ObjectID>40A0CA90-8614-4815-97AD-0EBD6F0B71D9</a:ObjectID>
 <a:CreationDate>1700730987</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9630,7 +9641,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o112"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o436">
+<o:ReferenceJoin Id="o437">
 <a:ObjectID>FB4FAA07-CE83-4FCA-A8D0-3EAF2B4D6E07</a:ObjectID>
 <a:CreationDate>1700731007</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9666,7 +9677,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o163"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o437">
+<o:ReferenceJoin Id="o438">
 <a:ObjectID>D517805A-E4C7-4403-8465-67312BEA0D62</a:ObjectID>
 <a:CreationDate>1700731026</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9702,7 +9713,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o270"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o438">
+<o:ReferenceJoin Id="o439">
 <a:ObjectID>7A61F341-556C-4479-A342-A7646603F9F3</a:ObjectID>
 <a:CreationDate>1700731151</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9738,7 +9749,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o221"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o439">
+<o:ReferenceJoin Id="o440">
 <a:ObjectID>690001A1-24C5-4BB0-860C-27E191E15580</a:ObjectID>
 <a:CreationDate>1700731191</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9774,7 +9785,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o112"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o440">
+<o:ReferenceJoin Id="o441">
 <a:ObjectID>0B8B962D-B921-4C57-9B91-8C15F33BED75</a:ObjectID>
 <a:CreationDate>1700731590</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9810,7 +9821,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o270"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o441">
+<o:ReferenceJoin Id="o442">
 <a:ObjectID>CF00EFE5-091D-4B44-9BC6-78E0E41801E0</a:ObjectID>
 <a:CreationDate>1700731650</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9846,7 +9857,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o270"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o442">
+<o:ReferenceJoin Id="o443">
 <a:ObjectID>451F9C5E-5174-4834-8447-8BFBF152415E</a:ObjectID>
 <a:CreationDate>1700731691</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9882,7 +9893,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o270"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o443">
+<o:ReferenceJoin Id="o444">
 <a:ObjectID>348ADE0B-66DB-4664-989D-92DEC0AF1BCD</a:ObjectID>
 <a:CreationDate>1700731736</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9918,7 +9929,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o221"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o444">
+<o:ReferenceJoin Id="o445">
 <a:ObjectID>ABE69D56-EB12-409A-94E0-7250DB96B800</a:ObjectID>
 <a:CreationDate>1700731802</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9954,7 +9965,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o270"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o445">
+<o:ReferenceJoin Id="o446">
 <a:ObjectID>08EDE705-0BB1-4605-9A44-22080589321A</a:ObjectID>
 <a:CreationDate>1700731807</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -9990,7 +10001,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o357"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o446">
+<o:ReferenceJoin Id="o447">
 <a:ObjectID>9948DA1B-7F6D-4BFD-944D-78B0BB942C79</a:ObjectID>
 <a:CreationDate>1701227667</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -10026,7 +10037,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o188"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o447">
+<o:ReferenceJoin Id="o448">
 <a:ObjectID>B70423BB-9802-457F-AE23-4CBF7D842F4E</a:ObjectID>
 <a:CreationDate>1701660221</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -10059,7 +10070,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Table Ref="o86"/>
 </c:ChildTable>
 <c:Joins>
-<o:ReferenceJoin Id="o448">
+<o:ReferenceJoin Id="o449">
 <a:ObjectID>5E4AB2FC-A524-45F4-9FE1-E46F2AFC9564</a:ObjectID>
 <a:CreationDate>1701661219</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -10095,7 +10106,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o112"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o449">
+<o:ReferenceJoin Id="o450">
 <a:ObjectID>3629C8A8-9FDA-42D0-825C-8B0997759790</a:ObjectID>
 <a:CreationDate>1701934197</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -10131,7 +10142,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o383"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o450">
+<o:ReferenceJoin Id="o451">
 <a:ObjectID>2374EDD3-256A-4744-B800-C1EAC2B3A8BA</a:ObjectID>
 <a:CreationDate>1703661458</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -10167,7 +10178,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o401"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o451">
+<o:ReferenceJoin Id="o452">
 <a:ObjectID>E869B4C1-58EF-4215-B2EE-702BC081782A</a:ObjectID>
 <a:CreationDate>1703661902</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -10203,7 +10214,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o221"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o452">
+<o:ReferenceJoin Id="o453">
 <a:ObjectID>9CCCDB43-37CB-4FEC-9728-5E1C604B931C</a:ObjectID>
 <a:CreationDate>1703727031</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -10239,7 +10250,7 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Key Ref="o412"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o453">
+<o:ReferenceJoin Id="o454">
 <a:ObjectID>69BDF72C-5720-4C82-887C-A74DF7E2A01D</a:ObjectID>
 <a:CreationDate>1713147069</a:CreationDate>
 <a:Creator>bowinuser</a:Creator>
@@ -10272,27 +10283,27 @@ LABL 0 Arial,8,N</a:FontList>
 <o:Table Ref="o94"/>
 </c:ChildTable>
 <c:ParentKey>
-<o:Key Ref="o428"/>
+<o:Key Ref="o429"/>
 </c:ParentKey>
 <c:Joins>
-<o:ReferenceJoin Id="o454">
+<o:ReferenceJoin Id="o455">
 <a:ObjectID>EA16D89A-A814-4871-B1D9-CCB394F38D05</a:ObjectID>
 <a:CreationDate>1713443051</a:CreationDate>
 <a:Creator>bowin90</a:Creator>
 <a:ModificationDate>1713443051</a:ModificationDate>
 <a:Modifier>bowin90</a:Modifier>
 <c:Object1>
-<o:Column Ref="o424"/>
+<o:Column Ref="o425"/>
 </c:Object1>
 <c:Object2>
-<o:Column Ref="o429"/>
+<o:Column Ref="o430"/>
 </c:Object2>
 </o:ReferenceJoin>
 </c:Joins>
 </o:Reference>
 </c:References>
 <c:DefaultGroups>
-<o:Group Id="o455">
+<o:Group Id="o456">
 <a:ObjectID>9EC8D640-B68B-4B22-9ECC-8604531BD893</a:ObjectID>
 <a:Name>PUBLIC</a:Name>
 <a:Code>PUBLIC</a:Code>
@@ -10303,7 +10314,7 @@ LABL 0 Arial,8,N</a:FontList>
 </o:Group>
 </c:DefaultGroups>
 <c:TargetModels>
-<o:TargetModel Id="o456">
+<o:TargetModel Id="o457">
 <a:ObjectID>F5495246-0AD0-47FB-87F5-4932E41412CF</a:ObjectID>
 <a:Name>MySQL 5.0</a:Name>
 <a:Code>MYSQL50</a:Code>

+ 5 - 4
doc/待更新脚本

@@ -129,17 +129,18 @@ alter table pc_recommend_mgt add isSendUser bit comment '是否推送给求职
 
 create table wx_messageStatus
 (
-    messageStatus        varchar(50) not null comment '唯一ID',
+    messageStatusId      varchar(50) not null comment '唯一ID',
     openId               varchar(300) comment '微信openId',
     sourceId             varchar(50) comment '业务ID',
     content              text comment '推送内容',
+    url                  varchar(1000),
     sendTime             datetime comment '推送时间',
     recordStatus         int comment '状态,0未推送,1已推送',
     createUserID         varchar(50) comment '创建人',
     createTime           datetime comment '创建时间',
     modifyUserID         varchar(50) comment '修改人',
     modifyTime           datetime comment '修改时间',
-    primary key (messageStatus)
+    primary key (messageStatusId)
 );
 
 
@@ -165,9 +166,9 @@ alter table wx_messageTempSetting_field add constraint FK_Reference_26 foreign k
 
 
 insert into wx_messageTempSetting
-values('toCompany','-R2xeAeey7rOKN5VAuUr8cFMsJFlFp7ksN7m6H5_5VU','应聘人员信息通知','/wxMessage/jobUserInfo');
+values('toCompany','应聘人员信息通知','-R2xeAeey7rOKN5VAuUr8cFMsJFlFp7ksN7m6H5_5VU','/wxMessage/jobUserInfo');
 insert into wx_messageTempSetting
-values('toUser','hSE-nWMrspk2uHlJ9BahP4FJo9nCOUpnQiMAOQC2a6k','岗位信息通知','/wxMessage/companyInfo');
+values('toUser','岗位信息通知','hSE-nWMrspk2uHlJ9BahP4FJo9nCOUpnQiMAOQC2a6k','/wxMessage/companyInfo');
 
 insert into wx_messageTempSetting_field
 values('toCompany','thing28','userName'),('toCompany','phone_number34','usermobile'),('toCompany','thing10','userHuntPostName');

+ 10 - 0
doc/正式平台发布Url地址配置

@@ -0,0 +1,10 @@
+mobile: appconfig.json文件
+
+{
+  "isDev": true,
+  "webSiteUrl": "https://hjy.hz12311.cn/mobile/index.html/#",
+  "webApiServiceUrl": "https://hjy.hz12311.cn/api"
+}
+
+web: yml文件
+wxMessageBaseUrl: 'https://hjy.hz12311.cn/mobile/index.html/#'

+ 1 - 1
h5app/public/appconfig.json

@@ -1,5 +1,5 @@
 {
   "isDev": true,
   "webSiteUrl": "http://www.bowintek.com/hzyz/mobile/index.html/#",
-  "webApiServiceUrl": ""
+  "webApiServiceUrl": "/api"
 }

+ 105 - 0
h5app/src/components/areaPicker.vue

@@ -0,0 +1,105 @@
+<template>
+  <ion-button style="color: #02a6f1;font-size: 15px;" fill="clear" @click="openPicker()">选择</ion-button>
+</template>
+
+<script lang="ts">
+import {ref, watch, defineComponent} from 'vue';
+import {pickerController} from '@ionic/vue';
+import {PickerButton, PickerColumnOption, PickerColumn, PickerOptions} from '@ionic/core';
+import {getRegionCodeList,getStreetCodeList} from "@/api/system/area";
+
+interface PickerColumnOptions extends PickerColumnOption {
+  parent?: any;
+}
+
+export default defineComponent({
+  name: 'areaPicker',
+  props: {
+    code: {type: String, default: ''},
+    },
+  setup(props,context) {
+    const cityList = ref();
+    const areaList = ref();
+    //const pickerOptions = ref<PickerOptions>();
+    const pickerColumns = ref<PickerColumn[]>([]);
+    const pickerButtons = ref<PickerButton[]>([]);
+    const CityOptions = ref<PickerColumnOptions[]>([]);
+    const AreaOptions = ref<PickerColumnOptions[]>([]);
+    const oldCityCode = ref(props.code);
+    const oldAreaCode = ref();
+
+
+    pickerColumns.value = [
+      {name: 'one', selectedIndex: 0, options: CityOptions.value},
+      {name: 'two', selectedIndex: 1, options: AreaOptions.value},
+    ]
+    pickerButtons.value = [
+      {text: '取消', role: 'cancel',},
+      {
+        text: '确定',
+        handler: (value) => {
+          context.emit("SetAreaCode",value.three);
+        },
+      },
+    ];
+
+    getRegionCodeList().then(data => {
+      cityList.value = data;
+
+      CityOptions.value = cityList.value.map((m: any) => ({
+        text: m.name,
+        value: m.code,
+        parent: m.fid,
+        selected: false
+      }));
+      CityOptions.value[0].selected=true;
+      oldCityCode.value = pickerColumns.value[0]?.options[0].value;
+    });
+
+    getStreetCodeList("").then(data=>{
+      AreaOptions.value = areaList.value.map((m: any) => ({
+        text: m.name,
+        value: m.code,
+        parent: m.fid,
+        selected: false
+      }))
+      AreaOptions.value[0].selected=true;
+      oldAreaCode.value = pickerColumns.value[1]?.options[0].value;
+    })
+
+    const picker = ref();
+    const openPicker = async () => {
+      picker.value = await pickerController.create({
+        columns: pickerColumns.value,
+        buttons: pickerButtons.value
+      });
+
+      watch(pickerColumns.value.filter(f=>f.name=="one")[0].options.filter(f=>f.selected==true)[0], () => {
+        const newVal = pickerColumns.value.filter(f=>f.name=="one")[0].options.filter(f=>f.selected==true)[0];
+        if (oldCityCode.value != newVal?.value) {
+          pickerColumns.value.map(x => {
+            if (x.name == "two") {
+              x.options = AreaOptions.value.filter(x => x.parent==newVal?.value);
+              if(x.options.length>0){
+                oldAreaCode.value = x.options[0].value;
+                x.options[0].selected=true;
+              }
+            }
+          })
+
+          pickerController.dismiss().then((e) => {console.log(e)})
+          openPicker()
+          oldCityCode.value = newVal?.value;
+        }
+      });
+
+      await picker.value.present();
+    }
+
+    return {
+      openPicker,
+    }
+  }
+});
+</script>
+

+ 35 - 8
h5app/src/router/index.ts

@@ -210,16 +210,43 @@ const routes: Array<RouteRecordRaw> = [
         component: DemoPage
     },
     {
-        path: '/jobUserInfo/index',
-        component: JobUserInfoIndex
-    },
-    {
-        path: '/jobUserInfo/useredit',
-        component: JobUserInfoUserEdit
+        path: '/jobUserInfo/',
+        component: WrapperLayoutView,
+        children: [
+            {
+                path: 'index',
+                name: 'index',
+                component: () => import('@/views/pages/jobUserInfo/index.vue'),
+            },
+            {
+                path: 'useredit',
+                name: 'useredit',
+                component: () => import('@/views/pages/jobUserInfo/userEdit.vue'),
+            }
+            ,
+            {
+                path: 'companyedit',
+                name: 'companyedit',
+                component: () => import('@/views/pages/jobUserInfo/companyEdit.vue'),
+            }
+        ]
     },
     {
-        path: '/jobUserInfo/companyedit',
-        component: JobUserInfoCompanyEdit
+        path: '/wxMessage/',
+        component: WrapperLayoutView,
+        children: [
+            {
+                path: 'companyInfo',
+                name: 'companyInfo',
+                component: () => import('@/views/pages/wxMessage/companyInfo.vue'),
+            },
+            {
+                path: 'jobUserInfo',
+                name: 'jobUserInfo',
+                component: () => import('@/views/pages/wxMessage/jobUserInfo.vue'),
+            }
+        ]
+
     }
 ]
 

+ 1 - 1
h5app/src/utils/config.ts

@@ -12,7 +12,7 @@ export interface ConfigParams  {
 export const getConfig = async <ConfigParams>(
 ): Promise<ConfigParams> => {
     try {
-        const res = await service.request({url: '../hzyz/mobile/appconfig.json'});
+        const res = await service.request({url: 'mobile/appconfig.json'});
 
         return res.data as ConfigParams;
     } catch (error: any) {

+ 1 - 1
h5app/src/views/pages/jobhunt/edit.vue

@@ -55,7 +55,7 @@
             </div>
             <div class="form-select">
               <ion-label>所属驿站<span class="danger">*</span></ion-label>
-              <ion-select name="siteID"  id="siteID" okText="确定" cancelText="取消" v-model="baseData.siteID"
+              <ion-select disabled name="siteID"  id="siteID" okText="确定" cancelText="取消" v-model="baseData.siteID"
                           interface="action-sheet" placeholder="请选择所属驿站"  style="width:100%;text-align:left;">
                 <ion-select-option v-for=" (it,key) in siteInfoList" :key="key" :value="it.value">
                   {{ it.text }}

+ 5 - 3
h5app/src/views/pages/userQrCode/index.vue

@@ -12,10 +12,12 @@
       <div class="user_qrcode">
         <div class="qr_item">
           <img src="@/assets/icon/wxQrcode.jpg" :style="imgStyle">
+          <br/>
           <span>关注公众号</span>
         </div>
         <div class="qr_item">
           <img :src="infoQrcodeUrl" :style="imgStyle">
+          <br/>
           <span>扫码登记</span>
         </div>
       </div>
@@ -67,8 +69,8 @@ export default defineComponent({
 
     const updateBrowserWidth = () => {
       const browserWidth = window.innerWidth;
-      imgStyle.value.width = (browserWidth - 20) / 2 + 'px';
-      imgStyle.value.height = (browserWidth - 20) / 2 + 'px';
+      imgStyle.value.width = (browserWidth - 60) / 2 + 'px';
+      imgStyle.value.height = (browserWidth - 60) / 2 + 'px';
     }
 
     const onBack = () => {
@@ -115,7 +117,7 @@ export default defineComponent({
   }
 
   img {
-    padding: 10px;
+    padding: 20px 20px 15px 20px;
   }
 }
 

+ 38 - 39
h5app/src/views/pages/work/log/list.vue

@@ -35,43 +35,44 @@
         <ion-button slot="end" style="height: 33px;width:70px;margin-left: 10px;--box-shadow: none;--border-radius: 14px;" @click="onSearch">搜索</ion-button>
       </ion-item>
       <!-- 滑动数据列表 -->
-      <div v-if="!loading" class="bw-vue-list">
-        <div v-for="(record,key) in dataList" :key="key">
-          <ion-item-sliding style="border-bottom: 1px solid #f1f5f7;border-radius: 0px;">
-            <ion-item>
-              <ion-grid @click="onDetail(record.doWorkID)">
-                <ion-row>
-                  <ion-col>
-                    <ion-label style="display: flex;justify-content: space-between;">
-                      <ion-text>
-                        {{ record.workTime }}工作日志
-                      </ion-text>
-                    </ion-label>
-                  </ion-col>
-                </ion-row>
-                <ion-row>
-                  <ion-col>
-                    <ion-label>
-                      <p>
-                        日志类型:{{ record.logTypeName }}
-                      </p>
-                    </ion-label>
-                  </ion-col>
-                </ion-row>
-              </ion-grid>
-              <span @click="onDetail(record.doWorkID)">
-                <ion-icon :icon="chevronForwardOutline" slots="end"></ion-icon>
-              </span>
-            </ion-item>
-            <ion-item-options>
-              <ion-item-option @click="onEdit(record.doWorkID)">
-                <ion-icon :icon="buildOutline"></ion-icon>
-              </ion-item-option>
-              <ion-item-option color="danger" @click="setDelAlertOpen(true, record.doWorkID)">
-                <ion-icon :icon="trashOutline"></ion-icon>
-              </ion-item-option>
-            </ion-item-options>
-          </ion-item-sliding>
+      <div class="bw-vue-list">
+        <div class="list-content">
+          <ion-list>
+            <div v-for="(record,key) in dataList" :key="key">
+              <ion-item-sliding>
+                <ion-item detail @click="onDetail(record)">
+                  <ion-grid @click="onDetail(record.doWorkID)">
+                    <ion-row>
+                      <ion-col>
+                        <ion-label style="display: flex;justify-content: space-between;">
+                          <ion-text>
+                            {{ record.workTime }}工作日志
+                          </ion-text>
+                        </ion-label>
+                      </ion-col>
+                    </ion-row>
+                    <ion-row>
+                      <ion-col>
+                        <ion-label>
+                          <p>
+                            日志类型:{{ record.logTypeName }}
+                          </p>
+                        </ion-label>
+                      </ion-col>
+                    </ion-row>
+                  </ion-grid>
+                </ion-item>
+                <ion-item-options>
+                  <ion-item-option @click="onEdit(record.doWorkID)">
+                    <ion-icon :icon="buildOutline"></ion-icon>
+                  </ion-item-option>
+                  <ion-item-option color="danger" @click="setDelAlertOpen(true, record.doWorkID)">
+                    <ion-icon :icon="trashOutline"></ion-icon>
+                  </ion-item-option>
+                </ion-item-options>
+              </ion-item-sliding>
+            </div>
+          </ion-list>
         </div>
       </div>
       <b-empty v-if="dataList.length<=0" :loading="loading"/>
@@ -325,9 +326,7 @@ export default defineComponent({
     border-radius: 0 !important;
 
     ion-item {
-      margin-top: 10px;
       font-size: 14px;
-      border: 1px solid rgb(242, 242, 245);
 
       p {
         font-size: 12px;

+ 1 - 1
h5app/src/views/pages/work/task/list.vue

@@ -23,7 +23,7 @@
             <ion-item v-for="(record,key) in dataList" :key="key" detail @click="onDetail(record)">
               <ion-label>
                 <div class="multi-title">
-                  <h3>{{ record.doTaskName }}</h3>
+                  <h2>{{ record.doTaskName }}</h2>
                 </div>
                 <p style="margin-top: 8px">任务类型:{{ record.workTypeName }}</p>
                 <p>

+ 158 - 0
h5app/src/views/pages/wxMessage/companyInfo.vue

@@ -0,0 +1,158 @@
+<template>
+  <ion-content>
+    <div class="user_info_title">
+      您好!惠州就业驿站给您推荐《java工程师》的岗位,请查阅!
+    </div>
+    <div class="user_panel user_baseinfo">
+      <div class="user_info_img">
+        <div class="user_text">
+          <h4>惠州市xx科技有限公司</h4>
+          <p>java工程师</p>
+        </div>
+      </div>
+      <div class="user_info_flex">
+        <div>
+          <h6>5000 ~ 8000</h6>
+          <p>薪资</p>
+        </div>
+        <div>
+          <h6>大专</h6>
+          <p>学历</p>
+        </div>
+      </div>
+      <div class="user_info_text">
+        <span>惠州市惠城区xx信息所</span>
+      </div>
+    </div>
+    <div class="user_panel user_baseinfo">
+      <div class="user_panel_title">
+        <h6>联系方式</h6>
+      </div>
+      <div class="user_info_label user_info_border">
+        <ion-label>联系人</ion-label>
+        <ion-text>张经理</ion-text>
+      </div>
+      <div class="user_info_label">
+        <ion-label>联系电话</ion-label>
+        <ion-text>13444444444</ion-text>
+      </div>
+    </div>
+    <div class="user_panel user_baseinfo">
+      <div class="user_panel_title">
+        <h6>岗位要求</h6>
+      </div>
+      <div class="user_info_label2">
+        <p>1、熟悉xxxx</p>
+        <p>2、熟悉xxxx</p>
+        <p>3、熟悉xxxx</p>
+        <p>4、熟悉xxxx</p>
+      </div>
+    </div>
+  </ion-content>
+</template>
+<style lang="less">
+@border_color: #f1f5f7;
+@p_color: #8c8f93;
+
+.user_info_title {
+  padding: 20px 20px 10px 20px;
+  text-indent: 2em;
+}
+
+.user_panel {
+  border: 1px solid @border_color;
+  border-radius: 10px;
+  margin: 10px;
+
+  .user_panel_title {
+    padding: 12px 10px 10px 10px;
+    margin: 0 10px;
+    border-bottom: 1px solid @border_color;
+
+    h6 {
+      margin: 0px;
+    }
+  }
+}
+
+.user_baseinfo {
+  .user_info_img {
+    display: flex;
+    align-items: center;
+    padding: 10px;
+    border-radius: 10px;
+
+    .user_text {
+      padding-left: 10px;
+
+      p {
+        color: @p_color;
+        font-size: 14px;
+      }
+    }
+  }
+
+  .user_info_flex {
+    display: flex;
+    justify-content: space-around;
+    align-items: center;
+    vertical-align: middle;
+    padding: 10px;
+    margin: 0 10px;
+    border-top: 1px solid @border_color;
+    border-bottom: 1px solid @border_color;
+
+    div {
+      text-align: center;
+
+      h6 {
+        padding: 5px 0px;
+        margin: 0px;
+      }
+
+      p {
+        font-size: 14px;
+        color: @p_color;
+        padding: 5px 0px;
+        margin: 0px;
+      }
+    }
+  }
+
+  .user_info_text {
+    margin: 13px 20px;
+    color: @p_color;
+  }
+
+  .user_info_label {
+    display: flex;
+    justify-content: space-between;
+    vertical-align: middle;
+    padding: 10px;
+    margin: 0 10px;
+
+    ion-label {
+      min-width: 80px;
+      padding: 0 5px 0 0;
+    }
+
+    ion-text {
+      color: @p_color;
+    }
+  }
+
+  .user_info_label2 {
+    padding: 0 10px;
+    margin: 0 10px;
+
+    p {
+      color: @p_color;
+      font-size: 14px;
+    }
+  }
+
+  .user_info_border {
+    border-bottom: 1px solid @border_color;
+  }
+}
+</style>

+ 192 - 0
h5app/src/views/pages/wxMessage/jobUserInfo.vue

@@ -0,0 +1,192 @@
+<template>
+  <ion-content>
+    <div class="user_info_title">
+      您好!惠州就业驿站给您推荐《java工程师》的简历,请查阅!
+    </div>
+    <div class="user_panel user_baseinfo">
+      <div class="user_info_img">
+        <div class="user_img">
+          <img class="img-user" src="@/assets/icon/icon-user-2x.png"
+               onerror="this.src='@/assets/icon/icon-user-2x.png'"/>
+        </div>
+        <div class="user_text">
+          <h4>张三</h4>
+          <p>java工程师</p>
+        </div>
+      </div>
+      <div class="user_info_flex">
+        <div>
+          <h6>男</h6>
+          <p>性别</p>
+        </div>
+        <div>
+          <h6>24</h6>
+          <p>年龄</p>
+        </div>
+        <div>
+          <h6>本科</h6>
+          <p>学历</p>
+        </div>
+        <div>
+          <h6>3</h6>
+          <p>经验</p>
+        </div>
+      </div>
+      <div class="user_info_text">
+        <span>待业,惠州市惠城区xxx街道</span>
+      </div>
+    </div>
+    <div class="user_panel user_baseinfo">
+      <div class="user_panel_title">
+        <h6>联系方式</h6>
+      </div>
+      <div class="user_info_label user_info_border">
+        <ion-label>电话</ion-label>
+        <ion-text>123456789</ion-text>
+      </div>
+      <div class="user_info_label">
+        <ion-label>邮箱</ion-label>
+        <ion-text>张xx</ion-text>
+      </div>
+    </div>
+    <div class="user_panel user_baseinfo">
+      <div class="user_panel_title">
+        <h6>教育经历</h6>
+      </div>
+      <div class="user_info_label2">
+        <h6>惠州学院</h6>
+        <p>软件开发 | 2021毕业</p>
+      </div>
+    </div>
+    <div class="user_panel user_baseinfo">
+      <div class="user_panel_title">
+        <h6>工作经历</h6>
+      </div>
+      <div class="user_info_label2">
+        <h6>惠州市xx科技有限公司</h6>
+        <p>java开发 | 2019-01 ~ 2020-01</p>
+      </div>
+      <div class="user_info_label2">
+        <h6>广州市xx科技有限公司</h6>
+        <p>java开发 | 2019-01 ~ 2020-01</p>
+      </div>
+    </div>
+    <div class="user_panel user_baseinfo">
+      <div class="user_panel_title">
+        <h6>个人技能</h6>
+      </div>
+      <div class="user_info_label2">
+        <p>1、熟悉xxxx</p>
+        <p>2、熟悉xxxx</p>
+        <p>3、熟悉xxxx</p>
+        <p>4、熟悉xxxx</p>
+      </div>
+    </div>
+  </ion-content>
+</template>
+<style lang="less">
+@border_color: #f1f5f7;
+@p_color: #8c8f93;
+
+.user_info_title {
+  padding: 20px 20px 10px 20px;
+  text-indent: 2em;
+}
+
+.user_panel {
+  border: 1px solid @border_color;
+  border-radius: 10px;
+  margin: 10px;
+
+  .user_panel_title {
+    padding: 12px 10px 10px 10px;
+    margin: 0 10px;
+    border-bottom: 1px solid @border_color;
+
+    h6 {
+      margin: 0px;
+    }
+  }
+}
+
+.user_baseinfo {
+  .user_info_img {
+    display: flex;
+    align-items: center;
+    padding: 10px;
+    border-radius: 10px;
+
+    .user_text {
+      padding-left: 20px;
+
+      p {
+        color: @p_color;
+        font-size: 14px;
+      }
+    }
+  }
+
+  .user_info_flex {
+    display: flex;
+    justify-content: space-around;
+    align-items: center;
+    vertical-align: middle;
+    padding: 10px;
+    margin: 0 10px;
+    border-top: 1px solid @border_color;
+    border-bottom: 1px solid @border_color;
+
+    div {
+      text-align: center;
+
+      h6 {
+        padding: 5px 0px;
+        margin: 0px;
+      }
+
+      p {
+        font-size: 14px;
+        color: @p_color;
+        padding: 5px 0px;
+        margin: 0px;
+      }
+    }
+  }
+
+  .user_info_text {
+    margin: 13px 20px;
+    color: @p_color;
+  }
+
+  .user_info_label {
+    display: flex;
+    justify-content: space-between;
+    vertical-align: middle;
+    padding: 10px;
+    margin: 0 10px;
+
+    ion-label {
+      min-width: 80px;
+      padding: 0 5px 0 0;
+    }
+
+    ion-text {
+      color: @p_color;
+    }
+  }
+
+  .user_info_label2 {
+    padding: 0 10px;
+    margin: 0 10px;
+
+    p {
+      color: @p_color;
+      font-size: 14px;
+    }
+  }
+
+  .user_info_border {
+    border-bottom: 1px solid @border_color;
+  }
+}
+</style>

+ 7 - 16
h5app/src/views/sapp/tabMain.vue

@@ -14,7 +14,7 @@
           <div class="tool-img">
             <img src="@/assets/icon/qzxx.png">
           </div>
-          <div class="tool-title">求职人员信息收集</div>
+          <div class="tool-title">求职人员收集</div>
         </a>
         <a class="tool-item box-line"  @click="router.push('/tabs/tabMain/jobhunt/recommend/list')">
           <div class="tool-img">
@@ -32,13 +32,13 @@
           <div class="tool-img">
             <img src="@/assets/icon/gwxxgl.png">
           </div>
-          <div class="tool-title">岗位信息管理</div>
+          <div class="tool-title">岗位信息</div>
         </a>
         <a class="tool-item box-line" @click="router.push('/tabs/tabMain/recommendMgt/list')">
           <div class="tool-img">
             <img src="@/assets/icon/gwtj.png">
           </div>
-          <div class="tool-title">推荐信息管理</div>
+          <div class="tool-title">推荐</div>
         </a>
         <a class="tool-item box-line"  @click="router.push('/tabs/tabMain/work/task/list')">
           <div class="tool-img">
@@ -46,18 +46,8 @@
           </div>
           <div class="tool-title">工作任务</div>
         </a>
-       <a class="tool-item box-line"  @click="router.push('/tabs/tabMain/sitemap/index')">
-        <div class="tool-img">
-          <img src="@/assets/icon/map.png">
-        </div>
-        <div class="tool-title">驿站地图</div>
-       </a>
-        <a class="tool-item box-line"  @click="router.push('/tabs/tabMain/demo/edit')">
-          <div class="tool-img">
-            <img src="@/assets/icon/map.png">
-          </div>
-          <div class="tool-title">表单样式</div>
-        </a>
+
+
         <a class="tool-item box-line"  @click="router.push('/tabs/tabMain/work/log/list')">
           <div class="tool-img">
             <img src="@/assets/icon/gzrz.png">
@@ -216,8 +206,9 @@ export default defineComponent({
       width: 100%;
 
       .panel_title_text{
-        padding: 8px 10px;
+        padding: 6px 28px;
         font-weight: bold;
+        font-size: 16px;
       }
 
       .panel_more{

+ 6 - 0
h5app/src/views/sapp/tabWork.vue

@@ -126,6 +126,12 @@
                </div>
                <div class="tool-title">驿站地图</div>
              </a>
+             <a class="tool-item box-line"  @click="router.push('/tabs/tabMain/demo/edit')">
+               <div class="tool-img">
+                 <img src="@/assets/icon/map.png">
+               </div>
+               <div class="tool-title">表单样式</div>
+             </a>
            </div>
          </div>
        </div>

+ 3 - 1
src/main/java/com/hz/employmentsite/controller/baseSettings/SiteUserController.java

@@ -80,17 +80,19 @@ public class SiteUserController {
                                @RequestParam(required = false) String siteID) throws Exception{
         PageInfo<SiteUserVo> result = userInfoService.getList(pageIndex, pageSize, siteUserIDList, siteUserName, siteID, null, null, null);
         ExcelHelper.ExcelData data = excelHelper.new ExcelData();
-        data.setTitles(Arrays.asList(new String[]{"序号","人员名称","角色", "性别", "联系电话","所属驿站"}));
+        data.setTitles(Arrays.asList(new String[]{"序号", "工号", "人员名称", "角色", "性别", "联系电话", "身份证号", "所属驿站"}));
         int i = 0;
         List<List<Object>> rowsData= new ArrayList();
         for (SiteUserVo item : result.getList()) {
             List<Object> row = new ArrayList();
             ++i;
             row.add(i);
+            row.add(item.userNo);
             row.add(item.siteUserName);
             row.add(item.roleName);
             row.add(item.genderName);
             row.add(item.mobile);
+            row.add(item.idCard);
             row.add(item.siteName);
             rowsData.add(row);
         }

+ 2 - 2
src/main/java/com/hz/employmentsite/controller/companyService/CompanyController.java

@@ -140,8 +140,8 @@ public class CompanyController {
     }
 
     @PostMapping("/importCompany")
-    public BaseResponse<Object> importCompany(@RequestBody List<CompanyVo> dataList) {
-        List<CompanyVo> result = companyService.importCompany(dataList, accountService.getLoginUserID());
+    public BaseResponse<Object> importCompany(@RequestBody List<CompanyVo> data) {
+        List<CompanyVo> result = companyService.importCompany(data, accountService.getLoginUserID());
 
         if (result != null && result.size() > 0) {
             return RespGenerstor.fail(BaseErrorEnum.IMPORT_DATA_ERROR, result);

+ 8 - 11
src/main/java/com/hz/employmentsite/controller/companyService/PostController.java

@@ -5,14 +5,12 @@ import com.hz.employmentsite.filter.exception.BaseErrorEnum;
 import com.hz.employmentsite.filter.exception.BaseException;
 import com.hz.employmentsite.filter.exception.BaseResponse;
 import com.hz.employmentsite.filter.exception.RespGenerstor;
-import com.hz.employmentsite.model.PcPost;
 import com.hz.employmentsite.services.service.AccountService;
 import com.hz.employmentsite.services.service.companyService.PostService;
 import com.hz.employmentsite.util.DateUtils;
 import com.hz.employmentsite.util.ExcelHelper;
-import com.hz.employmentsite.vo.jobUserManager.RecommendCompanyPostVo;
-import com.hz.employmentsite.vo.companyService.RecommendPostVo;
 import com.hz.employmentsite.vo.companyService.PostVo;
+import com.hz.employmentsite.vo.companyService.RecommendPostVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -40,11 +38,10 @@ public class PostController {
                                 @RequestParam(required = false) Integer maxCount,
                                 @RequestParam(required = false) String companyName,
                                 @RequestParam(required = false) String recordStatus,
-                                @RequestParam(required = false) String workName,
                                 @RequestParam(required = false) String companyID
                                 ) {
 
-        PageInfo<PostVo> result = postService.getList(pageIndex, pageSize, postIDList, professionName, minCount, maxCount, companyName, recordStatus, workName,companyID);
+        PageInfo<PostVo> result = postService.getList(pageIndex, pageSize, postIDList, professionName, minCount, maxCount, companyName, recordStatus,companyID);
         return RespGenerstor.success(result);
     }
 
@@ -96,9 +93,10 @@ public class PostController {
     }
 
     @GetMapping("/getPostsByCompanyID")
-    public BaseResponse<List<PcPost>> getPostsByCompanyID(@RequestParam(required = false) String companyId) {
-        var dataList = postService.getDataListByCompanyId(companyId);
-        return RespGenerstor.success(dataList);
+    public BaseResponse<List<PostVo>> getPostsByCompanyID(@RequestParam(required = false) String companyId) {
+//        var dataList = postService.getDataListByCompanyID(companyId);
+        PageInfo<PostVo> result = postService.getList(1, 99999, null, null, null, null, null, null, companyId);
+        return RespGenerstor.success(result.getList());
     }
 
     @ResponseBody
@@ -128,9 +126,8 @@ public class PostController {
                                @RequestParam(required = false) Integer minCount,
                                @RequestParam(required = false) Integer maxCount,
                                @RequestParam(required = false) String companyName,
-                               @RequestParam(required = false) String recordStatus,
-                               @RequestParam(required = false) String workName) throws Exception {
-        PageInfo<PostVo> result = postService.getList(pageIndex, pageSize, postIDList, professionName, minCount, maxCount, companyName, recordStatus, workName,null);
+                               @RequestParam(required = false) String recordStatus ) throws Exception {
+        PageInfo<PostVo> result = postService.getList(pageIndex, pageSize, postIDList, professionName, minCount, maxCount, companyName, recordStatus,null);
 
         if (isExport == null || !isExport) {
             return RespGenerstor.success(result);

+ 1 - 1
src/main/java/com/hz/employmentsite/mapper/cquery/PostCQuery.java

@@ -8,7 +8,7 @@ import java.util.List;
 
 public interface PostCQuery {
     List<PostVo> selectPostList(@Param("postIDList")String postIDList,@Param("professionName") String professionName, @Param("minCount")Integer minCount, @Param("maxCount")Integer maxCount,
-                                @Param("companyName")String companyName, @Param("RecordStatus") String RecordStatus, @Param("WorkName")String WorkName,@Param("companyID")String companyID);
+                                @Param("companyName")String companyName, @Param("RecordStatus") String RecordStatus,@Param("companyID")String companyID);
 
     List<RecommendPostVo> selectRecommendPostList(@Param("jobUserID") String jobUserID);
 

+ 4 - 4
src/main/java/com/hz/employmentsite/model/PcCompany.java

@@ -21,7 +21,7 @@ public class PcCompany {
 
     private String workSituation;
 
-    private String companyType;
+    private Integer companyType;
 
     private String companyAddress;
 
@@ -125,12 +125,12 @@ public class PcCompany {
         this.workSituation = workSituation == null ? null : workSituation.trim();
     }
 
-    public String getCompanyType() {
+    public Integer getCompanyType() {
         return companyType;
     }
 
-    public void setCompanyType(String companyType) {
-        this.companyType = companyType == null ? null : companyType.trim();
+    public void setCompanyType(Integer companyType) {
+        this.companyType = companyType;
     }
 
     public String getCompanyAddress() {

+ 10 - 20
src/main/java/com/hz/employmentsite/model/PcCompanyExample.java

@@ -725,62 +725,52 @@ public class PcCompanyExample {
             return (Criteria) this;
         }
 
-        public Criteria andCompanyTypeEqualTo(String value) {
+        public Criteria andCompanyTypeEqualTo(Integer value) {
             addCriterion("CompanyType =", value, "companyType");
             return (Criteria) this;
         }
 
-        public Criteria andCompanyTypeNotEqualTo(String value) {
+        public Criteria andCompanyTypeNotEqualTo(Integer value) {
             addCriterion("CompanyType <>", value, "companyType");
             return (Criteria) this;
         }
 
-        public Criteria andCompanyTypeGreaterThan(String value) {
+        public Criteria andCompanyTypeGreaterThan(Integer value) {
             addCriterion("CompanyType >", value, "companyType");
             return (Criteria) this;
         }
 
-        public Criteria andCompanyTypeGreaterThanOrEqualTo(String value) {
+        public Criteria andCompanyTypeGreaterThanOrEqualTo(Integer value) {
             addCriterion("CompanyType >=", value, "companyType");
             return (Criteria) this;
         }
 
-        public Criteria andCompanyTypeLessThan(String value) {
+        public Criteria andCompanyTypeLessThan(Integer value) {
             addCriterion("CompanyType <", value, "companyType");
             return (Criteria) this;
         }
 
-        public Criteria andCompanyTypeLessThanOrEqualTo(String value) {
+        public Criteria andCompanyTypeLessThanOrEqualTo(Integer value) {
             addCriterion("CompanyType <=", value, "companyType");
             return (Criteria) this;
         }
 
-        public Criteria andCompanyTypeLike(String value) {
-            addCriterion("CompanyType like", value, "companyType");
-            return (Criteria) this;
-        }
-
-        public Criteria andCompanyTypeNotLike(String value) {
-            addCriterion("CompanyType not like", value, "companyType");
-            return (Criteria) this;
-        }
-
-        public Criteria andCompanyTypeIn(List<String> values) {
+        public Criteria andCompanyTypeIn(List<Integer> values) {
             addCriterion("CompanyType in", values, "companyType");
             return (Criteria) this;
         }
 
-        public Criteria andCompanyTypeNotIn(List<String> values) {
+        public Criteria andCompanyTypeNotIn(List<Integer> values) {
             addCriterion("CompanyType not in", values, "companyType");
             return (Criteria) this;
         }
 
-        public Criteria andCompanyTypeBetween(String value1, String value2) {
+        public Criteria andCompanyTypeBetween(Integer value1, Integer value2) {
             addCriterion("CompanyType between", value1, value2, "companyType");
             return (Criteria) this;
         }
 
-        public Criteria andCompanyTypeNotBetween(String value1, String value2) {
+        public Criteria andCompanyTypeNotBetween(Integer value1, Integer value2) {
             addCriterion("CompanyType not between", value1, value2, "companyType");
             return (Criteria) this;
         }

+ 10 - 0
src/main/java/com/hz/employmentsite/model/WxMessagestatus.java

@@ -9,6 +9,8 @@ public class WxMessagestatus {
 
     private String sourceId;
 
+    private String url;
+
     private Date sendTime;
 
     private Integer recordStatus;
@@ -47,6 +49,14 @@ public class WxMessagestatus {
         this.sourceId = sourceId == null ? null : sourceId.trim();
     }
 
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url == null ? null : url.trim();
+    }
+
     public Date getSendTime() {
         return sendTime;
     }

+ 70 - 0
src/main/java/com/hz/employmentsite/model/WxMessagestatusExample.java

@@ -315,6 +315,76 @@ public class WxMessagestatusExample {
             return (Criteria) this;
         }
 
+        public Criteria andUrlIsNull() {
+            addCriterion("url is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlIsNotNull() {
+            addCriterion("url is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlEqualTo(String value) {
+            addCriterion("url =", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotEqualTo(String value) {
+            addCriterion("url <>", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlGreaterThan(String value) {
+            addCriterion("url >", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlGreaterThanOrEqualTo(String value) {
+            addCriterion("url >=", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlLessThan(String value) {
+            addCriterion("url <", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlLessThanOrEqualTo(String value) {
+            addCriterion("url <=", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlLike(String value) {
+            addCriterion("url like", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotLike(String value) {
+            addCriterion("url not like", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlIn(List<String> values) {
+            addCriterion("url in", values, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotIn(List<String> values) {
+            addCriterion("url not in", values, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlBetween(String value1, String value2) {
+            addCriterion("url between", value1, value2, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotBetween(String value1, String value2) {
+            addCriterion("url not between", value1, value2, "url");
+            return (Criteria) this;
+        }
+
         public Criteria andSendTimeIsNull() {
             addCriterion("sendTime is null");
             return (Criteria) this;

+ 10 - 4
src/main/java/com/hz/employmentsite/services/impl/WechatServiceImpl.java

@@ -74,7 +74,7 @@ public class WechatServiceImpl implements WechatService {
                 .toUser(openId)//要推送的用户openid
                 .data(data) //数据
                 .templateId(templateId)//模版id
-                .url(appConfig.wxMessageBaseUrl + url) // 点击详情跳转地址
+                .url(url) // 点击详情跳转地址
                 .build();
         //发起推送
         try {
@@ -108,6 +108,11 @@ public class WechatServiceImpl implements WechatService {
         if (wxMessagestatus != null && wxMessagestatus.getRecordStatus().equals(1))
             throw new Exception("该消息已有成功推送记录,请勿重复推送!");
 
+        String sendUrl = "";
+        if(!stringUtils.IsNullOrEmpty(url)){
+            sendUrl = appConfig.wxMessageBaseUrl + url;
+        }
+
         if (wxMessagestatus == null) {
             wxMessagestatus = new WxMessagestatus();
             wxMessagestatus.setMessageStatusId(UUID.randomUUID().toString());
@@ -116,18 +121,19 @@ public class WechatServiceImpl implements WechatService {
             wxMessagestatus.setContent(sendData.toString());
             wxMessagestatus.setRecordStatus(0);
             wxMessagestatus.setCreateTime(new Date());
+            wxMessagestatus.setUrl(sendUrl);
 
             wxMessagestatusMapper.insert(wxMessagestatus);
-        }
-        else{
+        } else {
             wxMessagestatus.setContent(sendData.toString());
+            wxMessagestatus.setUrl(sendUrl);
             wxMessagestatus.setModifyTime(new Date());
 
             wxMessagestatusMapper.updateByPrimaryKey(wxMessagestatus);
         }
 
         try {
-            sendMsg(openId, templateId, url, sendData);
+            sendMsg(openId, templateId, sendUrl, sendData);
 
             wxMessagestatus.setRecordStatus(1);
             wxMessagestatus.setSendTime(new Date());

+ 26 - 8
src/main/java/com/hz/employmentsite/services/impl/baseSettings/SiteInfoImpl.java

@@ -3,6 +3,7 @@ package com.hz.employmentsite.services.impl.baseSettings;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.hz.employmentsite.filter.exception.BaseException;
+import com.hz.employmentsite.mapper.PcCompanyMapper;
 import com.hz.employmentsite.mapper.PcSiteInstitutionMapper;
 import com.hz.employmentsite.mapper.PcSiteMapper;
 import com.hz.employmentsite.mapper.PcSiteUserMapper;
@@ -42,10 +43,13 @@ public class SiteInfoImpl implements SiteInfoService {
     @Autowired
     private PcSiteInstitutionMapper pcSiteInstitutionMapper;
 
+    @Autowired
+    private PcCompanyMapper pcCompanyMapper;
+
     @Override
     public PageInfo<SiteInfoVo> getList(int pageIndex, int pageSize, List<String> siteIDList, String siteCode, String siteName, String institutionID, String regionCode, String streetCode) {
         PageHelper.startPage(pageIndex, pageSize);
-        List<SiteInfoVo> dataList = siteInfoCQuery.getList(stringUtils.ListToInSql(siteIDList),siteCode,siteName,institutionID,regionCode,streetCode);
+        List<SiteInfoVo> dataList = siteInfoCQuery.getList(stringUtils.ListToInSql(siteIDList), siteCode, siteName, institutionID, regionCode, streetCode);
         PageInfo<SiteInfoVo> result = new PageInfo(dataList);
         return result;
     }
@@ -183,17 +187,31 @@ public class SiteInfoImpl implements SiteInfoService {
     public Integer delete(List<String> idList){
         var result = 0;
         for (String curSiteID: idList) {
+            // 关联站点工作人员检查
             PcSiteUserExample siteUserExp = new PcSiteUserExample();
             siteUserExp.or().andSiteIDEqualTo(curSiteID);
             var curSiteUserList = pcSiteUserMapper.selectByExample(siteUserExp).stream().toList();
-            if( curSiteUserList != null && curSiteUserList.size()>0){
-                throw new BaseException("10004","所选驿站站点已有关联站点人员信息,不允许删除!");
-            }else{
-                PcSiteExample contactExample = new PcSiteExample();
-                contactExample.or().andSiteIDEqualTo(curSiteID);
-                pcSiteMapper.deleteByExample(contactExample);
-                result += pcSiteMapper.deleteByExample(contactExample);
+            if (curSiteUserList != null && curSiteUserList.size() > 0) {
+                throw new BaseException("10004", "所选驿站站点已有关联站点人员信息,不允许删除!");
+            }
+            // 关联企业检查
+            PcCompanyExample companyExample = new PcCompanyExample();
+            companyExample.or().andSiteIDEqualTo(curSiteID);
+            List<PcCompany> companyList = pcCompanyMapper.selectByExample(companyExample).stream().toList();
+            if (!companyList.isEmpty()) {
+                throw new BaseException("10004", "所选驿站站点已有关联企业信息信息,不允许删除!");
             }
+
+            // 删除站点-机构关联表
+            PcSiteInstitutionExample siteInstitutionExample = new PcSiteInstitutionExample();
+            siteInstitutionExample.or().andSiteIDEqualTo(curSiteID);
+            pcSiteInstitutionMapper.deleteByExample(siteInstitutionExample);
+
+            // 删除主表
+            PcSiteExample contactExample = new PcSiteExample();
+            contactExample.or().andSiteIDEqualTo(curSiteID);
+            pcSiteMapper.deleteByExample(contactExample);
+            result += pcSiteMapper.deleteByExample(contactExample);
         }
         return result;
     }

+ 11 - 1
src/main/java/com/hz/employmentsite/services/impl/companyService/CompanyServiceImpl.java

@@ -195,7 +195,7 @@ public class CompanyServiceImpl implements CompanyService {
     @Override
     public List<CompanyVo> importCompany(List<CompanyVo> dataList, String userID) {
         if (dataList.size() <= 0)
-            throw new BaseException("", "请添加导入数据!");
+            throw new BaseException("1004", "请添加导入数据!");
         //所属驿站
         List<PcSite> siteList = siteMapper.selectByExample(null);
         //所属县区
@@ -209,9 +209,11 @@ public class CompanyServiceImpl implements CompanyService {
         List<CompanyVo> resultList = new ArrayList<>();
         //企业规模
         List<SysDictionaryItem> dicCompanyModelList = dictionaryService.getDictionaryItemList("CompanyModel");
+        List<SysDictionaryItem> dicCompanyTypeList = dictionaryService.getDictionaryItemList("CompanyType");
 
         dataList.forEach(item -> {
             String errorInfo = "";
+            item.companyID = UUID.randomUUID().toString();
             if (stringUtils.IsNullOrEmpty(item.companyCode))
                 errorInfo += "请填写统一信用代码!";
             if (stringUtils.IsNullOrEmpty(item.companyName))
@@ -272,6 +274,14 @@ public class CompanyServiceImpl implements CompanyService {
                     errorInfo += "街道名称不存在!";
             }
 
+            if (!stringUtils.IsNullOrEmpty(item.companyTypeStr))
+            {
+                item.companyType = dicCompanyTypeList.stream().filter(it -> it.getName().equals(item.companyTypeStr.trim()))
+                        .findFirst().orElse(new SysDictionaryItem()).getValue();
+                if (item.companyType == null || item.companyType == 0)
+                    errorInfo += "企业分类不存在!";
+            }
+
             if (!stringUtils.IsNullOrEmpty(item.companyModelStr))
             {
                 item.companyModel = dicCompanyModelList.stream().filter(it -> it.getName().equals(item.companyModelStr.trim()))

+ 66 - 13
src/main/java/com/hz/employmentsite/services/impl/companyService/PostServiceImpl.java

@@ -3,16 +3,12 @@ package com.hz.employmentsite.services.impl.companyService;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.hz.employmentsite.filter.exception.BaseException;
-import com.hz.employmentsite.mapper.PcCompanyMapper;
-import com.hz.employmentsite.mapper.PcPostMapper;
-import com.hz.employmentsite.mapper.PcRecommendMapper;
-import com.hz.employmentsite.mapper.PcRecommendMgtMapper;
+import com.hz.employmentsite.mapper.*;
 import com.hz.employmentsite.mapper.cquery.PostCQuery;
 import com.hz.employmentsite.model.*;
 import com.hz.employmentsite.services.service.companyService.PostService;
 import com.hz.employmentsite.services.service.system.DictionaryService;
 import com.hz.employmentsite.util.StringUtils;
-import com.hz.employmentsite.vo.jobUserManager.RecommendCompanyPostVo;
 import com.hz.employmentsite.vo.companyService.RecommendPostVo;
 import com.hz.employmentsite.vo.companyService.PostVo;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -42,6 +38,9 @@ public class PostServiceImpl implements PostService {
     @Autowired
     private PcRecommendMgtMapper pcRecommendMgtMapper;
 
+    @Autowired
+    private PcProfessionMapper pcProfessionMapper;
+
     @Autowired
     private PcCompanyMapper companyMapper;
 
@@ -49,9 +48,9 @@ public class PostServiceImpl implements PostService {
     private DictionaryService dictionaryService;
 
     @Override
-    public PageInfo<PostVo> getList(Integer page, Integer rows, List<String> postIDList, String professionName, Integer minCount, Integer maxCount, String companyName, String recordStatus, String WorkName,String companyID) {
+    public PageInfo<PostVo> getList(Integer page, Integer rows, List<String> postIDList, String professionName, Integer minCount, Integer maxCount, String companyName, String recordStatus,String companyID) {
         PageHelper.startPage(page, rows);
-        List<PostVo> list = postCQuery.selectPostList(stringUtils.ListToInSql(postIDList), professionName, minCount, maxCount, companyName, recordStatus, WorkName,companyID);
+        List<PostVo> list = postCQuery.selectPostList(stringUtils.ListToInSql(postIDList), professionName, minCount, maxCount, companyName, recordStatus,companyID);
         PageInfo<PostVo> result = new PageInfo(list);
         return result;
 
@@ -214,14 +213,30 @@ public class PostServiceImpl implements PostService {
         }else{
             ids.add(id);
         }
-        return postCQuery.selectPostList(stringUtils.ListToInSql(ids), null, null, null, null, null, null,null).stream().findFirst().orElse(null);
+        return postCQuery.selectPostList(stringUtils.ListToInSql(ids), null, null, null, null, null,null).stream().findFirst().orElse(null);
     }
 
     @Override
-    public List<PcPost> getDataListByCompanyId(String companyId) {
+    public List<PostVo> getDataListByCompanyID(String companyId) {
+        List<PostVo> resultList = new ArrayList<>();
         PcPostExample postExp = new PcPostExample();
         postExp.or().andCompanyIDEqualTo(companyId);
-        return pcPostMapper.selectByExample(postExp);
+        var postList = pcPostMapper.selectByExample(postExp);
+        for(PcPost curPost : postList){
+            PostVo item= new PostVo();
+            item.setPostID(curPost.getPostID());
+            item.setProfessionID(curPost.getProfessionID());
+            PcProfessionExample professionExp = new PcProfessionExample();
+            professionExp.or().andProfessionIDEqualTo(curPost.getProfessionID());
+            var curProfession = pcProfessionMapper.selectByExample(professionExp).get(0);
+            item.setProfessionName(curProfession.getProfessionName());
+            item.setCompanyID(curPost.getCompanyID());
+            item.setRecruitCount(curPost.getRecruitCount());
+            item.setStartTime(curPost.getStartTime());
+            item.setEndTime(curPost.getEndTime());
+            resultList.add(item);
+        }
+        return resultList;
     }
 
     @Override
@@ -232,8 +247,31 @@ public class PostServiceImpl implements PostService {
         PcCompanyExample companyExp = new PcCompanyExample();
         companyExp.or().andRecordStatusEqualTo(1);
         List<PcCompany> companyList = companyMapper.selectByExample(companyExp);
+        //岗位信息
+        List<SysDictionaryItem> thirdLevelProfessionList =  new ArrayList<>();
+        PcProfessionExample professionExp = new PcProfessionExample();
+        professionExp.or().andParentProfessionIDEqualTo("").andStatusEqualTo(1);
+        var firstLevelData = pcProfessionMapper.selectByExample(professionExp);
+        for(PcProfession curProfession : firstLevelData){
+            professionExp = new PcProfessionExample();
+            professionExp.or().andParentProfessionIDEqualTo(curProfession.getProfessionID()).andStatusEqualTo(1);
+            var secondLevelData = pcProfessionMapper.selectByExample(professionExp);
+            for(PcProfession curParentProfession: secondLevelData){
+                professionExp = new PcProfessionExample();
+                professionExp.or().andParentProfessionIDEqualTo(curParentProfession.getProfessionID()).andStatusEqualTo(1);
+                var thirdLevelData = pcProfessionMapper.selectByExample(professionExp);
+                for(PcProfession curItem : thirdLevelData){
+                    SysDictionaryItem item = new SysDictionaryItem();
+                    item.setCode(curItem.getProfessionID());
+                    item.setCode(curItem.getProfessionName());
+                    thirdLevelProfessionList.add(item);
+                }
+            }
+        }
+
         //文化程度
-        List<SysDictionaryItem> dicDataList = dictionaryService.getDictionaryItemList("CultureLevel");
+        List<SysDictionaryItem> dicCultureDataList = dictionaryService.getDictionaryItemList("CultureLevel");
+        List<SysDictionaryItem> dicWorkYearDataList = dictionaryService.getDictionaryItemList("WorkYearType");
         List<PostVo> resultList = new ArrayList<>();
 
         dataList.forEach(item -> {
@@ -246,10 +284,18 @@ public class PostServiceImpl implements PostService {
                 if (item.companyID == null)
                     errorInfo += "企业不存在!";
             }
-            if (stringUtils.IsNullOrEmpty(item.postName))
+            if (stringUtils.IsNullOrEmpty(item.professionName))
                 errorInfo += "请填写岗位名称!";
+            else {
+                item.professionID = thirdLevelProfessionList.stream().filter(it -> it.getName().equals(item.getProfessionName().trim()))
+                        .findFirst().orElse(new SysDictionaryItem()).getCode();
+                if (item.professionID == null||item.professionID=="")
+                    errorInfo += "岗位不存在!";
+            }
+
             if (stringUtils.IsNullOrEmpty(String.valueOf(item.recruitCount)) || item.recruitCount == null)
                 errorInfo += "请填写招聘人数!";
+
             if (stringUtils.IsNullOrEmpty(String.valueOf(item.startTime)) || item.startTime == null)
                 errorInfo += "请填写开始日期!";
             if (stringUtils.IsNullOrEmpty(String.valueOf(item.startTime)) || item.startTime == null)
@@ -257,11 +303,18 @@ public class PostServiceImpl implements PostService {
             if (stringUtils.IsNullOrEmpty(item.jobPlace))
                 errorInfo += "请填写招聘地点!";
 
+            if (stringUtils.IsNullOrEmpty(item.workYearStr)){
+                item.workYear = dicWorkYearDataList.stream().filter(it -> it.getName().equals(item.workYearStr.trim()))
+                        .findFirst().orElse(new SysDictionaryItem()).getValue();
+                if (item.workYear == null || item.workYear == 0)
+                    errorInfo += "输入的工作年限不存在!";
+            }
+
             if (item.isTrailName.trim().equals("是")) item.isTrail = true;
             else if (item.isTrailName.trim().equals("否"))item.isTrail = false;
 
             if (!stringUtils.IsNullOrEmpty(item.cultureLevelName)){
-                item.cultureRank = dicDataList.stream().filter(it -> it.getName().equals(item.cultureLevelName.trim()))
+                item.cultureRank = dicCultureDataList.stream().filter(it -> it.getName().equals(item.cultureLevelName.trim()))
                         .findFirst().orElse(new SysDictionaryItem()).getValue();
                 if (item.cultureRank == null || item.cultureRank == 0)
                     errorInfo += "输入的学历要求不存在!";

+ 1 - 1
src/main/java/com/hz/employmentsite/services/impl/jobUserManager/RecommendMgtServiceImpl.java

@@ -191,7 +191,7 @@ public class RecommendMgtServiceImpl implements RecommendMgtService {
                         boolean result = wechatService.sendMsg(item.get("companyOpenId").toString(), recommendmgtid, toCompanyTemp.getUrl() + "?recommendmgtid=" + recommendmgtid, toCompanyTemp.getTemplateId(), data);
 
                         if (result) {
-                            pcRecommendMgt.setIsSendUser(true);
+                            pcRecommendMgt.setIsSendCompany(true);
                             pcRecommendMgtMapper.updateByPrimaryKey(pcRecommendMgt);
                         }
                     } catch (Exception e) {

+ 5 - 2
src/main/java/com/hz/employmentsite/services/impl/system/CityAreaImpl.java

@@ -26,8 +26,11 @@ public class CityAreaImpl implements CityAreaService {
     @Override
     public List<AreaCode> getAreaList(String code) {
         AreaCodeExample exp=new AreaCodeExample();
-        exp.or().andLvEqualTo("4")
-        .andFidEqualTo(code);
+        if(code!="") {
+            exp.or().andLvEqualTo("4").andFidEqualTo(code);
+        }else{
+            exp.or().andLvEqualTo("4");
+        }
         exp.setOrderByClause("code");
         return areaCodeMapper.selectByExample(exp);
     }

+ 2 - 2
src/main/java/com/hz/employmentsite/services/service/companyService/PostService.java

@@ -6,13 +6,13 @@ import com.hz.employmentsite.vo.companyService.PostVo;
 import java.util.List;
 
 public interface PostService {
-    PageInfo<PostVo> getList(Integer page, Integer rows, List<String> postIDList,String professionName, Integer minCount, Integer maxCount, String companyName,String RecordStatus,String WorkName,String companyID);
+    PageInfo<PostVo> getList(Integer page, Integer rows, List<String> postIDList,String professionName, Integer minCount, Integer maxCount, String companyName,String RecordStatus ,String companyID);
     PageInfo<RecommendPostVo> getCommendPostList(Integer page, Integer rows, String jobUserID);
     Integer saveCommendPost(RecommendPostVo data, String userId);
     int save(PostVo data, String userId);
     int delete(List<String> ids);
     PostVo getDataById(String id);
-    List<PcPost> getDataListByCompanyId(String companyID);
+    List<PostVo> getDataListByCompanyID(String companyID);
     List<PostVo> importPost(List<PostVo> dataList, String userID);
 
     int deletePostAndRecommendMgt(String id);

+ 4 - 1
src/main/java/com/hz/employmentsite/vo/companyService/CompanyVo.java

@@ -32,7 +32,10 @@ public class CompanyVo {
 
     public String workSituation;
 
-    public String companyType;
+    public Integer companyType;
+    public String  companyTypeName;
+
+    public String  companyTypeStr;
 
     public String companyAddress;
 

+ 2 - 0
src/main/java/com/hz/employmentsite/vo/companyService/PostVo.java

@@ -32,6 +32,8 @@ public class PostVo {
 
     public Integer workYear;
 
+    public String workYearStr;
+
     public Integer cultureRank;
 
     public BigDecimal maxSalary;

+ 1 - 1
src/main/resources/application.yml

@@ -6,7 +6,7 @@ server:
 spring:
   web:
     resources:
-      static-locations: file:D:\work\projects\EmploymentSite\siteproject\EmploymentSite\src\main\resources\static\
+      static-locations: file:D:\Work\JavaProjects\EmploymentSite\src\main\resources\static\
   datasource:
     name: employmentsitedb
     type: com.alibaba.druid.pool.DruidDataSource

+ 0 - 1
src/main/resources/generatorConfig.xml

@@ -78,7 +78,6 @@
         <table schema="" tableName="sys_user"><property name="useActualColumnNames" value="true"/></table>
         <table schema="" tableName="sys_user_sys_role"><property name="useActualColumnNames" value="true"/></table>
          <table schema="" tableName="pc_company"><property name="useActualColumnNames" value="true"/></table>
-         <table schema="" tableName="pc_company"><property name="useActualColumnNames" value="true"/></table>
         <table schema="" tableName="pc_dotask"><property name="useActualColumnNames" value="true"/></table>
         <table schema="" tableName="pc_dowork"><property name="useActualColumnNames" value="true"/></table>
         <table schema="" tableName="pc_education"><property name="useActualColumnNames" value="true"/></table>

+ 9 - 9
src/main/resources/mapping/PcCompanyMapper.xml

@@ -11,7 +11,7 @@
     <result column="CompanyCode" jdbcType="VARCHAR" property="companyCode" />
     <result column="CompanyModel" jdbcType="INTEGER" property="companyModel" />
     <result column="WorkSituation" jdbcType="VARCHAR" property="workSituation" />
-    <result column="CompanyType" jdbcType="VARCHAR" property="companyType" />
+    <result column="CompanyType" jdbcType="INTEGER" property="companyType" />
     <result column="CompanyAddress" jdbcType="VARCHAR" property="companyAddress" />
     <result column="UserName" jdbcType="VARCHAR" property="userName" />
     <result column="UserMobile" jdbcType="VARCHAR" property="userMobile" />
@@ -161,7 +161,7 @@
     values (#{companyID,jdbcType=VARCHAR}, #{siteID,jdbcType=VARCHAR}, #{regionCode,jdbcType=VARCHAR}, 
       #{insuredCount,jdbcType=INTEGER}, #{streetCode,jdbcType=VARCHAR}, #{companyName,jdbcType=VARCHAR}, 
       #{companyCode,jdbcType=VARCHAR}, #{companyModel,jdbcType=INTEGER}, #{workSituation,jdbcType=VARCHAR}, 
-      #{companyType,jdbcType=VARCHAR}, #{companyAddress,jdbcType=VARCHAR}, #{userName,jdbcType=VARCHAR}, 
+      #{companyType,jdbcType=INTEGER}, #{companyAddress,jdbcType=VARCHAR}, #{userName,jdbcType=VARCHAR}, 
       #{userMobile,jdbcType=VARCHAR}, #{companyEmail,jdbcType=VARCHAR}, #{frName,jdbcType=VARCHAR}, 
       #{validDate,jdbcType=TIMESTAMP}, #{isShortage,jdbcType=INTEGER}, #{recordStatus,jdbcType=INTEGER}, 
       #{createUserID,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{modifyUserID,jdbcType=VARCHAR}, 
@@ -283,7 +283,7 @@
         #{workSituation,jdbcType=VARCHAR},
       </if>
       <if test="companyType != null">
-        #{companyType,jdbcType=VARCHAR},
+        #{companyType,jdbcType=INTEGER},
       </if>
       <if test="companyAddress != null">
         #{companyAddress,jdbcType=VARCHAR},
@@ -375,7 +375,7 @@
         WorkSituation = #{row.workSituation,jdbcType=VARCHAR},
       </if>
       <if test="row.companyType != null">
-        CompanyType = #{row.companyType,jdbcType=VARCHAR},
+        CompanyType = #{row.companyType,jdbcType=INTEGER},
       </if>
       <if test="row.companyAddress != null">
         CompanyAddress = #{row.companyAddress,jdbcType=VARCHAR},
@@ -444,7 +444,7 @@
       CompanyCode = #{row.companyCode,jdbcType=VARCHAR},
       CompanyModel = #{row.companyModel,jdbcType=INTEGER},
       WorkSituation = #{row.workSituation,jdbcType=VARCHAR},
-      CompanyType = #{row.companyType,jdbcType=VARCHAR},
+      CompanyType = #{row.companyType,jdbcType=INTEGER},
       CompanyAddress = #{row.companyAddress,jdbcType=VARCHAR},
       UserName = #{row.userName,jdbcType=VARCHAR},
       UserMobile = #{row.userMobile,jdbcType=VARCHAR},
@@ -477,7 +477,7 @@
       CompanyCode = #{row.companyCode,jdbcType=VARCHAR},
       CompanyModel = #{row.companyModel,jdbcType=INTEGER},
       WorkSituation = #{row.workSituation,jdbcType=VARCHAR},
-      CompanyType = #{row.companyType,jdbcType=VARCHAR},
+      CompanyType = #{row.companyType,jdbcType=INTEGER},
       CompanyAddress = #{row.companyAddress,jdbcType=VARCHAR},
       UserName = #{row.userName,jdbcType=VARCHAR},
       UserMobile = #{row.userMobile,jdbcType=VARCHAR},
@@ -525,7 +525,7 @@
         WorkSituation = #{workSituation,jdbcType=VARCHAR},
       </if>
       <if test="companyType != null">
-        CompanyType = #{companyType,jdbcType=VARCHAR},
+        CompanyType = #{companyType,jdbcType=INTEGER},
       </if>
       <if test="companyAddress != null">
         CompanyAddress = #{companyAddress,jdbcType=VARCHAR},
@@ -591,7 +591,7 @@
       CompanyCode = #{companyCode,jdbcType=VARCHAR},
       CompanyModel = #{companyModel,jdbcType=INTEGER},
       WorkSituation = #{workSituation,jdbcType=VARCHAR},
-      CompanyType = #{companyType,jdbcType=VARCHAR},
+      CompanyType = #{companyType,jdbcType=INTEGER},
       CompanyAddress = #{companyAddress,jdbcType=VARCHAR},
       UserName = #{userName,jdbcType=VARCHAR},
       UserMobile = #{userMobile,jdbcType=VARCHAR},
@@ -621,7 +621,7 @@
       CompanyCode = #{companyCode,jdbcType=VARCHAR},
       CompanyModel = #{companyModel,jdbcType=INTEGER},
       WorkSituation = #{workSituation,jdbcType=VARCHAR},
-      CompanyType = #{companyType,jdbcType=VARCHAR},
+      CompanyType = #{companyType,jdbcType=INTEGER},
       CompanyAddress = #{companyAddress,jdbcType=VARCHAR},
       UserName = #{userName,jdbcType=VARCHAR},
       UserMobile = #{userMobile,jdbcType=VARCHAR},

+ 24 - 7
src/main/resources/mapping/WxMessagestatusMapper.xml

@@ -5,6 +5,7 @@
     <id column="messageStatusId" jdbcType="VARCHAR" property="messageStatusId" />
     <result column="openId" jdbcType="VARCHAR" property="openId" />
     <result column="sourceId" jdbcType="VARCHAR" property="sourceId" />
+    <result column="url" jdbcType="VARCHAR" property="url" />
     <result column="sendTime" jdbcType="TIMESTAMP" property="sendTime" />
     <result column="recordStatus" jdbcType="INTEGER" property="recordStatus" />
     <result column="createUserID" jdbcType="VARCHAR" property="createUserID" />
@@ -74,7 +75,7 @@
     </where>
   </sql>
   <sql id="Base_Column_List">
-    messageStatusId, openId, sourceId, sendTime, recordStatus, createUserID, createTime, 
+    messageStatusId, openId, sourceId, url, sendTime, recordStatus, createUserID, createTime, 
     modifyUserID, modifyTime
   </sql>
   <sql id="Blob_Column_List">
@@ -130,13 +131,13 @@
   </delete>
   <insert id="insert" parameterType="com.hz.employmentsite.model.WxMessagestatus">
     insert into wx_messagestatus (messageStatusId, openId, sourceId, 
-      sendTime, recordStatus, createUserID, 
-      createTime, modifyUserID, modifyTime, 
-      content)
+      url, sendTime, recordStatus, 
+      createUserID, createTime, modifyUserID, 
+      modifyTime, content)
     values (#{messageStatusId,jdbcType=VARCHAR}, #{openId,jdbcType=VARCHAR}, #{sourceId,jdbcType=VARCHAR}, 
-      #{sendTime,jdbcType=TIMESTAMP}, #{recordStatus,jdbcType=INTEGER}, #{createUserID,jdbcType=VARCHAR}, 
-      #{createTime,jdbcType=TIMESTAMP}, #{modifyUserID,jdbcType=VARCHAR}, #{modifyTime,jdbcType=TIMESTAMP}, 
-      #{content,jdbcType=LONGVARCHAR})
+      #{url,jdbcType=VARCHAR}, #{sendTime,jdbcType=TIMESTAMP}, #{recordStatus,jdbcType=INTEGER}, 
+      #{createUserID,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{modifyUserID,jdbcType=VARCHAR}, 
+      #{modifyTime,jdbcType=TIMESTAMP}, #{content,jdbcType=LONGVARCHAR})
   </insert>
   <insert id="insertSelective" parameterType="com.hz.employmentsite.model.WxMessagestatus">
     insert into wx_messagestatus
@@ -150,6 +151,9 @@
       <if test="sourceId != null">
         sourceId,
       </if>
+      <if test="url != null">
+        url,
+      </if>
       <if test="sendTime != null">
         sendTime,
       </if>
@@ -182,6 +186,9 @@
       <if test="sourceId != null">
         #{sourceId,jdbcType=VARCHAR},
       </if>
+      <if test="url != null">
+        #{url,jdbcType=VARCHAR},
+      </if>
       <if test="sendTime != null">
         #{sendTime,jdbcType=TIMESTAMP},
       </if>
@@ -223,6 +230,9 @@
       <if test="row.sourceId != null">
         sourceId = #{row.sourceId,jdbcType=VARCHAR},
       </if>
+      <if test="row.url != null">
+        url = #{row.url,jdbcType=VARCHAR},
+      </if>
       <if test="row.sendTime != null">
         sendTime = #{row.sendTime,jdbcType=TIMESTAMP},
       </if>
@@ -254,6 +264,7 @@
     set messageStatusId = #{row.messageStatusId,jdbcType=VARCHAR},
       openId = #{row.openId,jdbcType=VARCHAR},
       sourceId = #{row.sourceId,jdbcType=VARCHAR},
+      url = #{row.url,jdbcType=VARCHAR},
       sendTime = #{row.sendTime,jdbcType=TIMESTAMP},
       recordStatus = #{row.recordStatus,jdbcType=INTEGER},
       createUserID = #{row.createUserID,jdbcType=VARCHAR},
@@ -270,6 +281,7 @@
     set messageStatusId = #{row.messageStatusId,jdbcType=VARCHAR},
       openId = #{row.openId,jdbcType=VARCHAR},
       sourceId = #{row.sourceId,jdbcType=VARCHAR},
+      url = #{row.url,jdbcType=VARCHAR},
       sendTime = #{row.sendTime,jdbcType=TIMESTAMP},
       recordStatus = #{row.recordStatus,jdbcType=INTEGER},
       createUserID = #{row.createUserID,jdbcType=VARCHAR},
@@ -289,6 +301,9 @@
       <if test="sourceId != null">
         sourceId = #{sourceId,jdbcType=VARCHAR},
       </if>
+      <if test="url != null">
+        url = #{url,jdbcType=VARCHAR},
+      </if>
       <if test="sendTime != null">
         sendTime = #{sendTime,jdbcType=TIMESTAMP},
       </if>
@@ -317,6 +332,7 @@
     update wx_messagestatus
     set openId = #{openId,jdbcType=VARCHAR},
       sourceId = #{sourceId,jdbcType=VARCHAR},
+      url = #{url,jdbcType=VARCHAR},
       sendTime = #{sendTime,jdbcType=TIMESTAMP},
       recordStatus = #{recordStatus,jdbcType=INTEGER},
       createUserID = #{createUserID,jdbcType=VARCHAR},
@@ -330,6 +346,7 @@
     update wx_messagestatus
     set openId = #{openId,jdbcType=VARCHAR},
       sourceId = #{sourceId,jdbcType=VARCHAR},
+      url = #{url,jdbcType=VARCHAR},
       sendTime = #{sendTime,jdbcType=TIMESTAMP},
       recordStatus = #{recordStatus,jdbcType=INTEGER},
       createUserID = #{createUserID,jdbcType=VARCHAR},

+ 0 - 3
src/main/resources/mapping/cquery/PostCQuery.xml

@@ -34,9 +34,6 @@
             <if test="RecordStatus != null and RecordStatus != ''">
                 and post.RecordStatus = #{RecordStatus}
             </if>
-            <if test="WorkName != null and WorkName != ''">
-                and post.WorkName like Concat('%', #{WorkName},'%')
-            </if>
             <if test="companyID != null and companyID != ''">
                 and post.CompanyID = #{companyID}
             </if>

BIN
src/main/resources/static/doc/template/企业信息导入模板.xlsx


BIN
src/main/resources/static/doc/template/岗位信息导入模板.xlsx


+ 3 - 3
vue/src/api/companyService/company.ts

@@ -36,12 +36,12 @@ export function save(data: any) {
   })
 }
 
-export function del(id) {
+export function del(ids) {
   return request<object>(
     {
       url: 'companyService/company/delete',
-      method: 'get',
-      params: {id},
+      method: 'post',
+      data: ids,
     },
     {
       isNew: true,

+ 2 - 2
vue/src/api/companyService/post.ts

@@ -48,12 +48,12 @@ export  function  savePost(data:any){
   });
 }
 
-export function del(id: any) {
+export function del(ids: any) {
   return request<object>(
     {
       url: "companyService/post/delete",
       method: 'post',
-      params: {id}
+      data: ids
     },
     {
       isNew: true,

+ 2 - 2
vue/src/components/basic/excel/importExcel/importExcel.vue

@@ -107,7 +107,7 @@ export default defineComponent({
 
     const addData = (result: any) => {
       okButtonProps.value.disabled = false;
-      console.log(result);
+      console.log("result",result);
       if (result) {
         result.forEach(sheet => {
           sheet.results.forEach(item => {
@@ -120,7 +120,7 @@ export default defineComponent({
           });
         });
 
-        console.log(excelData.value);
+        console.log("excel数据",excelData.value);
       }
     }
 

+ 3 - 1
vue/src/router/asyncModules/companyService.ts

@@ -2,8 +2,10 @@ export default {
   'companyService/enterprise/index': () => import('@/views/companyService/company/index.vue'),
   'companyService/enterprise/add': () => import('@/views/companyService/company/edit.vue'),
   'companyService/enterprise/edit': () => import('@/views/companyService/company/edit.vue'),
+  'companyService/enterprise/detail': () => import('@/views/companyService/company/detail.vue'),
   'companyService/post/index': () => import('@/views/companyService/post/index.vue'),
   'companyService/post/add': () => import('@/views/companyService/post/edit.vue'),
   'companyService/post/edit': () => import('@/views/companyService/post/edit.vue'),
-  'companyService/post/recommend': () => import('@/views/companyService/post/recommend.vue')
+  'companyService/post/recommend': () => import('@/views/companyService/post/recommend.vue'),
+  'companyService/post/detail': () => import('@/views/companyService/post/detail.vue')
 };

+ 61 - 1
vue/src/views/baseSettings/siteInfo/detail.vue

@@ -13,6 +13,12 @@
       <a-descriptions-item label="经度">{{ siteInfo.siteLongitude }}</a-descriptions-item>
       <a-descriptions-item label="纬度">{{ siteInfo.siteLatitude }}</a-descriptions-item>
     </a-descriptions>
+    <a-divider orientation="left">站点工作人员</a-divider>
+    <a-table :columns="siteUserColumns" :data-source="siteUserList" :scroll="{ x:'100%', y: 200 }"
+             :pagination="siteUserTabPagination"
+             @change="siteUserTabChange"
+             bordered>
+    </a-table>
     <a-divider orientation="left">其他信息</a-divider>
     <a-descriptions bordered>
       <a-descriptions-item label="备注">{{ siteInfo.remark }}</a-descriptions-item>
@@ -21,11 +27,15 @@
 </template>
 
 <script setup lang="ts">
-import {onMounted, reactive} from "vue";
+import {computed, onMounted, reactive, ref} from "vue";
 import {getSiteByID} from "@/api/baseSettings/siteInfo";
+import type {TableColumnsType, TableProps} from "ant-design-vue";
+import {getSiteUserList} from "@/api/baseSettings/userInfo";
+import {getPaginationTotalTitle} from "@/utils/common";
 
 // 站点信息
 const siteInfo = reactive({
+  siteID: "",
   siteCode: "",
   siteName: "",
   institutionName: "",
@@ -38,6 +48,40 @@ const siteInfo = reactive({
   siteLatitude: "",
   remark: "",
 })
+// 站点人员查询数据
+const siteUserSearchParams = reactive({
+  pageIndex: 1,
+  pageSize: 20,
+  siteUserName: '',
+  siteID: '',
+  userNo: ""
+});
+// 站点人员表结构
+const siteUserColumns: TableColumnsType = [
+  {
+    title: '序号',
+    align: "center",
+    key: 'siteUserID',
+    customRender: item => `${siteUserSearchParams.pageSize * (siteUserSearchParams.pageIndex - 1) + item.index + 1}`
+  },
+  {title: '工号', dataIndex: 'userNo', key: 'userNo', align: "center"},
+  {title: '人员名称', dataIndex: 'siteUserName', key: 'siteUserName', align: "center"},
+  {title: '性别', dataIndex: 'genderName', key: 'genderName', align: "center"},
+  {title: '联系电话', dataIndex: 'mobile', key: 'mobile', align: "center"},
+];
+// 站点人员数据
+const siteUserList = ref([]);
+const siteUserTabFormState = reactive({
+  total: 0,
+  loading: false
+});
+const siteUserTabPagination = computed(() => ({
+  total: siteUserTabFormState.total,
+  current: siteUserSearchParams.pageIndex,
+  pageSize: siteUserSearchParams.pageSize,
+  showSizeChanger: true,
+  showTotal: total => getPaginationTotalTitle(total)
+}));
 
 // 站点数据加载
 function loadData(siteID: any) {
@@ -46,8 +90,24 @@ function loadData(siteID: any) {
       siteInfo[key] = result[key];
     })
   });
+  findSiteUser(siteID)
 }
 
+// 查询站点人员数据
+function findSiteUser(siteId: string) {
+  siteUserSearchParams["siteID"] = siteId;
+  getSiteUserList(siteUserSearchParams).then((result: any) => {
+    siteUserList.value = result.list;
+  });
+}
+
+// 站点人员表格变更
+const siteUserTabChange: TableProps['onChange'] = (pag: { pageSize: number; current: number },) => {
+  siteUserSearchParams.pageIndex = pag.current;
+  siteUserSearchParams.pageSize = pag.pageSize;
+  findSiteUser(siteInfo.siteID);
+};
+
 // 页面初始化
 onMounted(() => {
   const id = history.state.params?.id;

+ 95 - 0
vue/src/views/companyService/company/detail.vue

@@ -0,0 +1,95 @@
+<template>
+  <div class="card-edit">
+    <a-divider orientation="left">企业基础信息</a-divider>
+    <a-descriptions bordered>
+      <a-descriptions-item label="统一社会信用代码">{{ companyInfo.companyCode }}</a-descriptions-item>
+      <a-descriptions-item label="企业名称">{{ companyInfo.companyName }}</a-descriptions-item>
+      <a-descriptions-item label="所属驿站">{{ companyInfo.SiteName }}</a-descriptions-item>
+      <a-descriptions-item :span="2" label="企业办公地址">{{ companyInfo.companyAddress }}</a-descriptions-item>
+      <a-descriptions-item label="企业联系人">{{ companyInfo.userName }}</a-descriptions-item>
+      <a-descriptions-item label="企业联系电话">{{ companyInfo.userMobile }}</a-descriptions-item>
+      <a-descriptions-item label="企业状态">{{ companyInfo.recordStatus == 0 ? '停业' : '在营' }}</a-descriptions-item>
+      <a-descriptions-item label="是否缺工">{{ companyInfo.isShortage == 0 ? '否' : '是' }}</a-descriptions-item>
+      <a-descriptions-item label="企业所在经度">{{ companyInfo.longitude }}</a-descriptions-item>
+      <a-descriptions-item label="企业所在纬度">{{ companyInfo.latitude }}</a-descriptions-item>
+    </a-descriptions>
+    <a-divider orientation="left">附件照片</a-divider>
+    <b-upload-file :fileRefId="companyInfo.companyID" :readonly="true" :multiple="true" style="width: 100%;"
+                   :setFileList="setFileList" :accept="'.pdf,.png,.jpg'"></b-upload-file>
+    <a-divider orientation="left">其他信息</a-divider>
+    <a-descriptions bordered>
+      <a-descriptions-item label="法定代表人(负责人)">{{ companyInfo.frName }}</a-descriptions-item>
+      <a-descriptions-item label="营业执照有效期">
+        {{ companyInfo.validDate ? dayjs(companyInfo.validDate).format('YYYY-MM-DD') : '' }}
+      </a-descriptions-item>
+      <a-descriptions-item label="企业邮箱">{{ companyInfo.companyEmail }}</a-descriptions-item>
+      <a-descriptions-item label="企业分类">{{ companyInfo.companyType }}</a-descriptions-item>
+      <a-descriptions-item label="所属县区">{{ companyInfo.regionName }}</a-descriptions-item>
+      <a-descriptions-item label="所属街道">{{ companyInfo.streetName }}</a-descriptions-item>
+      <a-descriptions-item label="企业规模">{{ companyInfo.companyModel }}</a-descriptions-item>
+      <a-descriptions-item label="用工情况(人)">{{ companyInfo.workSituation }}</a-descriptions-item>
+      <a-descriptions-item label="参保人数(人)">{{ companyInfo.insuredCount }}</a-descriptions-item>
+      <a-descriptions-item :span="3" label="经营范围">{{ companyInfo.businScope }}</a-descriptions-item>
+      <a-descriptions-item :span="3" label="企业简介">{{ companyInfo.companyDesc }}</a-descriptions-item>
+    </a-descriptions>
+  </div>
+</template>
+
+<script setup lang="ts">
+
+import {getCompanyById} from "@/api/companyService/company";
+import {onMounted, reactive, ref} from "vue";
+import BUploadFile from "@/components/file/uploadFile.vue";
+import dayjs from "dayjs";
+
+// 企业信息
+const companyInfo = reactive({
+  companyID: "",
+  companyCode: "",
+  companyName: "",
+  SiteName: "",
+  companyAddress: "",
+  userName: "",
+  userMobile: "",
+  recordStatus: null,
+  isShortage: null,
+  longitude: "",
+  latitude: "",
+  frName: "",
+  validDate: "",
+  companyEmail: "",
+  companyType: "",
+  regionName: "",
+  streetName: "",
+  companyModel: "",
+  workSituation: "",
+  insuredCount: "",
+  businScope: "",
+  companyDesc: "",
+})
+// 文件数据
+const fileList = ref();
+
+// 数据加载
+function loadData(id: any) {
+  getCompanyById(id).then(result => {
+    Object.keys(companyInfo).forEach(key => {
+      companyInfo[key] = result[key]
+    })
+  })
+}
+
+// 设置文件列表
+function setFileList(files) {
+  fileList.value = files;
+};
+
+onMounted(() => {
+  const id = history.state.params?.id;
+  loadData(id);
+})
+</script>
+
+<style scoped>
+
+</style>

+ 2 - 2
vue/src/views/companyService/company/edit.vue

@@ -5,7 +5,7 @@
       <a-row :gutter="24">
         <a-col :span="8">
           <a-form-item
-            label="统一社会信用代码"
+            label="统一信用代码"
             :label-col="{ span: 8 }"
             name="companyCode"
             :rules="[{ required: true, message: '请输入统一信用代码!' }]"
@@ -179,7 +179,7 @@
               ref="select"
               v-model:value="dataModel.companyType"
               :options="companyTypeList"
-              :field-names="{ label: 'name', value: 'name' }"
+              :field-names="{ label: 'name', value: 'value' }"
             >
             </a-select>
           </a-form-item>

+ 20 - 15
vue/src/views/companyService/company/index.vue

@@ -101,6 +101,7 @@
         <template #bodyCell="{ column, text, record }">
           <template v-if="column.key === 'operation'">
             <div class="table-operation">
+              <a-button type="link" size="small" @click='onDetail(record)' functioncode="T01020101">查看</a-button>
               <a-button type="link" size="small" @click='onEdit(record)' functioncode="T01020103">编辑</a-button>
               <a-button type="link" size="small" @click="onDel(record)" functioncode="T01020104">删除</a-button>
             </div>
@@ -119,15 +120,14 @@
 </template>
 
 <script lang="ts">
-import {reactive, ref, computed, defineComponent, createVNode} from 'vue';
+import {computed, createVNode, defineComponent, reactive, ref} from 'vue';
 import {DownOutlined, ExclamationCircleOutlined, UpOutlined} from '@ant-design/icons-vue';
-import type {FormInstance} from 'ant-design-vue';
-import type {TableColumnsType, TableProps} from 'ant-design-vue';
-import {getList, del} from '@/api/companyService/company';
+import type {FormInstance, TableColumnsType, TableProps} from 'ant-design-vue';
+import {Modal, SelectProps} from "ant-design-vue";
+import {del, getList} from '@/api/companyService/company';
 import BExportExcel from "@/components/basic/excel/exportExcel/exportExcel.vue";
 import BImportExcel from '@/components/basic/excel/importExcel/importExcel.vue';
 import {getPaginationTotalTitle} from "@/utils/common";
-import {Modal, SelectProps} from "ant-design-vue";
 import dayjs from "dayjs";
 import {useTabsViewStore} from '@/store/modules/tabsView';
 import {get} from "@/api/common";
@@ -158,21 +158,21 @@ export default defineComponent({
       title: '导入',
       url: 'companyService/company/importCompany',
       columns: [
-        {cnName: '统一社会信用代码', enName: 'companyCode', width: 140},
+        {cnName: '统一信用代码', enName: 'companyCode', width: 140},
         {cnName: '企业名称', enName: 'companyName', width: 100},
         {cnName: '所属驿站', enName: 'SiteName', width: 100},
-        {cnName: '企业办公地址', enName: 'address', width: 100},
+        {cnName: '企业办公地址', enName: 'companyAddress', width: 100},
         {cnName: '企业联系人', enName: 'userName', width: 100},
         {cnName: '企业联系电话', enName: 'userMobile', width: 100},
         {cnName: '企业状态', enName: 'recordStatusName', width: 100},
-        {cnName: '是否缺工', enName: 'isShortage', width: 100},
+        {cnName: '是否缺工', enName: 'isShortageName', width: 100},
         {cnName: '法定代表人(负责人)', enName: 'frName', width: 140},
         {cnName: '营业执照有效期', enName: 'validTime', width: 100},
-        {cnName: '联系邮箱', enName: 'companyEmail', width: 100},
-        {cnName: '企业分类', enName: 'companyType', width: 100},
+        {cnName: '企业邮箱', enName: 'companyEmail', width: 100},
+        {cnName: '企业分类', enName: 'companyTypeStr', width: 100},
         {cnName: '所属县区', enName: 'regionName', width: 100},
         {cnName: '所属街道', enName: 'streetName', width: 100},
-        {cnName: '企业规模', enName: 'companyModel', width: 100},
+        {cnName: '企业规模', enName: 'companyModelStr', width: 100},
         {cnName: '用工情况(人)', enName: 'workSituation', width: 100},
         {cnName: '参保人数(人)', enName: 'insuredCount', width: 100},
         {cnName: '经营范围', enName: 'businScope', width: 100},
@@ -210,7 +210,7 @@ export default defineComponent({
           return item.record.createTime == null ? "" : (dayjs(item.record.createTime).format('YYYY-MM-DD'))
         }
       },
-      {title: '操作', key: 'operation', fixed: 'right', width: 100, align: "center"},
+      {title: '操作', key: 'operation', fixed: 'right', width: 150, align: "center"},
     ];
     const pagination = computed(() => ({
       total: formState.total,
@@ -276,7 +276,7 @@ export default defineComponent({
 
     const onDel = (item: any) => {
       Modal.confirm({
-        title: '确认删除选中的公司信息?',
+        title: '确认删除选中的企业信息?',
         icon: createVNode(ExclamationCircleOutlined),
         content: '',
         okText: '确认删除',
@@ -284,7 +284,7 @@ export default defineComponent({
         okButtonProps: {},
         cancelText: '取消',
         onOk() {
-          del(item.companyID).then(() => {
+          del([item.companyID]).then(() => {
             loadData();
           });
         },
@@ -302,6 +302,10 @@ export default defineComponent({
       tabsViewStore.addTabByPath('/companyService/enterprise/edit', {id: item.companyID});
     };
 
+    const onDetail = (item: any) => {
+      tabsViewStore.addTabByPath('/companyService/enterprise/detail', {id: item.companyID});
+    };
+
     return {
       formRef,
       modalShowRef,
@@ -324,7 +328,8 @@ export default defineComponent({
       importOptions,
       recordStatusList,
       regionList,
-      streetList
+      streetList,
+      onDetail
     };
   },
   created() {

+ 2 - 2
vue/src/views/companyService/company/show.vue

@@ -50,8 +50,8 @@ const formState = reactive({
 const columns: TableColumnsType = [
   {title: '序号', align: "center", key: 'companyID', width:60,
     customRender: item => `${searchParams.pageSize * (searchParams.pageIndex - 1) + item.index + 1}`},
-  {title: '岗位名称', dataIndex: 'postName', key: 'companyName',width: 200, align: "center"},
-  {title: '招聘人数', dataIndex: 'recruitCount', key: 'regionName', width: 120, align: "center"},
+  {title: '岗位名称', dataIndex: 'professionName', key: 'professionName',width: 200, align: "center"},
+  {title: '招聘人数', dataIndex: 'recruitCount', key: 'recruitCount', width: 120, align: "center"},
   {title: '招聘开始日期', dataIndex: 'startTime', key: 'startTime', width: 120,align: "center",
     customRender: (item) => {return item.record.startTime == null ? "" : (dayjs(item.record.startTime).format('YYYY-MM-DD'))}
   },

+ 97 - 0
vue/src/views/companyService/post/detail.vue

@@ -0,0 +1,97 @@
+<template>
+  <div class="card-edit">
+    <a-divider orientation="left">岗位基础信息</a-divider>
+    <a-descriptions bordered>
+      <a-descriptions-item label="企业名称">{{ postInfo.companyName }}</a-descriptions-item>
+      <a-descriptions-item label="岗位名称">{{ postInfo.professionName }}</a-descriptions-item>
+      <a-descriptions-item label="招聘人数">{{ postInfo.recruitCount }}</a-descriptions-item>
+      <a-descriptions-item label="招聘日期">
+        {{ postInfo.startTime ? dayjs(postInfo.startTime).format('YYYY-MM-DD') : '' }}
+        至
+        {{ postInfo.endTime ? dayjs(postInfo.endTime).format('YYYY-MM-DD') : '' }}
+      </a-descriptions-item>
+      <a-descriptions-item :span="3" label="招聘地点">{{ postInfo.jobPlace }}</a-descriptions-item>
+    </a-descriptions>
+    <a-divider orientation="left">其他信息</a-divider>
+    <a-descriptions bordered>
+      <a-descriptions-item label="岗位月薪(元)">
+        {{ postInfo.minSalary }}
+        至
+        {{ postInfo.maxSalary }}
+      </a-descriptions-item>
+      <a-descriptions-item label="是否有试用期">{{ postInfo.isTrail ? '是' : '否' }}</a-descriptions-item>
+      <a-descriptions-item label="试用期(月)">{{ postInfo.trailMonths }}</a-descriptions-item>
+      <a-descriptions-item label="试用期月薪(元)">
+        {{ postInfo.trailMinSalary }}
+        至
+        {{ postInfo.trailMaxSalary }}
+      </a-descriptions-item>
+      <a-descriptions-item label="工作年限要求">{{ workYear }}</a-descriptions-item>
+      <a-descriptions-item label="学历要求">{{ postInfo.cultureLevelName }}</a-descriptions-item>
+      <a-descriptions-item :span="3" label="福利待遇">{{ postInfo.welfare }}</a-descriptions-item>
+      <a-descriptions-item :span="3" label="其他要求">{{ postInfo.postDesc }}</a-descriptions-item>
+    </a-descriptions>
+  </div>
+</template>
+
+<script setup lang="ts">
+import {getPostByID} from "@/api/companyService/post";
+import {computed, onMounted, reactive, ref} from "vue";
+import dayjs from "dayjs";
+import {get} from "@/api/common";
+
+// 岗位信息
+const postInfo = reactive({
+  companyName: "",
+  professionName: "",
+  recruitCount: "",
+  startTime: "",
+  endTime: "",
+  jobPlace: "",
+  minSalary: "",
+  maxSalary: "",
+  isTrail: "",
+  trailMonths: "",
+  trailMinSalary: "",
+  trailMaxSalary: "",
+  workYear: "",
+  cultureLevelName: "",
+  welfare: "",
+  postDesc: "",
+})
+// 工作年限数据
+const WorkYearTypeList = ref<Array<any>>([])
+// 获取工作年限
+const workYear = computed(() => {
+  if (postInfo.workYear && WorkYearTypeList.value.length > 0) {
+    const item = WorkYearTypeList.value.find(item => item.value == postInfo.workYear)
+    if (item) {
+      return item.name;
+    }
+  }
+  return postInfo.workYear;
+})
+
+// 数据加载
+function loadData(id: any) {
+  getPostByID(id).then(result => {
+    Object.keys(postInfo).forEach((key) => {
+
+      postInfo[key] = result[key];
+    })
+  })
+}
+
+// 页面初始化
+onMounted(() => {
+  const id = history.state.params?.id;
+  loadData(id);
+  get('system/dictionary/getDictionaryItemByCodeList', {code: 'WorkYearType'}).then(result => {
+    WorkYearTypeList.value = result;
+  });
+})
+</script>
+
+<style scoped>
+
+</style>

+ 24 - 13
vue/src/views/companyService/post/edit.vue

@@ -19,9 +19,9 @@
       <a-row justify="start">
         <a-col flex="520px">
           <a-form-item label="岗位名称" :label-col="{ span: 5 }"
-                       name="professionName"  :rules="[{ required: true, message: '请选择岗位名称!' }]" >
+                       name="professionName" :rules="[{ required: true, message: '请选择岗位名称!' }]">
             <a-cascader :load-data="loadLevelProfessionList" v-model:value="dataModel.professionName"
-                        :options="firstProfessionList" change-on-select>
+                        :options="firstProfessionList" change-on-select @change="professionChange">
             </a-cascader>
           </a-form-item>
         </a-col>
@@ -185,12 +185,12 @@
 <script lang="ts">
 import {defineComponent, reactive, ref, toRefs, watch} from 'vue';
 import {useRouter} from 'vue-router';
-import {savePost, getPostByID} from '@/api/companyService/post';
-import type {CascaderProps,SelectProps} from 'ant-design-vue';
+import {getPostByID, savePost} from '@/api/companyService/post';
+import type {CascaderProps, SelectProps} from 'ant-design-vue';
+import {message} from "ant-design-vue";
 import {useTabsViewStore} from '@/store/modules/tabsView';
 import BUploadFile from '@/components/file/uploadFile.vue';
 import {get} from '@/api/common';
-import {message} from "ant-design-vue";
 
 interface postModel {
   dataModel: any;
@@ -263,14 +263,12 @@ export default defineComponent(
       };
 
       watch(() => postCompany.dataModel.professionName, (selectedValues) => {
-        console.log("dd",selectedValues);
+        //console.log("dd",selectedValues);
         if (selectedValues && selectedValues.length == 3) {
           postCompany.dataModel.professionID = selectedValues[2];
           postCompany.dataModel.hasProfession = true;
-        } else {
-          postCompany.dataModel.professionID = '';
-          postCompany.dataModel.hasProfession = false;
         }
+        //console.log("dsd",postCompany.dataModel);
       });
 
       get('system/dictionary/getDictionaryItemByCodeList', {code: 'CultureLevel'}).then(result => {
@@ -295,13 +293,16 @@ export default defineComponent(
         if(!postCompany.dataModel.hasProfession){
           message.error("请选择完整的岗位信息!")
         }else{
-          postCompany.dataModel.professionName=null;
-          console.log("当前岗位信息",postCompany.dataModel);
+          // postCompany.dataModel.postName = postCompany.dataModel.professionName;
+          postCompany.dataModel.professionName = null;
           savePost(postCompany.dataModel).then((result) => {
             if (result) {
               tabsViewStore.closeCurrentTab(fullpath);
               tabsViewStore.addTabByPath('/companyService/post/index', {reload: 1});
             }
+          }).finally(() => {
+            // 重新填充,防止请求失败
+            postCompany.dataModel.professionName = postCompany.dataModel.postName;
           });
         }
 
@@ -312,11 +313,20 @@ export default defineComponent(
         isEdit.value = id != null;
         getFirstProfessionList();
         getPostByID(id).then(result => {
-          console.log(result);
           postCompany.dataModel = result;
+          postCompany.dataModel.hasProfession = true;
         })
+        console.log("初始化岗位信息",postCompany.dataModel);
       };
 
+      // 岗位名称选择变更事件
+      function professionChange(value: any, selectedOptions: any) {
+        if (value.length >= 3) {
+          postCompany.dataModel.postName = selectedOptions[2].label;
+          // postCompany.dataModel.professionName = selectedOptions[2].label;
+        }
+      }
+
       return {
         ...toRefs(postCompany),
         loadData,
@@ -330,7 +340,8 @@ export default defineComponent(
         cultureLevelList,
         WorkYearTypeList,
         postCompany,
-        isEdit
+        isEdit,
+        professionChange
       }
     },
     created() {

+ 12 - 15
vue/src/views/companyService/post/index.vue

@@ -65,11 +65,6 @@
             </a-select>
           </a-form-item>
         </a-col>
-        <a-col :span="6">
-          <a-form-item label="工种名称" :label-col="{span:6}" name="WorkName">
-            <a-input v-model:value="searchParams.workName" placeholder=""/>
-          </a-form-item>
-        </a-col>
       </a-row>
       <a-row class="edit-operation">
         <a-col :span="24" style="text-align: right">
@@ -100,6 +95,7 @@
           </template>
           <template v-if="column.key === 'operation'">
             <div class="table-operation">
+              <a-button type="link" size="small" @click='onDetail(record)' functioncode="T01020201">查看</a-button>
               <a-button type="link" size="small" @click='onEdit(record)' functioncode="T01020203">编辑</a-button>
               <a-button type="link" size="small" @click="onDel(record)" functioncode="T01020204">删除</a-button>
               <a-button type="link" size="small"  @click="onRecommendJob(record)" functioncode="T01030207">推荐求职人员</a-button>
@@ -113,16 +109,14 @@
 </template>
 
 <script lang="ts">
-import {reactive, ref, computed, defineComponent, createVNode} from 'vue';
-import {DownOutlined, UpOutlined} from '@ant-design/icons-vue';
-import type {FormInstance} from 'ant-design-vue';
+import {computed, createVNode, defineComponent, reactive, ref} from 'vue';
+import {DownOutlined, ExclamationCircleOutlined, UpOutlined} from '@ant-design/icons-vue';
+import type {FormInstance, TableColumnsType, TableProps} from 'ant-design-vue';
 import {Modal, SelectProps} from 'ant-design-vue';
-import type {TableColumnsType, TableProps} from 'ant-design-vue';
-import {getList, del} from '@/api/companyService/post';
+import {del, getList} from '@/api/companyService/post';
 import BExportExcel from "@/components/basic/excel/exportExcel/exportExcel.vue";
 import BImportExcel from '@/components/basic/excel/importExcel/importExcel.vue';
 import {getPaginationTotalTitle} from "@/utils/common";
-import {ExclamationCircleOutlined} from '@ant-design/icons-vue';
 import dayjs from 'dayjs';
 import {useRoute} from 'vue-router';
 import {useTabsViewStore} from "@/store/modules/tabsView";
@@ -139,7 +133,6 @@ export default defineComponent({
       pageSize: 20,
       minCount: null,
       maxCount: null,
-      workName: null,
       professionName: null,
       recordStatus: null
     });
@@ -215,7 +208,7 @@ export default defineComponent({
       {title: '联系人', dataIndex: 'userName', key: 'userName', align: "center"},
       {title: '联系电话', dataIndex: 'userMobile', key: 'userMobile', width: 200, align: "center"},
       {title: '推荐数量', dataIndex: 'recommendNum',key: 'recommendNum',width: 100, align: "center"},
-      {title: '操作', key: 'operation', fixed: 'right', width: 200, align: "center"},
+      {title: '操作', key: 'operation', fixed: 'right', width: 240, align: "center"},
     ];
     const pagination = computed(() => ({
       total: formState.total,
@@ -241,6 +234,9 @@ export default defineComponent({
     const onEdit = (item: any) => {
       tabsViewStore.addTabByPath('/companyService/post/edit', {id: item.postID});
     };
+    const onDetail = (item: any) => {
+      tabsViewStore.addTabByPath('/companyService/post/detail', {id: item.postID});
+    };
 
     const onRecommendJob = (item) =>{
       recommendRef.value.show(item.professionID,item.parentProfessionID,item.professionName,item.postID,item.companyName,0,'推荐求职人员');
@@ -299,7 +295,7 @@ export default defineComponent({
         okButtonProps: {},
         cancelText: '取消',
         onOk() {
-          del(item.postID).then(() => {
+          del([item.postID]).then(() => {
             loadData();
           });
         },
@@ -330,7 +326,8 @@ export default defineComponent({
       onRecommendInfo,
       expand,
       postStatusList,
-      companyList
+      companyList,
+      onDetail
     };
   },
   created() {

+ 1 - 3
vue/src/views/jobUserManager/jobhunt/edit.vue

@@ -189,9 +189,6 @@ export default defineComponent({
       if (selectedValues && selectedValues.length == 3) {
         formData.dataModel.professionID = selectedValues[2];
         formData.dataModel.hasProfession = true;
-      } else {
-        formData.dataModel.professionID = '';
-        formData.dataModel.hasProfession = false;
       }
     });
     const getJobUserList = async function() {
@@ -225,6 +222,7 @@ export default defineComponent({
       getJobWorkTypeList();
       getJobHuntByID(id).then((result: any) => {
         formData.dataModel = result;
+        formData.dataModel.hasProfession = true;
       });
       formState.loading = false;
     };