Commit 113b90c8 by 李萌萌

接口对接完成

parent 1166ce9a
<!--
* @Author: your name
* @Date: 2021-12-24 09:50:39
* @LastEditTime: 2021-12-25 14:24:57
* @LastEditTime: 2021-12-27 21:12:18
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \founder_vue\src\views\SystemManage\QueryPermission.vue
......@@ -28,72 +28,118 @@
</div>
<div class="tables">
<div class="firstLine">
<div class="buleBlk"></div>
<img class="buleBlk" src="@/assets/img/fcxqx/blueBlk.png" />
<div class="txt">系统可发送查询总数:</div>
<el-input v-model="numTotal"></el-input>
<el-input v-model="numTotal" @input="totalNumChanged"></el-input>
<label>条/天</label>
<el-checkbox
class="ckbAuto"
text-color="#2E3846"
fill="#055FE7"
v-model="autoDistribute"
v-model="isAutoDistribute"
>省厅总数自动分配</el-checkbox
>
<button>一键分配</button>
<button @click="autoDistribute">一键分配</button>
</div>
<div class="stTongji">
<div>省/区厅发查询总数:</div>
<el-input-number
v-model="numTotalSt"
controls-position="right"
:min="0"
:max="10"
></el-input-number>
<numberInput
v-bind:text="numTotalSt"
v-bind:preText="numTotalStUsed.toString() + '/'"
v-on:change="changeStTotalNum"
></numberInput>
<div>其中高优先级:</div>
<el-input-number
v-model="numGaoSt"
controls-position="right"
:min="0"
:max="10"
></el-input-number>
<numberInput
v-bind:text="numGaoSt"
v-bind:preText="numGaoStUsed.toString() + '/'"
v-on:change="changeStGaoNum"
></numberInput>
</div>
<el-table :data="tableDateSt" tooltip-effect="dark" style="width: 100%">
<el-table-column label="省/区厅用户名" prop="userName">
</el-table-column>
<el-table-column label="已发送/总数" prop="date"
><template slot-scope="scope">
<div>{{ scope.row.id }}</div>
<el-table-column label="已发送/总数" prop="date">
<template slot-scope="scope">
<editableLable
v-bind:id="scope.row.userId.toString()"
v-bind:type="0"
v-bind:preText="
(scope.row.midUsed + scope.row.highUsed).toString() + '/'
"
v-bind:text="
(scope.row.midTotal + scope.row.highTotal).toString()
"
v-on:change="changeYonghuTotalNumber"
>
</editableLable>
</template>
</el-table-column>
<el-table-column label="其中(高优先级)" prop="highTotal">
<template slot-scope="scope">
<editableLable
v-bind:id="scope.row.userId.toString()"
v-bind:type="1"
v-bind:preText="scope.row.highUsed.toString() + '/'"
v-bind:text="scope.row.highTotal.toString()"
v-on:change="changeYonghuTotalNumber"
>
</editableLable>
</template>
</el-table-column>
</el-table>
<div class="dsTongjiBlk">
<div v-show="selectedFeature" class="dsTongjiBlk">
<label>地市单位:</label>
<label>{{ dsdw + "公安局" }}</label>
<div class="dsTongji">
<div>地市发查询总数:</div>
<el-input-number
v-model="numTotalDs"
controls-position="right"
:min="0"
></el-input-number>
<numberInput
v-bind:text="numTotalDs"
v-bind:preText="numTotalDsUsed.toString() + '/'"
v-on:change="changeDsTotalNum"
></numberInput>
<div>其中高优先级:</div>
<el-input-number
v-model="numGaoDs"
controls-position="right"
:min="0"
></el-input-number>
<numberInput
v-bind:text="numGaoDs"
v-bind:preText="numGaoDsUsed.toString() + '/'"
v-on:change="changeDsGaoNum"
></numberInput>
</div>
</div>
<el-table :data="tableDateDs" tooltip-effect="dark" style="width: 100%">
<el-table
v-show="selectedFeature"
:data="tableDateDs"
tooltip-effect="dark"
style="width: 100%"
>
<el-table-column label="省/区厅用户名" prop="userName">
</el-table-column>
<el-table-column label="已发送/总数" prop="date"
><template slot-scope="scope">
<div>{{ scope.row.id }}</div>
<el-table-column label="已发送/总数" prop="date">
<template slot-scope="scope">
<editableLable
v-bind:id="scope.row.userId.toString()"
v-bind:type="0"
v-bind:preText="
(scope.row.midUsed + scope.row.highUsed).toString() + '/'
"
v-bind:text="
(scope.row.midTotal + scope.row.highTotal).toString()
"
v-on:change="changeYonghuTotalNumber"
>
</editableLable>
</template>
</el-table-column>
<el-table-column label="其中(高优先级)" prop="highTotal">
<template slot-scope="scope">
<editableLable
v-bind:id="scope.row.userId.toString()"
v-bind:type="1"
v-bind:preText="scope.row.highUsed.toString() + '/'"
v-bind:text="scope.row.highTotal.toString()"
v-on:change="changeYonghuTotalNumber"
>
</editableLable>
</template>
</el-table-column>
</el-table>
</div>
......@@ -111,16 +157,22 @@ import { Fill, Stroke, Style, Text, Icon } from "ol/style";
import { Point } from "ol/geom";
import marker from "@/assets/img/fcxqx/marker.png";
import markers from "@/assets/img/fcxqx/markerS.png";
import editableLable from "@/views/SystemManage/editableLable.vue";
import numberInput from "@/views/SystemManage/numberInput.vue";
import qs from "qs";
export default {
name: "QueryPermission",
components: { editableLable, numberInput },
data() {
return {
stDataObj: {},
dsDataObj: {},
dsdw: "拉萨市",
dishiCode: 0,
tableDateDs: [],
tableDateSt: [],
autoDistribute: true,
isAutoDistribute: true,
id: "olGeojsonMap",
heightWindow: window.innerHeight - 0 + "px",
selectedFeature: null,
......@@ -131,24 +183,20 @@ export default {
],
numTotal: 0,
numTotalSt: 0,
numTotalStUsed: 0,
numGaoSt: 0,
numGaoStUsed: 0,
numTotalDs: 0,
numTotalDsUsed: 0,
numGaoDs: 0,
numGaoDsUsed: 0,
intervalNum: 0,
regionFeatures: [],
pointFeatures: [],
shengtingCode: "540000000000",
};
},
methods: {
getFeatureColor(num = 0) {
if (num > 0.7) {
return this.colorArr[2];
} else if (num > 0.3) {
return this.colorArr[1];
} else {
return this.colorArr[0];
}
},
initMap() {
const self = this;
// 地图地址
......@@ -182,7 +230,6 @@ export default {
src: marker,
}),
});
// style.getText().setText(feature.get("MC"));
return style;
},
});
......@@ -217,7 +264,53 @@ export default {
return style;
},
});
const selectedLayer = new VectorLayer({
const selectedRegionLayer = new VectorLayer({
source: new VectorSource(),
style: function(feature) {
const pstyle = new Style({
text: new Text({
font: "14px MicrosoftYaHei-Bold, MicrosoftYaHei",
fill: new Fill({
color: "#333333",
}),
offsetY: -35,
textAlign: "center",
text: feature.get("totalCount") || "",
}),
image: new Icon({
scale: 0.5,
anchor: [0.5, 120],
anchorXUnits: "fraction",
anchorYUnits: "pixels",
src: markers,
}),
});
const rstyle = new Style({
fill: new Fill({
color: "rgba(154, 218, 252, 0)",
}),
stroke: new Stroke({
color: "#055FE7",
width: 3,
}),
text: new Text({
font: "14px MicrosoftYaHei",
fill: new Fill({
color: "rgba(51, 51, 51, 1)",
}),
backgroundFill: new Fill({
color: "rgba(255, 255, 255, 1)",
}),
textAlign: "center",
padding: [3, 1, 0, 3],
text: feature.get("MC"),
}),
});
const isPoint = feature.getGeometry() instanceof Point;
return isPoint ? pstyle : rstyle;
},
});
const selectedPointLayer = new VectorLayer({
source: new VectorSource(),
style: function(feature) {
const pstyle = new Style({
......@@ -265,7 +358,7 @@ export default {
});
const map = new Map({
layers: [layer, pointLayer, selectedLayer],
layers: [layer, selectedRegionLayer, pointLayer, selectedPointLayer],
controls: [],
target: this.id,
view: new View({
......@@ -275,13 +368,13 @@ export default {
const ext = vectorSource.getExtent();
map.getView().fit(ext);
// 地图鼠标移动事件
map.on("pointermove", function(evt) {
map.on("click", function(evt) {
const pixel = map.getEventPixel(evt.originalEvent);
const features = map.getFeaturesAtPixel(pixel);
// 原更改样式选中
// 鼠标移出清空则打开
// if (features.length <= 0 && self.selectedFeature) {
// selectedLayer.getSource().clear();
// selectedPointLayer.getSource().clear();
// self.selectedFeature = null;
// self.tableDateDs = [];
// }
......@@ -296,19 +389,21 @@ export default {
if (layer.getSource().hasFeature(fea)) {
if (features && features.length > 0) {
self.selectedFeature = fea.clone();
selectedLayer.getSource().clear();
selectedLayer.getSource().addFeature(self.selectedFeature);
selectedRegionLayer.getSource().clear();
selectedPointLayer.getSource().clear();
selectedRegionLayer.getSource().addFeature(self.selectedFeature);
// 找到对应的点
const pFea = self.pointFeatures.filter(
(item) => item.get("CODE_LEV") === fea.get("CODE_LEV")
)[0];
if (pFea) {
selectedLayer.getSource().addFeature(pFea);
selectedPointLayer.getSource().addFeature(pFea);
console.log("dian", pFea);
}
const dsCode = fea.get("CODE_LEV");
self.dsdw = fea.get("MC");
self.dishiCode = fea.get("CODE_LEV");
if (dsCode) {
self.loadDishiData(dsCode);
}
......@@ -317,12 +412,21 @@ export default {
}
});
},
getFeatureColor(num = 0) {
if (num > 0.7) {
return this.colorArr[2];
} else if (num > 0.3) {
return this.colorArr[1];
} else {
return this.colorArr[0];
}
},
loadShengtingData() {
const self = this;
const shengtingCode = "540000000000";
this.$axios({
method: "get",
url: "api/queryCount/provinceMsg/" + shengtingCode,
url: "api/queryCount/provinceMsg/" + self.shengtingCode,
loading: false,
}).then((response) => {
if (response.data.code === 0) {
......@@ -331,12 +435,17 @@ export default {
self.numTotal = response.data.detail.sysCountTotal;
self.numTotalSt = response.data.detail.countTotal;
self.numGaoSt = response.data.detail.highLevTotal;
self.numTotalStUsed = response.data.detail.usedCount;
self.numGaoStUsed = response.data.detail.highLevUsedCount;
} else {
this.$message.error(response.data.message);
}
});
},
loadDishiData(code) {
if (!code) {
code = this.dishiCode;
}
const self = this;
this.$axios({
method: "get",
......@@ -344,8 +453,11 @@ export default {
loading: false,
}).then((response) => {
if (response.data.code === 0) {
self.tableDateDs = response.data.detail.queryCounts;
self.numTotalDs = response.data.detail.countTotal;
self.numGaoDs = response.data.detail.highLevTotal;
self.numTotalDsUsed = response.data.detail.usedCount;
self.numGaoDsUsed = response.data.detail.highLevUsedCount;
} else {
this.$message.error(response.data.message);
}
......@@ -357,7 +469,7 @@ export default {
url: "/api/queryCount/getPercentage",
loading: false,
headers: {
"QueryCount": "QueryCount",
QueryCount: "QueryCount",
},
}).then((response) => {
if (response.data.code === 0) {
......@@ -382,6 +494,105 @@ export default {
}
});
},
totalNumChanged(val) {
console.log("限制输入数字外的其他类型");
if (val && !Number(val)) {
this.numTotal = this.numTotal.replace(/[^0-9]/gi, "");
}
},
// 一键分配按钮点击
autoDistribute() {
const self = this;
this.$axios({
method: "post",
url: "/api/queryCount/autoAssignment",
params: {
totalCount: self.numTotal,
areaCount: self.regionFeatures.length + 1,
},
}).then((res) => {
if (res.data.code === 0) {
self.$message("一键分配成功");
// 更改页面数据(重新加载页面)
self.getMapPageData();
self.loadShengtingData();
self.loadDishiData();
} else {
self.$message.error("一键分配失败,请重试");
}
});
},
// 省厅用户修改
changeStPeo(a, b, c) {
console.log(a, b, c);
},
// 修改省厅发查询总数
changeStTotalNum(val) {
this.changeTotalNumber(this.shengtingCode, 0, val, function(res) {
console.log("修改省厅总数成功");
});
},
// 修改省厅高优先级总数
changeStGaoNum(val) {
this.changeTotalNumber(this.shengtingCode, 1, val, function(res) {
console.log("修改省厅高优先级成功");
});
},
// 修改地市发查询总数
changeDsTotalNum(val) {
this.changeTotalNumber(this.dishiCode, 0, val, function(res) {
console.log("修改省厅总数成功");
});
},
// 修改地市高优先级总数
changeDsGaoNum(val) {
this.changeTotalNumber(this.dishiCode, 1, val, function(res) {
console.log("修改省厅高优先级成功");
});
},
// 修改地区省/区厅发查询总数、高优先级数
// 0:修改总数 1:修改高优先级
changeTotalNumber(id, type, num, fn) {
const self = this;
this.$axios({
method: "put",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
url: "/api/queryCount/updateAreaQueryCount",
data: qs.stringify({
dwCode: id,
flag: type,
num: num,
}),
}).then((res) => {
if (res.data.code === 0) {
if (fn) {
fn(res.data);
}
}
});
},
// 修改用户发查询总数、高优先级数
// 0:修改总数 1:修改高优先级
changeYonghuTotalNumber(id, type, num) {
const self = this;
this.$axios({
method: "put",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
url: "/api/queryCount/updateUserQueryCount",
data: qs.stringify({
userId: id,
flag: type,
num: num,
}),
}).then((res) => {
if (res.data.code === 0) {
}
});
},
},
mounted() {
this.initMap();
......@@ -389,11 +600,14 @@ export default {
// 添加定时任务,更新地图数据
const intervalTime = 3 * 60 * 1000; //3分钟
this.getMapPageData();
const self = this;
this.intervalNum = window.setInterval(
// function() {
// // 掉接口更新地图,并添加参数(header),不干扰登陆状态
// }
this.getMapPageData(),
function() {
// 掉接口更新地图,并添加参数(header),不干扰登陆状态
this.getMapPageData();
// 判断当前时间跨天则重新请求数据
},
intervalTime
);
},
......@@ -456,6 +670,11 @@ export default {
}
.tables {
flex: 1;
& .buleBlk {
width: 4px;
height: 16px;
margin-top: 0.2rem;
}
}
.firstLine {
display: flex;
......
<!--
* @Author: your name
* @Date: 2021-12-27 11:19:03
* @LastEditTime: 2021-12-27 21:15:20
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \founder_vue\src\views\SystemManage\editableLable.vue
-->
<template>
<div class="editableLable">
<label v-if="!canEdit" @click="enableEdit">{{
preText.toString() + curTxt.toString()
}}</label>
<div v-else>
<span class="preText">{{ preText }}</span>
<el-input
v-model="curTxt"
@change="textChange"
@blur="canEdit = false"
></el-input>
</div>
</div>
</template>
<script>
export default {
props: {
id: {
type: String,
require: false,
default: "",
},
type: {
type: Number,
require: false,
default: 0,
},
// 当前文本
text: {
type: String,
require: false,
default: "",
},
// 固定前缀
preText: {
type: String,
require: false,
default: "",
},
},
data() {
return {
canEdit: false,
curTxt: "",
};
},
watch: {
text: function(text) {
this.curTxt = text;
},
},
methods: {
textChange(txt) {
this.curTxt = txt;
this.canEdit = false;
this.$emit("change", this.id, this.type, txt);
},
enableEdit() {
this.canEdit = true;
},
},
mounted() {
this.curTxt = this.text;
},
};
</script>
<style lang="scss" scoped>
.editableLable {
width: 100%;
height: 100%;
& > label {
display: block;
}
}
.preText {
display: inline-block;
left: 1rem;
position: absolute;
z-index: 1;
font-size: 14px;
font-family: MicrosoftYaHei;
color: #333333;
line-height: 24px;
}
/deep/ .el-input__inner {
padding-left: 1.5rem;
width: 72px;
height: 24px;
}
</style>
<!--
* @Author: your name
* @Date: 2021-12-27 15:29:03
* @LastEditTime: 2021-12-27 17:50:56
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \founder_vue\src\views\SystemManage\numberInput.vue
-->
<template>
<div class="numberinput">
<span class="preText">{{ preText }}</span>
<el-input-number
v-model="curTxt"
@change="textChange"
size="mini"
:min="0"
controls-position="right"
></el-input-number>
</div>
</template>
<script>
export default {
props: {
// 当前文本
text: {
type: Number,
require: false,
default: 0,
},
// 固定前缀
preText: {
type: String,
require: false,
default: "",
},
},
watch: {
text: function(text) {
this.curTxt = text;
},
},
data() {
return {
curTxt: "",
};
},
methods: {
textChange(val) {
this.curTxt = val;
if (val && !Number(val)) {
this.curTxt = val.replace(/[^0-9]/gi, "");
}
this.$emit("change", this.curTxt);
},
},
mounted() {
this.curTxt = this.text;
},
};
</script>
<style lang="scss" scoped>
.numberinput {
display: inline-block;
}
.preText {
display: inline-block;
// left: 1rem;
margin-left: 10px;
position: absolute;
z-index: 1;
font-size: 18px;
font-family: MicrosoftYaHei;
color: #333333;
line-height: 24px;
}
/deep/ .el-input__inner {
padding-left: 1.5rem;
}
</style>
/*
* @Author: your name
* @Date: 2021-09-07 09:57:48
* @LastEditTime: 2021-12-25 13:19:44
* @LastEditTime: 2021-12-27 20:29:29
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: \指纹系统\founder_vue\vue.config.js
......@@ -110,7 +110,7 @@ module.exports = {
"/api": {
// target: "http://192.168.0.137:8080/", //统一的请求头部每次修改都要重启才会生效 http://39.99.224.27:8006/
// target: "http://192.168.128.166:8099/", // 张 认定
target: "http://192.168.128.114:8099", // 湖南-马
// target: "http://192.168.128.114:8099", // 湖南-马
// target: "http://192.168.128.116:8099", // 湖南-王
// target: "http://192.168.128.102:8099", // 湖南-张呈光
// target: "http://172.18.116.73:8099/", //统一的请求头部每次修改都要重启才会生效 http://39.99.224.27:8006/ ma
......@@ -119,6 +119,7 @@ module.exports = {
// target: "http://www.meetfood.cn:2390", // 湖南-线上
// target:"http://zwpt.xzclub.top:9333/",
// target: "http://192.168.128.102:8099", // 江
target: "http://192.168.128.105:8099", // 张
ws: true,
changeOrigin: true,
pathRewrite: {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment