@@ -1,7 +1,7 @@ | |||||
<!-- | <!-- | ||||
* @Date: 2021-11-29 11:14:13 | * @Date: 2021-11-29 11:14:13 | ||||
* @LastEditors: JinxuChen | * @LastEditors: JinxuChen | ||||
* @LastEditTime: 2021-12-06 18:13:14 | |||||
* @LastEditTime: 2021-12-08 14:55:21 | |||||
* @FilePath: \GpsCardAdmin\README.md | * @FilePath: \GpsCardAdmin\README.md | ||||
* @description: | * @description: | ||||
--> | --> | ||||
@@ -45,4 +45,9 @@ FEATURE | |||||
`2021年12月6日` | `2021年12月6日` | ||||
FEATURE | FEATURE | ||||
- 增加 封装接口地址 | - 增加 封装接口地址 | ||||
- 修改 登录账号密码 telpo telpo#1234 | |||||
- 修改 登录账号密码 telpo telpo#1234 | |||||
## v1.0.5F | |||||
`2021年12月8日` | |||||
FEATURE | |||||
- 完成 1.告警识别内容 2.通用例外 3.用户例外 4.告警信息查询 模块功能接口调试对接 |
@@ -0,0 +1,21 @@ | |||||
/* | |||||
* @Date: 2021-12-07 17:32:38 | |||||
* @LastEditors: JinxuChen | |||||
* @LastEditTime: 2021-12-07 17:49:01 | |||||
* @FilePath: \GpsCardAdmin\src\api\alarm-query.js | |||||
* @description: 自动报用设备警告信息查询 | |||||
*/ | |||||
import request from '@/utils/request' | |||||
export const APIAlarmQuery = { | |||||
getAlarmQuery, | |||||
}; | |||||
export default APIAlarmQuery; | |||||
// 自动报用设备警告信息查询 | |||||
function getAlarmQuery(params) { | |||||
return request({ | |||||
url: '/api/v1/Fence/AreaAlarmQuery', | |||||
method: 'post', | |||||
data: params, | |||||
}); | |||||
} | |||||
@@ -0,0 +1,38 @@ | |||||
/* | |||||
* @Date: 2021-12-07 17:32:38 | |||||
* @LastEditors: JinxuChen | |||||
* @LastEditTime: 2021-12-07 17:40:55 | |||||
* @FilePath: \GpsCardAdmin\src\api\common-exception.js | |||||
* @description: 通用告警关键字 | |||||
*/ | |||||
import request from '@/utils/request' | |||||
export const APIExceptionGen = { | |||||
getRecognitionGen, | |||||
changeRecognitionGen, | |||||
delRecognitionGen | |||||
}; | |||||
export default APIExceptionGen; | |||||
// 自动报警通用关键词查询(分页) | |||||
function getRecognitionGen(params) { | |||||
return request({ | |||||
url: '/api/v1/Fence/AreaGeneralFilterQuery', | |||||
method: 'post', | |||||
data: params, | |||||
}); | |||||
} | |||||
// 新增/编辑自动报通用关键词 | |||||
function changeRecognitionGen(params) { | |||||
return request({ | |||||
url: '/api/v1/Fence/AddAreaGeneralFilter', | |||||
method: 'post', | |||||
data: params, | |||||
}); | |||||
} | |||||
// 删除系统/通用关键词 | |||||
function delRecognitionGen(params) { | |||||
return request({ | |||||
url: '/api/v1/Fence/DeleteAreaAlarmFilter', | |||||
method: 'post', | |||||
data: params, | |||||
}); | |||||
} |
@@ -1,13 +1,16 @@ | |||||
/* | /* | ||||
* @Date: 2021-12-06 17:31:43 | * @Date: 2021-12-06 17:31:43 | ||||
* @LastEditors: JinxuChen | * @LastEditors: JinxuChen | ||||
* @LastEditTime: 2021-12-06 18:07:02 | |||||
* @LastEditTime: 2021-12-07 17:55:13 | |||||
* @FilePath: \GpsCardAdmin\src\api\off-limits-manage.js | * @FilePath: \GpsCardAdmin\src\api\off-limits-manage.js | ||||
* @description: 封装告警识别内容接口 | |||||
* @description: 告警识别内容接口 | |||||
*/ | */ | ||||
import request from '@/utils/request' | import request from '@/utils/request' | ||||
export const APILimits = { | export const APILimits = { | ||||
getRecognition | |||||
getRecognition, | |||||
changeRecognition, | |||||
areaCategoryQuery, | |||||
delRecognition | |||||
}; | }; | ||||
export default APILimits; | export default APILimits; | ||||
@@ -15,7 +18,31 @@ export default APILimits; | |||||
// 自动报警通用关键词查询 | // 自动报警通用关键词查询 | ||||
function getRecognition(params) { | function getRecognition(params) { | ||||
return request({ | return request({ | ||||
url: '/api/v1/Fence/AreaGeneralFilterQuery', | |||||
url: '/api/v1/Fence/AreaSysFilterQuery', | |||||
method: 'post', | |||||
data: params, | |||||
}); | |||||
} | |||||
// 新增/编辑自动报警通用关键词查询, 通过id判断是新增还是编辑 0是新增 不是0则为编辑 | |||||
function changeRecognition(params) { | |||||
return request({ | |||||
url: '/api/v1/Fence/AddAreaSysFilter', | |||||
method: 'post', | |||||
data: params, | |||||
}); | |||||
} | |||||
// 删除自动报警通用关键词, | |||||
function delRecognition(params) { | |||||
return request({ | |||||
url: '/api/v1/Fence/DeleteAreaAlarmFilter', | |||||
method: 'post', | |||||
data: params, | |||||
}); | |||||
} | |||||
// 自动报警分类查询(分页 | |||||
function areaCategoryQuery(params) { | |||||
return request({ | |||||
url: '/api/v1/Fence/AreaCategoryQuery', | |||||
method: 'post', | method: 'post', | ||||
data: params, | data: params, | ||||
}); | }); |
@@ -0,0 +1,38 @@ | |||||
/* | |||||
* @Date: 2021-12-07 17:32:38 | |||||
* @LastEditors: JinxuChen | |||||
* @LastEditTime: 2021-12-08 10:45:21 | |||||
* @FilePath: \GpsCardAdmin\src\api\user-exception.js | |||||
* @description: 用户告警关键字 | |||||
*/ | |||||
import request from '@/utils/request' | |||||
export const APIExceptionUser = { | |||||
getRecognitionUser, | |||||
changeRecognitionUser, | |||||
delRecognitionUser | |||||
}; | |||||
export default APIExceptionUser; | |||||
// 自动报警用户关键词查询(分页) | |||||
function getRecognitionUser(params) { | |||||
return request({ | |||||
url: '/api/v1/Fence/AreaUserFilterQuery', | |||||
method: 'post', | |||||
data: params, | |||||
}); | |||||
} | |||||
// 新增/编辑自动报用户关键词 | |||||
function changeRecognitionUser(params) { | |||||
return request({ | |||||
url: '/api/v1/Fence/AddAreaUserFilter', | |||||
method: 'post', | |||||
data: params, | |||||
}); | |||||
} | |||||
// 删除用户关键词 | |||||
function delRecognitionUser(params) { | |||||
return request({ | |||||
url: '/api/v1/Fence/DeleteAreaUserAlarmFilter', | |||||
method: 'post', | |||||
data: params, | |||||
}); | |||||
} |
@@ -1,7 +1,7 @@ | |||||
/* | /* | ||||
* @Date: 2021-11-30 15:35:16 | * @Date: 2021-11-30 15:35:16 | ||||
* @LastEditors: JinxuChen | * @LastEditors: JinxuChen | ||||
* @LastEditTime: 2021-11-30 17:51:56 | |||||
* @LastEditTime: 2021-12-07 10:49:30 | |||||
* @FilePath: \GpsCardAdmin\src\main.js | * @FilePath: \GpsCardAdmin\src\main.js | ||||
* @description: | * @description: | ||||
*/ | */ | ||||
@@ -21,7 +21,8 @@ import router from './router' | |||||
import '@/icons' // icon | import '@/icons' // icon | ||||
import '@/permission' // permission control | import '@/permission' // permission control | ||||
import transfrom from '@/utils/transfrom'; | |||||
Vue.use(transfrom); | |||||
/** | /** | ||||
* If you don't want to use mock-server | * If you don't want to use mock-server | ||||
* you want to use MockJs for mock api | * you want to use MockJs for mock api | ||||
@@ -1,8 +1,8 @@ | |||||
/* | /* | ||||
* @Date: 2021-11-30 15:09:25 | * @Date: 2021-11-30 15:09:25 | ||||
* @LastEditors: JinxuChen | * @LastEditors: JinxuChen | ||||
* @LastEditTime: 2021-12-06 18:29:49 | |||||
* @LastEditTime: 2021-12-08 14:55:27 | |||||
* @FilePath: \GpsCardAdmin\src\utils\model.js | * @FilePath: \GpsCardAdmin\src\utils\model.js | ||||
* @description: 版本号 | * @description: 版本号 | ||||
*/ | */ | ||||
export const VersionModel = '1.0.4'; | |||||
export const VersionModel = '1.0.5'; |
@@ -0,0 +1,16 @@ | |||||
/* | |||||
* @Date: 2021-12-07 10:45:23 | |||||
* @LastEditors: JinxuChen | |||||
* @LastEditTime: 2021-12-08 14:57:07 | |||||
* @FilePath: \GpsCardAdmin\src\utils\transfrom.js | |||||
* @description: 将接口里面的kindId转化为文字 | |||||
*/ | |||||
exports.install = function (Vue, options) { | |||||
Vue.prototype.transfromToType = function(value) { | |||||
if(value === 1) { | |||||
return '关键字' | |||||
} else if(value === 2 ) { | |||||
return '固定地点' | |||||
} | |||||
} | |||||
} |
@@ -1,7 +1,7 @@ | |||||
<!-- | <!-- | ||||
* @Date: 2021-11-30 09:44:24 | * @Date: 2021-11-30 09:44:24 | ||||
* @LastEditors: JinxuChen | * @LastEditors: JinxuChen | ||||
* @LastEditTime: 2021-12-01 14:30:07 | |||||
* @LastEditTime: 2021-12-08 14:57:44 | |||||
* @FilePath: \GpsCardAdmin\src\views\off-limits-manage\alarm-query\index.vue | * @FilePath: \GpsCardAdmin\src\views\off-limits-manage\alarm-query\index.vue | ||||
* @description: | * @description: | ||||
--> | --> | ||||
@@ -40,6 +40,7 @@ | |||||
<pagination | <pagination | ||||
v-show="total>0" | v-show="total>0" | ||||
:total="total" | :total="total" | ||||
ref="pages" | |||||
:page.sync="page" | :page.sync="page" | ||||
:limit.sync="limit" | :limit.sync="limit" | ||||
@pagination="getList" | @pagination="getList" | ||||
@@ -51,6 +52,7 @@ | |||||
import TopMenu from "@/components/TopMenu"; | import TopMenu from "@/components/TopMenu"; | ||||
import TTable from "../../../components/TTable/TTable"; | import TTable from "../../../components/TTable/TTable"; | ||||
import Pagination from "@/components/Pagination"; | import Pagination from "@/components/Pagination"; | ||||
import APIAlarmQuery from "@/api/alarm-query"; | |||||
export default { | export default { | ||||
name: "", | name: "", | ||||
components: { TTable, TopMenu, Pagination }, | components: { TTable, TopMenu, Pagination }, | ||||
@@ -72,7 +74,7 @@ export default { | |||||
{ prop: "alarmType", title: "告警类别" }, | { prop: "alarmType", title: "告警类别" }, | ||||
{ prop: "imei", title: "设备IMEI" }, | { prop: "imei", title: "设备IMEI" }, | ||||
{ prop: "alarmAddress", title: "告警地址/经纬度" }, | { prop: "alarmAddress", title: "告警地址/经纬度" }, | ||||
{ prop: "createTime", title: "创建时间" }, | |||||
{ prop: "createTime", title: "创建时间" } | |||||
/* { | /* { | ||||
action: true, | action: true, | ||||
title: "操作", | title: "操作", | ||||
@@ -83,15 +85,15 @@ export default { | |||||
], | ], | ||||
list: [ | list: [ | ||||
{ | { | ||||
alarmType: '出走风险', | |||||
alarmType: "出走风险", | |||||
imei: "141152552521", | imei: "141152552521", | ||||
alarmAddress: "广东省佛山市南海区", | alarmAddress: "广东省佛山市南海区", | ||||
createTime: "2021-11-30" | createTime: "2021-11-30" | ||||
} | } | ||||
], | ], | ||||
total: 1, | |||||
total: 0, | |||||
page: 1, | page: 1, | ||||
limit: 10, | |||||
limit: 10 | |||||
}; | }; | ||||
}, | }, | ||||
methods: { | methods: { | ||||
@@ -106,7 +108,30 @@ export default { | |||||
console.log("删除", row); | console.log("删除", row); | ||||
}, | }, | ||||
// 获取分页数据 | // 获取分页数据 | ||||
getList() {} | |||||
getList() { | |||||
let reqBody = { | |||||
pageNumber: this.page, | |||||
begNumber: this.limit, | |||||
imei: this.searchValue | |||||
}; | |||||
APIAlarmQuery.getAlarmQuery(reqBody).then(res => { | |||||
this.list = res.data.map(m => { | |||||
return { | |||||
imei: m.serialno, | |||||
alarmType: m.typeId, | |||||
content: m.address, | |||||
createTime: m.createTime || "无", | |||||
glat: m.glat, | |||||
glng: m.glng, | |||||
keyId: m.keyId | |||||
}; | |||||
}); | |||||
this.total = res.count; | |||||
}); | |||||
} | |||||
}, | |||||
mounted() { | |||||
this.getList(); | |||||
} | } | ||||
}; | }; | ||||
</script> | </script> | ||||
@@ -1,7 +1,7 @@ | |||||
<!-- | <!-- | ||||
* @Date: 2021-11-30 09:44:24 | * @Date: 2021-11-30 09:44:24 | ||||
* @LastEditors: JinxuChen | * @LastEditors: JinxuChen | ||||
* @LastEditTime: 2021-12-06 18:28:18 | |||||
* @LastEditTime: 2021-12-08 10:37:15 | |||||
* @FilePath: \GpsCardAdmin\src\views\off-limits-manage\alarm-recognition\index.vue | * @FilePath: \GpsCardAdmin\src\views\off-limits-manage\alarm-recognition\index.vue | ||||
* @description: | * @description: | ||||
--> | --> | ||||
@@ -16,6 +16,7 @@ | |||||
@click="onAdd" | @click="onAdd" | ||||
>添加</el-button> | >添加</el-button> | ||||
<el-button | <el-button | ||||
v-show="false" | |||||
class="filter-item" | class="filter-item" | ||||
style="margin-left: 10px;" | style="margin-left: 10px;" | ||||
type="primary" | type="primary" | ||||
@@ -23,27 +24,14 @@ | |||||
@click="onImportBatch" | @click="onImportBatch" | ||||
>批量导入</el-button> | >批量导入</el-button> | ||||
<!-- 下拉 --> | <!-- 下拉 --> | ||||
<!-- 类型 --> | |||||
<el-select | |||||
v-model="type" | |||||
placeholder="类型" | |||||
style="width: 130px; margin-left: 10px;" | |||||
filterable | |||||
> | |||||
<el-option | |||||
v-for="item in typeOptions" | |||||
:key="item.value" | |||||
:label="item.label" | |||||
:value="item.value" | |||||
class="filter-item" | |||||
></el-option> | |||||
</el-select> | |||||
<!-- 类别 --> | <!-- 类别 --> | ||||
<el-select | <el-select | ||||
v-model="model" | v-model="model" | ||||
placeholder="类别" | placeholder="类别" | ||||
style="width: 130px; margin-left: 10px;" | style="width: 130px; margin-left: 10px;" | ||||
filterable | filterable | ||||
@change="outSelecChange" | |||||
clearable | |||||
> | > | ||||
<el-option | <el-option | ||||
v-for="item in modelOptions" | v-for="item in modelOptions" | ||||
@@ -60,6 +48,7 @@ | |||||
style="width: 200px; margin-left: 10px;" | style="width: 200px; margin-left: 10px;" | ||||
class="filter-item" | class="filter-item" | ||||
@keyup.enter.native="onSearch" | @keyup.enter.native="onSearch" | ||||
clearable | |||||
/> | /> | ||||
<el-button | <el-button | ||||
class="filter-item" | class="filter-item" | ||||
@@ -75,33 +64,31 @@ | |||||
v-show="total>0" | v-show="total>0" | ||||
:total="total" | :total="total" | ||||
:page.sync="page" | :page.sync="page" | ||||
ref="pages" | |||||
:limit.sync="limit" | :limit.sync="limit" | ||||
@pagination="getList" | @pagination="getList" | ||||
/> | /> | ||||
<el-dialog :visible.sync="dialogPvVisible" :title="dialogTitle"> | <el-dialog :visible.sync="dialogPvVisible" :title="dialogTitle"> | ||||
<el-form | <el-form | ||||
ref="dataForm" | |||||
v-model="form" | |||||
ref="form" | |||||
:rules="formRules" | |||||
:model="form" | |||||
label-position="left" | label-position="left" | ||||
label-width="70px" | label-width="70px" | ||||
style="width: 400px; margin-left:50px;" | |||||
style="width: 400px;" | |||||
> | > | ||||
<!-- 类型 --> | <!-- 类型 --> | ||||
<el-form-item label="类型" prop="type"> | |||||
<el-select v-model="form.type" class="filter-item" filterable> | |||||
<el-option | |||||
v-for="item in typeOptions" | |||||
:key="item.value" | |||||
:label="item.label" | |||||
:value="item.value" | |||||
/> | |||||
</el-select> | |||||
<el-form-item label="类型" prop="typeRadio" v-show="false"> | |||||
<el-radio-group v-model="form.typeRadio"> | |||||
<el-radio :label="1" border>关键字</el-radio> | |||||
<el-radio :label="2" border>固定地点</el-radio> | |||||
</el-radio-group> | |||||
</el-form-item> | </el-form-item> | ||||
<!-- 类别 --> | <!-- 类别 --> | ||||
<el-form-item label="类别" prop="model"> | <el-form-item label="类别" prop="model"> | ||||
<el-select v-model="form.model" class="filter-item" filterable> | |||||
<el-select v-model="form.model" class="filter-item" @change="onSelectChange"> | |||||
<el-option | <el-option | ||||
v-for="item in modelOptions" | |||||
v-for="item in formOptions" | |||||
:key="item.value" | :key="item.value" | ||||
:label="item.label" | :label="item.label" | ||||
:value="item.value" | :value="item.value" | ||||
@@ -109,17 +96,25 @@ | |||||
</el-select> | </el-select> | ||||
</el-form-item> | </el-form-item> | ||||
<!-- 内容名称 --> | <!-- 内容名称 --> | ||||
<el-form-item label="内容名称" prop="content"> | |||||
<el-input v-model="form.content" /> | |||||
<el-form-item label="内容名称" prop="content" label-width="80px"> | |||||
<el-input v-model="form.content" style="width: 80%"/> | |||||
</el-form-item> | |||||
<!-- 状态 --> | |||||
<el-form-item label="状态" prop="status" required> | |||||
<el-switch v-model="form.status" active-text="打开" inactive-text="关闭"></el-switch> | |||||
</el-form-item> | </el-form-item> | ||||
<!-- 创建时间 --> | <!-- 创建时间 --> | ||||
<el-form-item label="创建时间" prop="timestamp"> | |||||
<el-form-item label="创建时间" prop="timestamp" v-show="false"> | |||||
<el-date-picker v-model="form.createTime" type="datetime" /> | <el-date-picker v-model="form.createTime" type="datetime" /> | ||||
</el-form-item> | </el-form-item> | ||||
</el-form> | </el-form> | ||||
<span slot="footer" class="dialog-footer"> | <span slot="footer" class="dialog-footer"> | ||||
<el-button type="error" @click="dialogPvVisible = false">取消</el-button> | <el-button type="error" @click="dialogPvVisible = false">取消</el-button> | ||||
<el-button type="primary" @click="dialogStatus === 'update' ? update() : add()">确认</el-button> | |||||
<el-button | |||||
type="primary" | |||||
:loading="loading" | |||||
@click="dialogStatus === 'update' ? update('form') : add('form')" | |||||
>确认</el-button> | |||||
</span> | </span> | ||||
</el-dialog> | </el-dialog> | ||||
<el-dialog :visible.sync="dialogUpload"> | <el-dialog :visible.sync="dialogUpload"> | ||||
@@ -133,7 +128,7 @@ import TopMenu from "@/components/TopMenu"; | |||||
import TTable from "../../../components/TTable/TTable"; | import TTable from "../../../components/TTable/TTable"; | ||||
import Pagination from "@/components/Pagination"; | import Pagination from "@/components/Pagination"; | ||||
import UploadExcelComponent from "@/components/UploadExcel/index.vue"; | import UploadExcelComponent from "@/components/UploadExcel/index.vue"; | ||||
import APILimits from '@/api/off-limits-manage' | |||||
import APILimits from "@/api/off-limits-manage"; | |||||
export default { | export default { | ||||
name: "", | name: "", | ||||
components: { TTable, TopMenu, Pagination, UploadExcelComponent }, | components: { TTable, TopMenu, Pagination, UploadExcelComponent }, | ||||
@@ -157,40 +152,14 @@ export default { | |||||
], | ], | ||||
type: "", | type: "", | ||||
model: "", | model: "", | ||||
typeOptions: [ | |||||
{ | |||||
value: "1", | |||||
label: "类别1" | |||||
}, | |||||
{ | |||||
value: "2", | |||||
label: "类别1" | |||||
}, | |||||
{ | |||||
value: "3", | |||||
label: "类别1" | |||||
}, | |||||
{ | |||||
value: "4", | |||||
label: "类别1" | |||||
} | |||||
], | |||||
modelOptions: [ | |||||
{ | |||||
value: "1", | |||||
label: "类别1" | |||||
}, | |||||
{ | |||||
value: "2", | |||||
label: "类别1" | |||||
} | |||||
], | |||||
modelOptions: [], | |||||
searchValue: "", | searchValue: "", | ||||
columns: [ | columns: [ | ||||
{ prop: "type", title: "类型" }, | { prop: "type", title: "类型" }, | ||||
{ prop: "model", title: "类别" }, | { prop: "model", title: "类别" }, | ||||
{ prop: "content", title: "内容名称" }, | { prop: "content", title: "内容名称" }, | ||||
{ prop: "createTime", title: "创建时间" }, | { prop: "createTime", title: "创建时间" }, | ||||
{ prop: "status", title: "状态" }, | |||||
{ | { | ||||
action: true, | action: true, | ||||
title: "操作", | title: "操作", | ||||
@@ -200,58 +169,153 @@ export default { | |||||
] | ] | ||||
} | } | ||||
], | ], | ||||
list: [ | |||||
{ | |||||
type: "关键子", | |||||
model: "出走危险", | |||||
content: "港口码头", | |||||
createTime: "2021-11-30" | |||||
} | |||||
], | |||||
total: 1, | |||||
list: [], | |||||
total: 0, | |||||
page: 1, | page: 1, | ||||
limit: 10, | limit: 10, | ||||
dialogPvVisible: false, | dialogPvVisible: false, | ||||
dialogStatus: "", | dialogStatus: "", | ||||
dialogTitle: "修改告警识别内容", | dialogTitle: "修改告警识别内容", | ||||
form: { | form: { | ||||
type: "", | |||||
typeRadio: 1, | |||||
model: "", | model: "", | ||||
content: "", | content: "", | ||||
createTime: "" | |||||
createTime: "", | |||||
resource: "", | |||||
categoryId: "", | |||||
status: true, | |||||
id: "" | |||||
}, | |||||
formRules: { | |||||
content: [ | |||||
{ | |||||
required: true, | |||||
message: "请输入内容名称", | |||||
trigger: "blur" | |||||
} | |||||
], | |||||
typeRadio: [ | |||||
{ required: true, message: "请选择类型", trigger: "change" } | |||||
], | |||||
model: [ | |||||
{ required: true, message: "请选择类别", trigger: "change" } | |||||
] | |||||
}, | }, | ||||
dialogUpload: false | |||||
formOptions: [], | |||||
dialogUpload: false, | |||||
loading: false | |||||
}; | }; | ||||
}, | }, | ||||
watch: { | |||||
model(value) { | |||||
if (value === "") { | |||||
this.getList(); | |||||
} | |||||
}, | |||||
searchValue(value) { | |||||
if (value === "") { | |||||
this.getList(); | |||||
} | |||||
} | |||||
}, | |||||
methods: { | methods: { | ||||
// 清空表单 | |||||
resetForm() { | |||||
this.form = { | |||||
typeRadio: 1, | |||||
model: "", | |||||
content: "", | |||||
createTime: "", | |||||
resource: "", | |||||
categoryId: "", | |||||
status: true | |||||
}; | |||||
}, | |||||
// 添加 | // 添加 | ||||
onAdd() { | onAdd() { | ||||
console.log("add"); | |||||
this.form = ""; | |||||
this.resetForm(); | |||||
/* this.form.typeRadio = 1; */ | |||||
this.dialogTitle = "添加告警识别内容"; | this.dialogTitle = "添加告警识别内容"; | ||||
this.dialogPvVisible = true; | this.dialogPvVisible = true; | ||||
this.dialogStatus = "add"; | this.dialogStatus = "add"; | ||||
this.form.status = true; | |||||
this.getAreaCategoryQuery(); | |||||
}, | }, | ||||
add() { | |||||
console.log("add"); | |||||
add(formName) { | |||||
let reqBody = { | |||||
id: 0, | |||||
categoryId: this.form.categoryId, | |||||
keyword: this.form.content, | |||||
status: this.form.status | |||||
}; | |||||
this.$refs[formName].validate(valid => { | |||||
if (valid) { | |||||
APILimits.changeRecognition(reqBody).then(res => { | |||||
console.log(res); | |||||
if (res.code === 0) { | |||||
this.dialogPvVisible = false; | |||||
this.$message({ | |||||
message: "增加成功", | |||||
type: "success" | |||||
}); | |||||
this.getList(); | |||||
} | |||||
}); | |||||
} else { | |||||
return false; | |||||
} | |||||
}); | |||||
}, | }, | ||||
// 批量导入, ##注意 ,批量导入格式必须跟表格的一样 | // 批量导入, ##注意 ,批量导入格式必须跟表格的一样 | ||||
onImportBatch() { | onImportBatch() { | ||||
this.dialogUpload = true; | this.dialogUpload = true; | ||||
}, | }, | ||||
// 搜索 | // 搜索 | ||||
onSearch() {}, | |||||
onSearch() { | |||||
this.$refs['pages'].currentPage = 1; | |||||
this.getList(); | |||||
}, | |||||
// 修改 | // 修改 | ||||
onUpdate(row) { | onUpdate(row) { | ||||
console.log("row", row); | |||||
this.getAreaCategoryQuery(); | |||||
this.dialogPvVisible = true; | this.dialogPvVisible = true; | ||||
this.dialogStatus = "update"; | this.dialogStatus = "update"; | ||||
this.dialogTitle = "修改告警识别内容"; | |||||
this.form = Object.assign({}, row); // copy obj | |||||
this.dialogTitle = "修改告警识别内容"; // copy obj | |||||
/* this.form = Object.assign({}, row); */ ; | |||||
this.form.categoryId = row.categoryId; | |||||
this.form.createTime = new Date(this.form.createTime); | this.form.createTime = new Date(this.form.createTime); | ||||
console.log("修改", row); | |||||
this.form.typeRadio = row.kindId; | |||||
this.form.model = row.categoryId; | |||||
this.form.id = row.id; | |||||
this.form.content = row.content; | |||||
this.form.status = row.status === '打开' ? true : false; | |||||
}, | }, | ||||
update() { | |||||
console.log("update"); | |||||
update(formName) { | |||||
let reqBody = { | |||||
id: this.form.id, //0 是新增 选中的rouw的id是修改 | |||||
categoryId: this.form.categoryId, | |||||
kindId: this.form.typeRadio, | |||||
keyword: this.form.content, | |||||
status: this.form.status | |||||
}; | |||||
this.$refs[formName].validate(valid => { | |||||
if (valid) { | |||||
APILimits.changeRecognition(reqBody).then(res => { | |||||
console.log(res); | |||||
if (res.code === 0) { | |||||
this.dialogPvVisible = false; | |||||
this.$message({ | |||||
message: "修改成功", | |||||
type: "success" | |||||
}); | |||||
this.getList(); | |||||
} | |||||
}); | |||||
} else { | |||||
return false; | |||||
} | |||||
}); | |||||
}, | }, | ||||
// 删除 | // 删除 | ||||
onDelete(row) { | onDelete(row) { | ||||
@@ -262,25 +326,72 @@ export default { | |||||
type: "warning" | type: "warning" | ||||
}) | }) | ||||
.then(() => { | .then(() => { | ||||
this.$message({ | |||||
type: "success", | |||||
message: "删除成功!" | |||||
}); | |||||
let reqBody = { | |||||
id: row.id, | |||||
type: "system" | |||||
}; | |||||
APILimits.delRecognition(reqBody). | |||||
then(res => { | |||||
if ((res.code === 0)) { | |||||
this.$message({ | |||||
type: "success", | |||||
message: "删除成功!" | |||||
}); | |||||
this.getList(); | |||||
} else { | |||||
this.$message({ | |||||
type: "error", | |||||
message: "删除失败!" | |||||
}); | |||||
} | |||||
}); | |||||
}) | }) | ||||
.catch(() => {}); | .catch(() => {}); | ||||
}, | }, | ||||
// 获取分页数据 | // 获取分页数据 | ||||
getList() { | getList() { | ||||
this.loading = true; | |||||
let reqBody = { | |||||
pageNumber: this.page, | |||||
begNumber: this.limit, | |||||
categoryId: this.model, | |||||
keyword: this.searchValue | |||||
}; | |||||
APILimits.getRecognition(reqBody).then(res => { | |||||
this.list = res.data.map(m => { | |||||
return { | |||||
type: this.transfromToType(m.kindId), | |||||
model: m.categoryName, | |||||
content: m.keyword, | |||||
createTime: m.createTime, | |||||
kindId: m.kindId, | |||||
categoryId: m.categoryId, | |||||
status: m.status === true ? '打开' : '关闭', | |||||
id: m.id | |||||
}; | |||||
}); | |||||
this.total = res.count; | |||||
}); | |||||
this.loading = false; | |||||
}, | |||||
// 获取分类数据 | |||||
getAreaCategoryQuery() { | |||||
let reqBody = { | let reqBody = { | ||||
pageNumber: 1, | pageNumber: 1, | ||||
begNumber: 20, | begNumber: 20, | ||||
categoryId: '', | |||||
keyword: '', | |||||
} | |||||
APILimits.getRecognition(reqBody).then(res => { | |||||
console.log("res", res); | |||||
/* this.list = res.data; */ | |||||
keyword: "" | |||||
}; | |||||
APILimits.areaCategoryQuery(reqBody).then(res => { | |||||
this.formOptions = res.data.map(m => { | |||||
return { | |||||
value: m.categoryId, | |||||
label: | |||||
m.categoryName + | |||||
"--" + | |||||
`${this.transfromToType(m.kindId)}` | |||||
}; | |||||
}); | |||||
this.modelOptions = this.formOptions; | |||||
}); | }); | ||||
}, | }, | ||||
beforeUpload(file) { | beforeUpload(file) { | ||||
@@ -299,13 +410,22 @@ export default { | |||||
handleSuccess({ results, header }) { | handleSuccess({ results, header }) { | ||||
this.list = results; | this.list = results; | ||||
this.columns = header.map(h => { | this.columns = header.map(h => { | ||||
return { prop: h, title: h } | |||||
return { prop: h, title: h }; | |||||
}); | }); | ||||
this.dialogUpload = false; | this.dialogUpload = false; | ||||
}, | |||||
// 弹窗选择框值变化时 | |||||
onSelectChange(value) { | |||||
this.form.categoryId = value; | |||||
}, | |||||
// 页面选择框变化 | |||||
outSelecChange(value) { | |||||
this.model = value; | |||||
} | } | ||||
}, | }, | ||||
mounted() { | mounted() { | ||||
this.getList() | |||||
this.getList(); | |||||
this.getAreaCategoryQuery(); | |||||
} | } | ||||
}; | }; | ||||
</script> | </script> | ||||
@@ -1,7 +1,7 @@ | |||||
<!-- | <!-- | ||||
* @Date: 2021-11-30 09:44:24 | * @Date: 2021-11-30 09:44:24 | ||||
* @LastEditors: JinxuChen | * @LastEditors: JinxuChen | ||||
* @LastEditTime: 2021-12-01 17:32:44 | |||||
* @LastEditTime: 2021-12-08 14:14:18 | |||||
* @FilePath: \GpsCardAdmin\src\views\off-limits-manage\common-exception\index.vue | * @FilePath: \GpsCardAdmin\src\views\off-limits-manage\common-exception\index.vue | ||||
* @description: | * @description: | ||||
--> | --> | ||||
@@ -17,9 +17,16 @@ | |||||
>添加</el-button> | >添加</el-button> | ||||
<!-- 下拉 --> | <!-- 下拉 --> | ||||
<!-- 类别 --> | <!-- 类别 --> | ||||
<el-select v-model="model" placeholder="类别" style="width: 130px; margin-left: 10px;" filterable> | |||||
<el-select | |||||
v-model="model" | |||||
placeholder="类别" | |||||
style="width: 130px; margin-left: 10px;" | |||||
filterable | |||||
@change="outSelecChange" | |||||
clearable | |||||
> | |||||
<el-option | <el-option | ||||
v-for="item in typeOptions" | |||||
v-for="item in modelOptions" | |||||
:key="item.value" | :key="item.value" | ||||
:label="item.label" | :label="item.label" | ||||
:value="item.value" | :value="item.value" | ||||
@@ -33,6 +40,7 @@ | |||||
style="width: 200px; margin-left: 10px;" | style="width: 200px; margin-left: 10px;" | ||||
class="filter-item" | class="filter-item" | ||||
@keyup.enter.native="onSearch" | @keyup.enter.native="onSearch" | ||||
clearable | |||||
/> | /> | ||||
<el-button | <el-button | ||||
class="filter-item" | class="filter-item" | ||||
@@ -58,23 +66,31 @@ | |||||
<pagination | <pagination | ||||
v-show="total>0" | v-show="total>0" | ||||
:total="total" | :total="total" | ||||
ref="pages" | |||||
:page.sync="page" | :page.sync="page" | ||||
:limit.sync="limit" | :limit.sync="limit" | ||||
@pagination="getList" | @pagination="getList" | ||||
/> | /> | ||||
<el-dialog :visible.sync="dialogPvVisible" :title="dialogTitle"> | <el-dialog :visible.sync="dialogPvVisible" :title="dialogTitle"> | ||||
<el-form | <el-form | ||||
ref="dataForm" | |||||
v-model="form" | |||||
ref="form" | |||||
:rules="formRules" | |||||
:model="form" | |||||
label-position="left" | label-position="left" | ||||
label-width="70px" | label-width="70px" | ||||
style="width: 400px; margin-left:50px;" | |||||
style="width: 400px;" | |||||
> | > | ||||
<!-- 类别 --> | <!-- 类别 --> | ||||
<el-form-item label="类别" prop="type"> | |||||
<el-select v-model="form.model" class="filter-item" filterable> | |||||
<el-form-item label="类别" prop="model"> | |||||
<el-select | |||||
v-model="form.model" | |||||
class="filter-item" | |||||
filterable | |||||
@change="onSelectChange" | |||||
clearable | |||||
> | |||||
<el-option | <el-option | ||||
v-for="item in typeOptions" | |||||
v-for="item in formOptions" | |||||
:key="item.value" | :key="item.value" | ||||
:label="item.label" | :label="item.label" | ||||
:value="item.value" | :value="item.value" | ||||
@@ -82,17 +98,24 @@ | |||||
</el-select> | </el-select> | ||||
</el-form-item> | </el-form-item> | ||||
<!-- 内容名称 --> | <!-- 内容名称 --> | ||||
<el-form-item label="内容名称" prop="content"> | |||||
<el-input v-model="form.content" /> | |||||
<el-form-item label="内容名称" prop="content" label-width="80px" clearable> | |||||
<el-input v-model="form.content" style="width: 80%" /> | |||||
</el-form-item> | |||||
<!-- 状态 --> | |||||
<el-form-item label="状态" prop="status" required> | |||||
<el-switch v-model="form.status" active-text="打开" inactive-text="关闭"></el-switch> | |||||
</el-form-item> | </el-form-item> | ||||
<!-- 创建时间 --> | <!-- 创建时间 --> | ||||
<el-form-item label="创建时间" prop="timestamp"> | |||||
<el-form-item label="创建时间" prop="timestamp" v-show="false"> | |||||
<el-date-picker v-model="form.createTime" type="datetime" /> | <el-date-picker v-model="form.createTime" type="datetime" /> | ||||
</el-form-item> | </el-form-item> | ||||
</el-form> | </el-form> | ||||
<span slot="footer" class="dialog-footer"> | <span slot="footer" class="dialog-footer"> | ||||
<el-button type="error" @click="dialogPvVisible = false">取消</el-button> | <el-button type="error" @click="dialogPvVisible = false">取消</el-button> | ||||
<el-button type="primary" @click="dialogStatus === 'update' ? update() : add()">确认</el-button> | |||||
<el-button | |||||
type="primary" | |||||
@click="dialogStatus === 'update' ? update('form') : add('form')" | |||||
>确认</el-button> | |||||
</span> | </span> | ||||
</el-dialog> | </el-dialog> | ||||
</div> | </div> | ||||
@@ -102,35 +125,21 @@ | |||||
import TopMenu from "@/components/TopMenu"; | import TopMenu from "@/components/TopMenu"; | ||||
import TTable from "../../../components/TTable/TTable"; | import TTable from "../../../components/TTable/TTable"; | ||||
import Pagination from "@/components/Pagination"; | import Pagination from "@/components/Pagination"; | ||||
import APIExceptionGen from "@/api/common-exception"; | |||||
import APILimits from "@/api/off-limits-manage"; | |||||
export default { | export default { | ||||
name: "", | name: "", | ||||
components: { TTable, TopMenu, Pagination }, | components: { TTable, TopMenu, Pagination }, | ||||
data() { | data() { | ||||
return { | return { | ||||
typeOptions: [ | |||||
{ | |||||
value: "1", | |||||
label: "类别1" | |||||
}, | |||||
{ | |||||
value: "2", | |||||
label: "类别1" | |||||
}, | |||||
{ | |||||
value: "3", | |||||
label: "类别1" | |||||
}, | |||||
{ | |||||
value: "4", | |||||
label: "类别1" | |||||
} | |||||
], | |||||
model: '', | |||||
model: "", | |||||
searchValue: "", | searchValue: "", | ||||
columns: [ | columns: [ | ||||
{ prop: "type", title: "类型" }, | |||||
{ prop: "model", title: "类别" }, | { prop: "model", title: "类别" }, | ||||
{ prop: "content", title: "内容名称" }, | { prop: "content", title: "内容名称" }, | ||||
{ prop: "createTime", title: "创建时间" }, | { prop: "createTime", title: "创建时间" }, | ||||
{ prop: "status", title: "状态" }, | |||||
{ | { | ||||
action: true, | action: true, | ||||
title: "操作", | title: "操作", | ||||
@@ -140,51 +149,148 @@ export default { | |||||
] | ] | ||||
} | } | ||||
], | ], | ||||
list: [ | |||||
{ | |||||
model: "出走危险", | |||||
content: "港口码头", | |||||
createTime: "2021-11-30" | |||||
} | |||||
], | |||||
list: [], | |||||
total: 1, | total: 1, | ||||
page: 1, | page: 1, | ||||
limit: 10, | limit: 10, | ||||
type: "error", | type: "error", | ||||
dialogPvVisible: false, | dialogPvVisible: false, | ||||
dialogStatus: '', | |||||
dialogStatus: "", | |||||
dialogTitle: "修改通用例外", | dialogTitle: "修改通用例外", | ||||
modelOptions: [], //页面下拉框数据 | |||||
formOptions: [], //弹窗下拉数据 | |||||
form: { | form: { | ||||
model: "", | model: "", | ||||
content: "", | content: "", | ||||
createTime: "" | |||||
createTime: "", | |||||
status: true, | |||||
id: "" | |||||
}, | |||||
formRules: { | |||||
content: [ | |||||
{ | |||||
required: true, | |||||
message: "请输入内容名称", | |||||
trigger: "blur" | |||||
} | |||||
], | |||||
model: [ | |||||
{ required: true, message: "请选择类别", trigger: "change" } | |||||
] | |||||
} | } | ||||
}; | }; | ||||
}, | }, | ||||
watch: { | |||||
model(value) { | |||||
if (value === "") { | |||||
this.getList(); | |||||
} | |||||
}, | |||||
searchValue(value) { | |||||
if (value === "") { | |||||
this.getList(); | |||||
} | |||||
} | |||||
}, | |||||
methods: { | methods: { | ||||
// 清空表单 | |||||
resetForm() { | |||||
this.form = { | |||||
model: "", | |||||
content: "", | |||||
createTime: "", | |||||
categoryId: "", | |||||
status: true | |||||
}; | |||||
}, | |||||
// 添加 | // 添加 | ||||
onAdd() { | onAdd() { | ||||
this.form = ''; | |||||
this.dialogTitle = '添加通用例外'; | |||||
this.resetForm(); | |||||
this.dialogTitle = "添加通用例外"; | |||||
this.dialogPvVisible = true; | this.dialogPvVisible = true; | ||||
this.dialogStatus = 'add'; | |||||
this.dialogStatus = "add"; | |||||
this.getAreaCategoryQuery(); | |||||
}, | }, | ||||
add() { | |||||
console.log("addd"); | |||||
add(formName) { | |||||
this.searchValue = ''; | |||||
let reqBody = { | |||||
id: 0, | |||||
categoryId: this.form.categoryId, | |||||
keyword: this.form.content, | |||||
status: this.form.status, | |||||
glat: 0, | |||||
glng: 0, | |||||
address: "", | |||||
postCode: "" | |||||
}; | |||||
this.$refs[formName].validate(valid => { | |||||
if (valid) { | |||||
APIExceptionGen.changeRecognitionGen(reqBody).then(res => { | |||||
console.log(res); | |||||
if (res.code === 0) { | |||||
this.dialogPvVisible = false; | |||||
this.$message({ | |||||
message: "增加成功", | |||||
type: "success" | |||||
}); | |||||
this.getList(); | |||||
} | |||||
}); | |||||
} else { | |||||
return false; | |||||
} | |||||
}); | |||||
}, | }, | ||||
// 搜索 | // 搜索 | ||||
onSearch() {}, | |||||
onSearch() { | |||||
this.$refs['pages'].currentPage = 1; | |||||
this.getList(); | |||||
}, | |||||
// 修改 | // 修改 | ||||
onUpdate(row) { | onUpdate(row) { | ||||
console.log(row); | |||||
this.dialogPvVisible = true; | this.dialogPvVisible = true; | ||||
this.dialogStatus = 'update'; | |||||
this.dialogTitle = '修改通用例外'; | |||||
this.form = Object.assign({}, row); // copy obj | |||||
this.dialogStatus = "update"; | |||||
this.dialogTitle = | |||||
"修改通用例外"; /* this.form.createTime = new Date(this.form.createTime); */ // copy obj | |||||
/* this.form = Object.assign({}, row); */ this.form.categoryId = | |||||
row.categoryId; | |||||
this.form.createTime = new Date(this.form.createTime); | this.form.createTime = new Date(this.form.createTime); | ||||
console.log("修改", row); | |||||
this.form.typeRadio = row.kindId; | |||||
this.form.model = row.categoryId; | |||||
this.form.id = row.id; | |||||
this.form.content = row.content; | |||||
this.form.status = row.status === '打开' ? true : false; | |||||
}, | }, | ||||
update() { | |||||
update(formName) { | |||||
console.log("update"); | console.log("update"); | ||||
let reqBody = { | |||||
id: this.form.id, | |||||
categoryId: this.form.categoryId, | |||||
keyword: this.form.content, | |||||
status: this.form.status, | |||||
glat: 0, | |||||
glng: 0, | |||||
address: "", | |||||
postCode: "" | |||||
}; | |||||
this.$refs[formName].validate(valid => { | |||||
if (valid) { | |||||
APIExceptionGen.changeRecognitionGen(reqBody).then(res => { | |||||
console.log(res); | |||||
if (res.code === 0) { | |||||
this.dialogPvVisible = false; | |||||
this.$message({ | |||||
message: "修改成功", | |||||
type: "success" | |||||
}); | |||||
this.getList(); | |||||
} | |||||
}); | |||||
} else { | |||||
return false; | |||||
} | |||||
}); | |||||
}, | }, | ||||
// 删除 | // 删除 | ||||
onDelete(row) { | onDelete(row) { | ||||
@@ -193,15 +299,85 @@ export default { | |||||
confirmButtonText: "确定", | confirmButtonText: "确定", | ||||
cancelButtonText: "取消", | cancelButtonText: "取消", | ||||
type: "warning" | type: "warning" | ||||
}).then(() => { | |||||
this.$message({ | |||||
type: "success", | |||||
message: "删除成功!" | |||||
}); | |||||
}).catch(() => {}); | |||||
}) | |||||
.then(() => { | |||||
let reqBody = { | |||||
id: row.id, | |||||
type: "general" | |||||
}; | |||||
APIExceptionGen.delRecognitionGen(reqBody).then(res => { | |||||
if (res.code === 0) { | |||||
this.$message({ | |||||
type: "success", | |||||
message: "删除成功!" | |||||
}); | |||||
this.getList(); | |||||
} else { | |||||
this.$message({ | |||||
type: "error", | |||||
message: "删除失败!" | |||||
}); | |||||
} | |||||
}); | |||||
}) | |||||
.catch(() => {}); | |||||
}, | }, | ||||
// 获取分页数据 | // 获取分页数据 | ||||
getList() {} | |||||
getList() { | |||||
let reqBody = { | |||||
pageNumber: this.page, | |||||
begNumber: this.limit, | |||||
categoryId: this.model, | |||||
keyword: this.searchValue | |||||
}; | |||||
APIExceptionGen.getRecognitionGen(reqBody).then(res => { | |||||
this.list = res.data.map(m => { | |||||
return { | |||||
type: this.transfromToType(m.kindId), | |||||
model: m.categoryName, | |||||
content: m.keyword, | |||||
createTime: m.createTime, | |||||
kindId: m.kindId, | |||||
categoryId: m.categoryId, | |||||
status: m.status === true ? '打开' : '关闭', | |||||
id: m.id | |||||
}; | |||||
}); | |||||
this.total = res.count; | |||||
}); | |||||
}, | |||||
// 获取类型分类 | |||||
getAreaCategoryQuery() { | |||||
let reqBody = { | |||||
pageNumber: 1, | |||||
begNumber: 20, | |||||
keyword: "" | |||||
}; | |||||
APILimits.areaCategoryQuery(reqBody).then(res => { | |||||
this.formOptions = res.data.map(m => { | |||||
return { | |||||
value: m.categoryId, | |||||
label: | |||||
m.categoryName + | |||||
"--" + | |||||
`${this.transfromToType(m.kindId)}` | |||||
}; | |||||
}); | |||||
this.modelOptions = this.formOptions; | |||||
}); | |||||
}, | |||||
// 弹窗选择框值变化时 | |||||
onSelectChange(value) { | |||||
this.form.categoryId = value; | |||||
}, | |||||
// 页面选择框变化 | |||||
outSelecChange(value) { | |||||
this.model = value; | |||||
} | |||||
}, | |||||
mounted() { | |||||
this.getList(); | |||||
this.getAreaCategoryQuery(); | |||||
} | } | ||||
}; | }; | ||||
</script> | </script> | ||||
@@ -1,13 +1,20 @@ | |||||
<!-- | <!-- | ||||
* @Date: 2021-11-30 09:44:24 | * @Date: 2021-11-30 09:44:24 | ||||
* @LastEditors: JinxuChen | * @LastEditors: JinxuChen | ||||
* @LastEditTime: 2021-12-01 17:35:09 | |||||
* @LastEditTime: 2021-12-08 14:45:22 | |||||
* @FilePath: \GpsCardAdmin\src\views\off-limits-manage\user-exception\index.vue | * @FilePath: \GpsCardAdmin\src\views\off-limits-manage\user-exception\index.vue | ||||
* @description: | * @description: | ||||
--> | --> | ||||
<template> | <template> | ||||
<div class="app-container"> | <div class="app-container"> | ||||
<div class="filter-container"> | <div class="filter-container"> | ||||
<el-button | |||||
class="filter-item" | |||||
style="margin-left: 10px;" | |||||
type="primary" | |||||
icon="el-icon-circle-plus" | |||||
@click="onAdd" | |||||
>添加</el-button> | |||||
<!-- 搜索 --> | <!-- 搜索 --> | ||||
<el-input | <el-input | ||||
v-model="searchValue" | v-model="searchValue" | ||||
@@ -15,6 +22,7 @@ | |||||
style="width: 200px; margin-left: 10px;" | style="width: 200px; margin-left: 10px;" | ||||
class="filter-item" | class="filter-item" | ||||
@keyup.enter.native="onSearch" | @keyup.enter.native="onSearch" | ||||
clearable | |||||
/> | /> | ||||
<el-button | <el-button | ||||
class="filter-item" | class="filter-item" | ||||
@@ -35,39 +43,82 @@ | |||||
style="width: 100%;" | style="width: 100%;" | ||||
@sort-change="sortChange" | @sort-change="sortChange" | ||||
></el-table>--> | ></el-table>--> | ||||
<TTable :tableData="list" :columns="columns" @update="onUpdate" @delete="onDelete" @transform="onTransform"></TTable> | |||||
<TTable | |||||
:tableData="list" | |||||
:columns="columns" | |||||
@update="onUpdate" | |||||
@delete="onDelete" | |||||
@transform="onTransform" | |||||
></TTable> | |||||
<!-- 分页 --> | <!-- 分页 --> | ||||
<pagination | <pagination | ||||
v-show="total>0" | v-show="total>0" | ||||
:total="total" | :total="total" | ||||
ref="pages" | |||||
:page.sync="page" | :page.sync="page" | ||||
:limit.sync="limit" | :limit.sync="limit" | ||||
@pagination="getList" | @pagination="getList" | ||||
/> | /> | ||||
<!-- 修改弹窗 --> | |||||
<el-dialog :visible.sync="dialogPvVisible" :title="dialogTitle"> | <el-dialog :visible.sync="dialogPvVisible" :title="dialogTitle"> | ||||
<el-form | <el-form | ||||
ref="dataForm" | |||||
v-model="form" | |||||
ref="form" | |||||
:model="form" | |||||
:rules="formRules" | |||||
label-position="left" | label-position="left" | ||||
label-width="70px" | label-width="70px" | ||||
style="width: 400px; margin-left:50px;" | |||||
style="width: 400px" | |||||
> | > | ||||
<!-- 内容名称 --> | |||||
<el-form-item label="IMEI" prop="imei"> | |||||
<el-input v-model="form.imei" /> | |||||
<!-- IMEI --> | |||||
<el-form-item label="IMEI" prop="imei" label-width="80px"> | |||||
<el-input v-model="form.imei" style="width: 80%" clearable /> | |||||
</el-form-item> | </el-form-item> | ||||
<!-- 内容名称 --> | <!-- 内容名称 --> | ||||
<el-form-item label="内容名称" prop="title"> | |||||
<el-input v-model="form.content" /> | |||||
<el-form-item label="内容名称" prop="content" label-width="80px"> | |||||
<el-input v-model="form.content" style="width: 80%" clearable /> | |||||
</el-form-item> | |||||
<!-- 状态 --> | |||||
<el-form-item label="状态" prop="status" required> | |||||
<el-switch v-model="form.status" active-text="打开" inactive-text="关闭"></el-switch> | |||||
</el-form-item> | </el-form-item> | ||||
<!-- 创建时间 --> | <!-- 创建时间 --> | ||||
<el-form-item label="创建时间" prop="timestamp"> | |||||
<el-form-item label="创建时间" prop="timestamp" v-show="false"> | |||||
<el-date-picker v-model="form.createTime" type="datetime" /> | <el-date-picker v-model="form.createTime" type="datetime" /> | ||||
</el-form-item> | </el-form-item> | ||||
</el-form> | </el-form> | ||||
<span slot="footer" class="dialog-footer"> | <span slot="footer" class="dialog-footer"> | ||||
<el-button type="error" @click="dialogPvVisible = false">取消</el-button> | <el-button type="error" @click="dialogPvVisible = false">取消</el-button> | ||||
<el-button type="primary" @click="dialogStatus === 'update' ? update() : add()">确认</el-button> | |||||
<el-button | |||||
type="primary" | |||||
@click="dialogStatus === 'update' ? update('form') : add('form')" | |||||
>确认</el-button> | |||||
</span> | |||||
</el-dialog> | |||||
<!-- 转通用弹窗 --> | |||||
<el-dialog :visible.sync="dialogTrans" :title="dialogTransTitle"> | |||||
<p>请选择要转换的类别:</p> | |||||
<!-- <el-radio v-model="radio1" label="1" border>关键字</el-radio> | |||||
<el-radio v-model="radio1" label="2" border>固定地点</el-radio>--> | |||||
<!-- 类别 --> | |||||
<el-select | |||||
v-model="model" | |||||
placeholder="类别" | |||||
style="width: 130px; margin-left: 10px;" | |||||
filterable | |||||
@change="outSelecChange" | |||||
clearable | |||||
> | |||||
<el-option | |||||
v-for="item in modelOptions" | |||||
:key="item.value" | |||||
:label="item.label" | |||||
:value="item.value" | |||||
class="filter-item" | |||||
></el-option> | |||||
</el-select> | |||||
<span slot="footer" class="dialog-footer"> | |||||
<el-button type="error" @click="dialogTrans = false">取消</el-button> | |||||
<el-button type="primary" @click="onTransConfirm">确认</el-button> | |||||
</span> | </span> | ||||
</el-dialog> | </el-dialog> | ||||
</div> | </div> | ||||
@@ -77,69 +128,175 @@ | |||||
import TopMenu from "@/components/TopMenu"; | import TopMenu from "@/components/TopMenu"; | ||||
import TTable from "../../../components/TTable/TTable"; | import TTable from "../../../components/TTable/TTable"; | ||||
import Pagination from "@/components/Pagination"; | import Pagination from "@/components/Pagination"; | ||||
import APIExceptionUser from "@/api/user-exception"; | |||||
import APIExceptionGen from "@/api/common-exception"; | |||||
import APILimits from "@/api/off-limits-manage"; | |||||
export default { | export default { | ||||
name: "", | name: "", | ||||
components: { TTable, TopMenu, Pagination }, | components: { TTable, TopMenu, Pagination }, | ||||
data() { | data() { | ||||
return { | return { | ||||
model: "", | |||||
modelOptions: [ | |||||
{ | |||||
value: "1", | |||||
label: "类别1" | |||||
}, | |||||
{ | |||||
value: "2", | |||||
label: "类别1" | |||||
} | |||||
], | |||||
model: "", //下拉框的值 | |||||
content: "", //内容 | |||||
modelOptions: [], | |||||
searchValue: "", | searchValue: "", | ||||
columns: [ | columns: [ | ||||
{ prop: "imei", title: "IMEI" }, | { prop: "imei", title: "IMEI" }, | ||||
{ prop: "content", title: "内容名称" }, | { prop: "content", title: "内容名称" }, | ||||
{ prop: "createTime", title: "创建时间" }, | { prop: "createTime", title: "创建时间" }, | ||||
{ prop: "status", title: "状态" }, | |||||
{ | { | ||||
action: true, | action: true, | ||||
title: "操作", | title: "操作", | ||||
actions: [ | actions: [ | ||||
{ fnName: "update", title: "修改", type: "primary" }, | { fnName: "update", title: "修改", type: "primary" }, | ||||
{ fnName: "delete", title: "删除", type: "error" }, | { fnName: "delete", title: "删除", type: "error" }, | ||||
{ fnName: "transform", title: "转通用", type: "primary" } | |||||
{ | |||||
fnName: "transform", | |||||
title: "转通用", | |||||
type: "primary" | |||||
} | |||||
] | ] | ||||
} | } | ||||
], | ], | ||||
list: [ | |||||
{ | |||||
imei: "141152552521", | |||||
model: "出走危险", | |||||
content: "港口码头", | |||||
createTime: "2021-11-30" | |||||
} | |||||
], | |||||
total: 1, | |||||
list: [], | |||||
total: 0, | |||||
page: 1, | page: 1, | ||||
limit: 10, | limit: 10, | ||||
dialogPvVisible: false, | dialogPvVisible: false, | ||||
dialogStatus: "", | dialogStatus: "", | ||||
dialogTitle: "修改用户例外", | dialogTitle: "修改用户例外", | ||||
dialogTrans: false, | |||||
dialogTransTitle: "转通用例外", | |||||
form: { | form: { | ||||
imei: "", | imei: "", | ||||
content: "", | content: "", | ||||
createTime: "" | |||||
createTime: "", | |||||
status: true | |||||
}, | }, | ||||
radio1: "1", | |||||
formRules: { | |||||
content: [ | |||||
{ | |||||
required: true, | |||||
message: "请输入内容名称", | |||||
trigger: "blur" | |||||
} | |||||
], | |||||
imei: [ | |||||
{ | |||||
required: true, | |||||
message: "请输入imei", | |||||
trigger: "blur" | |||||
} | |||||
] | |||||
} | |||||
}; | }; | ||||
}, | }, | ||||
watch: { | |||||
searchValue(value) { | |||||
if (value === "") { | |||||
this.form.imei = ""; | |||||
this.getList(); | |||||
} | |||||
} | |||||
}, | |||||
methods: { | methods: { | ||||
// 清空表单 | |||||
resetForm() { | |||||
this.form = { | |||||
model: "", | |||||
content: "", | |||||
createTime: "", | |||||
categoryId: "", | |||||
status: true | |||||
}; | |||||
}, | |||||
// 增加 | |||||
onAdd() { | |||||
this.resetForm(); | |||||
this.dialogTitle = "添加通用例外"; | |||||
this.dialogPvVisible = true; | |||||
this.dialogStatus = "add"; | |||||
}, | |||||
add(formName) { | |||||
this.searchValue = ""; | |||||
let reqBody = { | |||||
keyId: 0, | |||||
imei: this.form.imei, | |||||
keyword: this.form.content, | |||||
status: this.form.status, | |||||
glat: 0, | |||||
glng: 0, | |||||
address: "", | |||||
postCode: "" | |||||
}; | |||||
this.$refs[formName].validate(valid => { | |||||
if (valid) { | |||||
APIExceptionUser.changeRecognitionUser(reqBody).then( | |||||
res => { | |||||
console.log(res); | |||||
if (res.code === 0) { | |||||
this.dialogPvVisible = false; | |||||
this.$message({ | |||||
message: "增加成功", | |||||
type: "success" | |||||
}); | |||||
this.form.imei = ""; | |||||
this.getList(); | |||||
} | |||||
} | |||||
); | |||||
} else { | |||||
return false; | |||||
} | |||||
}); | |||||
}, | |||||
// 搜索 | // 搜索 | ||||
onSearch() {}, | |||||
onSearch() { | |||||
this.$refs["pages"].currentPage = 1; | |||||
this.getList(); | |||||
}, | |||||
// 修改 | // 修改 | ||||
onUpdate(row) { | onUpdate(row) { | ||||
this.dialogPvVisible = true; | this.dialogPvVisible = true; | ||||
this.dialogStatus = 'update'; | |||||
this.dialogTitle = '修改用户例外'; | |||||
this.dialogStatus = "update"; | |||||
this.dialogTitle = "修改用户例外"; | |||||
this.form = Object.assign({}, row); // copy obj | this.form = Object.assign({}, row); // copy obj | ||||
this.form.createTime = new Date(this.form.createTime); | this.form.createTime = new Date(this.form.createTime); | ||||
console.log("修改", row); | |||||
this.form.status = row.status === "打开" ? true : false; | |||||
}, | |||||
update(formName) { | |||||
let reqBody = { | |||||
keyId: this.form.keyId, | |||||
imei: this.form.imei, | |||||
keyword: this.form.content, | |||||
status: this.form.status, | |||||
glat: 0, | |||||
glng: 0, | |||||
address: "", | |||||
postCode: "" | |||||
}; | |||||
this.$refs[formName].validate(valid => { | |||||
if (valid) { | |||||
APIExceptionUser.changeRecognitionUser(reqBody).then( | |||||
res => { | |||||
console.log(res); | |||||
if (res.code === 0) { | |||||
this.dialogPvVisible = false; | |||||
this.$message({ | |||||
message: "修改成功", | |||||
type: "success" | |||||
}); | |||||
this.form.imei = ""; | |||||
this.getList(); | |||||
} | |||||
} | |||||
); | |||||
} else { | |||||
return false; | |||||
} | |||||
}); | |||||
}, | }, | ||||
// 删除 | // 删除 | ||||
onDelete(row) { | onDelete(row) { | ||||
@@ -147,28 +304,117 @@ export default { | |||||
confirmButtonText: "确定", | confirmButtonText: "确定", | ||||
cancelButtonText: "取消", | cancelButtonText: "取消", | ||||
type: "warning" | type: "warning" | ||||
}).then(() => { | |||||
this.$message({ | |||||
type: "success", | |||||
message: "删除成功!" | |||||
}); | |||||
}).catch(() => {}); | |||||
}) | |||||
.then(() => { | |||||
let reqBody = { | |||||
keyId: row.keyId, | |||||
imei: row.imei | |||||
}; | |||||
APIExceptionUser.delRecognitionUser(reqBody).then(res => { | |||||
if (res.code === 0) { | |||||
this.$message({ | |||||
type: "success", | |||||
message: "删除成功!" | |||||
}); | |||||
this.getList(); | |||||
} else { | |||||
this.$message({ | |||||
type: "error", | |||||
message: "删除失败!" | |||||
}); | |||||
} | |||||
}); | |||||
}) | |||||
.catch(() => {}); | |||||
}, | }, | ||||
// 转通用例外 | |||||
// 转通用例外 todo 待接口说明 | |||||
onTransform(row) { | onTransform(row) { | ||||
this.$confirm("是否转到通用列外?", { | |||||
confirmButtonText: "确定", | |||||
cancelButtonText: "取消", | |||||
type: "warning" | |||||
}).then(() => { | |||||
console.log("row", row); | |||||
this.dialogTrans = true; | |||||
this.content = row.content; | |||||
}, | |||||
// 确定转通用例外 | |||||
onTransConfirm() { | |||||
let reqBody = { | |||||
id: 0, | |||||
categoryId: this.model, | |||||
keyword: this.content, | |||||
status: true, | |||||
glat: 0, | |||||
glng: 0, | |||||
address: "", | |||||
postCode: "" | |||||
}; | |||||
if (this.model != "") { | |||||
APIExceptionGen.changeRecognitionGen(reqBody).then(res => { | |||||
console.log(res); | |||||
if (res.code === 0) { | |||||
this.dialogTrans = false; | |||||
this.$message({ | |||||
message: "增加成功", | |||||
type: "success" | |||||
}); | |||||
this.getList(); | |||||
} | |||||
}); | |||||
} else { | |||||
this.$message({ | this.$message({ | ||||
type: "success", | |||||
message: "转移成功!" | |||||
message: "请选择一个类别!", | |||||
type: "error" | |||||
}); | }); | ||||
}).catch(() => {}); | |||||
} | |||||
}, | }, | ||||
// 获取分页数据 | // 获取分页数据 | ||||
getList() {} | |||||
getList() { | |||||
let reqBody = { | |||||
pageNumber: this.page, | |||||
begNumber: this.limit, | |||||
type: "system", | |||||
imei: this.form.imei, | |||||
keyword: this.searchValue | |||||
}; | |||||
APIExceptionUser.getRecognitionUser(reqBody).then(res => { | |||||
this.list = res.data.map(m => { | |||||
return { | |||||
imei: m.imei, | |||||
content: m.keyword, | |||||
createTime: m.createTime || "无", | |||||
glat: m.glat, | |||||
glng: m.glng, | |||||
keyId: m.keyId, | |||||
status: m.status === true ? "打开" : "关闭" | |||||
}; | |||||
}); | |||||
this.total = res.count; | |||||
}); | |||||
}, | |||||
// 获取类型分类 | |||||
getAreaCategoryQuery() { | |||||
let reqBody = { | |||||
pageNumber: 1, | |||||
begNumber: 20, | |||||
keyword: "" | |||||
}; | |||||
APILimits.areaCategoryQuery(reqBody).then(res => { | |||||
this.modelOptions = res.data.map(m => { | |||||
return { | |||||
value: m.categoryId, | |||||
label: | |||||
m.categoryName + | |||||
"--" + | |||||
`${this.transfromToType(m.kindId)}` | |||||
}; | |||||
}); | |||||
}); | |||||
}, | |||||
outSelecChange(value) { | |||||
this.model = value; | |||||
console.log("model", this.model); | |||||
} | |||||
}, | |||||
mounted() { | |||||
this.getList(); | |||||
this.getAreaCategoryQuery(); | |||||
} | } | ||||
}; | }; | ||||
</script> | </script> | ||||