HZH-PC\HZH 4 years ago
parent
commit
df8212d2cc

+ 58 - 21
package-lock.json

@@ -803,6 +803,22 @@
         }
       }
     },
+    "@babel/runtime-corejs3": {
+      "version": "7.14.0",
+      "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.14.0.tgz",
+      "integrity": "sha512-0R0HTZWHLk6G8jIk0FtoX+AatCtKnswS98VhXwGImFc759PJRp4Tru0PQYZofyijTFUr+gT8Mu7sgXVJLQ0ceg==",
+      "requires": {
+        "core-js-pure": "^3.0.0",
+        "regenerator-runtime": "^0.13.4"
+      },
+      "dependencies": {
+        "regenerator-runtime": {
+          "version": "0.13.7",
+          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
+          "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
+        }
+      }
+    },
     "@babel/template": {
       "version": "7.7.4",
       "resolved": "http://192.168.80.51:7001/@babel/template/download/@babel/template-7.7.4.tgz",
@@ -3109,6 +3125,11 @@
       "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz",
       "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA=="
     },
+    "core-js-pure": {
+      "version": "3.12.1",
+      "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.12.1.tgz",
+      "integrity": "sha512-1cch+qads4JnDSWsvc7d6nzlKAippwjUlf6vykkTLW53VSV+NkE6muGBToAjEA8pG90cSfcud3JgVmW2ds5TaQ=="
+    },
     "core-util-is": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
@@ -4983,14 +5004,12 @@
         "balanced-match": {
           "version": "1.0.0",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "brace-expansion": {
           "version": "1.1.11",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "balanced-match": "^1.0.0",
             "concat-map": "0.0.1"
@@ -5005,20 +5024,17 @@
         "code-point-at": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "concat-map": {
           "version": "0.0.1",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "console-control-strings": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "core-util-is": {
           "version": "1.0.2",
@@ -5135,8 +5151,7 @@
         "inherits": {
           "version": "2.0.3",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "ini": {
           "version": "1.3.5",
@@ -5148,7 +5163,6 @@
           "version": "1.0.0",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "number-is-nan": "^1.0.0"
           }
@@ -5163,7 +5177,6 @@
           "version": "3.0.4",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "brace-expansion": "^1.1.7"
           }
@@ -5171,14 +5184,12 @@
         "minimist": {
           "version": "0.0.8",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "minipass": {
           "version": "2.3.5",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "safe-buffer": "^5.1.2",
             "yallist": "^3.0.0"
@@ -5197,7 +5208,6 @@
           "version": "0.5.1",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "minimist": "0.0.8"
           }
@@ -5278,8 +5288,7 @@
         "number-is-nan": {
           "version": "1.0.1",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "object-assign": {
           "version": "4.1.1",
@@ -5291,7 +5300,6 @@
           "version": "1.4.0",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "wrappy": "1"
           }
@@ -5413,7 +5421,6 @@
           "version": "1.0.2",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "code-point-at": "^1.0.0",
             "is-fullwidth-code-point": "^1.0.0",
@@ -11445,6 +11452,36 @@
       "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.5.1.tgz",
       "integrity": "sha512-w7oJzmHQs0FM9LXodfskhw9wgKBiaB+totOdb8sNzbTB2KDCEEwEs29NzBZFh/lmEK1t5tDmM1vtsO7ubG1DFw=="
     },
+    "wangeditor": {
+      "version": "4.6.17",
+      "resolved": "https://registry.npmjs.org/wangeditor/-/wangeditor-4.6.17.tgz",
+      "integrity": "sha512-qgupRHxvSEDh5tyGwEauq4u0sEQLCMYVqN8aRL3CFmWkt6YGlHnN/Yh4lMuKfE83bl+ma3d109sXgH0+PYR3yA==",
+      "requires": {
+        "@babel/runtime": "^7.11.2",
+        "@babel/runtime-corejs3": "^7.11.2",
+        "tslib": "^2.1.0"
+      },
+      "dependencies": {
+        "@babel/runtime": {
+          "version": "7.14.0",
+          "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz",
+          "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==",
+          "requires": {
+            "regenerator-runtime": "^0.13.4"
+          }
+        },
+        "regenerator-runtime": {
+          "version": "0.13.7",
+          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
+          "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
+        },
+        "tslib": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
+          "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w=="
+        }
+      }
+    },
     "watchpack-chokidar2": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz",

+ 2 - 1
package.json

@@ -15,7 +15,8 @@
     "rp-element": "^1.0.4",
     "vue": "^2.6.12",
     "vue-router": "^3.4.9",
-    "vuex": "^3.5.1"
+    "vuex": "^3.5.1",
+    "wangeditor": "^4.6.17"
   },
   "devDependencies": {
     "@vue/cli-plugin-babel": "^3.12.1",

+ 47 - 0
src/components/MainPage/Judge/Judge.vue

@@ -0,0 +1,47 @@
+<style lang="scss" scoped>
+</style>
+<template>
+<div>
+  <div
+    v-wang-editor="{
+    config:editorConfig,
+    text: plan.evaluation,
+    changeSignal:changeSignal
+    }"
+  >
+      <div></div>
+  </div>
+</div>
+</template>
+
+<script>
+import { editorDefaultSet } from '@/services/constant';
+
+export default {
+  name: 'Judge',
+  components: {
+  },
+  props:{
+  },
+  data() {
+    return {
+      editorConfig:{
+        ...editorDefaultSet,
+        onchange: html => {
+          this.plan.evaluation = html;
+        }
+      },
+      changeSignal: false
+    };
+  },
+
+  created() {
+  },
+
+  watch: {
+  },
+
+  methods: {
+  },
+}
+</script>

+ 1 - 1
src/components/MainPage/Quarter.vue

@@ -81,7 +81,7 @@ table{
                 <!-- <th>参与成员</th> -->
                 <th>年份</th>
                 <th style="width:50px">季度</th>
-                <th>简要说明</th>
+                <th>内容</th>
                 <th style="width:120px">操作</th>
             </tr>
         </thead>

+ 41 - 25
src/components/MainPage/Year.vue

@@ -50,7 +50,7 @@ table{
     }
     .el-textarea,.el-input{
       display: inline-block;
-      width: 300px;
+      width: 400px;
     }
     .text-label{
       vertical-align: top;
@@ -65,7 +65,7 @@ table{
 <template>
 <div class="year">
   <div class="tool-panel">
-    <el-button type="primary" @click="visibleChange = true;" v-if="ableEdit">新增年度计划</el-button>
+    <el-button type="primary" @click="visibleChange = true;noEdit = false;plan = {};">新增年度计划</el-button>
   </div>
   <table>
     <thead>
@@ -74,8 +74,8 @@ table{
             <!-- <th>部门</th> -->
             <!-- <th>参与成员</th> -->
             <th>年份</th>
-            <th>简要说明</th>
-            <th style="width:150px" v-if="ableEdit">操作</th>
+            <th>内容</th>
+            <th style="width:120px">操作</th>
         </tr>
     </thead>
     <tbody>
@@ -85,39 +85,52 @@ table{
           <!-- <td>{{item.member}}</td> -->
           <td>{{item.year}}</td>
           <td>{{item.content}}</td>
-          <td v-if="ableEdit">
+          <td>
+            <a @click="changeData(item,true)">详情</a>
+            &nbsp;&nbsp;
             <a @click="changeData(item)">修改</a>
             &nbsp;&nbsp;
             <a @click="visibleDelete = true;plan.id = item.id">删除</a>
             &nbsp;&nbsp;
-            <a>完成</a>
+            <a @click="judgePlan(item)">评价</a>
           </td>
         </tr>
     </tbody>
   </table>
   <el-dialog
         class="dialog-style"
-        title="编辑"
+        :title="noEdit?'详情':'编辑'"
         :visible.sync="visibleChange"
-        width="500px">
+        width="600px">
         <div>
           <label>名称:</label>
-          <el-input name="name" v-model="plan.name" placeholder="请输入名称" required="required"></el-input>
+          <el-input name="name" v-model="plan.name" placeholder="请输入名称" required="required" :disabled="noEdit"></el-input>
         </div>
         <div>
           <label>年份:</label>
           <el-date-picker
             v-model="yearData"
             type="year"
+            :disabled="noEdit"
             placeholder="选择年">
           </el-date-picker>
         </div>
         <div>
           <label class="text-label">内容:</label>
-          <el-input v-model="plan.content" placeholder="请输入内容" required="required" type="textarea" :autosize="{ minRows: 5}"></el-input>
+          <el-input v-model="plan.content" placeholder="请输入内容" required="required" type="textarea" :autosize="{ minRows: 5}" :disabled="noEdit"></el-input>
         </div>
         <span slot="footer" class="dialog-footer">
-            <el-button type="primary" @click="visibleChange = false;plan={}">取消</el-button>
+            <el-button type="primary" @click="visibleChange = false;plan={}" v-if="!noEdit">取消</el-button>
+            <el-button type="primary" @click="change" v-if="!noEdit">确 定</el-button>
+        </span>
+    </el-dialog>
+    <el-dialog
+        :title="plan.name + ' 任务评价'"
+        :visible.sync="visibleJudge"
+        width="800px">
+        <Judge></Judge>
+        <span slot="footer" class="dialog-footer">
+            <el-button type="primary" @click="visibleJudge = false;plan={}">取消</el-button>
             <el-button type="primary" @click="change">确 定</el-button>
         </span>
     </el-dialog>
@@ -136,8 +149,13 @@ table{
 
 <script>
 import { getPlanList,addPlan,updatePlan,deletePlan } from '@/api/year';
+import Judge from "@/components/MainPage/Judge/Judge";
+
 export default {
   name: 'Year',
+  components:{
+    Judge
+  },
   data () {
       return {
         params:{
@@ -146,25 +164,15 @@ export default {
         planeList:[],
         plan:{},
         yearData:'',
+        noEdit: false,
         visibleChange: false,
-        visibleDelete: false
+        visibleDelete: false,
+        visibleJudge: false,
       }
   },
   created() {
     this.getPlanList();
   },
-  computed: {
-      ableEdit() {
-          // return this.$store.state.loginUser.id == this.$store.state.checkUser.id;
-          return true;
-      },
-  },
-  watch: {
-    // '$store.state.checkUser.id'(val){
-    //   this.params.userId = val;
-    //   this.getPlanList();
-    // }
-  },
   methods: {
     getPlanList(){
       getPlanList().then((data) => {
@@ -179,8 +187,9 @@ export default {
         this.getPlanList();
       })
     },
-    changeData(item){
+    changeData(item,flag){
       this.visibleChange = true;
+      this.noEdit = flag;
       this.plan = JSON.parse(JSON.stringify( item ));
       this.yearData = new Date(item.year,1,1);
     },
@@ -190,6 +199,7 @@ export default {
         updatePlan(this.plan).then((result) => {
           alert(result.result?'更新成功':'更新失败');
           this.visibleChange = false;
+          this.visibleJudge = false;
           this.plan = {};
           this.getPlanList();
           this.$store.dispatch('setCurPlanSin');
@@ -205,6 +215,12 @@ export default {
         })
       }
     },
+    judgePlan(item){
+      this.visibleJudge = true;
+      this.plan = JSON.parse(JSON.stringify( item ));
+      this.changeSignal = !this.changeSignal;
+      this.yearData = new Date(item.year,1,1);
+    }
   }
 }
 </script>

+ 46 - 1
src/services/constant.js

@@ -1,3 +1,48 @@
 // export const host = 'http://192.168.50.20:8081';
 // export const host = "http://localhost:8091";
-export const debug = process.env.NODE_ENV !== 'production';
+export const debug = process.env.NODE_ENV !== 'production';
+
+export const editorDefaultSet = {
+    menus: [
+      "head", // 标题
+      "bold", // 粗体
+      "fontSize", // 字号
+      "fontName",
+      "underline",
+      "strikeThrough",
+      "indent",
+      "lineHeight", // 行高
+      "foreColor", // 文字颜色
+      "backColor", // 背景颜色
+      "list", // 列表
+      "quote",
+      "emoticon",
+      "justify", // 对齐方式
+      "undo", // 撤销
+      "redo" // 重复
+    ],
+    fontNames: [
+        '黑体',
+        '仿宋',
+        '楷体',
+        '标楷体',
+        '华文仿宋',
+        '华文楷体',
+        '宋体',
+        '微软雅黑',
+        'Arial',
+        'Tahoma',
+        'Verdana',
+    ],
+    height: 400
+    // uploadImgServer: "/source/srp/source/attachment/upload",
+    // showLinkImg: false,
+    // uploadFileName: "file",
+    // uploadImgHooks: {
+    //   success: function(xhr, editor, result) {},
+    //   error: function(xhr, editor) {},
+    //   customInsert: function(insertImg, result, editor) {
+    //     insertImg(result.t.url);
+    //   }
+    // }
+  };

+ 42 - 0
src/utils/smc-directives.js

@@ -1,6 +1,7 @@
 import Vue from 'vue';
 import BScroll from 'better-scroll';
 import echarts from 'echarts';
+import wangeditor from "wangeditor";
 /*
 * echarts 配置指令
 * echarts-render="{options: options}"
@@ -60,4 +61,45 @@ Vue.directive('betterScroll', {
         el.style.position = 'relative';
         el.style.overflow = 'hidden';
     }
+});
+
+/*
+* v-wang-editor wangeditor指令"
+*/
+Vue.directive('wangEditor', {
+    bind(el, binding) {
+    },
+    inserted(el, binding) {
+
+        //新建wangeditor对象
+        let editor = {};
+        if (el.children[1]) {
+            editor = new wangeditor(el.children[0], el.children[1]);
+        }
+        else {
+            editor = new wangeditor(el.children[0]);
+        }
+        el.editor = editor;
+
+        if (binding.value.config) {
+            for (let key in binding.value.config) {
+                if (binding.value.config.hasOwnProperty(key)) {
+                    editor.config[key] = binding.value.config[key];
+                }
+            }
+        }
+        editor.create();
+        editor.txt.html(binding.value.text?binding.value.text:"");
+    },
+    update(el, binding) {
+        const editor = el.editor;
+        if (binding.value.signal) { //signal是否需要清空
+            editor.txt.clear();
+        }
+        if (binding.oldValue.changeSignal != binding.value.changeSignal) { //changeSignal公用editor时是否需要切换内容(侧边栏组件设置)
+            editor.txt.html(binding.value.text?binding.value.text:"");
+        }
+    },
+    unbind(el) {
+    }
 });