提交 4f1b201b 编写于 作者: alex.zhang's avatar alex.zhang

敏感数据开发

上级 4c5d6743
...@@ -505,7 +505,8 @@ ...@@ -505,7 +505,8 @@
"version": "1.0.0", "version": "1.0.0",
"resolved": "http://192.168.110.93:4873/assert-plus/-/assert-plus-1.0.0.tgz", "resolved": "http://192.168.110.93:4873/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true "dev": true,
"optional": true
}, },
"assign-symbols": { "assign-symbols": {
"version": "1.0.0", "version": "1.0.0",
...@@ -2113,6 +2114,7 @@ ...@@ -2113,6 +2114,7 @@
"resolved": "http://192.168.110.93:4873/combined-stream/-/combined-stream-1.0.8.tgz", "resolved": "http://192.168.110.93:4873/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=", "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=",
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"delayed-stream": "~1.0.0" "delayed-stream": "~1.0.0"
} }
...@@ -2637,7 +2639,8 @@ ...@@ -2637,7 +2639,8 @@
"version": "1.0.0", "version": "1.0.0",
"resolved": "http://192.168.110.93:4873/delayed-stream/-/delayed-stream-1.0.0.tgz", "resolved": "http://192.168.110.93:4873/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"dev": true "dev": true,
"optional": true
}, },
"depd": { "depd": {
"version": "1.1.2", "version": "1.1.2",
...@@ -3081,7 +3084,8 @@ ...@@ -3081,7 +3084,8 @@
"version": "1.3.0", "version": "1.3.0",
"resolved": "http://192.168.110.93:4873/extsprintf/-/extsprintf-1.3.0.tgz", "resolved": "http://192.168.110.93:4873/extsprintf/-/extsprintf-1.3.0.tgz",
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
"dev": true "dev": true,
"optional": true
}, },
"fast-deep-equal": { "fast-deep-equal": {
"version": "1.1.0", "version": "1.1.0",
...@@ -3313,7 +3317,8 @@ ...@@ -3313,7 +3317,8 @@
"ansi-regex": { "ansi-regex": {
"version": "2.1.1", "version": "2.1.1",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"aproba": { "aproba": {
"version": "1.2.0", "version": "1.2.0",
...@@ -3334,12 +3339,14 @@ ...@@ -3334,12 +3339,14 @@
"balanced-match": { "balanced-match": {
"version": "1.0.0", "version": "1.0.0",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"brace-expansion": { "brace-expansion": {
"version": "1.1.11", "version": "1.1.11",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"balanced-match": "^1.0.0", "balanced-match": "^1.0.0",
"concat-map": "0.0.1" "concat-map": "0.0.1"
...@@ -3354,17 +3361,20 @@ ...@@ -3354,17 +3361,20 @@
"code-point-at": { "code-point-at": {
"version": "1.1.0", "version": "1.1.0",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"concat-map": { "concat-map": {
"version": "0.0.1", "version": "0.0.1",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"console-control-strings": { "console-control-strings": {
"version": "1.1.0", "version": "1.1.0",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"core-util-is": { "core-util-is": {
"version": "1.0.2", "version": "1.0.2",
...@@ -3481,7 +3491,8 @@ ...@@ -3481,7 +3491,8 @@
"inherits": { "inherits": {
"version": "2.0.3", "version": "2.0.3",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"ini": { "ini": {
"version": "1.3.5", "version": "1.3.5",
...@@ -3493,6 +3504,7 @@ ...@@ -3493,6 +3504,7 @@
"version": "1.0.0", "version": "1.0.0",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"number-is-nan": "^1.0.0" "number-is-nan": "^1.0.0"
} }
...@@ -3507,6 +3519,7 @@ ...@@ -3507,6 +3519,7 @@
"version": "3.0.4", "version": "3.0.4",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"brace-expansion": "^1.1.7" "brace-expansion": "^1.1.7"
} }
...@@ -3514,12 +3527,14 @@ ...@@ -3514,12 +3527,14 @@
"minimist": { "minimist": {
"version": "0.0.8", "version": "0.0.8",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"minipass": { "minipass": {
"version": "2.2.4", "version": "2.2.4",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"safe-buffer": "^5.1.1", "safe-buffer": "^5.1.1",
"yallist": "^3.0.0" "yallist": "^3.0.0"
...@@ -3538,6 +3553,7 @@ ...@@ -3538,6 +3553,7 @@
"version": "0.5.1", "version": "0.5.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"minimist": "0.0.8" "minimist": "0.0.8"
} }
...@@ -3618,7 +3634,8 @@ ...@@ -3618,7 +3634,8 @@
"number-is-nan": { "number-is-nan": {
"version": "1.0.1", "version": "1.0.1",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"object-assign": { "object-assign": {
"version": "4.1.1", "version": "4.1.1",
...@@ -3630,6 +3647,7 @@ ...@@ -3630,6 +3647,7 @@
"version": "1.4.0", "version": "1.4.0",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"wrappy": "1" "wrappy": "1"
} }
...@@ -3715,7 +3733,8 @@ ...@@ -3715,7 +3733,8 @@
"safe-buffer": { "safe-buffer": {
"version": "5.1.1", "version": "5.1.1",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"safer-buffer": { "safer-buffer": {
"version": "2.1.2", "version": "2.1.2",
...@@ -3751,6 +3770,7 @@ ...@@ -3751,6 +3770,7 @@
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"code-point-at": "^1.0.0", "code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0", "is-fullwidth-code-point": "^1.0.0",
...@@ -3770,6 +3790,7 @@ ...@@ -3770,6 +3790,7 @@
"version": "3.0.1", "version": "3.0.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"ansi-regex": "^2.0.0" "ansi-regex": "^2.0.0"
} }
...@@ -3813,12 +3834,14 @@ ...@@ -3813,12 +3834,14 @@
"wrappy": { "wrappy": {
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"yallist": { "yallist": {
"version": "3.0.2", "version": "3.0.2",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
} }
} }
}, },
...@@ -4723,7 +4746,8 @@ ...@@ -4723,7 +4746,8 @@
"version": "0.1.1", "version": "0.1.1",
"resolved": "http://192.168.110.93:4873/jsbn/-/jsbn-0.1.1.tgz", "resolved": "http://192.168.110.93:4873/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
"dev": true "dev": true,
"optional": true
}, },
"jsesc": { "jsesc": {
"version": "1.3.0", "version": "1.3.0",
...@@ -7096,7 +7120,8 @@ ...@@ -7096,7 +7120,8 @@
"version": "2.1.2", "version": "2.1.2",
"resolved": "http://192.168.110.93:4873/safer-buffer/-/safer-buffer-2.1.2.tgz", "resolved": "http://192.168.110.93:4873/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true "dev": true,
"optional": true
}, },
"sax": { "sax": {
"version": "1.2.4", "version": "1.2.4",
...@@ -7905,7 +7930,8 @@ ...@@ -7905,7 +7930,8 @@
"version": "0.14.5", "version": "0.14.5",
"resolved": "http://192.168.110.93:4873/tweetnacl/-/tweetnacl-0.14.5.tgz", "resolved": "http://192.168.110.93:4873/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
"dev": true "dev": true,
"optional": true
}, },
"type-is": { "type-is": {
"version": "1.6.16", "version": "1.6.16",
......
...@@ -11,6 +11,7 @@ const menu = { ...@@ -11,6 +11,7 @@ const menu = {
let headers = { let headers = {
headers: { headers: {
'token': localStorage.getItem('token') || null 'token': localStorage.getItem('token') || null
// 'token': '9606E40DDB704396AB532B2AE771048E',
// header('Access-Control-Allow-Origin:*') // header('Access-Control-Allow-Origin:*')
} }
}; };
......
...@@ -39,7 +39,7 @@ export const getAddress = () => { ...@@ -39,7 +39,7 @@ export const getAddress = () => {
let qiniuResourceUrl = "";//qiniu存储域名 let qiniuResourceUrl = "";//qiniu存储域名
//本地 //本地
if (ipAddress.indexOf("localhost") > -1 || ipAddress.indexOf("127.0.0.1") > -1 || ipAddress.indexOf("test-kf") > -1) { if (ipAddress.indexOf("localhost") > -1 || ipAddress.indexOf("10.177.10.118") > -1 || ipAddress.indexOf("test-kf") > -1) {
ipAddress = "http://localhost:7070"; ipAddress = "http://localhost:7070";
preViewUrl = "http://localhost:9090/#/template"; preViewUrl = "http://localhost:9090/#/template";
qiniuImgUrl = "https://test1-file.yunqueyi.com"; qiniuImgUrl = "https://test1-file.yunqueyi.com";
......
...@@ -32,8 +32,9 @@ export default async(url = '', data = {}, type = 'POST', method = 'fetch',server ...@@ -32,8 +32,9 @@ export default async(url = '', data = {}, type = 'POST', method = 'fetch',server
// 'Access-Control-Allow-Origin': '*', // 'Access-Control-Allow-Origin': '*',
'Accept': '*', 'Accept': '*',
'Content-Type': 'application/json', 'Content-Type': 'application/json',
// 'token': localStorage.getItem('token') || null, //固定传header: 'token': localStorage.getItem('token') || null, //固定传header:
// 'system_code': 'todo' //固定传header:系统编号 // 'system_code': 'todo' //固定传header:系统编号
// 'token': '9606E40DDB704396AB532B2AE771048E',
}, },
} }
......
...@@ -66,6 +66,7 @@ ...@@ -66,6 +66,7 @@
let headers = { let headers = {
headers: { headers: {
'token': localStorage.getItem('token') || null 'token': localStorage.getItem('token') || null
// 'token': '9606E40DDB704396AB532B2AE771048E',
} }
}; };
// let headData = menuApi.headList(req,self); // let headData = menuApi.headList(req,self);
......
...@@ -58,12 +58,6 @@ ...@@ -58,12 +58,6 @@
ssoLogin(href, paramMap); ssoLogin(href, paramMap);
} }
} }
// else if (localStorage.getItem("token")) {
// debugger
// Vue.prototype.$axios = self.$axios.create({
// headers: {'token': localStorage.getItem("token")}
// });
// }
} }
}, },
components: { components: {
......
...@@ -48,6 +48,7 @@ ...@@ -48,6 +48,7 @@
let headers = { let headers = {
headers: { headers: {
'token': localStorage.getItem('token') || null 'token': localStorage.getItem('token') || null
// 'token': '9606E40DDB704396AB532B2AE771048E',
} }
}; };
self.$axios.post(localStorage.getItem("msUrl") + 'login/menu/list', req, headers).then(function (res) { self.$axios.post(localStorage.getItem("msUrl") + 'login/menu/list', req, headers).then(function (res) {
......
<template> <template>
<el-dialog :title="title" :visible.sync="showModal" width="700px" @close="close" center> <el-dialog :title="title" :visible.sync="showModal" width="700px" @close="close" center>
<el-form ref="form" :model="form" label-width="150px" size="medium " :rules="rules"> <el-form ref="form" :model="form" label-width="150px" size="medium " :rules="rules">
<el-form-item label="项目名称" prop="pName">
<el-select v-model="form.pName" placeholder="请选择项目名称">
<el-option v-for="item in pNameList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="审批编号" prop="dingdingNumber"> <el-form-item label="审批编号" prop="dingdingNumber">
<el-input style="width:220px" :disabled="handleType=='2'" :maxlength="21" v-model="form.dingdingNumber" placeholder="请输入内容"></el-input> <el-input
style="width:220px"
:disabled="handleType=='2'"
:maxlength="21"
v-model="form.dingdingNumber"
placeholder="请输入内容"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="申请日期" prop="dingdingDate"> <el-form-item label="申请日期" prop="dingdingDate">
<el-date-picker v-model="form.dingdingDate" :disabled="handleType=='2'" value-format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker> <el-date-picker
v-model="form.dingdingDate"
:disabled="handleType=='2'"
value-format="yyyy-MM-dd"
type="date"
placeholder="选择日期"
></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="sheet名称" prop="dataSheetName"> <el-form-item label="sheet名称" prop="dataSheetName">
<el-input style="width:220px" :disabled="handleType=='2'" v-model="form.dataSheetName" placeholder="请输入sheet名称"></el-input> <el-input
style="width:220px"
:disabled="handleType=='2'"
v-model="form.dataSheetName"
placeholder="请输入sheet名称"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="数据需求方类型" prop="dataType"> <el-form-item label="数据需求方类型" prop="dataType">
...@@ -32,7 +55,6 @@ ...@@ -32,7 +55,6 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</template> </template>
<template v-if="form.dataType == 2"> <template v-if="form.dataType == 2">
...@@ -70,19 +92,18 @@ ...@@ -70,19 +92,18 @@
<template v-if="form.dataRole==1"> <template v-if="form.dataRole==1">
<el-form-item label="数据分发人员" prop="ids"> <el-form-item label="数据分发人员" prop="ids">
<el-select v-model="form.ids" multiple filterable placeholder="请选择"> <el-select v-model="form.ids" multiple filterable placeholder="请选择">
<el-option <el-option v-for="item in idsList" :key="item.id" :label="item.name" :value="item.id"></el-option>
v-for="item in idsList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 新增 分发人员导出次数 --> <!-- 新增 分发人员导出次数 -->
<el-form-item label="分发人员导出次数" prop="distributeExportCount"> <el-form-item label="分发人员导出次数" prop="distributeExportCount">
<div> <div>
<el-input style="width:200px" v-model="form.distributeExportCount" placeholder="请输入分发人员导出次数"></el-input> <el-input
style="width:200px"
v-model="form.distributeExportCount"
placeholder="请输入分发人员导出次数"
></el-input>
</div> </div>
<div>备注:0代表没有导出权限</div> <div>备注:0代表没有导出权限</div>
</el-form-item> </el-form-item>
...@@ -146,55 +167,59 @@ ...@@ -146,55 +167,59 @@
</template> </template>
<script> <script>
import { baseUrl } from '../../api/hostconfig'; import { baseUrl } from "../../api/hostconfig";
import { openLoading, closeLoading } from '../../common/utils'; import { openLoading, closeLoading } from "../../common/utils";
export default{ export default {
props: { props: {
form: Object, form: Object,
rules: Object, rules: Object,
handleType: String handleType: String,
}, },
data(){ data() {
return { return {
title: '',// 表单title title: "", // 表单title
baseUrl, baseUrl,
pNameList: [],
disableAdmintype: false, disableAdmintype: false,
needIdsList: [], needIdsList: [],
idsList: [], idsList: [],
showModal: true, showModal: true,
uploadHeaders: { uploadHeaders: {
token: window.localStorage.getItem('token') token: window.localStorage.getItem('token')
} // token: "9606E40DDB704396AB532B2AE771048E",
}
}, },
created(){ };
},
created() {
// 获取数据需求方类型为内部时的需求方姓名列表 // 获取数据需求方类型为内部时的需求方姓名列表
this.getData('get', `/sensitive/info/employee`, { this.getData("get", `/sensitive/info/employee`, {}, (data) => {
},(data)=>{ this.needIdsList = data.data;
this.needIdsList = data.data this.idsList = data.data;
this.idsList = data.data });
// 数据导入时,获取项目名称列表
this.getData("get", `/sensitive/projectMain/getAll`, {}, (data) => {
this.pNameList = data.data;
}); });
this.title = (this.handleType=='1') ? '数据导入' : '数据修改'; this.title = this.handleType == "1" ? "数据导入" : "数据修改";
}, },
watch: { watch: {
'form.dataType'(val){ "form.dataType"(val) {
if(val==2){ if (val == 2) {
this.form.dataRole = 2; this.form.dataRole = 2;
this.disableAdmintype = true; this.disableAdmintype = true;
}else if(val==1){ } else if (val == 1) {
} }
}, },
'form.dataRole'(val){ "form.dataRole"(val) {
this.form.dataRole = val; this.form.dataRole = val;
if(val==1){ if (val == 1) {
this.disableAdmintype = false; this.disableAdmintype = false;
// 获取数据分发人员 // 获取数据分发人员
this.getData('get', `/sensitive/info/employee`, { this.getData("get", `/sensitive/info/employee`, {}, (data) => {
},(data)=>{ this.idsList = data.data;
this.idsList = data.data
}); });
}else{ } else {
if(this.form.dataType==2){ if (this.form.dataType == 2) {
this.disableAdmintype = true; this.disableAdmintype = true;
} }
} }
...@@ -206,46 +231,51 @@ ...@@ -206,46 +231,51 @@
console.log("handle value: ", value); console.log("handle value: ", value);
}, },
returnActionUrl() { returnActionUrl() {
return localStorage.getItem('lectureUrl') + '/sensitive/import/file'; return localStorage.getItem("lectureUrl") + "/sensitive/import/file";
}, },
// 上传成功 // 上传成功
uploadSuccess(res, file, fileList){ uploadSuccess(res, file, fileList) {
this.form.fileId = res.data; this.form.fileId = res.data;
this.$refs.form.validateField('fileId'); this.$refs.form.validateField("fileId");
}, },
beforeUpload(file) { beforeUpload(file) {
var FileExt = file.name.replace(/.+\./, ""); var FileExt = file.name.replace(/.+\./, "");
if (["xls", "xlsx"].indexOf(FileExt.toLowerCase()) === -1) { if (["xls", "xlsx"].indexOf(FileExt.toLowerCase()) === -1) {
this.$message({ this.$message({
type: "warning", type: "warning",
message: "请上传后缀名为xls,xlsx的原文件!" message: "请上传后缀名为xls,xlsx的原文件!",
}); });
return false; return false;
} }
}, },
close(){ close() {
this.$emit('close'); this.$emit("close");
}, },
submitForm(formName) { submitForm(formName) {
this.$refs[formName].validate(valid => { this.$refs[formName].validate((valid) => {
if (valid) { if (valid) {
if(this.handleType=='1'){ if (this.handleType == "1") {
this.getData('post', '/sensitive/import/data', this.form, (data)=>{ this.getData(
setTimeout(()=>{ "post",
this.$emit('saveSuccess'); "/sensitive/import/data",
this.$emit('close'); this.form,
},300); (data) => {
}); setTimeout(() => {
}else{ this.$emit("saveSuccess");
this.getData('put', '/sensitive/import/data', this.form, (data)=>{ this.$emit("close");
setTimeout(()=>{ }, 300);
this.$emit('saveSuccess'); }
this.$emit('close'); );
},300); } else {
this.getData("put", "/sensitive/import/data", this.form, (data) => {
setTimeout(() => {
this.$emit("saveSuccess");
this.$emit("close");
}, 300);
}); });
} }
} else { } else {
this.$message.error('请正确填写信息'); this.$message.error("请正确填写信息");
return false; return false;
} }
}); });
...@@ -253,20 +283,21 @@ ...@@ -253,20 +283,21 @@
// 封装一下请求通用的方法 // 封装一下请求通用的方法
getData(type, url, req, callback) { getData(type, url, req, callback) {
openLoading(this); openLoading(this);
this.$axios[type](localStorage.getItem("lectureUrl")+url, req) this.$axios[type](localStorage.getItem("lectureUrl") + url, req)
.then((res) => { .then((res) => {
closeLoading(this); closeLoading(this);
let data = res.data; let data = res.data;
if(data.code == "000000") { if (data.code == "000000") {
if(callback) callback(data); if (callback) callback(data);
}else { } else {
this.$message.error(data.message); this.$message.error(data.message);
} }
}).catch((error) => {
closeLoading(this);
this.$message.error('网络出现点问题')
}) })
} .catch((error) => {
} closeLoading(this);
} this.$message.error("网络出现点问题");
});
},
},
};
</script> </script>
\ No newline at end of file
...@@ -23,6 +23,9 @@ export default new Router({ ...@@ -23,6 +23,9 @@ export default new Router({
},{ // 数据导入 },{ // 数据导入
path: '/data-in', path: '/data-in',
component: resolve => require(['../views/sensitive-control/data-in.vue'], resolve), component: resolve => require(['../views/sensitive-control/data-in.vue'], resolve),
}, { // 数据统计
path: '/data-statistic',
component: resolve => require(['../views/sensitive-control/data-statistic.vue'], resolve),
},{ // 数据查看 },{ // 数据查看
path: '/data-view', path: '/data-view',
......
此差异已折叠。
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册