Browse Source

特殊字符限制

walter 9 months ago
parent
commit
7ec467bdaa

+ 9 - 2
src/components/AppealCreate.vue

@@ -32,7 +32,7 @@
           />
         </el-form-item>
         <el-form-item label="原因说明">
-          <el-input type="textarea" :rows="2" placeholder="填写原因说明" v-model="rewriteData.globalRemark" maxlength="100" show-word-limit />
+          <el-input type="textarea" :rows="2" placeholder="填写原因说明" v-model="rewriteData.globalRemark" maxlength="100" show-word-limit @input="onGlobalRemarkInput" />
         </el-form-item>
         <el-form-item label="积分事件" required>
         </el-form-item>
@@ -55,7 +55,7 @@
           >
             <el-form-item v-for="(item,index) in rewriteData.events" :key="index">
               <el-tag closable @close="deleteEvent(item)">{{item.remark}}</el-tag>
-              <el-input type="textarea" :rows="2" v-model="item.appeal_remark" placeholder="申诉原因" maxlength="100" show-word-limit />
+              <el-input type="textarea" :rows="2" v-model="item.appeal_remark" placeholder="申诉原因" maxlength="100" show-word-limit @input="onEventRemarkInput(item)" />
             </el-form-item>
           </el-scrollbar>
         </el-card>
@@ -76,6 +76,7 @@
 import IntegralEventSelector from './IntegralEventSelector.vue'
 import Template from "../examine/components/Template.vue";
 import EmployeeSelector from "./EmployeeSelector.vue";
+import {specialFilter} from "../utils";
 export default {
   name: 'AppealCreate',
   components:{EmployeeSelector, Template, IntegralEventSelector},
@@ -202,6 +203,12 @@ export default {
     deleteEvent(event){
       let index = this.rewriteData.events.indexOf(event)
       if (index >= 0) this.rewriteData.events.splice(index,1)
+    },
+    onGlobalRemarkInput(val) {
+      this.rewriteData.globalRemark = specialFilter(val)
+    },
+    onEventRemarkInput(item) {
+      item.appeal_remark = specialFilter(item.appeal_remark)
     }
   },
   mounted() {

+ 10 - 4
src/components/AppealRewrite.vue

@@ -32,7 +32,7 @@
           />
         </el-form-item>
         <el-form-item label="原因说明">
-          <el-input type="textarea" :rows="2" placeholder="填写原因说明" v-model="rewriteData.globalRemark" maxlength="100" show-word-limit :disabled="!canRewrite" />
+          <el-input type="textarea" :rows="2" placeholder="填写原因说明" v-model="rewriteData.globalRemark" maxlength="100" show-word-limit :disabled="!canRewrite" @input="onGlobalRemarkInput" />
         </el-form-item>
         <el-form-item label="积分事件" required>
         </el-form-item>
@@ -63,7 +63,7 @@
               >
                 <el-tag closable style="cursor: pointer" slot="reference" @close="deleteEvent(item)">{{item.remark}}</el-tag>
               </el-popover>
-              <el-input type="textarea" :rows="2" v-model="item.appeal_remark" placeholder="申诉原因" maxlength="100" show-word-limit :disabled="!canRewrite" />
+              <el-input type="textarea" :rows="2" v-model="item.appeal_remark" placeholder="申诉原因" maxlength="100" show-word-limit :disabled="!canRewrite" @input="onEventRemarkInput(item)" />
             </el-form-item>
           </el-scrollbar>
         </el-card>
@@ -84,6 +84,7 @@
 import IntegralEventSelector from './IntegralEventSelector.vue'
 import Template from "../examine/components/Template.vue";
 import EmployeeSelector from "./EmployeeSelector.vue";
+import {specialFilter} from "../utils";
 export default {
   name: 'AppealRewrite',
   components:{EmployeeSelector, Template, IntegralEventSelector},
@@ -169,7 +170,7 @@ export default {
         return {
           id:event.id,
           remark:`${event.point} ${pt} ${event.event_time} ${event.event_remark}`,
-          appeal_remark:event.appeal_remark
+          appeal_remark:specialFilter(event.appeal_remark)
         }
       })
       this.rewriteData.globalRemark = this.appealInfo.global_remark
@@ -246,8 +247,13 @@ export default {
     deleteEvent(event){
       let index = this.rewriteData.events.indexOf(event)
       if (index >= 0) this.rewriteData.events.splice(index,1)
+    },
+    onGlobalRemarkInput(val){
+      this.rewriteData.globalRemark = specialFilter(val)
+    },
+    onEventRemarkInput(item){
+      item.appeal_remark = specialFilter(item.appeal_remark)
     }
-
   },
   mounted() {
     this.superiorList = this.$store.getters.user_info.employee_detail.superior_list

+ 8 - 0
src/point/views/common/AppealPopup.vue

@@ -170,6 +170,7 @@
               :show-word-limit="true"
               placeholder="原因说明"
               v-model="formData.remark"
+              @input="onFormRemarkInput"
             />
           </el-form-item>
         </el-form>
@@ -205,6 +206,7 @@
               :show-word-limit="true"
               placeholder="原因说明"
               v-model="formData.remark"
+              @input="onFormRemarkInput"
             />
           </el-form-item>
         </el-form>
@@ -260,6 +262,7 @@
               :show-word-limit="true"
               placeholder="请填写原因说明"
               v-model="formData.remark"
+              @input="onFormRemarkInput"
             />
           </el-form-item>
         </el-form>
@@ -295,6 +298,7 @@
               :show-word-limit="true"
               placeholder="原因说明"
               v-model="formData.remark"
+              @input="onFormRemarkInput"
             />
           </el-form-item>
         </el-form>
@@ -314,6 +318,7 @@
 import Template from "../../../examine/components/Template.vue";
 import EmployeeSelector from "../../../components/EmployeeSelector.vue";
 import AppealRewrite from "../../../components/AppealRewrite.vue";
+import {specialFilter} from "../../../utils";
 
 export default {
   name:'appealPopup',
@@ -654,6 +659,9 @@ export default {
       }
       this.showRewrite = true
     },
+    onFormRemarkInput(val){
+      this.formData.remark = specialFilter(val)
+    }
   },
   mounted() {
     this.pts = this.$getTyps()

+ 9 - 4
src/point/views/common/rewardTask.vue

@@ -9,7 +9,7 @@
             prop="task_name"
             :rules="[{ required: true, message: '请填写任务内容'}, { min: 3, max: 20, message: '长度在 3 到 20 个字符'}]"
           >
-            <el-input type="textarea" rows="3" maxlength="20" show-word-limit v-model="formData.task_name" placeholder="请输入任务内容(限20字)" class="reward_textarea"></el-input>
+            <el-input type="textarea" rows="3" maxlength="20" show-word-limit v-model="formData.task_name" placeholder="请输入任务内容(限20字)" class="reward_textarea" @input="onTaskNameInput"></el-input>
           </el-form-item>
 
           <el-form-item label="任务积分" prop="base_point" :rules="[{ required: true, message: '请填写任务积分'}]">
@@ -97,7 +97,7 @@
           </el-form-item>
 
           <el-form-item label="任务备注" prop="task_remark" :rules="[{ max: 300, message: '长度不能超过 300 个字'}]">
-            <el-input type="textarea" :rows="5" maxlength="300" show-word-limit v-model="formData.task_remark" placeholder="请输入任务内容(限300字)"></el-input>
+            <el-input type="textarea" :rows="5" maxlength="300" show-word-limit v-model="formData.task_remark" placeholder="请输入任务内容(限300字)" @input="onTaskRemarkInput"></el-input>
           </el-form-item>
           <el-form-item label="谁可以看" prop="dept_ids">
             <el-row>
@@ -168,8 +168,7 @@
 <script>
 import moment from 'moment';
 import EmployeeSelector from '@/components/EmployeeSelector';
-import {format} from "echarts/lib/export";
-import {deflateSetHeader} from "pikaz-excel-js/lib/PikazJsExcel.common";
+import {specialFilter} from "../../../utils";
 export default {
   name: 'bonusPoints',
   props: {
@@ -502,6 +501,12 @@ export default {
         this.$forceUpdate();
       })
     },
+    onTaskNameInput(val){
+      this.formData.task_name = specialFilter(val)
+    },
+    onTaskRemarkInput(val){
+      this.formData.task_remark = specialFilter(val)
+    }
   }
 };
 </script>

+ 9 - 2
src/point/views/common/rewardTaskAmend.vue

@@ -11,7 +11,7 @@
       <div v-loading="forTheTaskLoading">
         <el-form :model="formData" ref="formData" label-width="80px" class="form">
           <el-form-item label="任务内容" prop="task_name" :rules="[{ required: true, message: '请填写任务内容' },{ min: 3, max: 20, message: '长度在 3 到 20 个字符'}]">
-            <el-input type="textarea" rows="3" maxlength="20" show-word-limit v-model="formData.task_name" placeholder="请输入任务内容(限20字)" class="reward_textarea" ></el-input>
+            <el-input type="textarea" rows="3" maxlength="20" show-word-limit v-model="formData.task_name" placeholder="请输入任务内容(限20字)" class="reward_textarea" @input="onTaskNameInput" ></el-input>
           </el-form-item>
 
           <el-form-item label="任务积分" prop="base_point" :rules="[{ required: true, message: '请填写任务积分'}]">
@@ -92,7 +92,7 @@
           </el-form-item>
 
           <el-form-item label="任务备注" prop="task_remark" :rules="[{ max: 300 ,message: '长度不能超过 300 个字'}]">
-            <el-input type="textarea" :rows="5" maxlength="300" show-word-limit v-model="formData.task_remark" placeholder="请输入任务内容(限300字)"></el-input>
+            <el-input type="textarea" :rows="5" maxlength="300" show-word-limit v-model="formData.task_remark" placeholder="请输入任务内容(限300字)" @input="onTaskRemarkInput"></el-input>
           </el-form-item>
           <el-form-item label="谁可以看" prop="dept_ids">
             <el-row>
@@ -135,6 +135,7 @@
 <script>
   import moment from 'moment'
   import EmployeeSelector from '@/components/EmployeeSelector'
+  import {specialFilter} from "../../../utils";
   export default {
     name: 'bonusPoints',
     props:{
@@ -409,6 +410,12 @@
           dept_ids: null
         };
         this.$refs[formName].resetFields();
+      },
+      onTaskNameInput(val){
+        this.formData.task_name = specialFilter(val)
+      },
+      onTaskRemarkInput(val){
+        this.formData.task_remark = specialFilter(val)
       }
     }
   }

+ 9 - 2
src/point/views/common/temporaryTask.vue

@@ -9,7 +9,7 @@
             prop="task_name"
             :rules="[{ required: true, message: '请填写任务内容'}, { min: 3, max: 20, message: '长度在 3 到 20 个字符'}]"
           >
-            <el-input type="textarea" rows="3" maxlength="20" show-word-limit v-model="formData.task_name" placeholder="请输入任务内容(限20字)"></el-input>
+            <el-input type="textarea" rows="3" maxlength="20" show-word-limit v-model="formData.task_name" placeholder="请输入任务内容(限20字)" @input="onTaskNameInput"></el-input>
           </el-form-item>
 
           <el-form-item label="任务积分" prop="base_point" :rules="[{ required: true, message: '请填写任务积分'}]">
@@ -95,7 +95,7 @@
           </el-form-item>
 
           <el-form-item label="任务备注" prop="task_remark" :rules="[{ max: 300, message: '长度不能超过 300 个字'}]">
-            <el-input type="textarea" :rows="5" maxlength="300" show-word-limit v-model="formData.task_remark" placeholder="请输入任务内容(限300字)"></el-input>
+            <el-input type="textarea" :rows="5" maxlength="300" show-word-limit v-model="formData.task_remark" placeholder="请输入任务内容(限300字)" @input="onTaskRemarkInput"></el-input>
           </el-form-item>
 
           <div style="margin-left: 80px; margin-bottom: 8px;">以天为单位,每 提前/逾期 一天 加分/扣分</div>
@@ -170,6 +170,7 @@
 <script>
 import moment from 'moment';
 import EmployeeSelector from '@/components/EmployeeSelector';
+import {specialFilter} from "../../../utils";
 export default {
   name: 'temporaryTask',
   props: {
@@ -484,6 +485,12 @@ export default {
         this.$forceUpdate();
       })
     },
+    onTaskNameInput(val) {
+      this.formData.task_name = specialFilter(val)
+    },
+    onTaskRemarkInput(val){
+      this.formData.task_remark = specialFilter(val)
+    }
   }
 };
 </script>

+ 9 - 2
src/point/views/common/temporaryTaskAmend.vue

@@ -9,7 +9,7 @@
             prop="task_name"
             :rules="[{ required: true, message: '请填写任务内容'}, { min: 3, max: 20, message: '长度在 3 到 20 个字符'}]"
           >
-            <el-input type="textarea"rows="3" maxlength="20" show-word-limit v-model="formData.task_name" placeholder="请输入任务内容(限20字)"></el-input>
+            <el-input type="textarea"rows="3" maxlength="20" show-word-limit v-model="formData.task_name" placeholder="请输入任务内容(限20字)" @input="onTaskNameInput"></el-input>
           </el-form-item>
 
           <el-form-item label="任务积分" prop="base_point" :rules="[{ required: true, message: '请填写任务积分'}]">
@@ -85,7 +85,7 @@
           </el-form-item>
 
           <el-form-item label="任务备注" prop="task_remark" :rules="[{ max: 300, message: '长度不能超过 300 个字'}]">
-            <el-input type="textarea" :rows="5" maxlength="300" show-word-limit v-model="formData.task_remark" placeholder="请输入任务内容(限300字)"></el-input>
+            <el-input type="textarea" :rows="5" maxlength="300" show-word-limit v-model="formData.task_remark" placeholder="请输入任务内容(限300字)" @input="onTaskRemarkInput"></el-input>
           </el-form-item>
 
 					<div style="margin-left: 80px; margin-bottom: 8px;">以天为单位,每 提前/逾期 一天 加分/扣分</div>
@@ -111,6 +111,7 @@
 <script>
 import moment from 'moment';
 import EmployeeSelector from '@/components/EmployeeSelector';
+import {specialFilter} from "../../../utils";
 export default {
   name: 'temporaryTask',
   props: {
@@ -418,6 +419,12 @@ export default {
     },
     closeDialog() {
       this.$emit('update:dialogVisible', false);
+    },
+    onTaskNameInput(val){
+      this.formData.task_name = specialFilter(val)
+    },
+    onTaskRemarkInput(val){
+      this.formData.task_remark = specialFilter(val)
     }
   }
 };

+ 5 - 1
src/point/views/workbench/task/my_task.vue

@@ -93,7 +93,7 @@
       <div class="details_content">
         <el-form :model="detail_form" ref="detail_form" label-width="80px">
           <el-form-item label="任务备注" prop="remark" :rules="[{ required: true, message: '请填写任务备注(限30字)'}]">
-            <el-input v-model="detail_form.remark" type="textarea" maxlength="30" show-word-limit></el-input>
+            <el-input v-model="detail_form.remark" type="textarea" maxlength="30" show-word-limit @input="onRemarkInput"></el-input>
           </el-form-item>
         </el-form>
         <footer class="drawer-footer flex-box-end flex-v-ce">
@@ -111,6 +111,7 @@
 <script>
 import taskDetailsPopup from '@/point/views/common/taskDetailsPopup';
 import Template from "../../../../examine/components/Template.vue";
+import {specialFilter} from "../../../../utils";
 
 export default {
   name: 'my_task',
@@ -247,6 +248,9 @@ export default {
         .finally(() => {
           self.loading = false;
         });
+    },
+    onRemarkInput(val){
+      this.detail_form.remark = specialFilter(val)
     }
   }
 };

+ 1 - 1
src/utils/index.js

@@ -324,5 +324,5 @@ export function uniqueArr(arr) {
 
 
 export function specialFilter(inputStr){
-  return inputStr.replace(/[^(\w\d\s\u4e00-\u9fa5:、,.!@{}<>+?\-\(\)\[\])]/g,"")
+  return inputStr.replace(/[^(\w\d\s\u4e00-\u9fa5:、,.!@$#%*{}<>+=?\-\(\)\[\])]/g,"")
 }