提交 2b40edcb 编写于 作者: huangwensu's avatar huangwensu

订单接口联调

上级 fcb087a4
......@@ -21,17 +21,23 @@ export default new Router({
redirect: '/doctor-black',
},{
path: '/doctor-black',
path: '/doctor-black', // 医生黑名单
component: resolve => require(['../views/black-list/doctor-black.vue'], resolve),
},{
path: '/empty-phone',
path: '/empty-phone', // 居民假空号
component: resolve => require(['../views/black-list/empty-phone.vue'], resolve),
},{
path: '/strategy-list',
path: '/strategy-list', // 策略管理
component: resolve => require(['../views/strategy-data/strategy-list.vue'], resolve),
},{
path: '/strategy-edit',
component: resolve => require(['../views/strategy-data/strategy-edit.vue'], resolve),
},{
path: '/order-list',
component: resolve => require(['../views/order-list/order-list.vue'], resolve),
},{
path: '/order-detail',
component: resolve => require(['../views/order-list/order-detail.vue'], resolve),
},
]
},
......
......@@ -120,7 +120,8 @@ export default {
removeId: '',
removeTel: '',
acceptValue: '*/*',
importFileName: ''
importFileName: '',
base64Str: ''
}
},
mounted() {
......@@ -161,11 +162,17 @@ export default {
this.importDialogVisible = true;
},
confirmImport() {
this.getData(
"post", `/riskcontrol/blacklist/import`, {base64Str: this.base64.file},
data => {
if(data.code == '000000') {
}
}
);
},
// 上传文件
uploadImportFile(file) {
console.log(file)
let self = this;
this.importFileName = file.name;
let arr = file.type.split('/');
......@@ -178,17 +185,8 @@ export default {
ext: ext
};
self.base64 = fileJson;
console.log('fileJson',self.base64);
};
reader.readAsDataURL(file);
this.getData(
"post", `/riskcontrol/blacklist/import`, {base64Str: self.base64.file},
data => {
if(data.code == '000000') {
}
}
);
},
// 下载导入模板
download() {
......
<template>
<div class="order-detail-container">
<el-breadcrumb separator="/">
<el-breadcrumb-item :to="{ path: '/order-list' }">订单列表</el-breadcrumb-item>
<el-breadcrumb-item>订单详情</el-breadcrumb-item>
</el-breadcrumb>
<div class="order">
<p>订单信息</p>
<div>
<span class="label">订单ID:</span><span>{{rowId}}</span>
<span class="label">下单时间:</span><span>{{detailData.orderTime}}</span>
<span class="label">订单金额:</span><span>{{detailData.totalPrice}}</span>
<span class="label">支付方式:</span><span>{{payTypeText}}</span>
</div>
<div class="info">
<span v-for="(item, index) in detailData.goodsRespList" :key="index">
<span class="label">商品{{index + 1}}</span>{{item.goodsName}}*{{item.purchaseNum}}__{{item.purchasingPrice}}
</span>
</div>
</div>
<div class="order">
<p>开单店铺信息</p>
<span class="label">店铺名称:</span><span>{{detailData.storeName}}</span>
<span class="label">店铺所在区:</span><span>{{detailData.storeAddress}}</span>
</div>
<div class="order">
<p>下单人信息</p>
<span class="label">下单人姓名:</span><span>{{detailData.placeOrderName}}</span>
<span class="label">手机号:</span><span>{{detailData.placeOrderMobile}}</span>
<span class="label">地区归属:</span><span>{{detailData.placeOrderAddress}}</span>
</div>
<div class="order">
<p>处方信息</p>
<span class="label">暂无处方信息/处方图片:</span><span><img :src="detailData.recipeUrl"/></span>
</div>
<div class="order">
<p>收货人信息</p>
<span class="label">姓名:</span><span>{{detailData.receiverName}}</span>
<span class="label">手机号:</span><span>{{detailData.receiverMobile}}</span>
<span class="label">详细地址:</span><span>{{detailData.receiverAddress}}</span>
</div>
</div>
</template>
<script>
import { openLoading, closeLoading } from "../../common/utils";
export default {
data() {
return {
rowId: '',
detailData: {},
payTypeText: ''
}
},
created() {
this.rowId = this.$route.query.id;
},
mounted() {
this.getDetailData();
},
methods: {
// 封装一下请求通用的方法
getData(type, url, req, callback) {
openLoading(this);
this.$axios[type](localStorage.getItem("lectureUrl") + url, req)
.then(res => {
closeLoading(this);
let data = res.data;
if (data.code == "000000") {
if (callback) callback(data);
} else {
this.$message.error(data.message);
}
})
.catch(error => {
closeLoading(this);
this.$message.error("网络出现点问题");
});
},
getDetailData() {
this.getData(
"get", `/riskcontrol/tradeOrder/info/${this.rowId}`, {},
data => {
this.detailData = data.data;
this.payTypeText = this.detailData.payType == 1 ? "医生支付" : "医生代付"
}
);
}
}
}
</script>
<style lang="less" scoped>
.order-detail-container {
.order {
border-bottom: 1px solid #efefef;
padding-bottom: 20px;
p {
padding: 20px 0px 20px;
font-size: 18px;
font-weight: 700;
}
span.label {
// padding-right: 50px;
display: inline-block;
width: 100px;
text-align: right;
}
.info {
margin-top: 20px;
}
}
}
</style>
\ No newline at end of file
<template>
<div class="order-container">
<el-row :gutter="30" class="row search" type="flex" style="margin-bottom:0;">
<el-form ref="form" :model="searchParam" label-suffix=":" label-width="80px" style="width: 100%;">
<el-col :span="5">
<el-form-item label="订单信息">
<el-input v-model="searchParam.searchName" placeholder="请输入订单信息"></el-input>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="时间">
<el-date-picker
v-model="searchParam.date"
type="date"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="风险定级">
<el-select
v-model="searchParam.riskLevel"
size="small"
placeholder="请选择风险等级">
<el-option
v-for="item in riskSelectData"
:key="item.level"
:label="item.level"
:value="item.level"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="3" style="padding:0;text-align:right;padding-right:15px;">
<el-button type="primary" size="small" @click="search(1)">查询</el-button>
</el-col>
</el-form>
</el-row>
<el-table
class="search-table"
:data="tableData"
style="width: 100%">
<el-table-column prop="strOrderId" label="订单ID" min-width="140" align="center"></el-table-column>
<el-table-column prop="storeName" label="店铺名称" min-width="140" align="center"></el-table-column>
<el-table-column prop="prescriberName" label="开单人" min-width="150" align="center"></el-table-column>
<el-table-column prop="placeOrderName" label="下单人" min-width="150" align="center"></el-table-column>
<el-table-column prop="orderTime" label="下单时间" min-width="150" align="center"></el-table-column>
<el-table-column prop="riskLevel" label="风险定级" min-width="150" align="center"></el-table-column>
<el-table-column prop="riskStrategy" label="命中策略" min-width="150" align="center"></el-table-column>
<el-table-column label="操作" fixed="right" align="center" min-width="200">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="reviewDetail(scope.row)">查看详情</el-button>
<el-button :disabled="scope.row.orderTimetype != 1" type="primary" size="small" @click="changeRisk(scope.row)">变更风险等级</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<div class="pagination">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="searchParam.pageNo"
:page-sizes="[15, 30, 50, 100, 200, 500, 700, 1000, 1500, 2000]"
:page-size="searchParam.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalRows">
</el-pagination>
</div>
<!-- 调整风险定级 -->
<el-dialog
title="提示"
:visible.sync="changeDialogVisible"
width="30%"
center>
<el-form ref="importForm" :model="addParam" label-suffix=":" label-width="80px">
<el-form-item label="风险定级">
<el-select v-model="addParam.riskLevel" placeholder="请选择风险等级">
<el-option
v-for="item in riskSelectData"
:key="item.level"
:label="item.level"
:value="item.level"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="变更理由">
<el-input v-model="addParam.riskLevelRemark" style="width: 300px;"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="changeDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="confirmChange">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { openLoading, closeLoading } from "../../common/utils";
export default {
data() {
return {
changeDialogVisible: false,
searchParam: {
searchName: '',
date: '',
riskLevel: '',
pageNo: 1,
pageSize: 15
},
addParam: {
riskLevel: '',
riskLevelRemark: ''
},
riskSelectData: [],
tableData: [],
totalRows: 0,
base64: '',
orderId: ''
}
},
mounted() {
this.search();
this.getRiskLeverData();
},
methods: {
// 封装一下请求通用的方法
getData(type, url, req, callback) {
openLoading(this);
this.$axios[type](localStorage.getItem("lectureUrl") + url, req)
.then(res => {
closeLoading(this);
let data = res.data;
if (data.code == "000000") {
if (callback) callback(data);
} else {
this.$message.error(data.message);
}
})
.catch(error => {
closeLoading(this);
this.$message.error("网络出现点问题");
});
},
// 获取风险等级数据
getRiskLeverData() {
this.getData(
"get", `/riskcontrol/tradeOrder/riskLevel`, {},
data => {
let arr = data.data;
arr.forEach((element, index) => {
this.riskSelectData.push({
level: element
})
});
}
);
},
search(param) {
if(param) this.searchParam.pageNo = 1;
this.getData(
"get", `/riskcontrol/tradeOrder/list?searchName=${this.searchParam.searchName}&pageNo=${this.searchParam.pageNo}&pageSize=${this.searchParam.pageSize}&date=${this.searchParam.date}&riskLevel=${this.searchParam.riskLevel}`, {},
data => {
this.tableData = data.data.tradeOrders;
this.totalRows = data.data.total;
}
);
},
// 查看详情
reviewDetail(row) {
this.$router.push({path: 'order-detail',query: {id: row.strOrderId}})
},
// 调整定级
changeRisk(row) {
this.changeDialogVisible = true;
this.orderId = row.strOrderId;
},
confirmChange() {
let req = {
orderId: this.orderId,
riskLevel: this.addParam.riskLevel,
riskLevelRemark: this.addParam.riskLevelRemark
};
this.getData(
"post", `/riskcontrol/tradeOrder/changeRiskLevel`, req,
data => {
if(data.code == '000000') {
this.changeDialogVisible = false;
}
}
);
},
handleSizeChange(value) {
this.searchParam.pageSize = value;
this.search();
},
handleCurrentChange(value) {
this.searchParam.pageNo = value;
this.search();
}
}
}
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
<div class="data-in-wrap">
<el-form ref="form" :model="queryParams" label-width="100px" :inline="true" :rules="rules">
<el-form-item label="审批编号" prop="dingdingNumber">
<el-input
v-model="queryParams.dingdingNumber"
size="small"
style="width:220px"
class="input"
placeholder="审批编号查询"
clearable
@input="handleIdChange"
@keydown.native="numInputLimit"
maxlength="21"
></el-input>
</el-form-item>
<el-form-item label="申请日期" prop="dingdingDate">
<el-select v-model="queryParams.dingdingDate" placeholder="请选择" @change="handleDatechange" clearable>
<el-option v-for="item in dingdingDateList" :key="item" :label="item" :value="item"></el-option>
</el-select>
</el-form-item>
<el-form-item label="sheet名称" prop="dataSheetName">
<el-select
v-model="queryParams.dataSheetName"
placeholder="请选择"
@change="handleSheetchange"
clearable
>
<el-option v-for="item in sheetList" :key="item" :label="item" :value="item"></el-option>
</el-select>
</el-form-item>
</el-form>
<div class="block" style="margin-bottom:20px">
<el-button @click="createDataHandle">数据导入</el-button>
<el-button @click="queryDataListByClick">数据查询</el-button>
<el-button @click="addproject">添加项目</el-button>
</div>
<template>
<el-table :data="dataList" style="width: 100%">
<el-table-column label="审批编号" prop="dingdingNumber" width="180"></el-table-column>
<el-table-column label="人员姓名" prop="name" width="120"></el-table-column>
<el-table-column label="申请日期" prop="dingdingDate"></el-table-column>
<el-table-column label="sheet名称" prop="dataSheetName"></el-table-column>
<el-table-column label="附件名称" prop="fileName"></el-table-column>
<el-table-column label="状态" prop="status" :formatter="formatStatus"></el-table-column>
<el-table-column label="通知状态" prop="sendType" :formatter="formatSendType"></el-table-column>
<el-table-column label="操作" fixed="right" width="200">
<template slot-scope="scope">
<el-button @click="dataview(scope.row)" type="text" size="small">查看</el-button>
<template v-if="scope.row.status==1">
<el-button @click="modifyDataHandle(scope.row.id)" type="text" size="small">修改</el-button>
<el-button @click="notifyDingHandle(scope.row)" type="text" size="small">通知</el-button>
<el-button @click="closeDingHandle(scope.row.userId)" type="text" size="small">关闭</el-button>
</template>
</template>
</el-table-column>
</el-table>
<el-pagination
v-if="dataList && dataList.length > 0"
class="pagination-style"
@size-change="handleSizeChange"
@current-change="dataListChange"
:total="total"
:current-page="currentPage"
:page-sizes="[15, 50, 100, 200, 300]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
></el-pagination>
</template>
<!-- 数据导入 page -->
<createData
v-if="centerDialogVisible"
:form="form"
:rules="rules"
:handleType="handleType"
@close="closeCreate"
@saveSuccess="saveSuccess"
/>
<!-- 数据修改 page -->
<!-- <modifyData
v-if="reviseDialogVisible"
:form="form"
:rules="rules"
@close="closeModify"
/>-->
<el-dialog
:title="dialogTitle"
:visible.sync="addProjectVisible"
:close-on-click-modal="false"
style="text-align: center"
>
<el-row style="margin-top: 20px;" type="flex">
<el-col :span="3" style="margin-left: 70px;">
<label style="font-size: 18px;">项目名称</label>
</el-col>
<el-col :span="12" style="margin-left: 20px;">
<el-input v-model="projectName" size="small" />
</el-col>
</el-row>
<div slot="footer" style="text-align: center">
<el-button type="primary" @click="dialogSave">确认</el-button>
<el-button @click="addProjectVisible = false">取消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import createData from "../../components/page/createData";
// import modifyData from '../../components/page/modifyData';
import { baseUrl } from "../../api/hostconfig";
import { openLoading, closeLoading } from "../../common/utils";
export default {
components: {
createData
// modifyData
},
data() {
var checkNumLength = (rule, value, callback) => {
if (!value) {
return callback(new Error("请输入审批单号"));
} else if (value && (value + "").length != 21) {
callback(new Error("审批单号必须为21位数字值"));
} else {
callback();
}
};
return {
handleType: "1", // 表单操作类型,1.新增 2.修改
currentPage: 1,
pageSize: 15,
total: 50, // 默认分页总数
dataList: [], // 初始化数据列表
centerDialogVisible: false, // 是否显示数据导入(新增)
reviseDialogVisible: false, // 是否显示数据导入(修改)
sheetList: [], // 被搜索出来的sheet列表
dingdingDateList: [], //申请日期列表
// 查询的字段
queryParams: {
dingdingNumber: "", // 审批编号
dingdingDate: "", // 申请日期
dataSheetName: "" // sheet名称
},
form: {
status: 1,
projectMainId: [], //项目名称
dingdingNumber: "", // 审批编号
dingdingDate: "", // 申请日期
dataSheetName: "", //sheet名称
dataType: "", // 数据需求方类型 1.内部 2.外部
needIds: [], // 数据需求方id集合 需求方类型选择为 dataType【内部】
mobilePhone: "", // 数据需求方类型为【外部】需要传递 dataType【外部】
name: "", // 数据需求方类型为【外部】需要传递 dataType【外部】
sensitiveDataType: "", // 敏感信息查看权限 1是,2否
dataRole: "", //数据需求角色 1管理员,2普通用户
ids: [], // 数据分发人员数组
fileId: "", // 文件上传id
dataTermValidity: "", // 数据有效期 - 日期
dataCount: "", // 数据访问次数限制
sensitiveDataColumn: "" // 敏感信息列所在位置
},
rules: {
projectMainId: [
{ required: true, message: "请选择项目名称", trigger: "blur" }
],
dingdingNumber: [
{
required: true,
validator: checkNumLength,
message: "请输入正确格式的审批编号",
trigger: ["blur", "change"]
},
{
pattern: /^[5A-Za-z0-9-\_]+$/,
message: "只能输入英文,数字,下划线,横线"
}
],
dingdingDate: [
{ required: true, message: "请选择日期", trigger: "change" }
],
dataSheetName: [
{ required: true, message: "请输入sheet名称", trigger: "change" }
],
dataType: [
{
required: true,
message: "请至少选择一个数据方类型",
trigger: "change"
}
],
needIds: [
{
required: true,
message: "请输入内部数据需求方姓名",
trigger: "blur"
}
],
mobilePhone: [
{
required: true,
message: "请输入内部数据需求方手机号",
trigger: "blur"
},
{ pattern: /^1[345789]\d{9}$/, message: "输入正确格式的手机号" }
],
name: [
{
required: true,
message: "请输入外部数据需求方姓名",
trigger: "blur"
}
],
sensitiveDataType: [
{ required: true, message: "请确定敏感信息", trigger: "change" }
],
exportCount: [
{ required: true, message: "请确定导出次数", trigger: "blur" },
{ pattern: /^\+?[0-9][0-9]*$/, message: "导出次数只能是正整数" }
],
dataRole: [
{
required: true,
message: "请选择一个数据需求角色",
trigger: "change"
}
],
ids: [
{ required: true, message: "请选择数据分发人员", trigger: "blur" }
],
distributeExportCount: [
{ required: true, message: "请确定导出次数", trigger: "blur" },
{ pattern: /^\+?[0-9][0-9]*$/, message: "导出次数只能是正整数" }
],
fileId: [{ required: true, message: "请上传文件", trigger: "change" }],
dataTermValidity: [
{ required: true, message: "请填写数据有效期", trigger: "blur" }
],
dataCount: [
{ required: true, message: "请填写数据访问次数", trigger: "blur" },
{ pattern: /^\+?[0-9][0-9]*$/, message: "访问次数只能是正整数" }
],
sensitiveDataColumn: [
{ required: true, message: "请填写敏感信息所在位置", trigger: "blur" }
]
},
addProjectVisible: false,
dialogTitle: "添加项目",
projectName: ""
};
},
created() {
// 初始化获取数据列表
this.getDataList(this.currentPage, {});
},
methods: {
// 根据审批编号查询申请日期操作
handleIdChange(value) {
if (value.length == 21) {
this.getData(
"get",
`/sensitive/visit/date?dingdingNumber=${value}`,
{},
data => {
this.dingdingDateList = data.data;
}
);
} else {
this.dingdingDateList = [];
this.sheetList = [];
this.queryParams.dingdingDate = "";
this.queryParams.dataSheetName = "";
}
},
// 根据审批编号和日期搜索sheet
handleDatechange(val) {
this.sheetList = [];
this.queryParams.dataSheetName = "";
this.getData(
"get",
`/sensitive/visit/sheet?dingdingNumber=${this.queryParams.dingdingNumber}&dingdingDate=${val}`,
{},
data => {
this.sheetList = data.data;
}
);
},
// 选中sheet
handleSheetchange(val) {},
queryDataListByClick() {
this.currentPage = 1;
this.queryDataList();
},
// 数据查询
queryDataList() {
this.getDataList(this.currentPage, this.queryParams);
},
// 获取全部分页数据
getDataList(pageNum, queryData) {
this.getData(
"post",
"/sensitive/visit",
{
pageNum: pageNum,
pageSize: this.pageSize,
...queryData
},
data => {
this.dataList = data.data.list;
this.total = data.data.total;
}
);
},
// 根据页码获取数据
handleSizeChange(size) {
this.pageSize = size;
this.getDataList(this.currentPage, this.queryParams);
},
// 根据分页获取数据
dataListChange(num) {
console.log("dataListChange() : num = " + num);
this.currentPage = num;
this.getDataList(num, this.queryParams);
},
// 过滤状态显示
formatStatus(row, column) {
let value;
if (row.status == 1) {
value = "正常";
} else if (row.status == 2) {
value = "关闭";
}
return value;
},
// 过滤同志状态显示
formatSendType(row, column) {
let value;
if (row.sendType == 1) {
value = "已通知";
} else if (row.sendType == 2) {
value = "未通知";
}
return value;
},
// 新增数据-数据导入
createDataHandle() {
this.centerDialogVisible = true;
this.handleType = "1";
this.form = {
status: 1,
projectMainId: [], //项目名称
dingdingNumber: "", // 审批编号
dingdingDate: "", // 申请日期
dataSheetName: "", //sheet名称
dataType: "", // 数据需求方类型 1.内部 2.外部
needIds: [], // 数据需求方id集合 需求方类型选择为 dataType【内部】
mobilePhone: "", // 数据需求方类型为【外部】需要传递 dataType【外部】
name: "", // 数据需求方类型为【外部】需要传递 dataType【外部】
sensitiveDataType: "", // 敏感信息查看权限 1是,2否
dataRole: "", //数据需求角色 1管理员,2普通用户
ids: [], // 数据分发人员数组
fileId: "", // 文件上传id
dataTermValidity: "", // 数据有效期 - 日期
dataCount: "", // 数据访问次数限制
sensitiveDataColumn: "" // 敏感信息列所在位置
};
},
//添加项目
addproject() {
this.addProjectVisible = true;
},
dialogSave() {
this.getData(
"get", `/sensitive/projectMain/add?projectName=${this.projectName}`, {},
data => {
this.$message({
type: "success",
message: "项目添加成功"
});
this.addProjectVisible = false;
}
);
},
// 修改数据
modifyDataHandle(id) {
console.log("modifyDataHandle() : id = " + id)
// 为了方便测试,这里写一个有效的dev环境的id值!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!切记删除
// 为了方便测试,这里写一个有效的dev环境的id值!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!切记删除
// id = 60;
// 为了方便测试,这里写一个有效的dev环境的id值!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!切记删除
// 为了方便测试,这里写一个有效的dev环境的id值!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!切记删除
this.centerDialogVisible = true;
this.handleType = "2";
this.getData("get", `/sensitive/import/data?id=${id}`, {}, data => {
const form = data.data;
if (!form.needIds) form.needIds = [];
if (!form.ids) form.ids = [];
form.id = id;
this.form = form;
});
},
// 列表关闭操作
closeDingHandle(userId) {
this.$confirm("确定关闭?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
center: true,
customClass: "close-msg-box"
}).then(() => {
this.getData(
"put",
`/sensitive/visit/status?userId=${userId}`,
{},
data => {
this.$message({
type: "success",
message: "关闭成功!"
});
this.getDataList(this.currentPage, this.queryParams);
}
);
});
},
// 列表通知操作
notifyDingHandle(obj) {
const {
dataSheetName,
dingdingDate,
dingdingNumber,
mobilePhone,
userId
} = obj;
this.$confirm("确定通知该用户?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
center: true,
customClass: "close-msg-box"
}).then(() => {
this.getData(
"put",
"/sensitive/visit/notice",
{
dataSheetName,
dingdingDate,
dingdingNumber,
mobilePhone,
userId
},
data => {
this.$message({
type: "success",
message: "通知成功!"
});
this.getDataList(this.currentPage, this.queryParams);
}
);
});
},
// 查看个人审批编号页面
dataview(row) {
this.$router.push("/data-view");
this.$router.push({
path: "/data-view",
query: {
dingdingNumber: row.dingdingNumber,
dingdingDate: row.dingdingDate,
sheet: row.dataSheetName
}
});
},
numInputLimit(e) {
let key = e.key;
// 不允许输入'e'和'.'
if (key === "e" || key === ".") {
e.returnValue = false;
return false;
}
return true;
},
resetForm(formName) {
this.$refs[formName].resetFields();
},
closeCreate() {
this.centerDialogVisible = false;
},
closeModify() {
this.reviseDialogVisible = false;
},
// 数据导入成功之后的通知方法
saveSuccess() {
this.getDataList(this.currentPage, this.queryParams);
},
// 封装一下请求通用的方法
getData(type, url, req, callback) {
openLoading(this);
this.$axios[type](localStorage.getItem("lectureUrl") + url, req)
.then(res => {
closeLoading(this);
let data = res.data;
if (data.code == "000000") {
if (callback) callback(data);
} else {
this.$message.error(data.message);
}
})
.catch(error => {
closeLoading(this);
this.$message.error("网络出现点问题");
});
}
}
};
</script>
<style lang="less">
.data-in-wrap {
.pagination-style {
margin-top: 30px;
float: right;
}
}
.close-msg-box {
width: 280px;
}
</style>
<template>
<div class="data-in-wrap">
<el-form ref="form" :model="queryParams" label-width="100px" :inline="true" :rules="rules">
<el-form-item label="项目名称" prop="projectMainId">
<el-select v-model="queryParams.projectMainId" placeholder="请选择项目" clearable>
<el-option v-for="item in projectList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="审批编号" prop="dingdingNumber">
<el-input
v-model="queryParams.dingdingNumber"
size="small"
style="width:220px"
class="input"
placeholder="审批编号查询"
clearable
@input="handleIdChange"
@keydown.native="numInputLimit"
maxlength="21"
></el-input>
</el-form-item>
<el-form-item label="申请日期" prop="dingdingDate">
<el-select
v-model="queryParams.dingdingDate"
placeholder="请选择"
@change="handleDatechange"
clearable
>
<el-option v-for="item in dingdingDateList" :key="item" :label="item" :value="item"></el-option>
</el-select>
</el-form-item>
<el-form-item label="sheet名称" prop="dataSheetName">
<el-select
v-model="queryParams.dataSheetName"
placeholder="请选择"
@change="handleSheetchange"
clearable
>
<el-option v-for="item in sheetList" :key="item" :label="item" :value="item"></el-option>
</el-select>
</el-form-item>
</el-form>
<div class="block" style="margin-bottom:20px;display: flex;">
<el-button @click="showProjectTag">项目标签设置</el-button>
<el-button @click="showProjectStatus">项目标记状态设置</el-button>
<el-button @click="queryDataListByClick">数据查询</el-button>
<el-button @click="showExportModal">导出</el-button>
<div style="margin-left:20px;margin-top:5px">备注:请使用谷歌浏览器导出</div>
<a :href="'http://www.google.cn/chrome/'" class="href-link">点击下载</a>
</div>
<template>
<el-table :data="dataList" style="width: 100%">
<el-table-column label="项目名称" prop="projectMainName"></el-table-column>
<el-table-column label="钉钉编号" prop="dingdingNumber" width="180"></el-table-column>
<el-table-column label="申请日期" prop="dingdingDate"></el-table-column>
<el-table-column label="文件sheet名" prop="dataSheetName"></el-table-column>
<el-table-column label="总数据量" prop="dataSum"></el-table-column>
<el-table-column label="已处理数据量" prop="processedSum"></el-table-column>
<el-table-column label="操作" fixed="right" width="200">
<template slot-scope="scope">
<el-button @click="dataview(scope.row)" type="text" size="small">查看</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
v-if="dataList && dataList.length > 0"
class="pagination-style"
@size-change="handleSizeChange"
@current-change="dataListChange"
:total="total"
:current-page="currentPage"
:page-sizes="[15, 50, 100, 200, 300]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
></el-pagination>
</template>
<el-dialog :visible.sync="setTagVisible" :close-on-click-modal="false" width="500px">
<p class="dialog-title">项目标签设置</p>
<el-select
v-model="labelProjectMainId"
@change="handleLabelchange"
placeholder="请选择项目"
style="margin-left: 110px"
>
<el-option v-for="item in projectList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
<div>
<div v-for="(u,i) in labelList" style="margin-top: 20px; margin-left: 110px">
<el-select v-model="labelList[i]" placeholder="请选择标签">
<el-option
v-for="item in allLabelList"
:key="item.code"
:label="item.value"
:value="item.code"
></el-option>
</el-select>
<el-button v-if="i==labelList.length-1 && i<19" @click="addTagNew">+</el-button>
<el-button v-if="labelList.length>1" @click="deleteTag(i)">-</el-button>
</div>
</div>
<div slot="footer" style="text-align: center">
<el-button type="primary" @click="setTagSave">确认</el-button>
<el-button @click="setTagVisible = false;clearLabelData();">取消</el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="setStatusVisible" :close-on-click-modal="false" width="500px">
<p class="dialog-title">项目标记状态设置</p>
<el-select
v-model="statusProjectMainId"
placeholder="请选择项目"
@change="handleStatuschange"
style="margin-left: 110px"
>
<el-option v-for="item in projectList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
<div style="margin-top: 20px; margin-left: 110px">
<el-input
v-model="status01.value"
style="width:180px;"
class="input"
placeholder="标记状态"
clearable
maxlength="10"
></el-input>
<el-button v-if="statusCount==1" @click="addStatusNew">+</el-button>
<el-button v-if="statusCount>1" @click="deleteStatus(1)">-</el-button>
</div>
<div v-if="statusCount>1" style="margin-top: 20px; margin-left: 110px">
<el-input
v-model="status02.value"
style="width:180px;"
class="input"
placeholder="标记状态"
clearable
maxlength="10"
></el-input>
<el-button v-if="statusCount==2" @click="addStatusNew">+</el-button>
<el-button @click="deleteStatus(2)">-</el-button>
</div>
<div v-if="statusCount>2" style="margin-top: 20px; margin-left: 110px">
<el-input
v-model="status03.value"
style="width:180px;"
class="input"
placeholder="标记状态"
clearable
maxlength="10"
></el-input>
<el-button v-if="statusCount==3" @click="addStatusNew">+</el-button>
<el-button @click="deleteStatus(3)">-</el-button>
</div>
<div v-if="statusCount>3" style="margin-top: 20px; margin-left: 110px">
<el-input
v-model="status04.value"
style="width:180px;"
class="input"
placeholder="标记状态"
clearable
maxlength="10"
></el-input>
<el-button v-if="statusCount==4" @click="addStatusNew">+</el-button>
<el-button @click="deleteStatus(4)">-</el-button>
</div>
<div v-if="statusCount>4" style="margin-top: 20px; margin-left: 110px">
<el-input
v-model="status05.value"
style="width:180px;"
class="input"
placeholder="标记状态"
clearable
maxlength="10"
></el-input>
<el-button @click="deleteStatus(5)">-</el-button>
</div>
<div slot="footer" style="text-align: center">
<el-button type="primary" @click="setStatusSave">确认</el-button>
<el-button @click="setStatusVisible = false; clearStatusData();">取消</el-button>
</div>
</el-dialog>
<!-- 导出弹窗 -->
<el-dialog title="导出" :visible.sync="exportModalVisible" width="300px" center>
<p>您当前数据总导出次数为:{{checkExportData.dataExportTotal}}次</p>
<p>剩余导出次数为:{{checkExportData.dataExportCount}}次</p>
<span slot="footer" class="dialog-footer">
<el-button @click="exportModalVisible = false">取 消</el-button>
<el-button type="primary" @click="handleExport">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { baseUrl } from "../../api/hostconfig";
import { openLoading, closeLoading } from "../../common/utils";
export default {
components: {},
data() {
var checkNumLength = (rule, value, callback) => {
if (!value) {
return callback(new Error("请输入审批单号"));
} else if (value && (value + "").length != 21) {
callback(new Error("审批单号必须为21位数字值"));
} else {
callback();
}
};
return {
setTagVisible: false,
setStatusVisible: false,
labelProjectMainId: "",
// tag01: "",
// tag02: "",
// tag03: "",
// tag04: "",
// tag05: "",
labelCount: 1,
labelList: [],
allLabelList: [],
statusProjectMainId: "",
status01: {},
status02: {},
status03: {},
status04: {},
status05: {},
statusCount: 1,
statusList: [],
handleType: "1", // 表单操作类型,1.新增 2.修改
currentPage: 1,
pageSize: 15,
total: 50, // 默认分页总数
dataList: [], // 初始化数据列表
centerDialogVisible: false, // 是否显示数据导入(新增)
reviseDialogVisible: false, // 是否显示数据导入(修改)
projectList: [],
sheetList: [], // 被搜索出来的sheet列表
dingdingDateList: [], //申请日期列表
// 查询的字段
queryParams: {
projectMainId: "", //项目id
dingdingNumber: "", // 审批编号
dingdingDate: "", // 申请日期
dataSheetName: "", // sheet名称
},
exportModalVisible: false, // 导出弹窗
//导出数据量
checkExportData: {
dataExportTotal: 0, // 总的
dataExportCount: 0, // 剩余的
},
rules: {
pName: [{ required: true, message: "请选择项目名称", trigger: "blur" }],
labelProjectMainId: [
{ required: true, message: "请选择项目名称", trigger: "blur" },
],
dingdingNumber: [
{
required: false,
validator: checkNumLength,
message: "请输入正确格式的审批编号",
trigger: ["blur", "change"],
},
{
pattern: /^[5A-Za-z0-9-\_]+$/,
message: "只能输入英文,数字,下划线,横线",
},
],
// dingdingDate: [
// { required: true, message: "请选择日期", trigger: "change" },
// ],
// dataSheetName: [
// { required: true, message: "请输入sheet名称", trigger: "change" },
// ],
dataType: [
{
required: true,
message: "请至少选择一个数据方类型",
trigger: "change",
},
],
needIds: [
{
required: true,
message: "请输入内部数据需求方姓名",
trigger: "blur",
},
],
mobilePhone: [
{
required: true,
message: "请输入内部数据需求方手机号",
trigger: "blur",
},
{ pattern: /^1[345789]\d{9}$/, message: "输入正确格式的手机号" },
],
name: [
{
required: true,
message: "请输入外部数据需求方姓名",
trigger: "blur",
},
],
sensitiveDataType: [
{ required: true, message: "请确定敏感信息", trigger: "change" },
],
exportCount: [
{ required: true, message: "请确定导出次数", trigger: "blur" },
{ pattern: /^\+?[0-9][0-9]*$/, message: "导出次数只能是正整数" },
],
dataRole: [
{
required: true,
message: "请选择一个数据需求角色",
trigger: "change",
},
],
ids: [
{ required: true, message: "请选择数据分发人员", trigger: "blur" },
],
distributeExportCount: [
{ required: true, message: "请确定导出次数", trigger: "blur" },
{ pattern: /^\+?[0-9][0-9]*$/, message: "导出次数只能是正整数" },
],
fileId: [{ required: true, message: "请上传文件", trigger: "change" }],
dataTermValidity: [
{ required: true, message: "请填写数据有效期", trigger: "blur" },
],
dataCount: [
{ required: true, message: "请填写数据访问次数", trigger: "blur" },
{ pattern: /^\+?[0-9][0-9]*$/, message: "访问次数只能是正整数" },
],
sensitiveDataColumn: [
{
required: true,
message: "请填写敏感信息所在位置",
trigger: "blur",
},
],
},
};
},
created() {
//获取项目名称列表
console.log("created() : enter");
this.getProjectNameList();
// 初始化获取数据列表
// this.getDataList(this.currentPage, {});
},
methods: {
//获取项目名称列表
getProjectNameList() {
this.getData(
"get",
`/sensitive/dataStatistics/getProject`,
{},
(data) => {
this.projectList = data.data;
}
);
},
//项目标签设置
showProjectTag() {
this.setTagVisible = true;
this.getHistoryLabel();
this.getAllLabel();
},
getAllLabel() {
this.getData(
"post",
"/sensitive/dataStatistics/getAllLabel",
{},
(data) => {
this.allLabelList = data.data;
}
);
},
getHistoryLabel() {
this.getData(
"get",
`/sensitive/dataStatistics/getLabel?projectMainId=${this.labelProjectMainId}`,
{},
(data) => {
this.labelList = data.data;
if (this.labelList.length <= 0) {
this.labelList = [""];
}
}
);
},
handleLabelchange() {
this.clearLabelData();
this.getHistoryLabel();
},
addTagNew() {
this.labelList.push("");
},
deleteTag(index) {
this.labelList.splice(index, 1);
},
setTagSave() {
if (this.labelProjectMainId == null || this.labelProjectMainId == "") {
this.$message.error("请选择项目名称");
return;
}
let checkTagValid = false;
for (let item = 0; item < this.labelList.length; item++) {
if (this.labelList[item] != null && this.labelList[item] != "") {
checkTagValid = true;
break;
}
}
console.log("setTagSave() : checkTagValid = " + checkTagValid);
if (!checkTagValid) {
this.$message.error("标签不可为空");
return;
}
for (let item = 0; item < this.labelList.length; item++) {
console.log("setTagSave() : item = " + item);
if (this.labelList[item] == "") {
this.deleteTag(item);
if (item != 0) {
item--;
}
}
}
let req = {
codes: this.labelList,
projectMainId: this.labelProjectMainId,
};
this.getData(
"post",
`/sensitive/dataStatistics/setLabel`,
req,
(data) => {
this.$message({
type: "success",
message: "项目标签设置成功",
});
this.clearLabelData();
this.setTagVisible = false;
}
);
},
clearLabelData() {
// this.tag01 = "";
// this.tag02 = "";
// this.tag03 = "";
// this.tag04 = "";
// this.tag05 = "";
this.labelList = [];
},
//项目标记状态设置
showProjectStatus() {
this.setStatusVisible = true;
this.getHistoryStatus();
},
addStatusNew() {
this.statusCount++;
},
deleteStatus(index) {
this.recodeStatus(index);
this.statusCount--;
},
recodeStatus(index) {
if (index == 1) {
this.status01 = this.status02;
this.status02 = this.status03;
this.status03 = this.status04;
this.status04 = this.status05;
} else if (index == 2) {
this.status02 = this.status03;
this.status03 = this.status04;
this.status04 = this.status05;
} else if (index == 3) {
this.status03 = this.status04;
this.status04 = this.status05;
} else if (index == 4) {
this.status04 = this.status05;
} else if (index == 5) {
this.status05 = "";
}
},
getHistoryStatus() {
this.getData(
"get",
`/sensitive/dataStatistics/getState?projectMainId=${this.statusProjectMainId}`,
{},
(data) => {
this.statusList = data.data;
if (this.statusList && this.statusList.length > 0) {
this.statusCount = this.statusList.length;
console.log(
"getHistoryStatus() : this.statusCount = " + this.statusCount
);
if (this.statusCount > 0) {
for (let item in this.statusList) {
if (item == 0) {
this.status01 = this.statusList[item];
} else if (item == 1) {
this.status02 = this.statusList[item];
} else if (item == 2) {
this.status03 = this.statusList[item];
} else if (item == 3) {
this.status04 = this.statusList[item];
} else if (item == 4) {
this.status05 = this.statusList[item];
}
}
}
} else {
this.statusCount = 1;
}
}
);
},
handleStatuschange() {
this.clearStatusData();
this.getHistoryStatus();
},
clearStatusData() {
this.status01 = {};
this.status02 = {};
this.status03 = {};
this.status04 = {};
this.status05 = {};
this.statusList = [];
},
setStatusSave() {
if (this.statusProjectMainId == null || this.statusProjectMainId == "") {
this.$message.error("请选择项目名称");
return;
}
this.statusList = [
// { id: 0, value: this.status01 },
// { id: 1, value: this.status02 },
// { id: 2, value: this.status03 },
// { id: 3, value: this.status04 },
// { id: 4, value: this.status05 },
{ id: this.status01.id, value: this.status01.value },
{ id: this.status02.id, value: this.status02.value },
{ id: this.status03.id, value: this.status03.value },
{ id: this.status04.id, value: this.status04.value },
{ id: this.status05.id, value: this.status05.value },
];
let checkStatusValid = false;
for (let item = 0; item < this.statusList.length; item++) {
console.log(
"setStatusSave() : this.statusList[item].value = " +
this.statusList[item].value
);
if (
this.statusList[item].value != null &&
this.statusList[item].value != "" &&
this.statusList[item].value != undefined
) {
checkStatusValid = true;
break;
}
}
console.log("setStatusSave() : checkStatusValid = " + checkStatusValid);
if (!checkStatusValid) {
this.$message.error("标记状态不可为空");
return;
}
let req = {
list: this.statusList,
projectMainId: this.statusProjectMainId,
};
this.getData(
"post",
`/sensitive/dataStatistics/setState`,
req,
(data) => {
this.$message({
type: "success",
message: "项目标记状态设置成功",
});
this.clearStatusData();
this.setStatusVisible = false;
}
);
},
queryDataListByClick() {
this.currentPage = 1;
this.queryDataList();
},
// 数据查询
queryDataList() {
this.getDataList(this.currentPage, this.queryParams);
},
//导出
showExportModal() {
console.log("导出。。。。。");
// 待接口提供后 请求接口获取excel, 再出发下载
// this.checkExport();
this.handleExport();
},
checkExport() {
let data = {
dingdingNum: this.queryParams.dingdingNumber,
dingdingDate: this.queryParams.dingdingDate,
dataSheetName: this.queryParams.dataSheetName,
};
let callback = (res) => {
if (res.code == "000000") {
console.log("导出前校验》》》》 ", res);
this.checkExportData.dataExportTotal = res.data.dataExportTotal;
this.checkExportData.dataExportCount = res.data.dataExportCount;
this.exportModalVisible = true;
} else {
vm.$message.error(res.message);
}
};
this.getData(
"post",
`/sensitive/dataSearch/check/export`,
// this.queryParams,
data,
callback
);
},
handleExport() {
let callback = (res) => {
if (res.code == "000000") {
console.log("正式导出》》》》 ", res);
// 执行下载excel
this.downloadFile(res.data.path, res.data.fileName);
this.exportModalVisible = false;
} else {
this.$message.error(res.message);
}
};
this.getData(
"post",
`/sensitive/dataStatistics/exportDataStatistic`,
this.queryParams,
callback
);
},
downloadFile(base64, fileName) {
let a = document.createElement("a");
let uploadHref = "data:application/xls;base64," + base64;
a.setAttribute("href", uploadHref);
let exportFileName = fileName;
a.setAttribute("download", exportFileName);
a.click();
},
// 根据审批编号查询申请日期操作
handleIdChange(value) {
if (value.length == 21) {
this.getData(
"get",
`/sensitive/visit/date?dingdingNumber=${value}`,
{},
(data) => {
this.dingdingDateList = data.data;
}
);
} else {
this.dingdingDateList = [];
// this.projectList = [];
this.sheetList = [];
this.queryParams.dingdingDate = "";
this.queryParams.dataSheetName = "";
}
},
// 根据审批编号和日期搜索sheet
handleDatechange(val) {
this.sheetList = [];
this.queryParams.dataSheetName = "";
this.getData(
"get",
`/sensitive/visit/sheet?dingdingNumber=${this.queryParams.dingdingNumber}&dingdingDate=${val}`,
{},
(data) => {
this.sheetList = data.data;
}
);
},
// 选中sheet
handleSheetchange(val) {},
// 获取全部分页数据
getDataList(pageNum, queryData) {
this.getData(
"post",
"/sensitive/dataStatistics/queryData",
{
pageNum: pageNum,
pageSize: this.pageSize,
...queryData,
},
(data) => {
this.dataList = data.data.list;
this.total = data.data.total;
}
);
},
// 根据页码获取数据
handleSizeChange(size) {
this.pageSize = size;
this.getDataList(this.currentPage, {});
},
// 根据分页获取数据
dataListChange(num) {
this.currentPage = num;
this.getDataList(num, {});
},
// 查看个人审批编号页面
dataview(row) {
// this.$router.push("/data-view");
this.$router.push({
path: "/data-view",
query: {
dingdingNumber: row.dingdingNumber,
dingdingDate: row.dingdingDate,
sheet: row.dataSheetName,
},
});
},
numInputLimit(e) {
let key = e.key;
// 不允许输入'e'和'.'
if (key === "e" || key === ".") {
e.returnValue = false;
return false;
}
return true;
},
resetForm(formName) {
this.$refs[formName].resetFields();
},
closeCreate() {
this.centerDialogVisible = false;
},
closeModify() {
this.reviseDialogVisible = false;
},
// 数据导入成功之后的通知方法
saveSuccess() {
this.getDataList(this.currentPage, {});
},
// 封装一下请求通用的方法
getData(type, url, req, callback) {
openLoading(this);
this.$axios[type](localStorage.getItem("lectureUrl") + url, req)
.then((res) => {
closeLoading(this);
let data = res.data;
if (data.code == "000000") {
if (callback) callback(data);
} else {
this.$message.error(data.message);
}
})
.catch((error) => {
console.log("getData() : error = " + error);
closeLoading(this);
this.$message.error("网络出现点问题");
});
},
},
};
</script>
<style lang="less">
.data-in-wrap {
.pagination-style {
margin-top: 30px;
float: right;
}
}
.close-msg-box {
width: 280px;
}
.tag-select {
width: 100px;
}
.dialog-title {
margin-bottom: 25px;
font-weight: bold;
text-align: center;
font-size: 18px;
}
.href-link {
color: red;
margin-top:5px;
margin-left:10px;
}
</style>
\ No newline at end of file
<template>
<div class="data-view-message-wrap">
<template v-if="searchTableVisible">
<div class="class-top-row">
<el-row class="button-wrap">
<el-col :span="1" style="margin-left: 20px;width: 70px;margin-top: 4px">
<label style="font-size: 16px;">标记状态</label>
</el-col>
<el-select
v-model="labelStatus"
size="small"
placeholder="请选择"
clearable
style="margin-left: 0px;width:180px"
>
<el-option
v-for="item in dataProjectStates"
:key="item.id"
:label="item.value"
:value="item.id"
></el-option>
</el-select>
<el-link style="margin-left:40px">备注</el-link>
<el-input
v-model="remark"
size="small"
style="width:180px;"
class="input"
placeholder
clearable
></el-input>
</el-row>
<el-row class="button-wrap">
<el-button class="each-button" type="primary" @click="labelVisible=true">添加标签筛选</el-button>
<el-button class="each-button" type="primary" @click="handleSearchByClick">查询</el-button>
<el-button
class="each-button"
type="primary"
@click="showExportModal"
v-if="showExportBtn"
>导出</el-button>
<el-button class="each-button" type="primary" @click="showAddConditionModal(true)">添加筛选条件</el-button>
</el-row>
</div>
<template
v-if="tableDataList && tableDataList.outModels && tableDataList.outModels.length > 0"
>
<el-table
:data="tableDataList.outModels"
:row-style="getRowClass"
:header-row-style="getRowClass"
:header-cell-style="getRowClass"
border
style="width: 100%; flex:1; overflow: scroll;"
>
<template
v-if="tableDataList && tableDataList.columnList"
v-for="item in tableDataList.columnList"
>
<el-table-column
:prop="item.key"
align="center"
:label="item.value"
show-overflow-tooltip
></el-table-column>
</template>
<el-table-column label="备注" prop="remark" align="center" width="120"></el-table-column>
<el-table-column label="标记状态" prop="statusValue" align="center" width="100"></el-table-column>
<el-table-column align="center" label="操作" width="220">
<template slot-scope="scope">
<el-button @click="showRemarkModal(scope.row)" type="text" size="small">备注</el-button>
<el-button
@click="handleTagClick(scope.row)"
type="text"
size="small"
:disabled="scope.row.status == 1"
>{{ scope.row.status == 1 ? '已处理' : '标记处理' }}</el-button>
<el-button @click="handleSetLabelClick(scope.row)" type="text" size="small">标签</el-button>
<el-button @click="dialPhone(scope.row)" type="text" size="small">拨号</el-button>
</template>
<!-- <template slot-scope="scope">
<el-select
v-model="labelStatus"
size="small"
placeholder="请选择"
style="margin-left: 0px;"
@click.native="dealOperationClick(scope.row)"
@change="dealOperationChanged">
<el-option
v-for="item in operationList"
:key="item.id"
:label="item.value"
:value="item.id"
></el-option>
</el-select>
</template>-->
</el-table-column>
</el-table>
<!-- 分页 -->
<el-pagination
class="pagination-style"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:total="tableDataList.total"
:current-page="pageNo"
:page-sizes="[15, 50, 100, 200, 300]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
></el-pagination>
</template>
<div class="no-table-data" v-else>暂无数据</div>
</template>
<!-- 验证弹窗 -->
<el-dialog
title
:close-on-click-modal="false"
class="check-modal-box"
:visible.sync="centerDialogVisible"
width="300px"
center
>
<p
style="word-break: break-all"
>该数据的审批单号为 {{dingdingNum}},短信将发送至 {{mobilePhone}} 的手机上,如果手机已停用,请联系管理员。</p>
<div class="captcha-wrap">
<el-input v-model="captchaCode" size="small" placeholder="请输入图形验证码"></el-input>
<img :src="captchaImg" alt @click="handleImgClick" />
</div>
<div class="sms-wrap">
<el-input v-model="smsCode" size="small" placeholder="请输入短信验证码"></el-input>
<div :class="getSMSClass" @click="getSMSCode">{{SMSTips}}</div>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="centerDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="handleCheckConfirm">确 定</el-button>
</span>
</el-dialog>
<!-- 添加筛选条件弹窗 -->
<el-dialog
:show-close="false"
@close="showAddConditionModal(false)"
:close-on-click-modal="false"
title="添加筛选条件"
class="condition-dialog-wrap"
:visible="addConditioDialogVisible"
width="300px"
center
>
<el-form ref="form" :model="conditionForm" label-width="80px">
<template
v-if="tableDataList && tableDataList.columnList"
v-for="item in tableDataList.columnList"
>
<el-form-item :label="item.value" style="width:400px;">
<el-input v-model="conditionForm[item.key]" size="small" style="width: 150px;"></el-input>
</el-form-item>
</template>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClearCondition">清 空</el-button>
<el-button type="primary" @click="handleAddConditionConfirm">确 定</el-button>
</span>
</el-dialog>
<!-- 标记处理弹窗 -->
<el-dialog title="标记状态" :visible.sync="tagVisible" width="300px" center>
<el-select
v-model="tagStatus"
size="small"
placeholder="请选择"
clearable
style="margin-left: 20px"
>
<el-option
v-for="item in dataProjectStates"
:key="item.id"
:label="item.value"
:value="item.id"
></el-option>
</el-select>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="dealTagClick">确 定</el-button>
<el-button @click="tagVisible = false">取 消</el-button>
</span>
</el-dialog>
<!-- 添加标签筛选条件弹窗 -->
<el-dialog title="标签筛选条件" :visible.sync="labelVisible" width="300px" center>
<div style="display: flex;margin-top:10px;" v-if="dataProjectLabels" v-for="(item,i) in dataProjectLabels">
<div class="same-line-class" style="margin-right:10px;margin-top:10px;">{{item.labelValue}}</div>
<div class="input-comp">
<el-input v-model="dataProjectContents[i]" size="small" />
</div>
</div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleLabelClick">确 定</el-button>
<el-button @click="labelVisible = false">取 消</el-button>
</span>
</el-dialog>
<!-- 添加设置标签弹窗 -->
<el-dialog title="设置标签" :visible.sync="setLabelVisible" width="300px" center>
<div style="display: flex;margin-top:10px;" v-if="dataProjectLabels" v-for="(item, i) in dataProjectLabels" align="center">
<div class="same-line-class" style="margin-right:10px;margin-top:10px;">{{item.labelValue}}</div>
<div class="input-comp">
<el-input v-model="setLabelList[i]" size="small" />
</div>
</div>
<el-table
v-if="historyLabelList && historyLabelList.menus && historyLabelList.menus.length > 0"
ref="multipleTable"
:data="historyLabelList.datas"
:row-style="getRowClass"
:header-row-style="getRowClass"
:header-cell-style="getRowClass"
border
tooltip-effect="dark"
style="width: 100%;margin-top: 20px"
>
<template
v-if="historyLabelList && historyLabelList.menus"
v-for="item in historyLabelList.menus"
>
<el-table-column :prop="item.key" :label="item.value" :value="item.value" align="center"></el-table-column>
</template>
</el-table>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="dealSetLabelClick">确 定</el-button>
<el-button @click="setLabelVisible = false">取 消</el-button>
</span>
</el-dialog>
<!-- 备注 弹窗 -->
<el-dialog
title="备注"
@close="handleRemarkClose"
:close-on-click-modal="false"
class="remark-modal"
:visible.sync="remarkDialogVisible"
width="300px"
center
>
<el-input type="textarea" :rows="3" placeholder="请输入内容" v-model="newRemark"></el-input>
<el-button type="primary" class="remark-confirm-btn" @click="confirmSendRemark">确 定</el-button>
<ul class="history-list">
<li v-for="item in remarkHistory">
<p class="date">{{ item.createdTime }}</p>
<p class="text">{{ item.remark }}</p>
</li>
</ul>
</el-dialog>
<!-- 拨号弹窗 -->
<el-dialog title="拨号" :visible.sync="dialVisible" width="300px" center>
<a :href="'tel:' + dialPhoneNum">拨打电话给: {{dialPhoneNum}}</a>
<span slot="footer" class="dialog-footer">
<!-- <el-button type="primary" @click="gotoDialPhone">确 定</el-button> -->
<el-button @click="dialVisible = false">取 消</el-button>
</span>
</el-dialog>
<!-- 导出弹窗 -->
<el-dialog title="导出" :visible.sync="exportModalVisible" width="300px" center>
<p>您当前数据总导出次数为:{{checkExportData.dataExportTotal}}次</p>
<p>剩余导出次数为:{{checkExportData.dataExportCount}}次</p>
<span slot="footer" class="dialog-footer">
<el-button @click="exportModalVisible = false">取 消</el-button>
<el-button type="primary" @click="handleExport">确 定</el-button>
</span>
</el-dialog>
<!-- 浏览器检测弹窗 -->
<el-dialog title="当前不是chome浏览器,去下载?" :visible.sync="browserVisible" width="300px">
<span slot="footer" class="dialog-footer">
<el-button @click="down">确定</el-button>
<el-button @click="browserVisible = false">取 消</el-button>
</span>
</el-dialog>
<!-- 提醒去电脑弹窗 -->
<el-dialog title="提示" :visible.sync="phoneModalVisible" width="300px" center>
<p>请用电脑浏览器进行导出操作</p>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="phoneModalVisible = false">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
let vm = null;
import { openLoading, closeLoading } from "../../common/utils";
export default {
computed: {
getSMSClass() {
if (vm.countDownNum == 60) {
return "button";
} else {
return "button gray";
}
},
},
created() {
vm = this;
// url的?后面有参数,则可调接口获取手机号及审批单号;
let params = window.location.href.split("?");
if (params && params.length > 1) {
vm.afterParam = params[1];
// console.log('afterParam: ', vm.afterParam)
vm.getPhoneNum();
vm.getLabelStatus();
} else {
alert("访问的网页地址无效!");
}
// 获取图片验证码
vm.getCaptcha();
},
mounted() {
vm.handleForbid(); // 禁止默认事件
},
data() {
return {
waterMark: "", // 水印图片地址
searchTableVisible: true, // 弹窗下面的 搜索按钮及表格等 是否显示
remarkDialogVisible: false, // 备注弹窗
newRemark: "",
remarkHistory: [], // 历史备注列表
SMSTips: "获取短信验证码",
countDownNum: 60, // 倒计时
timer: null, // 倒计时定时器
afterParam: "",
dingdingNum: "",
mobilePhone: "",
captchaImg: "", // 图片验证码 url
captchaToken: "", // 图片验证码 token
addConditioDialogVisible: false, // 添加筛选条件
conditionForm: {},
tableDataList: {},
centerDialogVisible: true, // 验证弹窗
tableData: [],
captchaCode: "", // 图形验证码
smsCode: "", // 短信验证码
pageNo: 1,
pageSize: 15,
operationList: [
{ id: 0, value: "备注" },
{ id: 1, value: "标记" },
{ id: 2, value: "标签" },
{ id: 3, value: "拨号" },
],
dataProjectStates: [],
dataProjectLabels: [],
dataProjectContents: [],
labelStatus: "",
remark: "",
tagVisible: false, //标记处理弹窗
tagStatus: "",
labelVisible: false, //添加标签筛选弹窗
setLabelVisible: false, //添加设置标签弹窗
setLabelList: [],
uploadLabelList: [],
historyLabelList: {},
dialVisible: false, //拨号弹窗
dialPhoneNum: "",
showExportBtn: false, // 是否显示 导出按钮
exportModalVisible: false, // 导出弹窗
checkExportData: {
dataExportTotal: 0, // 总的
dataExportCount: 0, // 剩余的
},
phoneModalVisible: false,
browserVisible: false,
};
},
methods: {
handleForbid() {
document.oncontextmenu = function () {
return false;
};
document.oncopy = function () {
return false;
};
document.onpaste = function () {
return false;
};
document.onselectstart = function () {
return false;
};
},
handleRemarkClose() {
vm.newRemark = "";
vm.remarkHistory = [];
},
getWaterMark() {
let data = {
parame: vm.afterParam,
};
let callback = (res) => {
if (res.code == "000000") {
// debugger;
if (res.data) {
vm.waterMark = res.data;
vm.setWaterMark(); // 设置水印背景
} else {
vm.$message.error("网络出现点问题");
}
} else {
vm.$message.error(res.message);
}
};
vm.sendRequest("post", `/sensitive/image`, data, callback);
},
setWaterMark() {
let bg = document.getElementsByClassName("data-view-message-wrap")[0];
// bg.style.background = `url(${vm.waterMark}) repeat`;
bg.style.background = "url('" + vm.waterMark + "') repeat";
bg.style.backgroundSize = "300px auto";
},
getRowClass({ row, column, rowIndex, columnIndex }) {
return "background: rgba(255,255,255,0.2)";
},
confirmSendRemark() {
// 添加备注信息
if (vm.newRemark.trim() == "") {
vm.$message.error("请先输入备注信息!");
return;
}
let data = {
dataContentId: vm.currentRow.contentId,
dataUserContentId: vm.currentRow.dataUserContentId,
remark: vm.newRemark.trim(),
};
let callback = (res) => {
if (res.code == "000000") {
vm.remarkDialogVisible = false;
vm.handleSearch();
} else {
vm.$message.error(res.message);
}
};
vm.sendRequest("post", `/sensitive/dataRemark`, data, callback);
},
handleSizeChange(val) {
console.log("size change .......");
vm.pageSize = val;
vm.handleSearch();
},
handleCurrentChange(val) {
console.log("currentPage change .......");
vm.pageNo = val;
vm.handleSearch();
},
// 获取编号和手机号
getPhoneNum() {
// 请求查询接口
let data = {
parame: vm.afterParam,
};
let callback = (res) => {
if (res.code == "000000") {
vm.dingdingNum = res.data.dingdingNum;
vm.mobilePhone = res.data.mobilePhone;
} else {
vm.$message.error(res.message);
}
};
vm.sendRequest(
"post",
`/sensitive/mobileCheck/num/mobile`,
data,
callback
);
},
// 获取图形验证码
getCaptcha() {
let callback = (res) => {
if (res.code === "000000") {
vm.captchaImg = `data:image/png;base64,${res.data.content}`;
vm.captchaToken = res.data.token;
} else {
vm.$message.error(res.message);
}
};
vm.sendRequest("get", `/account/account/captcha`, {}, callback);
},
// 图片验证码点击
handleImgClick() {
vm.getCaptcha();
},
// 获取短信验证码
getSMSCode() {
if (vm.captchaCode == "") {
vm.$message.error("请输入图形验证码");
return;
}
// 倒计时过程中不可点
if (vm.countDownNum != 60) {
// console.log('现在倒计时过程中...不可点击')
return;
}
// 获取短信验证码
let data = {
parame: vm.afterParam,
pictureCode: vm.captchaCode,
captchaToken: vm.captchaToken,
};
let callback = (res) => {
if (res.code == "000000") {
vm.timeCount();
} else {
vm.$message.error(res.message);
vm.getCaptcha();
}
};
vm.sendRequest(
"post",
`/sensitive/mobileCheck/check/picturecode`,
data,
callback
);
},
timeCount() {
clearInterval(vm.timer);
vm.countDownNum -= 1;
vm.SMSTips = `${vm.countDownNum}秒后重试`;
vm.timer = setInterval(function () {
vm.countDownNum -= 1;
vm.SMSTips = `${vm.countDownNum}秒后重试`;
if (vm.countDownNum == 0) {
vm.SMSTips = "获取短信验证码";
clearInterval(vm.timer);
vm.countDownNum = 60;
}
}, 1000);
},
handleCheckConfirm() {
if (vm.captchaCode == "") {
vm.$message.error("请输入图形验证码");
return;
}
if (vm.smsCode == "") {
vm.$message.error("请输入短信验证码");
return;
}
// 调用 /mobileCheck/check/mobilecode 接口
// 校验 短信验证码
let data = {
parame: vm.afterParam,
mobileCode: vm.smsCode,
};
let callback = (res) => {
if (res.code == "000000") {
vm.searchTableVisible = true; // 短信验证码校验成功,显示背后的内容
vm.getTableList();
} else {
vm.$message.error(res.message);
vm.getCaptcha();
vm.captchaCode = "";
}
};
vm.sendRequest(
"post",
`/sensitive/mobileCheck/check/mobilecode`,
data,
callback
);
},
getTableList(isManualClick) {
// debugger;
let data = {
columnMap: {},
labelMap: {},
parame: vm.afterParam,
pageNo: vm.pageNo,
pageSize: vm.pageSize,
projectStateId: vm.labelStatus,
remark: vm.remark,
};
if (isManualClick) {
// 如果添加了筛选条件,则将其合并到 查询接口的传参中
let stringData = JSON.stringify(vm.conditionForm);
if (stringData != "{}") {
let condition = JSON.parse(stringData);
for (let key in condition) {
data.columnMap[key] = condition[key];
}
}
if (vm.dataProjectLabels.length > 0) {
for (let i = 0; i < vm.dataProjectLabels.length; i++) {
console.log(
"getTableList() : key = " +
vm.dataProjectLabels[i].labelCode +
", value = " +
vm.dataProjectContents[i]
);
data.labelMap[vm.dataProjectLabels[i].labelCode] =
vm.dataProjectContents[i];
}
}
}
let callback = (res) => {
if (res.code == "000000") {
vm.centerDialogVisible = false;
vm.captchaCode = "";
vm.smsCode = "";
vm.tableDataList = res.data;
if (
typeof res.data.dataExportCount != "undefined" &&
res.data.dataExportCount > 0
) {
vm.showExportBtn = true;
}
vm.$nextTick(() => {
if (vm.afterParam) {
vm.getWaterMark(); // 获取水印
}
});
} else {
vm.$message.error(res.message);
}
};
vm.sendRequest("post", `/sensitive/dataSearch/searchWeb`, data, callback);
},
showAddConditionModal(status) {
vm.addConditioDialogVisible = status ? true : false;
},
handleClearCondition() {
vm.conditionForm = {};
vm.addConditioDialogVisible = false;
},
handleSearch() {
vm.getTableList(true);
},
handleSearchByClick() {
vm.pageNo = 1;
vm.handleSearch();
},
//下拉操作列表点击
dealOperationClick(row) {
// console.log("dealOperationClick() : row.remark = " + row.remark);
vm.currentRow = row;
},
dealOperationChanged(item) {
console.log("dealOperationChanged() : item = " + item.value);
},
showRemarkModal(row) {
vm.remarkDialogVisible = true;
vm.currentRow = row;
// 获取备注信息
let callback = (res) => {
if (res.code == "000000") {
vm.remarkHistory = res.data.remarks;
} else {
vm.$message.error(res.message);
}
};
vm.sendRequest(
"get",
`/sensitive/dataRemark?dataContentId=${row.contentId}`,
{},
callback
);
},
// 标记处理点击
handleTagClick(row) {
vm.currentRow = row;
this.tagVisible = true;
},
dealTagClick() {
let callback = (res) => {
if (res.code == "000000") {
this.$message({
type: "success",
message: "标记状态设置成功",
});
vm.handleSearch();
} else {
vm.$message.error(res.message);
}
vm.tagVisible = false;
};
vm.sendRequest(
"get",
`/sensitive/dataSearch/changeStatus?dataUserContentId=${vm.currentRow.dataUserContentId}
&dataContentId=${vm.currentRow.contentId}&projectStateId=${vm.tagStatus}`,
{},
callback
);
},
//每一项的标签点击
handleSetLabelClick(row) {
vm.currentRow = row;
vm.setLabelVisible = true;
// 获取历史标签信息
let callback = (res) => {
if (res.code == "000000") {
vm.historyLabelList = res.data;
// console.log(
// "handleSetLabelClick() : vm.historyLabelList = " +
// vm.historyLabelList.menus.length
// );
if (vm.dataProjectLabels == null || vm.dataProjectLabels == "") {
vm.$message.info("未设置过标签");
}
} else {
vm.$message.error(res.message);
}
};
vm.sendRequest(
"get",
`/sensitive/dataSearch/labels?dataContentId=${row.contentId}`,
{},
callback
);
},
dealSetLabelClick() {
let tmpList = [];
if (vm.dataProjectLabels && vm.dataProjectLabels.length > 0) {
for (let i = 0; i < vm.dataProjectLabels.length; i++) {
let obj = {
labelCode: vm.dataProjectLabels[i].labelCode,
labelValue: vm.setLabelList[i],
};
tmpList.push(obj);
}
} else {
vm.setLabelVisible = false;
return;
}
let data = {
contentId: vm.currentRow.contentId,
dataUserContentId: vm.currentRow.dataUserContentId,
list: tmpList,
projectMainId: 0,
};
let callback = (res) => {
if (res.code == "000000") {
// vm.peopleList = res.data;
this.$message({
type: "success",
message: "设置标签成功",
});
} else {
vm.$message.error(res.message);
}
vm.setLabelVisible = false;
};
vm.sendRequest("post", `/sensitive/dataSearch/labels`, data, callback);
},
//拨号
dialPhone(row) {
console.log("tableDataList.columnList() : " + row.column1);
vm.dialPhoneNum = row.column1;
vm.dialVisible = true;
},
handleAddConditionConfirm() {
vm.addConditioDialogVisible = false;
vm.pageNo = 1;
},
showExportModal() {
if (vm.checkChrome()) {
console.log("导出检测,是chome");
vm.browserVisible = false;
} else {
console.log("导出检测,是其它浏览器");
vm.browserVisible = true;
return;
}
let phoneStatus = vm.isCellphone();
if (phoneStatus) {
vm.phoneModalVisible = true;
vm.exportModalVisible = false;
return;
}
// 待接口提供后 请求接口获取excel, 再出发下载
vm.checkExport();
},
// 导出前的check
checkExport() {
let data = {
parame: vm.afterParam,
};
let callback = (res) => {
if (res.code == "000000") {
console.log("导出前校验》》》》 ", res);
vm.checkExportData.dataExportTotal = res.data.dataExportTotal;
vm.checkExportData.dataExportCount = res.data.dataExportCount;
vm.exportModalVisible = true;
} else {
vm.$message.error(res.message);
}
};
vm.sendRequest(
"post",
`/sensitive/dataSearch/check/exportWeb`,
data,
callback
);
},
// 确定导出
handleExport() {
let data = {
parame: vm.afterParam,
};
let callback = (res) => {
if (res.code == "000000") {
console.log("正式导出》》》》 ", res);
// 执行下载excel
vm.downloadFile(res.data.path, res.data.fileName);
vm.exportModalVisible = false;
} else {
vm.$message.error(res.message);
}
};
vm.sendRequest("post", `/sensitive/dataSearch/exportWeb`, data, callback);
},
isCellphone() {
let ua = window.navigator.userAgent.toLowerCase();
let ios = /(iphone|ipad|ipod|ios)/i.test(ua);
let android = /(android)/i.test(ua);
return ios || android;
},
downloadFile(base64, fileName) {
let a = document.createElement("a");
let uploadHref = "data:application/xls;base64," + base64;
a.setAttribute("href", uploadHref);
let exportFileName = fileName;
a.setAttribute("download", exportFileName);
a.click();
},
checkChrome() {
// return (navigator.appVersion.indexOf('Chrome') || navigator.appVersion.indexOf('chrome')) != -1;
return this.getBroswer().broswer == "Chrome";
},
getBroswer() {
let sys = {};
let ua = navigator.userAgent.toLowerCase();
let s;
(s = ua.match(/edge\/([\d.]+)/))
? (sys.edge = s[1])
: (s = ua.match(/rv:([\d.]+)\) like gecko/))
? (sys.ie = s[1])
: (s = ua.match(/msie ([\d.]+)/))
? (sys.ie = s[1])
: (s = ua.match(/firefox\/([\d.]+)/))
? (sys.firefox = s[1])
: (s = ua.match(/chrome\/([\d.]+)/))
? (sys.chrome = s[1])
: (s = ua.match(/opera.([\d.]+)/))
? (sys.opera = s[1])
: (s = ua.match(/version\/([\d.]+).*safari/))
? (sys.safari = s[1])
: 0;
if (sys.edge) return { broswer: "Edge", version: sys.edge };
if (sys.ie) return { broswer: "IE", version: sys.ie };
if (sys.firefox) return { broswer: "Firefox", version: sys.firefox };
if (sys.chrome) return { broswer: "Chrome", version: sys.chrome };
if (sys.opera) return { broswer: "Opera", version: sys.opera };
if (sys.safari) return { broswer: "Safari", version: sys.safari };
return { broswer: "", version: "0" };
},
down() {
window.location.href = "http://www.google.cn/chrome/";
},
sendRequest(type, url, params, callback) {
openLoading(vm);
url = localStorage.getItem("lectureUrl") + url;
vm.$axios[type](url, params)
.then((res) => {
closeLoading(vm);
res = res.data;
callback(res);
})
.catch((error) => {
vm.$message.error("网络出现点问题");
});
},
getLabelStatus() {
let callback = (res) => {
if (res.code == "000000") {
vm.dataProjectStates = res.data.dataProjectStates;
vm.dataProjectLabels = res.data.dataProjectLabels;
} else {
vm.$message.error(res.message);
}
};
vm.sendRequest(
"get",
`/sensitive/visit/statusWeb?patame=${vm.afterParam}`,
{},
callback
);
},
handleLabelClick() {
this.labelVisible = false;
},
},
};
</script>
<style lang="less">
.header {
height: 0 !important;
overflow: hidden;
left: 0 !important;
}
.sidebar {
width: 0;
overflow: hidden;
}
.content {
left: 0 !important;
top: 0 !important;
}
.el-message {
min-width: 310px !important;
width: 310px !important;
max-width: 310px !important;
}
.data-view-message-wrap {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
user-select: none;
.no-table-data {
width: 100%;
height: 400px;
line-height: 400px;
text-align: center;
color: #606266;
font-size: 14px;
}
.class-top-row {
overflow-x: scroll;
.button-wrap {
margin: 20px 0;
width: 600px;
.each-button {
// float: right;
margin: 0px 0px 0 20px;
}
}
}
.el-table {
-webkit-overflow-scrolling: touch;
}
.check-modal-box {
.el-dialog__header {
display: none;
}
.el-dialog__body {
padding: 15px 15px 30px !important;
}
.captcha-wrap {
margin-top: 24px;
overflow: hidden;
.el-input {
width: 150px;
float: left;
}
img {
float: left;
cursor: pointer;
display: block;
border: none;
width: 100px;
height: 32px;
margin-left: 10px;
background: #fff;
}
}
.sms-wrap {
margin-top: 14px;
overflow: hidden;
.el-input {
width: 150px;
float: left;
}
.button {
float: left;
cursor: default;
width: 100px;
height: 32px;
margin-left: 10px;
font-size: 13px;
text-align: center;
line-height: 32px;
color: #409eff;
&.gray {
color: #606266;
}
}
}
}
ul,
li {
list-style: none;
}
.remark-modal {
.el-dialog__body {
overflow: hidden;
padding: 0 10px 30px !important;
.remark-confirm-btn {
float: right;
margin-top: 10px;
}
.history-list {
margin-top: 60px;
li {
margin-bottom: 5px;
line-height: 20px;
.text {
word-break: break-all;
text-indent: 12px;
line-height: 22px;
}
}
}
}
}
.pagination-style {
margin: 20px 0;
float: right;
width: 100%;
text-align: right;
overflow: hidden;
overflow-x: scroll;
-webkit-overflow-scrolling: touch;
.el-pagination__total {
margin-left: 25px;
}
.el-pagination__jump {
padding-right: 25px;
}
}
.tebale_card {
background: rgba(255, 255, 255, 0.2);
}
.el-table,
.el-table__expanded-cell {
background: rgba(255, 255, 255, 0.2);
}
.same-line-class {
// margin-top: 10px;
display: inline-block;
.input-comp {
width: 100px;
}
}
}
</style>
<template>
<div class="data-view-wrap">
<h2 class="top-title">数据查看</h2>
<el-form :inline="true" :model="ruleForm" :rules="rules" ref="ruleForm" class="search-ruleForm">
<el-form-item label="钉钉流程审批单号" prop="dingdingNumber">
<el-input
v-model="ruleForm.dingdingNumber"
size="small"
class="input"
clearable
@input="handleDingNumChange"
@clear="handleDingNumClear"
@keydown.native="numInputLimit"
maxlength="21"
></el-input>
</el-form-item>
<el-form-item label="数据申请日期" prop="dingdingDate">
<el-select
v-model="ruleForm.dingdingDate"
size="small"
placeholder="请选择"
clearable
@change="handleApplyDateChange"
@clear="handleApplyDateClear"
>
<el-option v-for="item in applyDateList" :key="item" :label="item" :value="item"></el-option>
</el-select>
</el-form-item>
<el-form-item label="sheet名" prop="sheet">
<el-select v-model="ruleForm.sheet" size="small" placeholder="请选择" clearable>
<el-option v-for="item in sheetsList" :key="item" :label="item" :value="item"></el-option>
</el-select>
</el-form-item>
<el-form-item label="标记状态">
<el-select v-model="ruleForm.labelStatus" size="small" placeholder="请选择" clearable>
<el-option
v-for="item in dataProjectStates"
:key="item.id"
:label="item.value"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
v-model="ruleForm.remark"
size="small"
style="width:220px"
class="input"
placeholder
clearable
></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" style="margin-left: 50px;" @click="showAddConditionModal">添加筛选条件</el-button>
<el-button type="primary" @click="labelVisible=true">添加标签筛选</el-button>
<el-button type="primary" @click="handleSend" v-if="showSendBtn">分发</el-button>
<el-button type="primary" @click="checkExport" v-if="showExportBtn">导出</el-button>
<el-button type="primary" @click="exportNormalModalVisible=true" v-if="showNormalExportBtn">常规导出</el-button>
<el-button type="primary" @click="ruleForm.pageNo=1;submitForm('ruleForm')">查询</el-button>
</el-form-item>
</el-form>
<template v-if="isSearchSend">
<el-table
v-if="tableDataList && tableDataList.outModels && tableDataList.outModels.length > 0"
ref="multipleTable"
:data="tableDataList.outModels"
:row-style="getRowClass"
:header-row-style="getRowClass"
:header-cell-style="getRowClass"
border
tooltip-effect="dark"
style="width: 100%"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" align="center" width="55"></el-table-column>
<template
v-if="tableDataList && tableDataList.columnList"
v-for="item in tableDataList.columnList"
>
<el-table-column
:prop="item.key"
align="center"
:label="item.value"
show-overflow-tooltip
></el-table-column>
</template>
<el-table-column
v-if="tableDataList && tableDataList.columnList"
prop="userName"
align="center"
label="数据查看人员"
show-overflow-tooltip
></el-table-column>
<el-table-column label="备注" prop="remark" align="center"></el-table-column>
<el-table-column label="标记状态" prop="statusValue" align="center"></el-table-column>
<el-table-column fixed="right" align="center" label="操作" width="200">
<template slot-scope="scope">
<el-button @click="handleRemarkClick(scope.row)" type="text" size="small">备注</el-button>
<el-button
@click="handleTagClick(scope.row)"
type="text"
size="small"
:disabled="scope.row.status == 1"
>{{ scope.row.status == 1 ? '已处理' : '标记处理' }}</el-button>
<el-button @click="handleSetLabelClick(scope.row)" type="text" size="small">标签</el-button>
</template>
</el-table-column>
</el-table>
<div class="no-table-data" v-else>暂无数据</div>
<!-- 分页 -->
<el-pagination
v-if="tableDataList && tableDataList.outModels && tableDataList.outModels.length > 0"
class="pagination-style"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:total="tableDataList.total"
:current-page="ruleForm.pageNo"
:page-sizes="[15, 30, 50, 100]"
:page-size="ruleForm.pageSize"
layout="total, sizes, prev, pager, next, jumper"
></el-pagination>
</template>
<!-- 添加筛选条件 弹窗 -->
<el-dialog
title="添加筛选条件"
class="condition-dialog-wrap"
:visible.sync="addConditioDialogVisible"
:show-close="false"
width="500px"
center
>
<el-form ref="form" :model="conditionForm" label-width="100px">
<template
v-if="tableDataList && tableDataList.columnList"
v-for="item in tableDataList.columnList"
>
<el-form-item :label="item.value" style="width:400px;">
<el-input v-model="conditionForm[item.key]" size="small"></el-input>
</el-form-item>
</template>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClearCondition">清 空</el-button>
<el-button type="primary" @click="handleAddConditionConfirm">确 定</el-button>
</span>
</el-dialog>
<!-- 分发 弹窗 -->
<el-dialog
title="分发"
:close-on-click-modal="false"
class="send-modal-box"
:visible.sync="sendDialogVisible"
width="500px"
center
>
<div class="name-list">
<p class="name">{{selectedNameList}}</p>
<p class="after-text">{{ "共" + multipleSelection.length + '人' }}</p>
</div>
<div class="people-choose">
<p class="title">人员选择</p>
<el-select
v-model="dataUserDiss"
multiple
collapse-tags
placeholder="请选择"
class="people-select-comp"
>
<el-option v-for="item in peopleList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="sendDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="handleConfirmSend">确 定</el-button>
</span>
</el-dialog>
<!-- 备注 弹窗 -->
<el-dialog
title="备注"
@close="handleRemarkClose"
:close-on-click-modal="false"
class="remark-modal"
:visible.sync="remarkDialogVisible"
width="500px"
center
>
<el-input type="textarea" :rows="3" placeholder="请输入内容" v-model="newRemark"></el-input>
<el-button type="primary" class="remark-confirm-btn" @click="confirmSendRemark">确 定</el-button>
<ul class="history-list">
<li v-for="item in remarkHistory">
<p class="date">{{ item.createdTime }}</p>
<p class="text">{{ item.name + "-" + item.remark }}</p>
</li>
</ul>
</el-dialog>
<!-- 导出弹窗 -->
<el-dialog title="导出" :visible.sync="exportModalVisible" width="300px" center>
<p>您当前数据总导出次数为:{{checkExportData.dataExportTotal}}次</p>
<p>剩余导出次数为:{{checkExportData.dataExportCount}}次</p>
<p style="margin-top: 10px;margin-bottom: 5px">备注:请使用谷歌浏览器导出</p>
<a :href ="'http://www.google.cn/chrome/'" class="href-link">点击下载</a>
<span slot="footer" class="dialog-footer">
<el-button @click="exportModalVisible = false">取 消</el-button>
<el-button type="primary" @click="handleExport">确 定</el-button>
</span>
</el-dialog>
<!-- 常规导出弹窗 -->
<el-dialog title="导出" :visible.sync="exportNormalModalVisible" width="300px" center>
<p>只能导出已修改过标记状态的数据,</p>
<p>其它数据不可导出</p>
<p style="margin-top: 10px;margin-bottom: 5px">备注:请使用谷歌浏览器导出</p>
<a :href ="'http://www.google.cn/chrome/'" class="href-link">点击下载</a>
<span slot="footer" class="dialog-footer">
<el-button @click="exportNormalModalVisible = false">取 消</el-button>
<el-button type="primary" @click="handleNormalExport">确 定</el-button>
</span>
</el-dialog>
<!-- 浏览器检测弹窗 -->
<el-dialog
title="当前不是chome浏览器,去下载?"
:visible.sync="browserVisible"
width="300px"
>
<span slot="footer" class="dialog-footer">
<el-button @click="down">确定</el-button>
<el-button @click="browserVisible = false">取 消</el-button>
</span>
</el-dialog>
<!-- 标记处理弹窗 -->
<el-dialog title="标记状态" :visible.sync="tagVisible" width="300px" center>
<el-select
v-model="tagStatus"
size="small"
placeholder="请选择"
clearable
style="margin-left: 20px"
>
<el-option
v-for="item in dataProjectStates"
:key="item.id"
:label="item.value"
:value="item.id"
></el-option>
</el-select>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="dealTagClick">确 定</el-button>
<el-button @click="tagVisible = false">取 消</el-button>
</span>
</el-dialog>
<!-- 添加标签筛选条件弹窗 -->
<el-dialog title="标签筛选条件" :visible.sync="labelVisible" width="400px" center>
<div v-if="dataProjectLabels" v-for="(item,i) in dataProjectLabels" align="center">
<div class="same-line-class" style="margin-right:20px;">{{item.labelValue}}</div>
<div class="same-line-class">
<el-input v-model="dataProjectContents[i]" size="small" />
</div>
</div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleLabelClick">确 定</el-button>
<el-button @click="labelVisible = false">取 消</el-button>
</span>
</el-dialog>
<!-- 添加设置标签弹窗 -->
<el-dialog title="设置标签" :visible.sync="setLabelVisible" min-width="500px" center>
<div v-if="dataProjectLabels" v-for="(item, i) in dataProjectLabels" align="center">
<div class="same-line-class" style="margin-right:20px;">{{item.labelValue}}</div>
<div class="same-line-class">
<el-input v-model="setLabelList[i]" size="small" />
</div>
</div>
<el-table
v-if="historyLabelList && historyLabelList.menus && historyLabelList.menus.length > 0"
ref="multipleTable"
:data="historyLabelList.datas"
:row-style="getRowClass"
:header-row-style="getRowClass"
:header-cell-style="getRowClass"
border
tooltip-effect="dark"
style="width: 100%;margin-top: 20px"
>
<template
v-if="historyLabelList && historyLabelList.menus"
v-for="item in historyLabelList.menus"
>
<el-table-column :prop="item.key" :label="item.value" :value="item.value" align="center"></el-table-column>
</template>
</el-table>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="dealSetLabelClick">确 定</el-button>
<el-button @click="setLabelVisible = false">取 消</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
let vm = null;
import { openLoading, closeLoading } from "../../common/utils";
export default {
data() {
var checkNumLength = (rule, value, callback) => {
if (!value) {
return callback(new Error("请输入审批单号"));
} else if (value && (value + "").length != 21) {
callback(new Error("审批单号必须为21位数字值"));
} else {
callback();
}
};
return {
selectedNameList: "",
waterMark: "", // 水印图片地址
isSearchSend: false, // 是否有效查询过
showSendBtn: false, // 是否显示 分发按钮
showExportBtn: false, // 是否显示 导出按钮
showNormalExportBtn: false, // 是否显示 常规导出按钮
remarkHistory: [], // 历史备注列表
ruleForm: {
columnMap: {},
dingdingNumber: "",
dingdingDate: "",
sheet: "",
labelStatus: "",
labelMap: {},
remark: "",
pageNo: 1,
pageSize: 15,
},
rules: {
dingdingNumber: [
{ required: true, message: "请输入审批单号", trigger: "blur" },
{ validator: checkNumLength, trigger: ["blur", "change"] },
],
dingdingDate: [
{ required: true, message: "请选择数据申请日期", trigger: "change" },
],
sheet: [
{ required: true, message: "请选择sheet名", trigger: "change" },
],
},
tableDataList: {},
addConditioDialogVisible: false, // 添加筛选条件
conditionForm: {},
applyDateList: [],
sheetsList: [],
dataProjectStates: [],
dataProjectLabels: [],
dataProjectContents: [],
sendDialogVisible: false, //分发弹窗
dataUserDiss: [],
peopleList: [],
remarkDialogVisible: false, //备注弹窗
newRemark: "",
multipleSelection: [],
exportModalVisible: false, // 导出弹窗
checkExportData: {
dataExportTotal: 0, // 总的
dataExportCount: 0, // 剩余的
},
exportNormalModalVisible: false, // 常规导出弹窗
tagVisible: false, //标记处理弹窗
tagStatus: "",
labelVisible: false, //添加标签筛选弹窗
setLabelVisible: false, //添加设置标签弹窗
setLabelList: [],
uploadLabelList: [],
historyLabelList: {},
browserVisible: false,
};
},
created() {
vm = this;
if (vm.$route.query.dingdingNumber) {
// data-in 页面点击查看进来时,页面地址不变
// console.log('do nothing')
} else {
vm.$router.replace("/data-view");
}
},
mounted() {
vm.getUrlQuery();
vm.getWaterMark(); // 获取水印
vm.handleForbid(); // 禁止默认事件
},
methods: {
handleForbid() {
document.oncontextmenu = function () {
return false;
};
document.oncopy = function () {
return false;
};
// document.onpaste = function(){
// return false;
// }
document.onselectstart = function () {
return false;
};
},
getLabelStatus() {
console.log("vm.ruleForm.dingdingNumber = " + vm.ruleForm.dingdingNumber);
let callback = (res) => {
if (res.code == "000000") {
vm.dataProjectStates = res.data.dataProjectStates;
vm.dataProjectLabels = res.data.dataProjectLabels;
} else {
vm.$message.error(res.message);
}
};
vm.sendRequest(
"get",
`/sensitive/visit/status?dingdingNumber=${vm.ruleForm.dingdingNumber}&dingdingDate=${vm.ruleForm.dingdingDate}&dingdingSheet=${encodeURI(vm.ruleForm.sheet)}`,//${vm.ruleForm.sheet}
{},
callback
);
},
getUrlQuery() {
let query = vm.$route.query;
if (query && query.dingdingNumber) {
vm.ruleForm.dingdingNumber = query.dingdingNumber || "";
vm.ruleForm.dingdingDate = query.dingdingDate || "";
vm.ruleForm.sheet = query.sheet || "";
vm.submitForm("ruleForm");
}
},
sendRequest(type, url, params, callback) {
openLoading(vm);
url = localStorage.getItem("lectureUrl") + url;
vm.$axios[type](url, params)
.then((res) => {
closeLoading(vm);
res = res.data;
callback(res);
})
.catch((error) => {
vm.$message.error("网络出现点问题");
});
},
getRowClass({ row, column, rowIndex, columnIndex }) {
return "background: rgba(255,255,255,0.2)";
},
getWaterMark() {
let callback = (res) => {
if (res.code == "000000") {
if (res.data) {
vm.waterMark = res.data;
vm.setWaterMark(); // 设置水印背景
} else {
vm.$message.error("网络出现点问题");
}
} else {
vm.$message.error(res.message);
}
};
vm.sendRequest( 'post', `/sensitive/image`, {}, callback );
},
setWaterMark() {
let bg = document.getElementById("bodyContent");
// bg.style.background = `url(${vm.waterMark}) repeat`;
bg.style.background = "url('" + vm.waterMark + "') repeat";
bg.style.backgroundSize = "300px auto";
},
handleClearCondition() {
// debugger;
vm.conditionForm = {};
vm.addConditioDialogVisible = false;
},
handleDingNumChange(val) {
vm.ruleForm.dingdingDate = "";
vm.ruleForm.sheet = "";
vm.applyDateList = [];
vm.sheetsList = [];
if (val && val.length == 21) {
vm.getApplyDateList();
} else if (val && val.length > 21) {
val = val.slice(0, 21);
vm.ruleForm.dingdingNumber = val;
}
},
numInputLimit(e) {
let key = e.key;
// 不允许输入'e'和'.'
if (key === "e" || key === ".") {
e.returnValue = false;
return false;
}
return true;
},
getApplyDateList() {
//获取 数据申请日期
let callback = (res) => {
if (res.code == "000000") {
if (res.data && res.data.length > 0) {
vm.applyDateList = res.data;
} else {
vm.applyDateList = [];
}
} else {
vm.$message.error(res.message);
}
};
vm.sendRequest(
"get",
`/sensitive/visit/date?dingdingNumber=${vm.ruleForm.dingdingNumber}`,
{},
callback
);
},
handleApplyDateChange(val) {
vm.ruleForm.sheet = "";
vm.sheetsList = [];
if (val) {
vm.getSheets();
}
},
handleDingNumClear() {
vm.ruleForm.dingdingDate = "";
vm.applyDateList = [];
vm.handleApplyDateClear();
},
handleApplyDateClear() {
vm.ruleForm.sheet = "";
vm.sheetsList = [];
},
getSheets() {
// 获取 Sheets名
let callback = (res) => {
if (res.code == "000000") {
if (res.data && res.data.length > 0) {
vm.sheetsList = res.data;
} else {
vm.sheetsList = [];
}
} else {
vm.$message.error(res.message);
}
};
vm.sendRequest(
"get",
`/sensitive/visit/sheet?dingdingNumber=${vm.ruleForm.dingdingNumber}&dingdingDate=${vm.ruleForm.dingdingDate}`,
{},
callback
);
},
confirmSendRemark() {
// 添加备注信息
if (vm.newRemark.trim() == "") {
vm.$message.error("请先输入备注信息!");
return;
}
// vm.currentRow
let data = {
dataContentId: vm.currentRow.contentId,
dataUserContentId: vm.currentRow.dataUserContentId,
remark: vm.newRemark.trim(),
};
let callback = (res) => {
if (res.code == "000000") {
vm.remarkDialogVisible = false;
vm.submitForm("ruleForm");
} else {
vm.$message.error(res.message);
}
};
vm.sendRequest("post", `/sensitive/dataRemark`, data, callback);
},
showAddConditionModal() {
vm.addConditioDialogVisible = true;
},
handleSend() {
if (vm.multipleSelection && vm.multipleSelection.length == 0) {
vm.$message.error("请先勾选表格!");
return;
}
vm.dataUserDiss = [];
vm.sendDialogVisible = true;
vm.getUserList();
},
showExportModal() {
if (vm.checkChrome()) {
console.log("导出检测,是chome");
vm.browserVisible = false;
} else {
console.log("导出检测,是其它浏览器");
vm.browserVisible = true;
return;
}
// 待接口提供后 请求接口获取excel, 再出发下载
vm.checkExport();
},
checkExport() {
vm.exportModalVisible = true;
// /dataSearch/searchUserDis
// 查询分发人员列表
let data = {
dingdingNum: vm.ruleForm.dingdingNumber,
dingdingDate: vm.ruleForm.dingdingDate,
dataSheetName: vm.ruleForm.sheet,
};
let callback = (res) => {
if (res.code == "000000") {
console.log("导出前校验》》》》 ", res);
vm.checkExportData.dataExportTotal = res.data.dataExportTotal;
vm.checkExportData.dataExportCount = res.data.dataExportCount;
// vm.exportModalVisible = true;
} else {
vm.$message.error(res.message);
}
};
vm.sendRequest(
"post",
`/sensitive/dataSearch/check/export`,
data,
callback
);
},
handleExport() {
let data = {
dingdingNum: vm.ruleForm.dingdingNumber,
dingdingDate: vm.ruleForm.dingdingDate,
dataSheetName: vm.ruleForm.sheet,
};
let callback = (res) => {
if (res.code == "000000") {
console.log("正式导出》》》》 ", res);
// 执行下载excel
vm.downloadFile(res.data.path, res.data.fileName);
vm.exportModalVisible = false;
} else {
vm.$message.error(res.message);
}
};
vm.sendRequest("post", `/sensitive/dataSearch/export`, data, callback);
},
downloadFile(base64, fileName) {
let a = document.createElement("a");
let uploadHref = "data:application/xls;base64," + base64;
a.setAttribute("href", uploadHref);
let exportFileName = fileName;
a.setAttribute("download", exportFileName);
a.click();
},
handleNormalExport() {
let data = {
dingdingNum: vm.ruleForm.dingdingNumber,
dingdingDate: vm.ruleForm.dingdingDate,
dataSheetName: vm.ruleForm.sheet,
};
let callback = (res) => {
if (res.code == "000000") {
console.log("常规导出》》》》 ", res);
// 执行下载excel
vm.downloadFile(res.data.path, res.data.fileName);
vm.exportNormalModalVisible = false;
} else {
vm.$message.error(res.message);
}
};
vm.sendRequest("post", `/sensitive/dataSearch/export/common`, data, callback);
},
checkChrome() {
// return (navigator.appVersion.indexOf('Chrome') || navigator.appVersion.indexOf('chrome')) != -1;
return this.getBroswer().broswer=='Chrome'
},
getBroswer() {
let sys = {};
let ua = navigator.userAgent.toLowerCase();
let s;
(s = ua.match(/edge\/([\d.]+)/)) ? sys.edge = s[1] :
(s = ua.match(/rv:([\d.]+)\) like gecko/)) ? sys.ie = s[1] :
(s = ua.match(/msie ([\d.]+)/)) ? sys.ie = s[1] :
(s = ua.match(/firefox\/([\d.]+)/)) ? sys.firefox = s[1] :
(s = ua.match(/chrome\/([\d.]+)/)) ? sys.chrome = s[1] :
(s = ua.match(/opera.([\d.]+)/)) ? sys.opera = s[1] :
(s = ua.match(/version\/([\d.]+).*safari/)) ? sys.safari = s[1] : 0;
if (sys.edge) return { broswer : "Edge", version : sys.edge };
if (sys.ie) return { broswer : "IE", version : sys.ie };
if (sys.firefox) return { broswer : "Firefox", version : sys.firefox };
if (sys.chrome) return { broswer : "Chrome", version : sys.chrome };
if (sys.opera) return { broswer : "Opera", version : sys.opera };
if (sys.safari) return { broswer : "Safari", version : sys.safari };
return { broswer : "", version : "0" };
},
down() {
window.location.href = 'http://www.google.cn/chrome/';
},
getUserList() {
// /dataSearch/searchUserDis
// 查询分发人员列表
let data = {
dingdingNum: vm.ruleForm.dingdingNumber,
dingdingDate: vm.ruleForm.dingdingDate,
dataSheetName: vm.ruleForm.sheet,
};
let callback = (res) => {
if (res.code == "000000") {
vm.peopleList = res.data;
} else {
vm.$message.error(res.message);
}
};
vm.sendRequest(
"post",
`/sensitive/dataSearch/searchUserDis`,
data,
callback
);
},
submitForm(formName) {
vm.$refs[formName].validate((valid) => {
if (valid) {
let data = {
columnMap: {},
labelMap: {},
dingdingNum: vm.ruleForm.dingdingNumber,
dingdingDate: vm.ruleForm.dingdingDate,
dataSheetName: vm.ruleForm.sheet,
projectStateId: vm.ruleForm.labelStatus,
remark: vm.ruleForm.remark,
pageNo: vm.ruleForm.pageNo,
pageSize: vm.ruleForm.pageSize,
};
// 如果添加了筛选条件,则将其合并到 查询接口的传参中
let stringData = JSON.stringify(vm.conditionForm);
if (stringData != "{}") {
let condition = JSON.parse(stringData);
console.log("submitForm() : condition = " + condition);
for (let key in condition) {
console.log("submitForm() : key = " + key);
data.columnMap[key] = condition[key];
}
}
if (vm.dataProjectLabels.length > 0) {
for (let i = 0; i < vm.dataProjectLabels.length; i++) {
console.log(
"dataProjectLabels() : key = " +
vm.dataProjectLabels[i].labelCode +
", value = " +
vm.dataProjectContents[i]
);
data.labelMap[vm.dataProjectLabels[i].labelCode] =
vm.dataProjectContents[i];
}
}
let callback = (res) => {
if (res.code == "000000") {
vm.isSearchSend = true;
vm.tableDataList = res.data;
if (
typeof res.data.dataRole != "undefined" &&
res.data.dataRole == 1
) {
vm.showSendBtn = true;
}
if (
typeof res.data.dataExportCount != "undefined" &&
res.data.dataExportCount > 0
) {
vm.showExportBtn = true;
}
if (res.data.distributeRole == 2) {
vm.showNormalExportBtn = true;
}
vm.getLabelStatus();
} else {
vm.$message.error(res.message);
}
};
vm.sendRequest(
"post",
`/sensitive/dataSearch/search`,
data,
callback
);
} else {
console.log("error submit!!");
return false;
}
});
},
handleSizeChange(val) {
console.log("size change .......");
vm.ruleForm.pageSize = val;
vm.submitForm("ruleForm");
},
handleCurrentChange(val) {
console.log("currentPage change .......");
vm.ruleForm.pageNo = val;
vm.submitForm("ruleForm");
},
handleSelectionChange(val) {
vm.multipleSelection = val;
// debugger;
let firstColumn = vm.tableDataList.columnList[0].key || "column1";
let str = "";
let tempNameList = [];
vm.multipleSelection.map(function (value, index, arr) {
tempNameList.push(value[firstColumn]);
});
str = tempNameList.join(",");
vm.selectedNameList = str;
},
handleRemarkClick(row) {
vm.remarkDialogVisible = true;
vm.currentRow = row;
// 获取备注信息
let callback = (res) => {
if (res.code == "000000") {
vm.remarkHistory = res.data.remarks;
} else {
vm.$message.error(res.message);
}
};
vm.sendRequest(
"get",
`/sensitive/dataRemark?dataContentId=${row.contentId}`,
{},
callback
);
},
handleSetLabelClick(row) {
vm.currentRow = row;
vm.setLabelVisible = true;
// 获取历史标签信息
let callback = (res) => {
if (res.code == "000000") {
vm.historyLabelList = res.data;
// console.log(
// "handleSetLabelClick() : vm.historyLabelList = " +
// vm.historyLabelList.menus.length
// );
if (vm.dataProjectLabels == null || vm.dataProjectLabels == "") {
vm.$message.info("未设置过标签")
}
} else {
vm.$message.error(res.message);
}
};
vm.sendRequest(
"get",
`/sensitive/dataSearch/labels?dataContentId=${row.contentId}`,
{},
callback
);
},
dealSetLabelClick() {
let tmpList = [];
if (vm.dataProjectLabels && vm.dataProjectLabels.length > 0) {
for (let i = 0; i < vm.dataProjectLabels.length; i++) {
let obj = {
labelCode: vm.dataProjectLabels[i].labelCode,
labelValue: vm.setLabelList[i]
};
tmpList.push(obj);
}
} else {
vm.setLabelVisible = false;
return;
}
let data = {
contentId: vm.currentRow.contentId,
dataUserContentId: vm.currentRow.dataUserContentId,
list: tmpList,
projectMainId: 0,
};
let callback = (res) => {
if (res.code == "000000") {
// vm.peopleList = res.data;
this.$message({
type: "success",
message: "设置标签成功",
});
} else {
vm.$message.error(res.message);
}
vm.setLabelVisible = false;
};
vm.sendRequest("post", `/sensitive/dataSearch/labels`, data, callback);
},
handleTagClick(row) {
vm.currentRow = row;
this.tagVisible = true;
},
dealTagClick() {
let callback = (res) => {
if (res.code == "000000") {
this.$message({
type: "success",
message: "标记状态设置成功",
});
vm.submitForm("ruleForm");
} else {
vm.$message.error(res.message);
}
vm.tagVisible = false;
};
vm.sendRequest(
"get",
`/sensitive/dataSearch/changeStatus?dataUserContentId=${vm.currentRow.dataUserContentId}
&dataContentId=${vm.currentRow.contentId}&projectStateId=${vm.tagStatus}`,
{},
callback
);
},
handleLabelClick() {
this.labelVisible = false;
},
handleRemarkClose() {
vm.newRemark = "";
vm.remarkHistory = [];
},
handleConfirmSend() {
if (vm.dataUserDiss && vm.dataUserDiss.length == 0) {
vm.$message.error("请先勾选人员!");
return;
}
let selectListIds = [];
vm.multipleSelection.map(function (value, index, arr) {
selectListIds.push(value.contentId);
});
let data = {
dataUserDiss: vm.dataUserDiss,
dataCountIds: selectListIds,
dataInfoId: vm.tableDataList.dataInfoId,
};
let callback = (res) => {
if (res.code == "000000") {
vm.sendDialogVisible = false;
} else {
vm.$message.error(res.message);
}
};
vm.sendRequest("post", `/sensitive/dataSearch/postUser`, data, callback);
},
handleAddConditionConfirm() {
vm.addConditioDialogVisible = false;
vm.ruleForm.pageNo = 1;
},
},
};
</script>
<style lang="less">
.data-view-wrap {
// 处理input type = number的上下箭头
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
}
input[type="number"] {
-moz-appearance: textfield;
}
user-select: none;
ul,
li {
list-style: none;
}
.top-title {
color: #333333;
}
.search-ruleForm {
margin-top: 20px;
.input {
width: 215px;
}
.add-icon {
font-size: 40px;
font-weight: 700;
color: #606266;
vertical-align: middle;
margin-left: 10px;
&:hover {
cursor: pointer;
}
}
}
.condition-dialog-wrap {
.el-form-item__label {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
.remark-modal {
.el-dialog__body {
overflow: hidden;
.remark-confirm-btn {
float: right;
margin-top: 10px;
}
.history-list {
margin-top: 60px;
li {
margin-bottom: 5px;
line-height: 20px;
.text {
line-height: 22px;
text-indent: 12px;
word-break: break-all;
}
}
}
}
}
.send-modal-box {
.people-choose {
margin-top: 30px;
.title {
display: inline-block;
}
.people-select-comp {
margin-left: 20px;
}
}
.name-list {
width: 450px;
height: 24px;
line-height: 24px;
.name {
max-width: 385px;
float: left;
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.after-text {
float: left;
display: block;
width: 55px;
margin-left: 5px;
}
}
}
.no-table-data {
width: 100%;
height: 400px;
line-height: 400px;
text-align: center;
color: #606266;
font-size: 14px;
}
.pagination-style {
margin-top: 30px;
float: right;
}
.tebale_card {
background: rgba(255, 255, 255, 0.2);
}
.el-table,
.el-table__expanded-cell {
background: rgba(255, 255, 255, 0.2);
}
.el-table {
.el-table__fixed-right {
background: #fff;
}
}
.same-line-class {
margin-top: 20px;
display: inline-block;
}
.href-link {
color: red;
}
}
</style>
\ No newline at end of file
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册