Bläddra i källkod

Merge remote-tracking branch 'origin/master'

yusm 5 månader sedan
förälder
incheckning
f79674662c
48 ändrade filer med 210 tillägg och 65 borttagningar
  1. 6 0
      fhKeeper/formulahousekeeper/customerBuler-crm/src/App.vue
  2. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/main.ts
  3. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/component/attachment.vue
  4. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/component/information.vue
  5. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/component/operationRecord.vue
  6. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/component/products.vue
  7. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/component/relatedTasks.vue
  8. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/detail/index.vue
  9. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/contacts/component/information.vue
  10. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/contacts/component/operationRecord.vue
  11. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/contacts/component/relatedTasks.vue
  12. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/attachment.vue
  13. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/information.vue
  14. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/operationRecord.vue
  15. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/relatedBusiness.vue
  16. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/relatedContacts.vue
  17. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/relatedOrders.vue
  18. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/relatedTasks.vue
  19. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/detail/index.vue
  20. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/header/header.vue
  21. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/order/component/attachment.vue
  22. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/order/component/information.vue
  23. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/order/component/operationRecord.vue
  24. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/order/component/products.vue
  25. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/order/component/rebate.vue
  26. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/product/component/attachment.vue
  27. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/product/component/information.vue
  28. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/product/component/operationRecord.vue
  29. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/product/component/relatedBusiness.vue
  30. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/product/component/relatedSalesOrder.vue
  31. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/product/detail/index.vue
  32. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/thread/detail/components/attachment.vue
  33. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/thread/detail/components/information.vue
  34. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/thread/detail/components/operationRecord.vue
  35. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/thread/detail/components/relatedTasks.vue
  36. 1 1
      fhKeeper/formulahousekeeper/customerBuler-crm/src/styles/global.scss
  37. 8 3
      fhKeeper/formulahousekeeper/plugIn/form-design-master/src/components/personnelSearch.vue
  38. 17 3
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/index.es.js
  39. 1 1
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/index.es.js.map
  40. 121 3
      fhKeeper/formulahousekeeper/timesheet/src/views/project/finance.vue
  41. 1 0
      fhKeeper/formulahousekeeper/webttkuaiban/build_package.bat
  42. 3 2
      fhKeeper/formulahousekeeper/webttkuaiban/src/main/java/com/firerock/webttkuaiban/demos/controller/ArticleTemplateController.java
  43. 2 2
      fhKeeper/formulahousekeeper/webttkuaiban/src/main/resources/static/knowledge.ftl
  44. 2 2
      fhKeeper/formulahousekeeper/webttkuaiban/src/main/resources/static/knowledgeDetails.ftl
  45. 1 1
      fhKeeper/formulahousekeeper/webttkuaiban/src/main/resources/static/moduleView/header.html
  46. 7 7
      fhKeeper/formulahousekeeper/webttkuaiban/src/main/resources/templates/knowledge.ftl
  47. 5 5
      fhKeeper/formulahousekeeper/webttkuaiban/src/main/resources/templates/knowledgeDetails.ftl
  48. 1 1
      fhKeeper/formulahousekeeper/webttkuaiban/src/main/resources/templates/moduleView/header.html

+ 6 - 0
fhKeeper/formulahousekeeper/customerBuler-crm/src/App.vue

@@ -74,6 +74,8 @@ body,
   height: 100%;
   overflow: hidden;
   min-width: 800px;
+  color: #606266; 
+  font-size: 14px;  
 }
 * {
   font-family: '微软雅黑';
@@ -105,4 +107,8 @@ body,
 .el-loading-mask {
   z-index: 1900 !important;
 }
+
+table {
+  font-size: 14px !important;
+}
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/main.ts

@@ -35,7 +35,7 @@ app.config.globalProperties.$echarts = echarts;
 app
   .use(ElementPlus, {
     locale: zhCn,
-    zIndex: 1800,
+    zIndex: 1600,
   })
   .use(createPinia())
   .use(router)

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/component/attachment.vue

@@ -143,7 +143,7 @@ onMounted(() => { });
 .attachment {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 }
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/component/information.vue

@@ -288,7 +288,7 @@ onMounted(() => {
 .information {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 
     .form {

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/component/operationRecord.vue

@@ -46,7 +46,7 @@ onMounted(() => {
 .operationRecord {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 }
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/component/products.vue

@@ -162,7 +162,7 @@ onMounted(() => {
 .relatedTasks {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 }
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/component/relatedTasks.vue

@@ -83,7 +83,7 @@ onMounted(() => {
 .relatedTasks {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 }
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/business/detail/index.vue

@@ -333,7 +333,7 @@ onMounted(() => {
 
   .backGray {
     background-color: #F4F5F7;
-    color: #000;
+    color: #606266;
   }
 
   .backOrange {

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/contacts/component/information.vue

@@ -213,7 +213,7 @@ onMounted(async () => {
 .information {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 
     .form {

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/contacts/component/operationRecord.vue

@@ -37,7 +37,7 @@ onMounted(() => {
 .operationRecord {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 }
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/contacts/component/relatedTasks.vue

@@ -36,7 +36,7 @@ onMounted(() => {
 .relatedTasks {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 }
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/attachment.vue

@@ -142,7 +142,7 @@ onMounted(() => {
 .attachment {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 }
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/information.vue

@@ -317,7 +317,7 @@ onMounted(() => {
 .information {
   .title {
     font-size: 18px;
-    color: #000;
+    color: #606266;
   }
 
   .form {

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/operationRecord.vue

@@ -46,7 +46,7 @@ onMounted(() => {
 .operationRecord {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 }
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/relatedBusiness.vue

@@ -196,7 +196,7 @@ onMounted(() => {
 .relatedTasks {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 }
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/relatedContacts.vue

@@ -164,7 +164,7 @@ onMounted(() => {
 .relatedTasks {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 }
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/relatedOrders.vue

@@ -209,7 +209,7 @@ onMounted(() => {
 .relatedTasks {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 }
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/component/relatedTasks.vue

@@ -78,7 +78,7 @@ onMounted(() => {
 .relatedTasks {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 }
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/customer/detail/index.vue

@@ -135,7 +135,7 @@ onMounted(() => {
 
   .backGray {
     background-color: #F4F5F7;
-    color: #000;
+    color: #606266;
   }
 
   .startStep {

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/header/header.vue

@@ -7,7 +7,7 @@
     <div v-for="(routerItem, routerItemIdex) in routerList" @click="setCurrentRouter(routerItem)"
       :class="`border-b-2 border-transparent hover:border-white p-2 mr-4 cursor-pointer multipleyHeader ${activeRouter?.path === routerItem.path ? 'border-white' : ''}`"
       :key="routerItem.path" ref="childDivs" v-show="visibleItems.includes(routerItemIdex)">
-      <div v-if="routerItem.children && routerItem.children.length <= 0 && routerItem?.isMenu" class="text-nowrap">
+      <div v-if="routerItem.children && routerItem.children.length <= 0 && routerItem?.isMenu" class="text-nowrap headerText">
         {{ routerItem.name }}
       </div>
       <div v-if="routerItem.children && routerItem.children.length > 0" class="flex justify-center items-center">

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/order/component/attachment.vue

@@ -159,7 +159,7 @@ onMounted(() => {
 .attachment {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 }
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/order/component/information.vue

@@ -250,7 +250,7 @@ onMounted(async () => {
 .information {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 
     .form {

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/order/component/operationRecord.vue

@@ -36,7 +36,7 @@ onMounted(() => {
 .operationRecord {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 }
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/order/component/products.vue

@@ -198,7 +198,7 @@ onMounted(() => {
 .relatedTasks {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 }
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/order/component/rebate.vue

@@ -136,7 +136,7 @@ onMounted(() => {
 .operationRecord {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 }
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/product/component/attachment.vue

@@ -166,7 +166,7 @@ onMounted(() => {
 .attachment {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 }
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/product/component/information.vue

@@ -249,7 +249,7 @@ onMounted(async () => {
 .information {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 
     .form {

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/product/component/operationRecord.vue

@@ -44,7 +44,7 @@ onMounted(() => {
 .operationRecord {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 }
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/product/component/relatedBusiness.vue

@@ -80,7 +80,7 @@ onMounted(() => {
 .relatedTasks {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 }
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/product/component/relatedSalesOrder.vue

@@ -69,7 +69,7 @@ onMounted(() => {
 .relatedTasks {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 }
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/product/detail/index.vue

@@ -151,7 +151,7 @@ onMounted(() => {
 
   .backGray {
     background-color: #F4F5F7;
-    color: #000;
+    color: #606266;
   }
 
   .startStep {

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/thread/detail/components/attachment.vue

@@ -148,7 +148,7 @@ onMounted(() => {
 .attachment {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 }
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/thread/detail/components/information.vue

@@ -374,7 +374,7 @@ onMounted(async () => {
 .information {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 
     .form {

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/thread/detail/components/operationRecord.vue

@@ -40,7 +40,7 @@ onMounted(() => { });
 .operationRecord {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 }
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/thread/detail/components/relatedTasks.vue

@@ -112,7 +112,7 @@ onMounted(() => {
 .relatedTasks {
     .title {
         font-size: 18px;
-        color: #000
+        color: #606266
     }
 }
 </style>

+ 1 - 1
fhKeeper/formulahousekeeper/customerBuler-crm/src/styles/global.scss

@@ -1,7 +1,7 @@
 $darkBlue: #3475c5;
 $ashen: #fefefe;
 $backColor: #eef3f6;
-$black: #000;
+$black: #606266;
 $fontBlack: #333;
 $fontGray: #999;
 $modena: #6f4afe;

+ 8 - 3
fhKeeper/formulahousekeeper/plugIn/form-design-master/src/components/personnelSearch.vue

@@ -239,7 +239,8 @@ onMounted(() => {
           </template>
           <template v-else>
             <span style="color: #606266;">
-              {{ getSelectedLabel }} a
+              <!-- {{ getSelectedLabel }} -->
+              <ww-open-data type='userName' :openid='getSelectedLabel'></ww-open-data>
             </span>
           </template>
         </div>
@@ -253,7 +254,8 @@ onMounted(() => {
           </template>
           <template v-else>
             <el-tag type="info" :size="size" closable @close="tagClose" style="margin-right: 5px;">
-              {{ getSelectedLabel }} a
+              <!-- {{ getSelectedLabel }} -->
+              <ww-open-data type='userName' :openid='getSelectedLabel'></ww-open-data>
             </el-tag>
             <el-tag type="info" :size="size" v-if="selectedValue.length > 1">+{{ selectedValue.length }}</el-tag>
           </template>
@@ -266,7 +268,10 @@ onMounted(() => {
       :label="item.label"
       :value="item.value"
     >
-      <span style="float: left">{{ item.label }}</span>
+      <span style="float: left">
+        <ww-open-data type='userName' :openid='item.label'></ww-open-data>
+        <!-- {{ item.label }} -->
+      </span>
     </el-option>
   </el-select>
 </template>

+ 17 - 3
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/index.es.js

@@ -27898,6 +27898,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
       }
     });
     return (_ctx, _cache) => {
+      const _component_ww_open_data = resolveComponent("ww-open-data");
       const _component_el_tag = ElTag;
       const _component_el_option = ElOption;
       const _component_el_select = ElSelect;
@@ -27926,7 +27927,12 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
               value: item.value
             }, {
               default: withCtx(() => [
-                createElementVNode("span", _hoisted_6$5, toDisplayString(item.label), 1)
+                createElementVNode("span", _hoisted_6$5, [
+                  createVNode(_component_ww_open_data, {
+                    type: "userName",
+                    openid: item.label
+                  }, null, 8, ["openid"])
+                ])
               ]),
               _: 2
             }, 1032, ["label", "value"]);
@@ -27943,7 +27949,12 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
                 class: "selectSingleChoice",
                 style: normalizeStyle(`line-height: ${textSize.value[__props.size].height};font-size:${textSize.value[__props.size].fontSize}`)
               }, [
-                unref(getSelectedLabel) == __props.placeholder ? (openBlock(), createElementBlock("span", _hoisted_2$6, toDisplayString(__props.placeholder), 1)) : (openBlock(), createElementBlock("span", _hoisted_3$5, toDisplayString(unref(getSelectedLabel)) + " a ", 1))
+                unref(getSelectedLabel) == __props.placeholder ? (openBlock(), createElementBlock("span", _hoisted_2$6, toDisplayString(__props.placeholder), 1)) : (openBlock(), createElementBlock("span", _hoisted_3$5, [
+                  createVNode(_component_ww_open_data, {
+                    type: "userName",
+                    openid: unref(getSelectedLabel)
+                  }, null, 8, ["openid"])
+                ]))
               ], 4)) : createCommentVNode("", true)
             ])
           ])
@@ -27965,7 +27976,10 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
                     style: { "margin-right": "5px" }
                   }, {
                     default: withCtx(() => [
-                      createTextVNode(toDisplayString(unref(getSelectedLabel)) + " a ", 1)
+                      createVNode(_component_ww_open_data, {
+                        type: "userName",
+                        openid: unref(getSelectedLabel)
+                      }, null, 8, ["openid"])
                     ]),
                     _: 1
                   }, 8, ["size"]),

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 1 - 1
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/index.es.js.map


+ 121 - 3
fhKeeper/formulahousekeeper/timesheet/src/views/project/finance.vue

@@ -35,6 +35,11 @@
             <el-form-item style="float:right;" v-if="permissions.financialCustom">
                 <el-link type="primary" :underline="false" @click="showItemDialog()">{{ $t('Customizesalaryitems') }}</el-link>
             </el-form-item>
+            <el-form-item style="float:right;">
+                <el-link type="primary" :underline="false" @click="notParticipatingInSharedProjects()">
+                    不参与分摊项目设置
+                </el-link>
+            </el-form-item>
             <el-form-item style="float:right;" v-if="user.timeType.financeAudit == '1' && permissions.setFinanceAuditor">
                 <el-link type="primary" :underline="false" @click="reviewerVisible = true">{{ $t('Setupauditor') }}</el-link>
             </el-form-item>
@@ -174,6 +179,29 @@
             </div>
         </el-dialog>
 
+        <el-dialog :title="`${notParticipatingInSharedProjectsTitle}月 不参与分摊项目设置`" v-if="notParticipatingInSharedProjectsVisable" :visible.sync="notParticipatingInSharedProjectsVisable" :close-on-click-modal="false" customClass="customWidth" width="1000px">
+            <el-form ref="form3" >
+                <el-form-item :label="''" >
+                    <el-select v-model="notParticipatingInSharedProjectsValue" placeholder="请选择项目" filterable multiple :disabled="notParticipatingInSharedProjectDisabled" style="width: 100%;" clearable>
+                        <el-option
+                          v-for="item in projectAllList"
+                          :key="item.id"
+                          :label="item.projectName"
+                          :value="item.id">
+                        </el-option>
+                      </el-select>
+                </el-form-item>
+                <el-form-item :label="''" >
+                    <el-checkbox v-model="notParticipatingInSharedAllProject" @change="selectAllItems">选中全部项目</el-checkbox>
+                    <br />
+                    <el-link type="warning" :underline="false">*设置后请重新导入该月人员薪资</el-link>
+                </el-form-item>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+                <el-button type="primary" style="width:100%;" :loading="notParticipatingInSharedProjectsLoading" @click="submitNotParticipatingInSharedProject()">确定</el-button>
+            </div>
+        </el-dialog>
+
 
         
         <!--列表-->
@@ -233,7 +261,7 @@
 
             <el-form-item style="float:right;margin-right:20px;" v-if="permissions.financialShare">
                 <el-link type="primary" :underline="false" @click="uploadTest()" v-if="user.companyId == 936" style="margin-right:10px">{{ $t('shangChuan') }}</el-link>
-                <el-link type="primary" :underline="false" @click="exportFinanceDialog=true">{{ $t('ExportingtheAllocationData') }}</el-link>
+                <el-link type="primary" :underline="false" @click="exportFinanceDialog=true, personnelAllocation = true">{{ $t('ExportingtheAllocationData') }}</el-link>
             </el-form-item>
             
         </el-form>
@@ -575,6 +603,9 @@
                 <el-radio :label="0">{{ $t('Exportbyproject') }}</el-radio>
                 <el-radio :label="1">{{ $t('Exportbprojectcategory') }}</el-radio>
             </el-radio-group>
+            <div style="margin-top: 20px;">
+                <el-checkbox v-model="personnelAllocation">含人员分摊明细</el-checkbox>
+            </div>
             </div>
             <div slot="footer" class="dialog-footer">
                 <el-button @click="exportData" :loading="exportDataProcessing" type="primary">{{ $t('export.export') }}</el-button>
@@ -621,6 +652,7 @@ import { error } from 'dingtalk-jsapi';
                 showMissingDialog: false,
                 missingFinanceUserList: [],
                 groupByCategory:0,
+                personnelAllocation: true,
                 exportFinanceDialog:false,
                 exportMonth:null,
                 exportDialog:false,
@@ -688,10 +720,83 @@ import { error } from 'dingtalk-jsapi';
                 chosenProjectsChecked: false,
                 exportDataProcessing: false,
 
-                financialFlg: false
+                financialFlg: false,
+
+                projectAllList: [], // 全部项目
+                selectProjectList: [], // 分摊选中的项目
+                notParticipatingInSharedProjectsValue: [],
+                notParticipatingInSharedProjectsVisable: false,
+                notParticipatingInSharedProjectsTitle: '',
+                notParticipatingInSharedProjectsLoading: false,
+                notParticipatingInSharedAllProject: false,
+                notParticipatingInSharedProjectDisabled: false,
             };
         },
         methods: {
+            selectAllItems() {
+                if(this.notParticipatingInSharedAllProject) {
+                    this.notParticipatingInSharedProjectDisabled = true
+                } else {
+                    this.notParticipatingInSharedProjectDisabled = false
+                }
+            },
+            getTheCurrentMonth() {
+                const d = new Date();
+                const data = d.getFullYear() +'-'+ ((d.getMonth()+1) < 10? '0'+(d.getMonth()+1):d.getMonth()+1);
+                return data
+            },
+            getAllocateSelectedItems() {
+                this.http.get(`/financeExcludeProject/getProjects?useYM=${this.date || this.getTheCurrentMonth()}`,res => {
+                    const { isAll = 0, projectList } = res.data
+                    this.selectProjectList = projectList || []
+                    this.notParticipatingInSharedAllProject = isAll ? true : false
+                })
+            },
+            getAllProjectList() {
+                this.http.post('/project/getProjectList',{
+                    pageIndex: -1,
+                    pageSize: -1
+                },res => {
+                    this.projectAllList = res.data
+                })
+            },
+            submitNotParticipatingInSharedProject() {
+                // if((!this.notParticipatingInSharedProjectsValue || this.notParticipatingInSharedProjectsValue.length <= 0) && !this.notParticipatingInSharedAllProject) {
+                //     this.$message({
+                //         message: '请选择项目',
+                //         type: 'warning'
+                //     })
+                //     return
+                // }
+                this.notParticipatingInSharedProjectsLoading = true
+                this.http.post('/financeExcludeProject/addOrUpdateProjects',{
+                    projects: this.notParticipatingInSharedProjectsValue, 
+                    useYM: this.date,
+                    isAll: this.notParticipatingInSharedAllProject ? 1 : 0
+                },res => {
+                    this.notParticipatingInSharedProjectsLoading = false
+                    if(res.code == 'ok'){
+                        this.$message({
+                            message: '操作成功',
+                            type: 'success'
+                        })
+                        this.notParticipatingInSharedProjectsVisable = false
+                        this.loadMonthData()
+                        // this.getAllocateSelectedItems()
+                    }else{
+                        this.$message({
+                            message: res.msg,
+                            type: 'error'
+                        })
+                    }
+                },err => {
+                    this.notParticipatingInSharedProjectsLoading = false
+                    this.$message({
+                        message: err,
+                        type: 'error'
+                    })
+                })
+            },
             getMonthProjSetting() {
                 this.http.post('/cost-project-setting/get',{companyId: this.user.companyId, ymonth: this.date},res => {
                     if(res.code == 'ok'){
@@ -1235,6 +1340,12 @@ import { error } from 'dingtalk-jsapi';
                 this.customCols = JSON.parse(JSON.stringify(this.customColsi))
                 this.itemDialog = true;
             },
+            notParticipatingInSharedProjects() {
+                this.notParticipatingInSharedProjectsValue = (this.selectProjectList || []).map(item => item.projectId)
+                this.notParticipatingInSharedProjectsTitle = this.date
+                this.selectAllItems()
+                this.notParticipatingInSharedProjectsVisable = true
+            },
             //获取自定义的字段
             getCustomColumn() {
                 this.http.post('/finance-tblcuscol/getAll', {companyId: this.user.companyId},
@@ -1426,7 +1537,10 @@ import { error } from 'dingtalk-jsapi';
             exportData() {
                 this.exportDataProcessing = true;
                 this.http.post('/finance/exportData', {
-                    date: this.date, assignNoProUser: this.assignNoProUser, groupByCategory: this.groupByCategory
+                    date: this.date, 
+                    assignNoProUser: this.assignNoProUser, 
+                    groupByCategory: this.groupByCategory,
+                    onlyTotal: this.personnelAllocation ? 1 : 0
                 },
                 res => {
                     this.exportDataProcessing = false;
@@ -1490,6 +1604,8 @@ import { error } from 'dingtalk-jsapi';
                 this.getList();
                 this.assignToProject();
                 this.getMonths()
+
+                this.getAllocateSelectedItems()
             },
             // 批量导入人员薪资
             importFinance(item) {
@@ -1861,6 +1977,8 @@ import { error } from 'dingtalk-jsapi';
             this.arrter()
             this.loadMonthData()
             this.scrollFunction()
+            this.getAllProjectList()
+            this.getAllocateSelectedItems()
         },
         updated() {
             this.$nextTick(() => {

+ 1 - 0
fhKeeper/formulahousekeeper/webttkuaiban/build_package.bat

@@ -0,0 +1 @@
+mvn package

+ 3 - 2
fhKeeper/formulahousekeeper/webttkuaiban/src/main/java/com/firerock/webttkuaiban/demos/controller/ArticleTemplateController.java

@@ -23,7 +23,7 @@ public class ArticleTemplateController {
     @Autowired
     ArticleService articleService;
 
-    @GetMapping("/pageList/{pageIndex}")  // 这里的 PageBean 是事先定义好的实体类
+    @GetMapping("/pageList/{pageIndex}.html")  // 这里的 PageBean 是事先定义好的实体类
     public Object PageList(Model model, @PathVariable("pageIndex") Integer pageIndex, @RequestParam(required = false) String info) {
         Integer pageSize = 10;
         // 定义格式化器
@@ -61,7 +61,7 @@ public class ArticleTemplateController {
         return "articleList";
     }
 
-    @GetMapping("/articleDetail/{id}")  // 这里的 PageBean 是事先定义好的实体类
+    @GetMapping("/articleDetail/{id}.html")  // 这里的 PageBean 是事先定义好的实体类
     public Object articleDetail(Model model, @PathVariable("id") Integer id) {
         // 定义格式化器
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
@@ -105,6 +105,7 @@ public class ArticleTemplateController {
         return "knowledgeDetails";
     }
 
+
     @GetMapping("/articleDetail")  // 这里的 PageBean 是事先定义好的实体类
     public Object articleDetailById(Model model, @RequestParam Integer id) {
         // 定义格式化器

+ 2 - 2
fhKeeper/formulahousekeeper/webttkuaiban/src/main/resources/static/knowledge.ftl

@@ -46,7 +46,7 @@
             <div>
               <!-- <div class="knowledgeField-content-item" onclick="triggerButtonClick(${item.id})"> -->
               <div class="knowledgeField-content-item">
-              <a href="/articleTemplate/articleDetail/${item.id}">
+              <a href="/articleTemplate/articleDetail/${item.id}.html">
                 <div class="image"><img src="${item.coverImgUrl}" class="wh100" class="wh100"></img>
                   </div>
                   <div class="textContent">
@@ -58,7 +58,7 @@
                         ${item.viewCount}
                       </div>
                       <!-- <button class="linkButtonss" onclick="learnMore(${item.id})">了解详情></button> -->
-                      <a class="linkButtonss" href="/articleTemplate/articleDetail/${item.id}">查看详情></a>
+                      <a class="linkButtonss" href="/articleTemplate/articleDetail/${item.id}.html">查看详情></a>
                     </div>
                   </div>
               </a>

+ 2 - 2
fhKeeper/formulahousekeeper/webttkuaiban/src/main/resources/static/knowledgeDetails.ftl

@@ -91,7 +91,7 @@
           <div class="line"></div>
           <div class="latestList">
             <#list latestList as item>
-              <a href="/articleTemplate/articleDetail/${item.id}">
+              <a href="/articleTemplate/articleDetail/${item.id}.html">
                 <div class="latestList-item" data-item='${item.id}'>
                   <div class="latestList-item-image">
                     <img src="${item.coverImgUrl}" class="wh100"></img>
@@ -113,7 +113,7 @@
           <div class="line"></div>
           <div class="latestList">
             <#list relatedList as item>
-              <a href="/articleTemplate/articleDetail/${item.id}">
+              <a href="/articleTemplate/articleDetail/${item.id}.html">
                 <div class="latestList-item" data-item='${item.id}'>
                   <div class="latestList-item-image">
                     <img src="${item.coverImgUrl}" class="wh100"></img>

+ 1 - 1
fhKeeper/formulahousekeeper/webttkuaiban/src/main/resources/static/moduleView/header.html

@@ -68,7 +68,7 @@
             { label: '产品定价', value: '../index.html#pricing', class: 'header-item' },
             { label: '关于我们', value: '../about.html', class: 'header-item' },
             { label: '企业动态', value: '../dynamic.html', class: 'header-item' },
-            { label: '知识园地', value: '/articleTemplate/pageList/1', class: 'header-item' },
+            { label: '知识园地', value: '/articleTemplate/pageList/1.html', class: 'header-item' },
           ],
           otherList: [
             { label: '工时管家', path: '../index.html', icon: './image/icon/workHour.png', hoverIcon: './image/icon/workHourHover.png' },

+ 7 - 7
fhKeeper/formulahousekeeper/webttkuaiban/src/main/resources/templates/knowledge.ftl

@@ -46,7 +46,7 @@
             <div>
               <!-- <div class="knowledgeField-content-item" onclick="triggerButtonClick(${item.id})"> -->
               <div class="knowledgeField-content-item">
-              <a href="/articleTemplate/articleDetail/${item.id}">
+              <a href="/articleTemplate/articleDetail/${item.id}.html">
                 <div class="image"><img src="${item.coverImgUrl}" class="wh100" class="wh100"></img>
                   </div>
                   <div class="textContent">
@@ -58,7 +58,7 @@
                         ${item.viewCount}
                       </div>
                       <!-- <button class="linkButtonss" onclick="learnMore(${item.id})">了解详情></button> -->
-                      <a class="linkButtonss" href="/articleTemplate/articleDetail/${item.id}">查看详情></a>
+                      <a class="linkButtonss" href="/articleTemplate/articleDetail/${item.id}.html">查看详情></a>
                     </div>
                   </div>
               </a>
@@ -101,7 +101,7 @@
   // const params = new URLSearchParams(window.location.search);
   const url = window.location.href
   const match = url.match(/pageList\/(\d+)/);
-  const number = match ? match[1] : null;
+  const number = match ? match[1].substring(0,match[1].indexOf('\\.')) : null;
   const pageIndex = +number || 1
   const pageSize = 10
   console.log(number, '<==== number')
@@ -118,10 +118,10 @@
 
   function search() {
     const inputVal = document.getElementById("knowledgeInput").value;
-    window.location.href = knowledgeUrl + fixedParameters + '?&info=' + inputVal
+    window.location.href = knowledgeUrl + fixedParameters + '.html?&info=' + inputVal
   }
   function learnMore(id) {
-    window.location.href = knowledgeDetails + `/` + id
+    window.location.href = knowledgeDetails + `/` + id + '.html';
   }
   function triggerButtonClick(itemId) {
     // 找到该 item 对应的按钮并触发点击事件
@@ -141,7 +141,7 @@
     if(!inputVal) {
       return
     }
-    window.location.href = knowledgeUrl + '/' + inputVal
+    window.location.href = knowledgeUrl + '/' + inputVal + '.html';
   }
 
   // 初始化分页组件
@@ -164,7 +164,7 @@
 
   // 跳转到指定页面
   function goToPage(page) {
-    window.location.href = knowledgeUrl + '/' + page
+    window.location.href = knowledgeUrl + '/' + page + '.html';
   }
 
   // 初始化分页

+ 5 - 5
fhKeeper/formulahousekeeper/webttkuaiban/src/main/resources/templates/knowledgeDetails.ftl

@@ -86,12 +86,12 @@
         <div class="latestArticles">
           <div class="knowledgeDetails-right-title">
             <div>最新文章</div>
-            <a href="/articleTemplate/pageList/1" class="linkButton">查看更多></a>
+            <a href="/articleTemplate/pageList/1.html" class="linkButton">查看更多></a>
           </div>
           <div class="line"></div>
           <div class="latestList">
             <#list latestList as item>
-              <a href="/articleTemplate/articleDetail/${item.id}">
+              <a href="/articleTemplate/articleDetail/${item.id}.html">
                 <div class="latestList-item" data-item='${item.id}'>
                   <div class="latestList-item-image">
                     <img src="${item.coverImgUrl}" class="wh100"></img>
@@ -108,12 +108,12 @@
         <div class="relatedRecommendations">
           <div class="knowledgeDetails-right-title">
             <div>相关推荐</div>
-            <a href="/articleTemplate/pageList/1" class="linkButton">查看更多></a>
+            <a href="/articleTemplate/pageList/1.html" class="linkButton">查看更多></a>
           </div>
           <div class="line"></div>
           <div class="latestList">
             <#list relatedList as item>
-              <a href="/articleTemplate/articleDetail/${item.id}">
+              <a href="/articleTemplate/articleDetail/${item.id}.html">
                 <div class="latestList-item" data-item='${item.id}'>
                   <div class="latestList-item-image">
                     <img src="${item.coverImgUrl}" class="wh100"></img>
@@ -197,7 +197,7 @@
   
   const knowledgeDetails = '/articleTemplate/articleDetail'
   function toKnowledge() {
-    window.location.href = `/articleTemplate/pageList/1`
+    window.location.href = `/articleTemplate/pageList/1.html`
   }
   
   $('#returnIcon').click(function () {

+ 1 - 1
fhKeeper/formulahousekeeper/webttkuaiban/src/main/resources/templates/moduleView/header.html

@@ -68,7 +68,7 @@
             { label: '产品定价', value: '../index.html#pricing', class: 'header-item' },
             { label: '关于我们', value: '../about.html', class: 'header-item' },
             { label: '企业动态', value: '../dynamic.html', class: 'header-item' },
-            { label: '知识园地', value: '/articleTemplate/pageList/1', class: 'header-item' },
+            { label: '知识园地', value: '/articleTemplate/pageList/1.html', class: 'header-item' },
           ],
           otherList: [
             { label: '工时管家', path: '../index.html', icon: './image/icon/workHour.png', hoverIcon: './image/icon/workHourHover.png' },