Lijy hai 4 meses
pai
achega
05cab6de9d
Modificáronse 41 ficheiros con 525 adicións e 162 borrados
  1. 9 2
      fhKeeper/formulahousekeeper/timesheet/build/utils.js
  2. 4 0
      fhKeeper/formulahousekeeper/timesheet/build/webpack.base.conf.js
  3. 12 12
      fhKeeper/formulahousekeeper/timesheet/config/index.js
  4. 25 2
      fhKeeper/formulahousekeeper/timesheet/src/App.vue
  5. 0 0
      fhKeeper/formulahousekeeper/timesheet/src/assets/scss/_common.scss
  6. 40 0
      fhKeeper/formulahousekeeper/timesheet/src/assets/scss/_handle.scss
  7. 15 0
      fhKeeper/formulahousekeeper/timesheet/src/assets/scss/_themes.scss
  8. 2 1
      fhKeeper/formulahousekeeper/timesheet/src/components/cascadeSelection.vue
  9. 3 3
      fhKeeper/formulahousekeeper/timesheet/src/components/cascader.vue
  10. 2 2
      fhKeeper/formulahousekeeper/timesheet/src/components/cascaderOption.vue
  11. 3 2
      fhKeeper/formulahousekeeper/timesheet/src/components/select.vue
  12. 14 10
      fhKeeper/formulahousekeeper/timesheet/src/components/taskComponent.vue
  13. 140 0
      fhKeeper/formulahousekeeper/timesheet/src/components/themeCom.vue
  14. 13 0
      fhKeeper/formulahousekeeper/timesheet/src/utils/commonMethod.js
  15. 2 1
      fhKeeper/formulahousekeeper/timesheet/src/views/Expire.vue
  16. 4 2
      fhKeeper/formulahousekeeper/timesheet/src/views/Home.vue
  17. 12 10
      fhKeeper/formulahousekeeper/timesheet/src/views/Login.vue
  18. 4 2
      fhKeeper/formulahousekeeper/timesheet/src/views/Register.vue
  19. 11 4
      fhKeeper/formulahousekeeper/timesheet/src/views/awayOffice/awayOffice.vue
  20. 6 1
      fhKeeper/formulahousekeeper/timesheet/src/views/centerManage/centerManage.vue
  21. 17 8
      fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue
  22. 3 2
      fhKeeper/formulahousekeeper/timesheet/src/views/desktop/detail.vue
  23. 3 2
      fhKeeper/formulahousekeeper/timesheet/src/views/desktop/index.vue
  24. 9 4
      fhKeeper/formulahousekeeper/timesheet/src/views/expense/expense.vue
  25. 18 8
      fhKeeper/formulahousekeeper/timesheet/src/views/leave/list.vue
  26. 2 1
      fhKeeper/formulahousekeeper/timesheet/src/views/message.vue
  27. 7 2
      fhKeeper/formulahousekeeper/timesheet/src/views/project/detail.vue
  28. 7 2
      fhKeeper/formulahousekeeper/timesheet/src/views/project/detailDep.vue
  29. 13 6
      fhKeeper/formulahousekeeper/timesheet/src/views/project/fileCenter.vue
  30. 2 1
      fhKeeper/formulahousekeeper/timesheet/src/views/project/gantt.vue
  31. 0 4
      fhKeeper/formulahousekeeper/timesheet/src/views/project/info.vue
  32. 15 5
      fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue
  33. 6 1
      fhKeeper/formulahousekeeper/timesheet/src/views/project/projectForm.vue
  34. 25 16
      fhKeeper/formulahousekeeper/timesheet/src/views/project/projectInside.vue
  35. 9 3
      fhKeeper/formulahousekeeper/timesheet/src/views/projectApproval/projectApproval.vue
  36. 23 17
      fhKeeper/formulahousekeeper/timesheet/src/views/settings/timetype.vue
  37. 6 5
      fhKeeper/formulahousekeeper/timesheet/src/views/task/list.vue
  38. 8 4
      fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue
  39. 16 12
      fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue
  40. 7 2
      fhKeeper/formulahousekeeper/timesheet/src/views/workReport/list.vue
  41. 8 3
      fhKeeper/formulahousekeeper/timesheet/src/views/workflow/report.vue

+ 9 - 2
fhKeeper/formulahousekeeper/timesheet/build/utils.js

@@ -51,9 +51,16 @@ exports.cssLoaders = function (options) {
         postcss: generateLoaders(),
         less: generateLoaders('less'),
         sass: generateLoaders('sass', { indentedSyntax: true }),
-        scss: generateLoaders('sass'),
+        // scss: generateLoaders('sass'),
         stylus: generateLoaders('stylus'),
-        styl: generateLoaders('stylus')
+        styl: generateLoaders('stylus'),
+        scss: generateLoaders('sass').concat({
+            loader: 'sass-resources-loader',
+            options: {
+                //你自己的scss全局文件的路径
+                resources: path.resolve(__dirname, '../src/assets/scss/_common.scss')
+            }
+        })
     }
 }
 

+ 4 - 0
fhKeeper/formulahousekeeper/timesheet/build/webpack.base.conf.js

@@ -68,6 +68,10 @@ module.exports = {
                 limit: 10000,
                 name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
                 }
+            },
+            {
+                test: /\.scss$/,
+                loaders: ['style', 'css', 'sass']
             }
         ]
     }

+ 12 - 12
fhKeeper/formulahousekeeper/timesheet/config/index.js

@@ -1,20 +1,20 @@
 var path = require('path')
 
 //  var ip = '192.168.2.12'
-// var ip = '47.101.180.183'
+var ip = '47.101.180.183'
 // var ip = '47.100.37.243'
 // var ip = '192.168.10.2'
-// var ip = '192.168.2.3' 
+// var ip = '192.168.2.11' 
 
-var os = require('os'), ip = '', ifaces = os.networkInterfaces() // 获取本机ip
-for (var i in ifaces) {
-    for (var j in ifaces[i]) {
-        var val = ifaces[i][j]
-        if (val.family === 'IPv4' && val.address !== '127.0.0.1') {
-            ip = val.address
-        }
-    }
-}
+// var os = require('os'), ip = '', ifaces = os.networkInterfaces() // 获取本机ip
+// for (var i in ifaces) {
+//     for (var j in ifaces[i]) {
+//         var val = ifaces[i][j]
+//         if (val.family === 'IPv4' && val.address !== '127.0.0.1') {
+//             ip = val.address
+//         }
+//     }
+// }
 // 1196735749
 module.exports = {
   build: {
@@ -73,5 +73,5 @@ module.exports = {
         // },
     },
     cssSourceMap: false
-  }
+  },
 }

+ 25 - 2
fhKeeper/formulahousekeeper/timesheet/src/App.vue

@@ -7,13 +7,18 @@
             </keep-alive> -->
             <router-view v-if="isRouterAlive"/>
 		</transition>
+
+        <themeCom :color="color" @color-update="colorChange" v-show="false" />
 	</div>
 </template>
 
 <script>
+    import themeCom from "@/components/themeCom";
     export default {
         name: 'app',
-        components: {},
+        components: {
+            themeCom
+        },
         //父组件中返回要传给下级的数据
 	  	provide() {
 	    	return {
@@ -23,15 +28,33 @@
 		data(){
 			return{
 				isRouterAlive:true,
-                firstTourFalse: false
+                firstTourFalse: false,
+                color: '#409EFF'
 			}
 		},
+        created() {
+            const themes = localStorage.getItem('themes') || 'default'
+            this.switchThemes(themes)
+        },
         mounted() {
             this.firstTourFalse = localStorage.getItem('firstTourFalse') | true
             // 监听页面刷新事件
 			window.addEventListener('unload', this.setItemFirstTourFalse)
         },
 		methods:{
+            switchThemes(type) {
+                const colorType = { 
+                    'default': '#409EFF',
+                    'dark': '#FF0000',
+                }
+                setTimeout(() => {
+                    this.colorChange(colorType[type])
+                }, 0)
+                window.document.documentElement.setAttribute( "data-theme", type );
+            },
+            colorChange(color) {
+                this.color = color;
+            },
             setItemFirstTourFalse() {
                 localStorage.setItem('firstTourFalse', firstTourFalse)
             },

+ 0 - 0
fhKeeper/formulahousekeeper/timesheet/src/assets/scss/_common.scss


+ 40 - 0
fhKeeper/formulahousekeeper/timesheet/src/assets/scss/_handle.scss

@@ -0,0 +1,40 @@
+@import "./_themes.scss";
+
+//遍历主题map
+@mixin themeify {
+  @each $theme-name, $theme-map in $themes {
+    //!global 把局部变量强升为全局变量
+    $theme-map: $theme-map !global;
+    //判断html的data-theme的属性值  #{}是sass的插值表达式
+    //& sass嵌套里的父容器标识   @content是混合器插槽,像vue的slot
+    [data-theme="#{$theme-name}"] & {
+      @content;
+    }
+  }
+}
+
+//声明一个根据Key获取颜色的function
+@function themed($key) {
+  @return map-get($theme-map, $key);
+}
+
+//获取背景颜色
+@mixin background_color($color) {
+  @include themeify {
+    background-color: themed($color) !important;
+  }
+}
+
+//获取字体颜色
+@mixin font_color($color) {
+  @include themeify {
+    color: themed($color) !important;
+  }
+}
+
+//获取边框颜色
+@mixin border_color($color) {
+  @include themeify {
+    border-color: themed($color) !important;
+  }
+}

+ 15 - 0
fhKeeper/formulahousekeeper/timesheet/src/assets/scss/_themes.scss

@@ -0,0 +1,15 @@
+$themes: (
+  default: (
+    background_color: #409EFF,
+    color: #409EFF,
+    color1: #9ED0FF,
+    border_color: #409EFF,
+  ),
+
+  dark: (
+    background_color: red,
+    color: red,
+    color1: rgb(255, 126, 126),
+    border_color: red,
+  ),
+);

+ 2 - 1
fhKeeper/formulahousekeeper/timesheet/src/components/cascadeSelection.vue

@@ -144,6 +144,7 @@ export default {
 }
 </script>
 <style scoped lang='scss'>
+@import "../assets/scss/handle";
 .cascadeSelection {
     position: relative;
     max-height: 40px;
@@ -186,7 +187,7 @@ export default {
     }
 
     .input:focus {
-        border-color: #409EFF;
+        @include border_color("border_color");
     }
 
     .placeholderColor {

+ 3 - 3
fhKeeper/formulahousekeeper/timesheet/src/components/cascader.vue

@@ -386,8 +386,9 @@ export default {
 </script>
 
 <style scoped lang="scss">
+    @import "../assets/scss/handle";
     .selectDiv {
-        border-color: #409EFF !important;
+        @include background_color("background_color");
     }
     .disabledTrue {
         background: #F5F7FA !important;
@@ -480,10 +481,9 @@ export default {
     }
     .liHover {
         background-color: #F5F7FA;
-        // color: #409eff !important;
     }
     .liHover .idxspan {
-        color: #409eff !important;
+        @include font_color("color");
         font-weight: 700;
     }
     .idxspan span{

+ 2 - 2
fhKeeper/formulahousekeeper/timesheet/src/components/cascaderOption.vue

@@ -138,6 +138,7 @@ export default {
 </script>
 
 <style scoped lang="scss">
+    @import "../assets/scss/handle";
     .childComponents {
         width: 200px;
         position: absolute;
@@ -186,10 +187,9 @@ export default {
     }
     .liHover {
         background-color: #F5F7FA;
-        // color: #409eff !important;
     }
     .liHover .idxspan {
-        color: #409eff !important;
+        @include font_color("color");
         font-weight: 700;
     }
     .transitionBoxUl span {

+ 3 - 2
fhKeeper/formulahousekeeper/timesheet/src/components/select.vue

@@ -581,6 +581,7 @@ export default {
 </script>
 
 <style scoped lang="scss">
+    @import "../assets/scss/handle";
     .selectBox {
         position: fixed;
         z-index: 999;
@@ -595,7 +596,7 @@ export default {
         display: inline-block;
     }
     .selectDiv {
-        border-color: #409EFF !important;
+        @include border_color("border_color");
     }
     .disabledTrue {
         background: #F5F7FA !important;
@@ -713,7 +714,7 @@ export default {
         justify-content: space-between;
     }
     .hoverSpanHover {
-        color: #409eff;
+        @include font_color("color");
         font-weight: 700;
     }
     .spanFllat {

+ 14 - 10
fhKeeper/formulahousekeeper/timesheet/src/components/taskComponent.vue

@@ -125,7 +125,7 @@
                 <!-- 任务进展 -->
                 <template v-if="!timelabel || isRelationItem">
                 
-                <p ><i class="iconfont firerock-icontree" style="color:#20A0ff;margin-left:10px;">{{ $t('taskprogress') }}</i>
+                <p ><i class="iconfont firerock-icontree themeFontColor" style="margin-left:10px;">{{ $t('taskprogress') }}</i>
                     <span ref="addPro" style="display: block; float:right;"><el-link @click="addprogress">{{ $t('addtaskprogress') }}</el-link></span>
                 </p>
                 <!-- 任务进展展示 -->
@@ -145,7 +145,7 @@
                     style="margin:10px 0 0 0">
                     </el-input>
                     <h4 style="font-weight: normal;">{{ $t('tixiang') }}{{checkLists.length}}</h4>
-                    <i class="el-icon-circle-plus pron_i" style="font-size: 28px;color: #409EFF;" @click="addI(0)"></i>
+                    <i class="el-icon-circle-plus pron_i themeFontColor" style="font-size: 28px;" @click="addI(0)"></i>
                     <div class="remind" ref="addRem" style="display: none">
                         <el-checkbox-group v-model="checkboxGrounp" v-for="item in users" :key="item.id">
                             <p>
@@ -241,7 +241,7 @@
                 </el-dialog>
                 </template>
                 <!-- 子任务/关联任务 -->
-                <p ><i class="iconfont firerock-icontree" style="color:#20A0ff;margin-left:10px;">{{timelabel && !isRelationItem ? $t('guanlian') : $t('zirwu')}}</i>
+                <p ><i class="iconfont firerock-icontree themeFontColor" style="margin-left:10px;">{{timelabel && !isRelationItem ? $t('guanlian') : $t('zirwu')}}</i>
                     <el-link style="float:right;" @click="addRelation" v-if="timelabel && !isRelationItem">{{ $t('associatedTask') }}</el-link>
                     <el-link style="float:right;" @click="addSubTask" v-else>{{ $t('addingsubtask') }}</el-link>
                 </p>
@@ -259,7 +259,7 @@
                     </el-table-column>
                     <el-table-column prop="taskName" :label="$t('biao-ti')" >
                         <template slot-scope="scope">
-                            <el-tooltip class="item" effect="dark" :content="scope.row.taskName" placement="top" style="cursor:pointer;color:#409eff;">
+                            <el-tooltip class="item themeFontColor" effect="dark" :content="scope.row.taskName" placement="top" style="cursor:pointer;">
                                 <span style="overflow: hidden;text-overflow:ellipsis;white-space: nowrap;" > {{scope.row.taskName}}</span>
                             </el-tooltip>
                         </template>
@@ -318,7 +318,7 @@
         <!-- 关联文件列表 -->
         <template v-if="isEditFile">
             <div style="width:100%;margin:1em 0;">
-                <i class="iconfont firerock-icontree" style="color:#20A0ff;margin-left:10px;">{{ $t('jiafuchengguo') }}</i>
+                <i class="iconfont firerock-icontree themeFontColor" style="margin-left:10px;">{{ $t('jiafuchengguo') }}</i>
                 <el-link @click="relationFileClick()" style="float:right;margin-left:10px">{{ $t('associatedfiles') }}</el-link>
                 <el-upload style="float:right;" action="#" :http-request="uploadFileClick" :show-file-list="false" :multiple="false">
                     <el-link>{{ $t('uoloadFiles') }}</el-link>
@@ -666,6 +666,7 @@ import 'quill/dist/quill.snow.css'
 import 'quill/dist/quill.bubble.css'
 // 导入富文本
 import { quillEditor } from 'vue-quill-editor'
+import { getThemeColor } from '@/utils/commonMethod.js'
 
 export default {
   props: {
@@ -685,7 +686,7 @@ export default {
     selectPersonnel
   },
   data() {
-    return {
+    return { 
         startNum: 0,
         endNum: 5,
         shownumber: 5,
@@ -720,7 +721,7 @@ export default {
         {id:5,name:this.$t('createdthetask')},{id:6,name:this.$t('missionIwason')},{id:7,name:this.$t('todaytask')},{id:8,name:this.$t('taskthatisoverdue')}],
         importanceList:[{id:0,name:this.$t('yi-ban')},{id:1,name:this.$t('zhong-yao')},{id:2,name:this.$t('jin-ji')},],
         taskTypeList:[{id:0,name:this.$t('other.task'), icon:"iconfont firerock-iconrenwu"},{id:1,name:this.$t('other.milestone'),icon:"iconfont firerock-iconicon-"},{id:2,name:this.$t('risk'),icon:"iconfont firerock-iconfengxian"}],
-        taskTypeColor:['#20A0FF','#8613ad','#bf0404'],
+        taskTypeColor:[getThemeColor(),'#8613ad','#bf0404'],
         taskTypeIcon:['iconfont firerock-iconrenwu','iconfont firerock-iconicon-','iconfont firerock-iconfengxian'],
         taskStatusList:[this.$t('ongoing'),this.$t('state.completed'),this.$t('state.undone')],
         //优先级
@@ -836,11 +837,11 @@ export default {
             size: 'large',
             type: 'primary',
             icon: 'el-icon-circle-check',
-            color: '#409EFF'
+                color: '#409EFF'
             }, {
             content: this.$t('withinthetimelimit'),
             timestamp: this.$t('hoursago8'),
-            color: '#F87872'
+                color: '#F87872'
             }],
         ProgressList: [],
         checkboxGrounp: [], // 选中人的数据
@@ -934,7 +935,6 @@ export default {
     this.getSapServiceList()
 
     this.timess();
-    
   },
   methods: {
     // 容器的滚动事件
@@ -2250,6 +2250,10 @@ export default {
 </script>
 
 <style lang="scss" scoped>
+@import "../assets/scss/handle";
+.themeFontColor {
+    @include font_color("color");
+}
 .editingTask {
     display: flex;
     flex-wrap: wrap;

+ 140 - 0
fhKeeper/formulahousekeeper/timesheet/src/components/themeCom.vue

@@ -0,0 +1,140 @@
+<template>
+  <el-color-picker v-model="theme" />
+</template>
+<script>
+const version = require("element-ui/package.json").version;
+const ORIGINAL_THEME = "#409EFF";
+export default {
+  props: {
+    color: String,
+  },
+  data() {
+    return {
+      chalk: "",
+      theme: "",
+    };
+  },
+  computed: {
+    defaultTheme() {
+      return this.color;
+    },
+  },
+  watch: {
+    defaultTheme: {
+      handler: function (val, oldVal) {
+        this.theme = val;
+      },
+      immediate: true,
+    },
+    async theme(val) {
+      const oldVal = this.chalk ? this.theme : ORIGINAL_THEME;
+      if (typeof val !== "string") return;
+      const themeCluster = this.getThemeCluster(val.replace("#", ""));
+      const originalCluster = this.getThemeCluster(oldVal.replace("#", ""));
+      if (!this.chalk) {
+        await this.getCSSString();
+      }
+      this.getHandler(themeCluster);
+      const styles = [].slice
+        .call(document.querySelectorAll("style"))
+        .filter((style) => {
+          const text = style.innerText;
+          return (
+            new RegExp(oldVal, "i").test(text) && !/Chalk Variables/.test(text)
+          );
+        });
+      styles.forEach((style) => {
+        const { innerText } = style;
+        if (typeof innerText !== "string") return;
+        style.innerText = this.updateStyle(
+          innerText,
+          originalCluster,
+          themeCluster
+        );
+      });
+      this.$emit("color-update", val);
+    },
+  },
+  methods: {
+    // 修改element-ui主题样式表颜色
+    updateStyle(style, oldCluster, newCluster) {
+      let newStyle = style;
+      oldCluster.forEach((color, index) => {
+        newStyle = newStyle.replace(new RegExp(color, "ig"), newCluster[index]);
+      });
+      return newStyle;
+    },
+    // 生成新的样式表
+    getHandler(themeCluster) {
+      const originalCluster = this.getThemeCluster(
+        ORIGINAL_THEME.replace("#", "")
+      );
+      const newStyle = this.updateStyle(
+        this.chalk,
+        originalCluster,
+        themeCluster
+      );
+      let styleTag = document.getElementById("chalk-style");
+      if (!styleTag) {
+        styleTag = document.createElement("style");
+        styleTag.setAttribute("id", "chalk-style");
+        document.head.appendChild(styleTag);
+      }
+      styleTag.innerText = newStyle;
+    },
+    // 获取element-ui主题样式
+    getCSSString() {
+      const url = `https://unpkg.com/element-ui@${version}/lib/theme-chalk/index.css`;
+      return new Promise((resolve) => {
+        const xhr = new XMLHttpRequest();
+        xhr.onreadystatechange = () => {
+          if (xhr.readyState === 4 && xhr.status === 200) {
+            this.chalk = xhr.responseText.replace(/@font-face{[^}]+}/, "");
+            resolve();
+          }
+        };
+        xhr.open("GET", url);
+        xhr.send();
+      });
+    },
+    getThemeCluster(theme) {
+      const tintColor = (color, tint) => {
+        let red = parseInt(color.slice(0, 2), 16);
+        let green = parseInt(color.slice(2, 4), 16);
+        let blue = parseInt(color.slice(4, 6), 16);
+        if (tint === 0) {
+          return [red, green, blue].join(",");
+        } else {
+          red += Math.round(tint * (255 - red));
+          green += Math.round(tint * (255 - green));
+          blue += Math.round(tint * (255 - blue));
+          red = red.toString(16);
+          green = green.toString(16);
+          blue = blue.toString(16);
+          return `#${red}${green}${blue}`;
+        }
+      };
+      const shadeColor = (color, shade) => {
+        let red = parseInt(color.slice(0, 2), 16);
+        let green = parseInt(color.slice(2, 4), 16);
+        let blue = parseInt(color.slice(4, 6), 16);
+        red = Math.round((1 - shade) * red);
+        green = Math.round((1 - shade) * green);
+        blue = Math.round((1 - shade) * blue);
+        red = red.toString(16);
+        green = green.toString(16);
+        blue = blue.toString(16);
+        return `#${red}${green}${blue}`;
+      };
+      const clusters = [theme];
+      for (let i = 0; i <= 9; i++) {
+        clusters.push(tintColor(theme, Number((i / 10).toFixed(2))));
+      }
+      clusters.push(shadeColor(theme, 0.1));
+      return clusters;
+    },
+  },
+};
+</script>
+
+

+ 13 - 0
fhKeeper/formulahousekeeper/timesheet/src/utils/commonMethod.js

@@ -0,0 +1,13 @@
+/**
+ * 获取主题色
+ * @returns string 颜色
+ */
+export function getThemeColor() {
+  const type = localStorage.getItem('themes') || 'default'
+  console.log(type, '<=========== 看看')
+  const colorType = {
+    'default': '#409EFF',
+    'dark': '#FF0000',
+  }
+  return colorType[type]
+}

+ 2 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/Expire.vue

@@ -41,6 +41,7 @@ export default {
 </script>
 
 <style lang="scss" scoped>
+@import "../assets/scss/handle";
 .expire {
     height: 100%;
     .expire_par {
@@ -71,7 +72,7 @@ export default {
                 font-weight: bold;
             }
             .expire_tips {
-                color: #409eff;
+                @include font_color("color");
                 font-size: 18px;
             }
             .expire_text {

+ 4 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/Home.vue

@@ -1012,6 +1012,7 @@
 </script>
 
 <style scoped lang="scss">
+@import "../assets/scss/handle";
 .contentMask {
     width: 100%;
     height: 100%;
@@ -1047,7 +1048,7 @@
         .header {
             height: 60px;
             line-height: 60px;
-            background: #20a0ff;
+            @include background_color("background_color");
             color: #fff;
             position: relative;
             .userinfo {
@@ -1204,7 +1205,8 @@
     }
 
     .popover-title {
-        color: #409eff;
+        // color: #409eff;
+        @include font_color("color");
         padding-bottom: 8px;
     }
 

+ 12 - 10
fhKeeper/formulahousekeeper/timesheet/src/views/Login.vue

@@ -39,16 +39,12 @@
                 </el-form>
             </div>
             <el-dialog :title="$t('shi-yong-shuo-ming')" :visible.sync="dialogVisible" width="500px">
-                <p><a style="color:#409EFF;text-decoration:none" href="upload/工时管家使用说明_基础版.docx" download="工时管家使用说明_基础版.docx" 
+                <p><a class="themeFontColor" style="text-decoration:none" href="upload/工时管家使用说明_基础版.docx" download="工时管家使用说明_基础版.docx" 
                             target="_blank">工时管家使用说明_基础版.docx</a></p>
-                <p><a style="color:#409EFF;text-decoration:none" href="upload/工时管家使用说明_项目管理专业版.docx" download="工时管家使用说明_项目管理专业版.docx" 
+                <p><a class="themeFontColor" style="text-decoration:none" href="upload/工时管家使用说明_项目管理专业版.docx" download="工时管家使用说明_项目管理专业版.docx" 
                             target="_blank">工时管家使用说明_项目管理专业版.docx</a></p>
-                <p><a style="color:#409EFF;text-decoration:none" href="upload/工时管家使用说明_建筑工程专业版.docx" download="工时管家使用说明_建筑工程专业版.docx" 
+                <p><a class="themeFontColor" style="text-decoration:none" href="upload/工时管家使用说明_建筑工程专业版.docx" download="工时管家使用说明_建筑工程专业版.docx" 
                             target="_blank">工时管家使用说明_建筑工程专业版.docx</a></p>
-                <!-- <p><a style="color:#409EFF;text-decoration:none" href="upload/工时管家使用说明_项目经理.docx" download="工时管家使用说明_项目经理.docx" 
-                            target="_blank">工时管家使用说明_项目经理.docx</a></p>
-                <p><a style="color:#409EFF;text-decoration:none" href="upload/工时管家使用说明_普通员工.docx" download="工时管家使用说明_普通员工.docx" 
-                            target="_blank">工时管家使用说明_普通员工.docx</a></p> -->
                 
             </el-dialog>
             <el-dialog :title="$t('qiYeWeiXinSaoMaDengLu')" :visible.sync="wxworkFlg" width="500px">
@@ -609,6 +605,10 @@
 </script>
 
 <style lang="scss" scoped>
+    @import "../assets/scss/handle";
+    .themeFontColor {
+        @include font_color("color");
+    }
     .qiweix {
         width: 100%;
         display: flex;
@@ -630,7 +630,8 @@
         .externalLanding_img {
             width: 30px;
             height: 30px;
-            border: 1px solid #409EFF;
+            border: 1px solid;
+            @include border_color("border_color");
             border-radius: 50%;
             position: relative;
             overflow: hidden;
@@ -668,9 +669,10 @@
                 // height: 380px;
                 padding: 25px 35px 25px 35px;
                 background: #fff;
-                border: 1px solid #eaeaea;
+                border: 0px solid #eaeaea;
                 box-shadow: 0 0 5px #cac6c6;
-                border-top: 10px solid #20a0ff;
+                border-top: 10px solid;
+                @include border_color("border_color");
                 margin:auto;
                 .title {
                     font-size: 20px;

+ 4 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/Register.vue

@@ -176,6 +176,7 @@
 </script>
 
 <style lang="scss" scoped>
+@import "../assets/scss/handle";
     .login {
         height: 100%;
         .login-par {
@@ -199,9 +200,10 @@
                 height: 495px;
                 padding: 25px 35px 25px 35px;
                 background: #fff;
-                border: 1px solid #eaeaea;
+                border: 1px solid;
                 box-shadow: 0 0 5px #cac6c6;
-                border-top: 10px solid #20a0ff;
+                border-top: 10px solid;
+                @include border_color("border_color");
                 margin:auto;
                 .title {
                     font-size: 20px;

+ 11 - 4
fhKeeper/formulahousekeeper/timesheet/src/views/awayOffice/awayOffice.vue

@@ -4,7 +4,7 @@
         <h3><i class="iconfont firerock-iconbaoxiao" style="padding-right: 10px"></i>{{ $t('navigation.evectionManagement') }}</h3>
         <el-divider ></el-divider>
         <el-col :span="12">
-            <el-menu default-active="1" class="el-menu-vertical-demo" @select="staffs" background-color="#ffffff" text-color="#666666" active-text-color="#20A0FF" style="width:100%">
+            <el-menu default-active="1" class="el-menu-vertical-demo" @select="staffs" background-color="#ffffff" text-color="#666666" :active-text-color="themeColor" style="width:100%">
                 <el-menu-item index="1" v-if="permissions.awayOfficeFil">
                     <i class="iconfont firerock-icontianbao"></i>
                     <span slot="title">{{ $t('businesstriisallowed') }}</span>
@@ -411,7 +411,7 @@
                 <el-col :span="18" >
                     <el-scrollbar style="height:100%;border:1px solid #dddddd;margin-right:20px;" >
                         <div class="tree" :style="'height:'+ (tableHeight-120) + 'px'">
-                            <div style="padding:5px;color:#333;" v-if="depData != null">{{ $t('setup') }} &lt;<span style="color:#20a0ff;">
+                            <div style="padding:5px;color:#333;" v-if="depData != null">{{ $t('setup') }} &lt;<span class="themeFontColor">
                                 <!-- {{depData.label}} -->
                                 <span v-if="user.userNameNeedTranslate != 1">{{depData.label}}</span>
                                 <span v-if="user.userNameNeedTranslate == 1"><TranslationOpenDataText type='departmentName' :openid='depData.label'></TranslationOpenDataText></span>
@@ -447,7 +447,7 @@
                                     <icon class="iconfont firerock-iconInsertLine addNode" @click="showNodeDialog(index+1)"></icon>
                                     <icon class="iconfont firerock-iconright"></icon>
                                 </span>
-                                <icon class="iconfont firerock-iconApp_New_Line" style="color:#20A0FF;"></icon>
+                                <icon class="iconfont firerock-iconApp_New_Line themeFontColor"></icon>
                                 {{ $t('approvaltocomplete') }} 
                             </div>
                             <div style="width:100%;margin:0 auto;margin-bottom:30px;position: absolute;bottom: 0px;text-align: center; ">
@@ -752,6 +752,7 @@ import citys from '../../assets/citys/shju.json'
  // 引入自定义级联组件
 import vueCascader from "@/components/cascader.vue"
 
+import { getThemeColor } from '@/utils/commonMethod.js'
 export default {
     components: {
         selectCat,
@@ -773,6 +774,7 @@ export default {
         //         }
         //     };
         return {
+            themeColor: getThemeColor(),
             denyDialogV: false,
             denyInfo: {},
             summaryLoading: false,
@@ -2120,6 +2122,11 @@ export default {
 </script>
 
 <style lang="scss" scoped>
+@import "../../assets/scss/handle";
+
+.themeFontColor {
+    @include font_color("color");
+}
 .sidebars {
     height: 100%;
     position: absolute;
@@ -2198,7 +2205,7 @@ export default {
   cursor:pointer;
 }
 .addNode:hover {
-  color:#20a0ff;
+    @include font_color("color");
 }
 .detailsScope{
     font-size: 12px;

+ 6 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/centerManage/centerManage.vue

@@ -379,12 +379,17 @@ export default {
 </script>
 
 <style lang="scss" scoped>
+@import "../../assets/scss/handle";
+
+.themeFontColor {
+    @include font_color("color");
+}
 .addNode {
     cursor: pointer;
 }
 
 .addNode:hover {
-    color: #20a0ff;
+    @include font_color("color");
 }
 
 .panel {

+ 17 - 8
fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

@@ -12,7 +12,7 @@
               @select="staffs"
               background-color="#ffffff" 
               text-color="#666666"
-              active-text-color="#20A0FF"
+              :active-text-color="themeColor"
               style="width:200px">
               <el-submenu index="1">
                 <template slot="title">
@@ -822,7 +822,7 @@
                 </el-table-column>
                 <el-table-column prop="timelinessRate" :label="$t('timelyreportingrate')" min-width="200" align="center">
                   <template slot-scope="scope">
-                    <el-link v-if="scope.row.dataList != null" style="color:#409eff;" @click="timelyDetail(scope.row.dataList)">{{scope.row.timelinessRate}}</el-link>
+                    <el-link v-if="scope.row.dataList != null" class="themeFontColor"  @click="timelyDetail(scope.row.dataList)">{{scope.row.timelinessRate}}</el-link>
                     <span v-else>{{scope.row.timelinessRate}}</span>
                   </template>
                 </el-table-column>
@@ -834,7 +834,7 @@
                     </el-tooltip>
                   </template>
                   <template slot-scope="scope">
-                    <el-link v-if="scope.row.dataList != null" style="color:#409eff;" @click="timelyDetail(scope.row.dataList)">{{scope.row.timelinessRateWithLeave}}</el-link>
+                    <el-link v-if="scope.row.dataList != null" class="themeFontColor"  @click="timelyDetail(scope.row.dataList)">{{scope.row.timelinessRateWithLeave}}</el-link>
                     <span v-else>{{scope.row.timelinessRateWithLeave}}</span>
                   </template>
                 </el-table-column>
@@ -1827,6 +1827,8 @@ import EchartsEchar from "@/components/echartsEchar.vue"
 import { getGroupConsumption, fixedTaskGrouping, fixedGrouping } from "./echartsData"
 import PackTables from "./packetConsumption/tables.vue"
 
+import { getThemeColor } from '@/utils/commonMethod.js'
+
 export default {
   name: "expense",
   components: {
@@ -1838,6 +1840,7 @@ export default {
   props: {},
   data() {
     return {
+      themeColor: getThemeColor(),
       screeningCondition: { // 筛选条件的判断
         project: [4, 8, 9, 10, 11, 14, 15, 17, 19, 20, 21, 22,28], // 项目筛选条件 (不等于)
         months: [14, 15], // 月份筛选条件 (等于)
@@ -4673,7 +4676,11 @@ export default {
   },
 };
 </script>
-<style scoped>
+<style scoped lang="scss">
+@import "../../assets/scss/handle";
+.themeFontColor {
+  @include font_color("color");
+}
 .pagingTable {
   flex: 1 1 0%;
   overflow: hidden;
@@ -4692,7 +4699,7 @@ export default {
   align-items: center;
   justify-content: space-between;
   .text {
-    color: #409EFF;
+    @include font_color("color");
     margin-right: 20px;
   }
 }
@@ -4860,11 +4867,13 @@ export default {
   color: #C0BFBF
 }
 .side:hover {
-  border-right: 2px solid #20A0FF;
+  border-right: 2px solid;
+  @include border_color("border_color");
 }
 .side:hover .spans {
-  border: 1px solid #20A0FF;
-  background: #20A0FF;
+  border: 1px solid ;
+  @include border_color("border_color");
+  @include background_color("background_color");
 }
 .side:hover .spans i{
   color: #fff;

+ 3 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/desktop/detail.vue

@@ -249,6 +249,7 @@ export default {
 </script>
 
 <style lang="scss" scoped>
+@import "../../assets/scss/handle";
 .toolbar {
   .el-form-item {
     font-size: 14px;
@@ -268,7 +269,7 @@ export default {
     font-size: 18px;
   }
   .workHours {
-    color: #20a0ff;
+    @include font_color("color");
     font-size: 18px;
   }
 }
@@ -285,7 +286,7 @@ export default {
         margin-top: 13px;
         line-height: 12px;
         i {
-          color: #9ed0ff;
+          @include font_color("color1");
           margin-right: 5px;
         }
         .time {

+ 3 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/desktop/index.vue

@@ -190,11 +190,12 @@
 </script>
 
 <style lang="scss" scoped>
+@import "../../assets/scss/handle";
     .nowTime {
         height: 35px;
         line-height: 28px;
         font-size: 18px;
-        color: #20a0ff;
+        @include font_color("color");
         margin-left: 10px;
             i {
                 margin-right: 10px;
@@ -225,7 +226,7 @@
                 margin-top: 13px;
                 line-height: 12px;
                 i {
-                color: #9ed0ff;
+                @include font_color("color");
                 margin-right: 5px;
                 }
                 .time {

+ 9 - 4
fhKeeper/formulahousekeeper/timesheet/src/views/expense/expense.vue

@@ -7,7 +7,7 @@
         <el-divider></el-divider>
         <el-col :span="12">
           <el-menu default-active="1-1" class="el-menu-vertical-demo" @select="staffs" background-color="#ffffff"
-            text-color="#666666" active-text-color="#20A0FF" style="width:100%">
+            text-color="#666666" :active-text-color="themeColor" style="width:100%">
             <el-submenu index="1">
               <template slot="title">
                 <i class="iconfont firerock-icontianbao"></i>
@@ -1093,6 +1093,7 @@ import selectCat from "@/components/select.vue"
 // 引入自定义级联组件
 import vueCascader from "@/components/cascader.vue"
 
+import { getThemeColor } from '@/utils/commonMethod.js'
 export default {
   name: "expense",
   components: {
@@ -1102,6 +1103,7 @@ export default {
   props: {},
   data() {
     return {
+      themeColor: getThemeColor(),
       pdfIcons: require('@/assets/image/pdfIcon.png'),
       showSingleAudit: false,
       auditTypeItem: { auditType: 0 },
@@ -2660,6 +2662,7 @@ export default {
 };
 </script>
 <style scoped lang="scss">
+@import "../../assets/scss/handle";
 .tups {
   width: 100%;
   height: 25px;
@@ -2848,12 +2851,14 @@ export default {
 }
 
 .side:hover {
-  border-right: 2px solid #20A0FF;
+  border-right: 2px solid;
+  @include border_color("border_color");
 }
 
 .side:hover .spans {
-  border: 1px solid #20A0FF;
-  background: #20A0FF;
+  border: 1px solid;
+  @include border_color("border_color");
+  @include background_color("background_color");
 }
 
 .side:hover .spans i {

+ 18 - 8
fhKeeper/formulahousekeeper/timesheet/src/views/leave/list.vue

@@ -4,7 +4,7 @@
       <h3><i class="iconfont firerock-iconbaoxiao" style="padding-right: 10px"></i>{{ $t('navigation.askForLeaveManagement') }}</h3>
       <el-divider ></el-divider>
       <el-col :span="12">
-        <el-menu :default-active="isSyncData ? '7' : '1'" class="el-menu-vertical-demo" @select="staffs" background-color="#ffffff" text-color="#666666" active-text-color="#20A0FF" style="width:100%">
+        <el-menu :default-active="isSyncData ? '7' : '1'" class="el-menu-vertical-demo" @select="staffs" background-color="#ffffff" text-color="#666666" :active-text-color="themeColor" style="width:100%">
           <!-- <el-submenu index="1">
             <template slot="title">
               <i class="iconfont firerock-icontianbao"></i>
@@ -468,7 +468,7 @@
         <el-col :span="18" >
             <el-scrollbar style="height:100%;border:1px solid #dddddd;margin-right:20px;" >
             <div class="tree" :style="'height:'+ (tableHeight-120) + 'px'">
-                <div style="padding:5px;color:#333;" v-if="depData != null">{{ $t('setup') }} &lt;<span style="color:#20a0ff;">
+                <div style="padding:5px;color:#333;" v-if="depData != null">{{ $t('setup') }} &lt;<span class="themeFontColor">
                   <!-- {{depData.label}} -->
                     <span v-if="user.userNameNeedTranslate != 1">{{depData.label}}</span>
                     <span v-if="user.userNameNeedTranslate == 1"><TranslationOpenDataText type='departmentName' :openid='depData.label'></TranslationOpenDataText></span>
@@ -508,7 +508,7 @@
                     </span>
 
                     <!--结束点 -->
-                    <icon class="iconfont firerock-iconApp_New_Line" style="color:#20A0FF;"></icon>
+                    <icon class="iconfont firerock-iconApp_New_Line themeFontColor"></icon>
                     {{ $t('approvaltocomplete') }} 
                   </div>
 
@@ -810,6 +810,7 @@ import selectPersonnel from '../../components/selectPersonnel.vue';
  // 引入自定义级联组件
 import vueCascader from "@/components/cascader.vue"
 
+import { getThemeColor } from '@/utils/commonMethod.js'
 export default {
   name: "expense",
   components: {
@@ -845,6 +846,7 @@ export default {
         }
     };
     return {
+      themeColor: getThemeColor(),
       denyDialogV: false,
       denyInfo: {},
       addFormRules: {
@@ -2358,12 +2360,18 @@ export default {
   }
 };
 </script>
-<style scoped>
+<style scoped lang="scss">
+@import "../../assets/scss/handle";
+
+.themeFontColor {
+    @include font_color("color");
+}
+
 .addNode {
   cursor:pointer;
 }
 .addNode:hover {
-  color:#20a0ff;
+  @include font_color("color");
 }
 .apls {
   width: 200px;
@@ -2530,11 +2538,13 @@ export default {
   color: #C0BFBF
 }
 .side:hover {
-  border-right: 2px solid #20A0FF;
+  border-right: 2px solid;
+  @include border_color("border_color");
 }
 .side:hover .spans {
-  border: 1px solid #20A0FF;
-  background: #20A0FF;
+  border: 1px solid;
+  @include border_color("border_color");
+  @include background_color("background_color");
 }
 .side:hover .spans i{
   color: #fff;

+ 2 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/message.vue

@@ -234,6 +234,7 @@ export default {
 </script>
 
 <style scoped>
+@import "../assets/scss/handle";
 .message-div {
   cursor: pointer;
   padding: 5px 0;
@@ -254,7 +255,7 @@ export default {
 }
 
 .message-title {
-  color: #409eff;
+  @include font_color("color");
 }
 
 .message-article {

+ 7 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/project/detail.vue

@@ -11,7 +11,7 @@
                     <span class="workName">{{detailName}}</span>
                 </el-form-item>
                 <el-form-item style="float:right;">
-                    <span style="font-size:18px;">{{ $t('xiang-mu-cheng-ben') }}:<span style="color:#20a0ff;">{{cost.toFixed(2)}}{{ $t('yuan') }}</span></span>
+                    <span style="font-size:18px;">{{ $t('xiang-mu-cheng-ben') }}:<span class="themeFontColor">{{cost.toFixed(2)}}{{ $t('yuan') }}</span></span>
                 </el-form-item>
             </el-form>
         </el-col>
@@ -275,6 +275,11 @@
 </script>
 
 <style lang="scss" scoped>
+    @import "../../assets/scss/handle";
+
+    .themeFontColor {
+        @include font_color("color");
+    }
     .toolbar {
         .el-form-item {
             font-size: 14px;
@@ -294,7 +299,7 @@
             font-size: 18px;
         }
         .workHours {
-            color: #20a0ff;
+            @include font_color("color");
             font-size: 18px;
         }
     }

+ 7 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/project/detailDep.vue

@@ -21,7 +21,7 @@
                     <span style="color:#666;">{{ $t('message.period') }} :{{startDate}}<span style="padding-left:5px;padding-right:5px;">{{ $t('other.to') }}</span>{{endDate}}</span>
                 </el-form-item>
                 <el-form-item style="float:right;">
-                    <span style="font-size:18px;">{{ $t('buMenChengBen') }}<span style="color:#20a0ff;">{{cost.toFixed(2)}} {{ $t('yuan') }}</span></span>
+                    <span style="font-size:18px;">{{ $t('buMenChengBen') }}<span class="themeFontColor">{{cost.toFixed(2)}} {{ $t('yuan') }}</span></span>
                 </el-form-item>
             </el-form>
         </el-col> 
@@ -382,6 +382,11 @@
 </script>
 
 <style lang="scss" scoped>
+    @import "../../assets/scss/handle";
+
+    .themeFontColor {
+        @include font_color("color");
+    }
     .toolbar {
         .el-form-item {
             font-size: 14px;
@@ -401,7 +406,7 @@
             font-size: 18px;
         }
         .workHours {
-            color: #20a0ff;
+            @include font_color("color");
             font-size: 18px;
         }
     }

+ 13 - 6
fhKeeper/formulahousekeeper/timesheet/src/views/project/fileCenter.vue

@@ -3,7 +3,7 @@
         <div :style="'background:#f7f7f7;padding:10px 50px;height:'+tableHeight+'px;'">
         <!--工具条-->
         <div style="padding: 20px;background:#fff;border-bottom:1px solid #ddd;font-weight:500;font-size:15px;">
-            <span @click="viewFolder(null)" style="color: #409EFF;cursor: pointer;">{{ $t('library') }}</span>
+            <span @click="viewFolder(null)" class="themeFontColor" style="cursor: pointer;">{{ $t('library') }}</span>
             <span v-for="path in pathList" :key="path.id" @click="viewFolder(path)" class="mianbaoxie"> <i class="el-icon-arrow-right jianto"></i> {{path.documentName}}</span>
             <span style="float:right;">
                 <!-- <el-link type="primary" :underline="false" v-if="list.length
@@ -238,15 +238,21 @@
         </div>
     </section>
 </template>
-<style scoped>
+<style scoped lang="scss">
+@import "../../assets/scss/handle";
+
+.themeFontColor {
+    @include font_color("color");
+}
 .fileTypeIcon {
-    color:#20a0ff;font-size:20px;
+    @include font_color("color");
+    font-size:20px;
 }
 .mianbaoxie {
     color: #909399;
 }
 .mianbaoxie:hover {
-    color: #409EFF;
+    @include font_color("color");
     cursor: pointer;
 }
 .mianbaoxie:hover .jianto {
@@ -299,13 +305,14 @@
   margin: 10px 0;
 }
 .cardOn {
-    border: 1px solid #409EFF;
+    border: 1px solid;
+    @include border_color("border_color");
 }
 .cardIcon {
     display: inline-block; 
     margin-left: 10px;
     width: 20px;
-    color: #409EFF;
+    @include font_color("color");
     font-size: 16px;
     font-weight: bold;
 }

+ 2 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/project/gantt.vue

@@ -232,7 +232,8 @@ export default {
     @import "~dhtmlx-gantt/codebase/dhtmlxgantt.css";
     .person_line {
       background:#8ecaf8;
-      border: #20a0ff 1px solid 
+      border: 1px solid;
+      @include border_color("border_color");
     }
     /* .gantt_tooltip{
       z-index: 10000;

+ 0 - 4
fhKeeper/formulahousekeeper/timesheet/src/views/project/info.vue

@@ -712,10 +712,6 @@
     </div>
 </template>
 <style scoped>
-.fileTypeIcon {
-    color:#20a0ff;font-size:20px;
-
-}
 .box {
     background:#fff;border: 1px solid #eeeeee;border-radius:5px;padding:10px;
 }

+ 15 - 5
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -1503,7 +1503,7 @@
                 </el-table-column>
                 <el-table-column prop="workContext" :label="$t('gongZuoNeiRong')" align="center">
                     <template slot-scope="scope">
-                        <a v-if="scope.row.id" @click="workContextDig=true,getWorkContextList(scope.row.id)" style="color:#409EFF">{{ $t('datamaintenance') }}</a>
+                        <a v-if="scope.row.id" @click="workContextDig=true,getWorkContextList(scope.row.id)" class="themeFontColor">{{ $t('datamaintenance') }}</a>
                         <a v-else>{{ $t('datamaintenance') }}</a>
                     </template>
                 </el-table-column>
@@ -1691,7 +1691,7 @@
                     </el-form>
                 </el-tab-pane>
                 <el-tab-pane :label="$t('creatintemplate')" name="template">
-                    <el-card class="template_box" :style="t.selected?'border: 1px solid #409eff;':''" v-for="(t,tIndex) in groupTemplateList" :key="t.id"  @click.native="choseTemplate(tIndex)">
+                    <el-card :class="`template_box ${t.selected ? 'themeBorderColor' : ''}`" :style="t.selected?'border: 1px solid;':''" v-for="(t,tIndex) in groupTemplateList" :key="t.id"  @click.native="choseTemplate(tIndex)">
                         <div>
                         <el-row >
                             <el-col :span="22">
@@ -1710,7 +1710,7 @@
                                 </div>
                             </el-col>
                             <el-col :span="2">
-                                <i class="el-icon-check" v-show="t.selected" style="font-size:20px;color:#409eff;margin-top:12px;"></i>
+                                <i class="el-icon-check themeFontColor" v-show="t.selected" style="font-size:20px;margin-top:12px;"></i>
                             </el-col>
                             
                         </el-row>
@@ -6245,6 +6245,15 @@ a {
 </script>
 
 <style lang="scss" scoped>
+@import "../../assets/scss/handle";
+
+.themeFontColor {
+    @include font_color("color");
+}
+
+.themeBorderColor {
+    @include border_color("border_color");
+}
 .synchronization {
     display: flex;
     justify-content: space-between;
@@ -6293,12 +6302,13 @@ a {
 // 111
 
 </style>
-<style>
+<style lang="scss" scoped>
+@import "../../assets/scss/handle";
 .managePopperClass{
     width: 190px;
 }
 .el-dropdown-link {
-    color: #409EFF;
+    @include font_color("color");
 }
 .customdropdown{
     margin-left: 10px;

+ 6 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/project/projectForm.vue

@@ -3,7 +3,7 @@
       <div class="til">
           <p>{{ $t('navigation.projectFormSettings') }}</p>
           <div style="display: flex;">
-             <p style="cursor:pointer;margin-left: 30px;color: #20A0FF;" @click="addJa($t('tianJiaBiaoDanZiDuan'), 'ruleForm')"><i class="el-icon-circle-plus-outline"></i>{{ $t('addTian') }}</p>
+             <p style="cursor:pointer;margin-left: 30px;" class="themeFontColor" @click="addJa($t('tianJiaBiaoDanZiDuan'), 'ruleForm')"><i class="el-icon-circle-plus-outline"></i>{{ $t('addTian') }}</p>
           </div>
       </div>
       <div class="tabl">
@@ -194,6 +194,11 @@ export default {
 </script>
 
 <style scoped lang="scss">
+@import "../../assets/scss/handle";
+
+.themeFontColor {
+    @include font_color("color");
+}
 .infrastructures {
     color: #666;
     .til {

+ 25 - 16
fhKeeper/formulahousekeeper/timesheet/src/views/project/projectInside.vue

@@ -130,10 +130,6 @@
                     <span :style="'background:#f0f0f0;width:1px;height:'+tableHeight+'px;'" @click="toggleGroup">
                         
                     </span>
-                    <!-- <span :style="'width:10px;height:'+tableHeight+'px;float:left;text-align:center;vertical-align:middle;'" @click="toggleGroup">
-                        <span :style="'width:1px;background:#20A0FF;height:'+tableHeight+'px;float:left;'"></span>
-                        <i class="el-icon-d-arrow-left" ></i>
-                    </span> -->
 
                     <!-- 增加侧边栏的点击效果 -->
                     <div class="sidebar" @click="retract()">
@@ -499,7 +495,7 @@
                             <!-- 任务进展 -->
                             <template v-if="!timelabel || isRelationItem">
                             
-                            <p ><i class="iconfont firerock-icontree" style="color:#20A0ff;margin-left:10px;">{{ $t('taskprogress') }}</i>
+                            <p ><i class="iconfont firerock-icontree themeFontColor" style="margin-left:10px;">{{ $t('taskprogress') }}</i>
                                 <span ref="addPro" style="display: block; float:right;"><el-link @click="addprogress">{{ $t('addtaskprogress') }}</el-link></span>
                             </p>
                             <!-- 任务进展展示 -->
@@ -522,7 +518,7 @@
 
                                 <h4 style="font-weight: normal;">{{ $t('tixiang') }}{{checkLists.length}}</h4>
 
-                                <i class="el-icon-circle-plus pron_i" style="font-size: 28px;color: #409EFF;" @click="addI(0)"></i>
+                                <i class="el-icon-circle-plus pron_i themeFontColor" style="font-size: 28px;" @click="addI(0)"></i>
 
                                 <div class="remind" ref="addRem" style="display: none">
                                     <el-checkbox-group v-model="checkboxGrounp" v-for="item in users" :key="item.id">
@@ -629,7 +625,7 @@
                             </template>
 
                             <!-- 子任务/关联任务 -->
-                            <p ><i class="iconfont firerock-icontree" style="color:#20A0ff;margin-left:10px;">{{timelabel && !isRelationItem ? $t('guanlian') : $t('zirwu')}}</i>
+                            <p ><i class="iconfont firerock-icontree themeFontColor" style=";margin-left:10px;">{{timelabel && !isRelationItem ? $t('guanlian') : $t('zirwu')}}</i>
                                 <el-link style="float:right;" @click="addRelation" v-if="timelabel && !isRelationItem">{{ $t('associatedTask') }}</el-link>
                                 <el-link style="float:right;" @click="addSubTask" v-else>{{ $t('addingsubtask') }}</el-link>
                             </p>
@@ -647,7 +643,7 @@
                                 </el-table-column>
                                 <el-table-column prop="taskName" :label="$t('biao-ti')" >
                                     <template slot-scope="scope">
-                                        <el-tooltip class="item" effect="dark" :content="scope.row.taskName" placement="top" style="cursor:pointer;color:#409eff;">
+                                        <el-tooltip class="item themeFontColor" effect="dark" :content="scope.row.taskName" placement="top" style="cursor:pointer;">
                                             <span style="overflow: hidden;text-overflow:ellipsis;white-space: nowrap;" > {{scope.row.taskName}}</span>
                                         </el-tooltip>
                                     </template>
@@ -708,7 +704,7 @@
                     <!-- 关联文件列表 -->
                     <template v-if="isEditFile">
                         <div style="width:100%;margin:1em 0;">
-                            <i class="iconfont firerock-icontree" style="color:#20A0ff;margin-left:10px;">{{ $t('jiafuchengguo') }}</i>
+                            <i class="iconfont firerock-icontree themeFontColor" style="margin-left:10px;">{{ $t('jiafuchengguo') }}</i>
                             <el-link @click="relationFileClick()" style="float:right;margin-left:10px">{{ $t('associatedfiles') }}</el-link>
                             <el-upload style="float:right;" action="#" :http-request="uploadFileClick" :show-file-list="false" :multiple="false">
                                 <el-link>{{ $t('uoloadFiles') }}</el-link>
@@ -1078,7 +1074,7 @@
                     </el-form>
                 </el-tab-pane>
                 <el-tab-pane :label="$t('creatintemplate')" name="template">
-                    <el-card class="template_box" :style="t.selected?'border: 1px solid #409eff;':''" v-for="(t,tIndex) in groupTemplateList" :key="t.id"  @click.native="choseTemplate(tIndex)">
+                    <el-card :class="`template_box ${t.selected ? 'themeBorderColor' : ''}`" :style="t.selected?'border: 1px solid;':''" v-for="(t,tIndex) in groupTemplateList" :key="t.id"  @click.native="choseTemplate(tIndex)">
                         <div>
                         <el-row >
                             <el-col :span="22">
@@ -1097,7 +1093,7 @@
                                 </div>
                             </el-col>
                             <el-col :span="2">
-                                <i class="el-icon-check" v-show="t.selected" style="font-size:20px;color:#409eff;margin-top:12px;"></i>
+                                <i class="el-icon-check themeFontColor" v-show="t.selected" style="font-size:20px;margin-top:12px;"></i>
                             </el-col>
                             
                         </el-row>
@@ -1309,6 +1305,8 @@
     import { quillEditor } from 'vue-quill-editor'
     import { error } from 'dingtalk-jsapi';
     import delete$ from 'dingtalk-jsapi/api/biz/cspace/delete';
+
+    import { getThemeColor } from '@/utils/commonMethod.js'
     let id=1;
     export default {
         name: "two-list-headerslots",
@@ -1360,7 +1358,7 @@
                 {id:5,name:this.$t('createdthetask')},{id:6,name:this.$t('missionIwason')},{id:7,name:this.$t('todaytask')},{id:8,name:this.$t('taskthatisoverdue')}],
                 importanceList:[{id:0,name:this.$t('yi-ban')},{id:1,name:this.$t('zhong-yao')},{id:2,name:this.$t('jin-ji')},],
                 taskTypeList:[{id:0,name:this.$t('other.task'), icon:"iconfont firerock-iconrenwu"},{id:1,name:this.$t('other.milestone'),icon:"iconfont firerock-iconicon-"},{id:2,name:this.$t('risk'),icon:"iconfont firerock-iconfengxian"}],
-                taskTypeColor:['#20A0FF','#8613ad','#bf0404'],
+                taskTypeColor:[getThemeColor(),'#8613ad','#bf0404'],
                 taskTypeIcon:['iconfont firerock-iconrenwu','iconfont firerock-iconicon-','iconfont firerock-iconfengxian'],
                 taskStatusList:[this.$t('ongoing'),this.$t('state.completed'),this.$t('state.undone')],
                 //优先级
@@ -4019,6 +4017,16 @@
 </script>
 
 <style lang="scss" scoped>
+@import "../../assets/scss/handle";
+
+.themeFontColor {
+    @include font_color("color");
+}
+
+.themeBorderColor {
+    @include border_color("border_color");
+}
+
 .hideCompletedFelx {
     display: flex;
     align-items: center;
@@ -4048,7 +4056,8 @@
     }
 </style>
 
-<style >
+<style lang="scss">
+@import "../../assets/scss/handle";
 .taskCardCircleBox{
     padding-left: 5px;
     display: flex;
@@ -4226,11 +4235,11 @@ overflow: auto;
     position: relative;
 }
 .sidebar:hover {
-    background: #20a0ff;
+    @include background_color("background_color");
 }
 .sidebar:hover .etui {
-    background: #20a0ff;
-    border: #20a0ff;
+    @include background_color("background_color");
+    @include border_color("border_color");
     color: #fff;
 }
 .etui {

+ 9 - 3
fhKeeper/formulahousekeeper/timesheet/src/views/projectApproval/projectApproval.vue

@@ -239,7 +239,7 @@
                                 <el-divider></el-divider>
                                 <template>
                                     <div style="padding: 7px 0; ">
-                                        <span style="color: #409EFF; font-size: 17px;">{{'审核人'}}</span>
+                                        <span class="themeFontColor" style="font-size: 17px;">{{'审核人'}}</span>
                                     </div>
                                     <!-- <div >
                                         <div  v-for="(item, index) in pointList" :key="index" >
@@ -1619,7 +1619,13 @@ methods: {
 },
 }
 </script>
-<style scoped>
+<style scoped lang="scss">
+@import "../../assets/scss/handle";
+
+.themeFontColor {
+    @include font_color("color");
+}
+
 .toolbar_formitem_n1{
     margin-right: 0 !important;
 }
@@ -1644,7 +1650,7 @@ methods: {
     background: #dddddd;
 }
 .on {
-    color: #409EFF;
+    @include font_color("color");
 }
 .gray_label {
     color:#999 !important;

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 23 - 17
fhKeeper/formulahousekeeper/timesheet/src/views/settings/timetype.vue


+ 6 - 5
fhKeeper/formulahousekeeper/timesheet/src/views/task/list.vue

@@ -426,7 +426,8 @@
         </el-dialog>
     </section>
 </template>
-<style scoped>
+<style scoped lang="scss">
+@import "../../assets/scss/handle";
 .input-with-select .el-input-group__prepend {
     background-color: #fff;
   }
@@ -457,7 +458,7 @@
     background: #dddddd;
 }
 .on {
-    color: #409EFF;
+    @include font_color("color");
 }
 .acl{
     display: inline-block;
@@ -473,7 +474,7 @@
     line-height: 0;
 }
 .cal {
-    color: #409EFF;
+    @include font_color("color");
     width: 300px;
     overflow: hidden;
     white-space: nowrap;
@@ -608,7 +609,7 @@ import { error } from 'dingtalk-jsapi';
     import 'quill/dist/quill.bubble.css'
     // 导入富文本
     import { quillEditor } from 'vue-quill-editor'
-
+import { getThemeColor } from '@/utils/commonMethod.js'
     export default {
         name: "two-list-headerslots",
         display: "Two list header slot",
@@ -742,7 +743,7 @@ import { error } from 'dingtalk-jsapi';
                 {id:5,name:this.$t('createdthetask')},{id:6,name:this.$t('missionIwason')},{id:7,name:this.$t('todaytask')},{id:8,name:this.$t('taskthatisoverdue')}],
                 importanceList:[{id:0,name:this.$t('yi-ban')},{id:1,name:this.$t('zhong-yao')},{id:2,name:this.$t('jin-ji')},],
                 taskTypeList:[{id:0,name:this.$t('other.task'), icon:"iconfont firerock-iconrenwu"},{id:1,name:this.$t('other.milestone'),icon:"iconfont firerock-iconicon-"},{id:2,name:this.$t('risk'),icon:"iconfont firerock-iconfengxian"}],
-                taskTypeColor:['#20A0FF','#8613ad','#bf0404'],
+                taskTypeColor:[getThemeColor(),'#8613ad','#bf0404'],
                 taskTypeIcon:['iconfont firerock-iconrenwu','iconfont firerock-iconicon-','iconfont firerock-iconfengxian'],
                 taskStatusList:[this.$t('ongoing'),this.$t('state.completed'),this.$t('state.undone')],
                 //优先级

+ 8 - 4
fhKeeper/formulahousekeeper/timesheet/src/views/team/index.vue

@@ -32,8 +32,8 @@
                           <span v-else>
                             {{ node.label }} <i v-if="node.data.ddDeptid != null" class="iconfont firerock-icondingding"></i>
                           </span>
-                          <span v-if="node.label != $t('lable.allStaff') && node.label != $t('lable.unassigned') && adjustPosition" class="treeIons">
-                            <i class="el-icon-s-operation" style="color: #409eff"></i>
+                          <span v-if="node.label != $t('lable.allStaff') && node.label != $t('lable.unassigned') && adjustPosition" class="treeIons themeFontColor">
+                            <i class="el-icon-s-operation"></i>
                           </span>
                         </span>
 
@@ -4104,6 +4104,10 @@ export default {
 
 </style>
 <style lang="scss" scoped>
+@import "../../assets/scss/handle";
+.themeFontColor {
+  @include font_color("color");
+}
 .imgFlex {
     display: flex;
     align-items: center;
@@ -4144,7 +4148,7 @@ export default {
             font-size: 15px;
             div {
                 float: right;
-                color: #20a0ff;
+                @include font_color("color");
                 font-size: 14px;
                 cursor: pointer;
             }
@@ -4158,7 +4162,7 @@ export default {
         height: 40px;
         line-height: 40px;
         font-size: 16px;
-        color: #20a0ff;
+        @include font_color("color");
         margin-left: 10px;
         cursor: pointer;
         i {

+ 16 - 12
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -82,7 +82,7 @@
                                         <!-- 未通过 -->
                                         {{$t('state.notThrough')}}({{data.workingTime.toFixed(1) + 'h'}})
                                         </span>
-                                        <span v-if="data.isUser == 1 && data.state == 3" style="color:#409eff;font-size:13px">
+                                        <span v-if="data.isUser == 1 && data.state == 3" style="font-size:13px" class="themeFontColor">
                                         <!-- 待提交 -->
                                         {{$t('state.waitingsubmit')}}({{data.workingTime.toFixed(1) + 'h'}})
                                         </span>
@@ -347,7 +347,7 @@
                                         </el-timeline>
                                     </div>
                                 </div>
-                                <div v-if="hasMore && !listLoading" style="width:100%;font-size:17px;text-align:center;padding-bottom:15px;"><el-link @click="reqMore" :underline=false style="color:#20a0ff;">{{ $t('jiaZaiGengDuoRiBao') }}</el-link></div>
+                                <div v-if="hasMore && !listLoading" style="width:100%;font-size:17px;text-align:center;padding-bottom:15px;"><el-link @click="reqMore" :underline=false class="themeFontColor">{{ $t('jiaZaiGengDuoRiBao') }}</el-link></div>
                                 <!-- 简陋的无报告提示 -->
                                 <div v-if="reportList.length==0" style="width:100%;font-size:17px;text-align:center;color:#aaa;">{{curDate}}{{$t('other.noReportYet')}}</div>
                             </div>
@@ -441,7 +441,7 @@
                         v-if="!isBatch && user.companyId === 5978" icon="el-icon-refresh" 
                                 @click="refreshBeiSengAttendance(workForm.createDate)"></el-button>
                         
-                        <span v-if="user.companyId==5978" style="margin-left:5px;color:#20a0ff;"><i class="el-icon-warning"></i>{{$t('other.kaoqingTimeTip')}}</span>
+                        <span v-if="user.companyId==5978" style="margin-left:5px;" class="themeFontColor"><i class="el-icon-warning"></i>{{$t('other.kaoqingTimeTip')}}</span>
                     </el-form-item>
                     <!-- 000000 -->
                     <div v-for="(domain, index) in workForm.domains" :key="domain.id" :style="index>0?'margin-top:10px;':''">
@@ -9170,6 +9170,10 @@
 </script>
 
 <style lang="scss" scoped>
+@import "../../assets/scss/handle";
+.themeFontColor {
+    @include font_color("color");
+}
 .fillWeekDialogVisiCustom {
     width: 100%;
     height: 70vh;
@@ -9210,20 +9214,20 @@
     color:red;
 }
 .waitSubmitStyle{
-    color: #409eff;
+    @include font_color("color");
 }
 .chooseDate {
     .waiting {
-        color: #20a0ff;
+        @include font_color("color");
     }
     .filledReportStyle {
-        color:#20a0ff;
+        @include font_color("color");
     }
     .RejectStyle {
-        color: #20a0ff;
+        @include font_color("color");
     }
     .waitSubmitStyle{
-        color: #20a0ff;
+        @include font_color("color");
     }
 }
     .allDaily {
@@ -9249,12 +9253,12 @@
             width: 37px;
             height: 2px;
             left: 14px;
-            background: #20a0ff;
+            @include background_color("background_color");
         }
     }
     .one_daily {
         i {
-            color: #9ed0ff;
+            @include font_color("color1");
             margin-right: 5px;
         }
         .one_daily_body {
@@ -9363,11 +9367,11 @@
         transform: scale(1.2);
         position: relative;
         top: 0.5px;
-        color: #409eff;
+        @include font_color("color");
     }
     .approvalProcessBox .approvalProcessClick{
         cursor: pointer;
-        color: #409eff;
+        @include font_color("color");
         font-size: 14px;
     }
     .approvalProcessBox:hover .approvalProcessClick{

+ 7 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/list.vue

@@ -128,8 +128,8 @@
                                         </span>]
                                     </span>
                                     </b></p>
-                                    <p v-if="user.timeType.reportAuditType == 6" >{{ $t('shenHeLiuCheng') }}<span v-if="item.auditorList && item.auditorList.length == 1">{{ $t('yiCengShenHe') }}(<span style="color:#20A0ff;">{{ item.auditorList[0].name }}</span>)</span>
-                                    <span v-if="item.auditorList && item.auditorList.length == 2">{{ $t('liangCengShenHe') }}(<span style="color:#20A0ff;">{{ item.auditorList[0].name }}->{{ item.auditorList[1].name }}</span>)</span>
+                                    <p v-if="user.timeType.reportAuditType == 6" >{{ $t('shenHeLiuCheng') }}<span v-if="item.auditorList && item.auditorList.length == 1">{{ $t('yiCengShenHe') }}(<span class="themeFontColor">{{ item.auditorList[0].name }}</span>)</span>
+                                    <span v-if="item.auditorList && item.auditorList.length == 2">{{ $t('liangCengShenHe') }}(<span class="themeFontColor">{{ item.auditorList[0].name }}->{{ item.auditorList[1].name }}</span>)</span>
                                     <el-button size="small" @click="viewOneReport(item)" v-if="!item.auditorList">{{ $t('cha-kan') }}</el-button>
                                     </p>
                                     <p v-if="user.timeType.customDegreeActive==1 && (item.degree_id != null || item.multiDegrId != '[]')">{{user.timeType.customDegreeName}}:{{item.degreeName}}</p>
@@ -1269,6 +1269,11 @@
 </script>
 
 <style lang="scss" scoped>
+@import "../../assets/scss/handle";
+
+.themeFontColor {
+    @include font_color("color");
+}
 .propsbtn {
     display: inline-block;
     padding-left: 20px;

+ 8 - 3
fhKeeper/formulahousekeeper/timesheet/src/views/workflow/report.vue

@@ -28,7 +28,7 @@
         <el-col :span="18" >
             <el-scrollbar style="height:100%;border:1px solid #dddddd;margin-right:20px;" >
             <div class="tree" :style="'height:'+ (tableHeight-120) + 'px'">
-                <div style="padding:5px;color:#333;" v-if="depData != null">{{ $t('setup') }} &lt;<span style="color:#20a0ff;">
+                <div style="padding:5px;color:#333;" v-if="depData != null">{{ $t('setup') }} &lt;<span class="themeFontColor">
                     <span v-if="user.userNameNeedTranslate != 1">{{depData.label}}</span>
                     <span v-if="user.userNameNeedTranslate == 1"><TranslationOpenDataText type='departmentName' :openid='depData.label'></TranslationOpenDataText></span>
                     &gt;</span> {{ $t('workinghoursapprovalprocessofdirectstaff') }}
@@ -57,7 +57,7 @@
                     </span>
 
                     <!--结束点 -->
-                    <icon class="iconfont firerock-iconApp_New_Line" style="color:#20A0FF;"></icon>
+                    <icon class="iconfont firerock-iconApp_New_Line themeFontColor"></icon>
                     {{ $t('approvaltocomplete') }}
                     </div>
 
@@ -428,11 +428,16 @@
 </script>
 
 <style lang="scss" scoped>
+@import "../../assets/scss/handle";
+
+.themeFontColor {
+    @include font_color("color");
+}
 .addNode {
   cursor:pointer;
 }
 .addNode:hover {
-  color:#20a0ff;
+    @include font_color("color");
 }
 
 .panel {