Commit c168f9ab45bef0d9259b6861608b678d8841e96b

Authored by monkeyhouyi
1 parent b4b9be1c

应用类型传id,导出换名称,换密码

package.json
... ... @@ -32,17 +32,18 @@
32 32 "js-md5": "^0.8.3",
33 33 "jsbarcode": "^3.11.0",
34 34 "jsonlint": "^1.6.3",
  35 + "lodash": "^4.17.21",
35 36 "moment": "^2.30.1",
36 37 "monaco-editor": "^0.20.0",
37 38 "normalize.css": "^8.0.1",
38 39 "nprogress": "^0.2.0",
39 40 "qrcodejs2": "^0.0.2",
40 41 "reconnecting-websocket": "^4.4.0",
  42 + "sass": "^1.77.8",
41 43 "sass-loader": "^14.2.1",
42 44 "screenfull": "^4.2.0",
43 45 "script-loader": "^0.7.2",
44 46 "serve-static": "^1.13.2",
45   - "sass": "^1.77.8",
46 47 "style-loader": "^4.0.0",
47 48 "vue": "^2.6.14",
48 49 "vue-drag-resize": "^1.4.2",
... ...
src/components/PasswordForm/index.vue
1 1 <template>
2   - <div class="passForm">
  2 + <div class="password">
3 3 <div class="btn" @click="openDialog">
4 4 <slot></slot>
5 5 </div>
... ... @@ -9,128 +9,174 @@
9 9 :visible.sync="visible"
10 10 lock-scroll
11 11 append-to-body
12   - width="600px"
  12 + width="40%"
13 13 :modal-append-to-body="false"
14 14 class="NCC-dialog NCC-dialog_center dialog-box"
15 15 destroy-on-close
16 16 >
17   - <el-form ref="form" :model="user" :rules="rules" label-width="80px">
18   - <el-form-item label="旧密码" prop="oldPassword">
19   - <el-input
20   - v-model="user.oldPassword"
21   - placeholder="请输入旧密码"
22   - type="password"
23   - show-password
24   - />
25   - </el-form-item>
26   - <el-form-item label="新密码" prop="newPassword">
27   - <el-input
28   - v-model="user.newPassword"
29   - placeholder="请输入新密码"
30   - type="password"
31   - show-password
32   - />
33   - </el-form-item>
34   - <el-form-item label="确认密码" prop="confirmPassword">
35   - <el-input
36   - v-model="user.confirmPassword"
37   - placeholder="请确认新密码"
38   - type="password"
39   - show-password
40   - />
41   - </el-form-item>
42   - </el-form>
43   - <span slot="footer" class="dialog-footer">
44   - <el-button type="primary" @click="submit">保存</el-button>
45   - <el-button type="danger" @click="visible = false">关闭</el-button>
46   - </span>
  17 + <div class="NCC-common-title mb-20">
  18 + <h4 class="bold">修改密码</h4>
  19 + </div>
  20 + <el-row>
  21 + <el-col :span="16">
  22 + <el-form
  23 + ref="dataForm"
  24 + :model="dataForm"
  25 + :rules="dataRule"
  26 + label-width="100px"
  27 + >
  28 + <el-form-item label="旧密码" prop="oldPassword">
  29 + <el-input
  30 + v-model="dataForm.oldPassword"
  31 + placeholder="旧密码"
  32 + show-password
  33 + />
  34 + </el-form-item>
  35 + <el-form-item label="新密码" prop="password">
  36 + <el-input
  37 + v-model="dataForm.password"
  38 + placeholder="新密码"
  39 + show-password
  40 + />
  41 + </el-form-item>
  42 + <el-form-item label="重复密码" prop="password2">
  43 + <el-input
  44 + v-model="dataForm.password2"
  45 + placeholder="重复密码"
  46 + show-password
  47 + />
  48 + </el-form-item>
  49 + <el-form-item label="验证码" prop="code">
  50 + <el-col :span="17">
  51 + <el-input v-model="dataForm.code" placeholder="验证码">
  52 + </el-input>
  53 + </el-col>
  54 + <el-col :span="6" :offset="1" style="height: 32px">
  55 + <img
  56 + id="imgcode"
  57 + alt="点击切换验证码"
  58 + title="点击切换验证码"
  59 + :src="define.comUrl + imgUrl"
  60 + @click="changeImg"
  61 + />
  62 + </el-col>
  63 + </el-form-item>
  64 + <el-form-item>
  65 + <el-button type="primary" @click="dataFormSubmit()">保 存</el-button>
  66 + </el-form-item>
  67 + </el-form>
  68 + </el-col>
  69 + </el-row>
47 70 </el-dialog>
48 71 </div>
49 72 </template>
50 73  
51 74 <script>
52   -import { updateUserPwd } from "@/api/index";
  75 +import md5 from "js-md5";
  76 +import { UpdatePassword } from "@/api/permission/userSetting";
53 77 export default {
54   - name: "PassForm",
55   - props: {},
56 78 data() {
57   - const equalToPassword = (rule, value, callback) => {
58   - if (this.user.newPassword !== value) {
59   - callback(new Error("两次输入的密码不一致"));
  79 + var validatePass = (rule, value, callback) => {
  80 + if (value === "") {
  81 + callback(new Error("新密码不能为空"));
  82 + } else {
  83 + if (this.dataForm.password2 !== "") {
  84 + this.$refs.dataForm.validateField("password2");
  85 + }
  86 + callback();
  87 + }
  88 + };
  89 + var validatePass2 = (rule, value, callback) => {
  90 + if (value !== this.dataForm.password) {
  91 + callback(new Error("两次密码输入不一致"));
60 92 } else {
61 93 callback();
62 94 }
63 95 };
64 96 return {
65 97 visible: false,
66   - user: {
67   - oldPassword: undefined,
68   - newPassword: undefined,
69   - confirmPassword: undefined,
  98 + dataForm: {
  99 + oldPassword: "",
  100 + password: "",
  101 + password2: "",
  102 + code: "",
70 103 },
71   - // 表单校验
72   - rules: {
  104 + imgUrl: "",
  105 + timestamp: "",
  106 + dataRule: {
73 107 oldPassword: [
74 108 { required: true, message: "旧密码不能为空", trigger: "blur" },
75 109 ],
76   - newPassword: [
77   - { required: true, message: "新密码不能为空", trigger: "blur" },
78   - {
79   - min: 6,
80   - max: 20,
81   - message: "长度在 6 到 20 个字符",
82   - trigger: "blur",
83   - },
84   - {
85   - pattern: /^[^<>"'|\\]+$/,
86   - message: "不能包含非法字符:< > \" ' \\\ |",
87   - trigger: "blur",
88   - },
  110 + password: [
  111 + { required: true, validator: validatePass, trigger: "blur" },
89 112 ],
90   - confirmPassword: [
91   - { required: true, message: "确认密码不能为空", trigger: "blur" },
92   - { required: true, validator: equalToPassword, trigger: "blur" },
  113 + password2: [
  114 + { required: true, message: "重复密码不能为空", trigger: "blur" },
  115 + { validator: validatePass2, trigger: "blur" },
93 116 ],
  117 + code: [{ required: true, message: "验证码不能为空", trigger: "blur" }],
94 118 },
95 119 };
96 120 },
97   - watch: {},
98   - mounted() {},
99 121 created() {},
100 122 methods: {
101 123 openDialog() {
102 124 this.visible = true;
103 125 this.$nextTick(() => {
104   - this.$refs["form"].resetFields();
  126 + this.changeImg();
  127 + this.$refs["dataForm"].resetFields();
105 128 });
106 129 },
107   -
108   - submit() {
109   - this.$refs["form"].validate((valid) => {
  130 + dataFormSubmit() {
  131 + this.$refs["dataForm"].validate((valid) => {
110 132 if (valid) {
111   - updateUserPwd(
112   - this.$store.state.id,
113   - this.user.oldPassword,
114   - this.user.newPassword
115   - ).then((res) => {
116   - this.$message({
117   - message: "修改密码成功,请重新登录!",
118   - type: "success",
119   - duration: 1000,
120   - onClose: () => {
121   - // 修改成功之后重新登陆
122   - this.visible = false;
123   - this.$store.dispatch("LogOut").then(() => {
124   - this.$router.push({ path: "/login" });
125   - });
126   - },
  133 + let query = {
  134 + oldPassword: md5(this.dataForm.oldPassword),
  135 + password: md5(this.dataForm.password),
  136 + code: this.dataForm.code,
  137 + timestamp: this.timestamp,
  138 + };
  139 + UpdatePassword(query)
  140 + .then((res) => {
  141 + this.$message({
  142 + message: res.msg,
  143 + type: "success",
  144 + duration: 1500,
  145 + onClose: () => {
  146 + this.$store.dispatch("user/resetToken").then(() => {
  147 + this.$router.push(`/login`);
  148 + });
  149 + },
  150 + });
  151 + })
  152 + .catch(() => {
  153 + this.changeImg();
127 154 });
128   - });
129 155 }
130 156 });
131 157 },
  158 + changeImg() {
  159 + let timestamp = Math.random();
  160 + this.timestamp = timestamp;
  161 + this.imgUrl = `/api/file/ImageCode/${timestamp}`;
  162 + },
132 163 },
133 164 };
134 165 </script>
135 166 <style lang="scss" scoped>
  167 +.password {
  168 + >>> .el-input-group__append {
  169 + padding: 0;
  170 + height: 30px;
  171 + }
  172 + #imgcode {
  173 + width: 100px;
  174 + height: 32px;
  175 + overflow: hidden;
  176 + object-fit: cover;
  177 + cursor: pointer;
  178 + margin: 0;
  179 + padding: 0;
  180 + }
  181 +}
136 182 </style>
... ...
src/main.js
... ... @@ -20,7 +20,7 @@ import &#39;./permission&#39;
20 20 import moment from "moment";
21 21 import i18n from './lang' // internationalization
22 22 import selectLoadMore from '@/utils/loadmore.js';
23   -
  23 +import _ from 'lodash'
24 24  
25 25 Vue.config.productionTip = false
26 26 Vue.prototype.$m = moment
... ...
src/views/DisposalSuggestions/index.vue
... ... @@ -53,7 +53,7 @@
53 53 </el-row>
54 54 <div class="btns-box">
55 55 <el-button type="success" icon="el-icon-plus" @click="addForm()" size="mini" >新增</el-button>
56   - <el-button type="primary" icon="el-icon-download" size="mini" @click="exportDemo()">导出模板</el-button>
  56 + <el-button type="primary" icon="el-icon-download" size="mini" @click="exportDemo()">{{ isSHILevel ? '模板' : '线索上报模板' }}</el-button>
57 57 <el-upload
58 58 class="uploadXlax"
59 59 :action="define.APIURl + '/api/Extend/BaseInspectionReport/Actions/ImportByExcel'"
... ... @@ -64,11 +64,11 @@
64 64 name="excelfile"
65 65 >
66 66 <div class="avatar-box">
67   - <el-button type="info" icon="el-icon-upload" size="mini">导入</el-button>
  67 + <el-button type="info" icon="el-icon-upload" size="mini">线索上报导入</el-button>
68 68 </div>
69 69 </el-upload>
70 70 <el-button type="primary" icon="el-icon-download" size="mini" @click="exportData()" >导出</el-button>
71   - <el-button v-if="!isSHILevel" type="primary" icon="el-icon-download" size="mini" @click="exportMakeDemo()">导出处理模板</el-button>
  71 + <el-button v-if="!isSHILevel" type="primary" icon="el-icon-download" size="mini" @click="exportMakeDemo()">处置结果模板</el-button>
72 72 <el-upload
73 73 v-if="!isSHILevel"
74 74 class="uploadXlax"
... ... @@ -80,7 +80,7 @@
80 80 name="excelfile"
81 81 >
82 82 <div class="avatar-box">
83   - <el-button type="info" icon="el-icon-upload" size="mini">批量上报</el-button>
  83 + <el-button type="info" icon="el-icon-upload" size="mini">处置结果导入</el-button>
84 84 </div>
85 85 </el-upload>
86 86 </div>
... ... @@ -111,7 +111,7 @@
111 111 <el-table-column label="操作" fixed="right" width="200">
112 112 <template slot-scope="scope">
113 113 <template v-if="userId == scope.row.creatorUserId">
114   - <el-button type="text" @click="addOrUpdateHandle(scope.row.id)" :disabled="scope.row.stage != '577006621985604869' && scope.row.stage !='577006641364189019'">编辑</el-button>
  114 + <el-button type="text" @click="addForm(scope.row.id)" :disabled="scope.row.stage != '577006621985604869' && scope.row.stage !='577006641364189019'">编辑</el-button>
115 115 <el-button type="text" @click="handleDel(scope.row.id)" class="NCC-table-delBtn" :disabled="scope.row.stage != '577006621985604869' && scope.row.stage !='577006641364189019'">删除</el-button>
116 116 </template>
117 117 <el-button type="text" @click="addOrUpdateHandle(scope.row.id, false, 'edit')" v-if="isSHILevel && scope.row.stage == '577006666214540549'" >建议修改</el-button>
... ...
src/views/baseInspectionReport/Form.vue
... ... @@ -112,21 +112,21 @@
112 112 <el-col :span="24">
113 113 <el-form-item label="问题类型" prop="questionType">
114 114 <el-radio-group v-model="dataForm.questionType">
115   - <el-radio v-for="(item, index) in questionTypeOptions" :key="index" :label="item.fullName" >{{ item.fullName }}</el-radio>
  115 + <el-radio v-for="(item, index) in questionTypeOptions" :key="index" :label="item.id" >{{ item.fullName }}</el-radio>
116 116 </el-radio-group>
117 117 </el-form-item>
118 118 </el-col>
119   - <el-col :span="24" v-show="dataForm.questionType == '其他'">
  119 + <el-col :span="24" v-show="dataForm.questionType == '0'">
120 120 <el-form-item label="其他问题类型" prop="otherQuestionType">
121 121 <el-input v-model="dataForm.otherQuestionType" placeholder="请输入其他问题类型" clearable :style="{ width: '100%' }" />
122 122 </el-form-item>
123 123 </el-col>
124   - <el-col :span="24" v-show="dataForm.questionType == '错误表述'">
  124 + <el-col :span="24" v-show="dataForm.questionType == '584886326260663557'">
125 125 <el-form-item label="正确描述" prop="accurateDescription">
126 126 <el-input v-model="dataForm.accurateDescription" placeholder="请输入正确描述" clearable :style="{ width: '100%' }"></el-input>
127 127 </el-form-item>
128 128 </el-col>
129   - <el-col :span="24" v-show="dataForm.questionType == '错误表述'">
  129 + <el-col :span="24" v-show="dataForm.questionType == '584886326260663557'">
130 130 <el-form-item label="错误描述" prop="incorrectDescription">
131 131 <el-input v-model="dataForm.incorrectDescription" placeholder="请输入错误描述" clearable :style="{ width: '100%' }"></el-input>
132 132 </el-form-item>
... ... @@ -218,11 +218,11 @@
218 218 <div class="label w-120">问题类型:</div>
219 219 <div class="text">{{ dataForm.questionType || '--' }}</div>
220 220 </el-col>
221   - <el-col class="form-item" v-show="dataForm.questionType == '错误表述'">
  221 + <el-col class="form-item" v-show="dataForm.questionType == '584886326260663557'">
222 222 <div class="label w-120">正确描述:</div>
223 223 <div class="text">{{ dataForm.accurateDescription || '--' }}</div>
224 224 </el-col>
225   - <el-col class="form-item" v-show="dataForm.questionType == '错误表述'">
  225 + <el-col class="form-item" v-show="dataForm.questionType == '584886326260663557'">
226 226 <div class="label w-120">错误描述:</div>
227 227 <div class="text">{{ dataForm.incorrectDescription || '--' }}</div>
228 228 </el-col>
... ... @@ -317,14 +317,14 @@ export default {
317 317 platformName: '',
318 318 selfMediaPlatformType: '',
319 319 platformType: undefined,
320   - questionType: undefined,
  320 + questionType: undefined, // 问题类型id
321 321 questionClass: undefined,
322 322 questionContent: undefined,
323 323 link: undefined,
324 324 accurateDescription: undefined,
325 325 incorrectDescription: undefined,
326 326 annex: [],
327   - otherQuestionType: undefined,
  327 + otherQuestionType: undefined, // 其他问题类型名称
328 328 selfMediaPlatformTypeOther: undefined,
329 329 company: undefined,
330 330 reportSourceName: undefined,
... ... @@ -364,7 +364,13 @@ export default {
364 364 },
365 365 sourceOptions: [],
366 366 platformTypeOptions: [],
367   - questionTypeOptions: [],
  367 + questionTypeOptions: [
  368 + { fullName: "存在有害信息", id: "577006944540165381" },
  369 + { fullName: "内容审核不到位", id: "577006978564359429" },
  370 + { fullName: "错误表述", id: "584886326260663557" },
  371 + { fullName: "删除链接", id: "591435954770674949" },
  372 + { fullName: "样本查删", id: "591436151911351557" },
  373 + ],
368 374 nameOptions: [], // 应用名称
369 375 mediaPlatList: MediaPlatList,
370 376 companyOptions: [],
... ... @@ -392,7 +398,7 @@ export default {
392 398 mounted() {},
393 399 methods: {
394 400 async initAllList() {
395   - let companyRes = await request({
  401 + let companyRes = await request({
396 402 url: `/Extend/basecomapnyinfo/GetNoPagingList`,
397 403 method: "GET",
398 404 });
... ... @@ -406,7 +412,7 @@ export default {
406 412 !list && (list = await this.$store.dispatch("getTypeListByCode", "system"));
407 413 this.platformTypeOptions = list;
408 414 await getDictionaryDataSelector("577006814432855301").then((res) => {
409   - this.questionTypeOptions = [...res.data.list, {Id: '0', fullName: '其他'}];
  415 + this.questionTypeOptions = [...res.data.list, {id: '0', fullName: '其他'}];
410 416 });
411 417 // this.name_loading = true
412 418 // this.name_loading = false;
... ... @@ -539,9 +545,9 @@ export default {
539 545 }
540 546 res.data.areaId && (this.dataForm.areaName = dynamicText(res.data.areaId, this.areaOptions));
541 547 this.sourceOptions.length && this.dataForm.reportSource && (this.dataForm.reportSourceName = this.sourceOptions.find(v => v.Id == this.dataForm.reportSource).FullName);
542   - if(this.questionTypeOptions.findIndex(v => v.fullName == this.dataForm.questionType) == -1) {
  548 + if(this.questionTypeOptions.findIndex(v => v.id == this.dataForm.questionType) == -1) {
543 549 this.dataForm.otherQuestionType = res.data.questionType;
544   - this.dataForm.questionType = '其他';
  550 + this.dataForm.questionType = '0';
545 551 }
546 552 this.dataForm.selfMediaPlatformType = res.data.selfMediaPlatformType || '--';
547 553 this.form_loading = false;
... ... @@ -555,8 +561,8 @@ export default {
555 561 if (valid) {
556 562 let obj = {
557 563 ...this.dataForm,
558   - questionType: this.dataForm.questionType == '其他' ? this.dataForm.otherQuestionType : this.dataForm.questionType,
559   - selfMediaPlatformType: this.dataForm.selfMediaPlatformType == '其他' ? this.dataForm.selfMediaPlatformTypeOther : this.dataForm.selfMediaPlatformType,
  564 + questionType: this.dataForm.questionType == '0' ? this.dataForm.otherQuestionType : this.dataForm.questionType,
  565 + selfMediaPlatformType: this.dataForm.selfMediaPlatformType == '0' ? this.dataForm.selfMediaPlatformTypeOther : this.dataForm.selfMediaPlatformType,
560 566 disposalSuggestions: [
561 567 {
562 568 disposalSuggestion: this.dataForm.disposalSuggestions,
... ...