新增页面
This commit is contained in:
55
src/api/cs-device-boot/user.ts
Normal file
55
src/api/cs-device-boot/user.ts
Normal file
@@ -0,0 +1,55 @@
|
||||
import createAxios from '@/utils/request'
|
||||
// 查询游客配置
|
||||
export const getVisitorConfig = () => {
|
||||
return createAxios({
|
||||
url: '/cs-device-boot/csTouristData/queryAll',
|
||||
method: 'POST'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询营销人员未选择的工程
|
||||
*/
|
||||
export const queryEnginnerByUseId = (data: any) => {
|
||||
return createAxios({
|
||||
url: '/cs-device-boot/csMarketData/queryEnginnerByUseId',
|
||||
method: 'post',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
// 更新游客配置
|
||||
export const updateVisitorConfig = (data: any) => {
|
||||
return createAxios({
|
||||
url: '/cs-device-boot/csTouristData/add',
|
||||
method: 'POST',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// * 根据用户获取营销数据
|
||||
export const queryByUseId = (data: any) => {
|
||||
return createAxios({
|
||||
url: 'cs-device-boot/csMarketData/queryByUseId',
|
||||
method: 'POST',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
// * 新增营销数据
|
||||
export const add = (data: any) => {
|
||||
return createAxios({
|
||||
url: '/cs-device-boot/csMarketData/add',
|
||||
method: 'POST',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 移除营销数据
|
||||
*/
|
||||
export const removeMarketData = (data: any) => {
|
||||
return createAxios({
|
||||
url: '/cs-device-boot/csMarketData/remove',
|
||||
method: 'post',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
@@ -9,27 +9,6 @@ export function getDeviceDataTrend(data: any) {
|
||||
})
|
||||
}
|
||||
|
||||
// 查询游客配置
|
||||
export const getVisitorConfig = () => {
|
||||
return createAxios({
|
||||
url: '/cs-device-boot/csTouristData/queryAll',
|
||||
method: 'POST'
|
||||
})
|
||||
}
|
||||
|
||||
// 更新游客配置
|
||||
export const updateVisitorConfig = (data: any) => {
|
||||
return createAxios({
|
||||
url: '/cs-device-boot/csTouristData/add',
|
||||
method: 'POST',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
// * 根据用户获取营销数据
|
||||
export const queryByUseId = (data: any) => {
|
||||
return createAxios({
|
||||
url: 'cs-device-boot/csMarketData/queryByUseId',
|
||||
method: 'POST',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
10
src/api/cs-system-boot/manage.ts
Normal file
10
src/api/cs-system-boot/manage.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import createAxios from '@/utils/request'
|
||||
|
||||
// 更新问题状态
|
||||
export function auditFeedBack(data:any) {
|
||||
return createAxios({
|
||||
url: '/cs-system-boot/feedback/auditFeedBack',
|
||||
method: 'post',
|
||||
params:data
|
||||
})
|
||||
}
|
||||
@@ -53,6 +53,10 @@
|
||||
padding: 5px 11px;
|
||||
}
|
||||
|
||||
.el-dialog__body {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
/* dialog滚动条-s */
|
||||
.el-overlay-dialog,
|
||||
.el-tabs__content,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="default-main device-manage" :style="{ height: pageHeight.height }" v-loading="loading">
|
||||
<GetMarketList @node-click="selectUser" @selectUser="selectUser"></GetMarketList>
|
||||
<div class="device-manage-right" :style="{ height: tableHeight }">
|
||||
<div class="device-manage-right" :style="{ height: pageHeight.height }">
|
||||
<el-descriptions title="用户基本信息" class="mb10" :column="2" border>
|
||||
<template #extra>
|
||||
<el-button type="primary" icon="el-icon-Plus" @click="getMarketEnginner">添加工程</el-button>
|
||||
@@ -13,10 +13,11 @@
|
||||
{{ user.phone }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<div :style="{ height: tableHeight.height }">
|
||||
<vxe-table v-bind="defaultAttribute" :data="tableData" height="auto" style="width: 100%">
|
||||
<vxe-column field="engineerName" title="工程名称"></vxe-column>
|
||||
|
||||
<vxe-column title="操作">
|
||||
<vxe-column title="操作" width="200px">
|
||||
<template v-slot:default="scoped">
|
||||
<el-button
|
||||
size="small"
|
||||
@@ -31,6 +32,41 @@
|
||||
</vxe-table>
|
||||
</div>
|
||||
</div>
|
||||
<el-dialog v-model="dialogVisible" title="添加工程" width="30%" :close-on-click-modal="false">
|
||||
<el-input
|
||||
v-model="filterText"
|
||||
icon="el-icon-Search"
|
||||
placeholder="请输入内容"
|
||||
clearable
|
||||
style="margin-bottom: 10px"
|
||||
>
|
||||
<template #prefix>
|
||||
<Icon name="el-icon-Search" style="font-size: 16px" />
|
||||
</template>
|
||||
</el-input>
|
||||
|
||||
<vxe-table
|
||||
ref="tableRef"
|
||||
v-bind="defaultAttribute"
|
||||
:data="
|
||||
tableData2.filter((item:any) => {
|
||||
return item.name.includes(filterText)
|
||||
})
|
||||
"
|
||||
height="500px"
|
||||
style="width: 100%"
|
||||
>
|
||||
<vxe-column type="checkbox" width="60"></vxe-column>
|
||||
<vxe-column field="name" title="工程名称"></vxe-column>
|
||||
</vxe-table>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="addMarketData">确 定</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
@@ -40,15 +76,20 @@ defineOptions({
|
||||
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||
import GetMarketList from '@/components/tree/govern/getMarketList.vue'
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
import { queryByUseId } from '@/api/cs-harmonic-boot/datatrend'
|
||||
import { queryByUseId, add, removeMarketData, queryEnginnerByUseId } from '@/api/cs-device-boot/user'
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
|
||||
const pageHeight = mainHeight(20)
|
||||
const loading = ref(true)
|
||||
|
||||
const tableHeight = mainHeight(20).height
|
||||
const tableHeight = mainHeight(140)
|
||||
const user: any = ref({})
|
||||
const tableData = ref([])
|
||||
const tableData2 = ref([])
|
||||
const dialogVisible = ref(false)
|
||||
const filterText = ref('')
|
||||
const tableRef = ref()
|
||||
|
||||
const selectUser = (e: any) => {
|
||||
user.value = e
|
||||
@@ -60,11 +101,56 @@ const selectUser = (e: any) => {
|
||||
tableData.value = res.data
|
||||
})
|
||||
}
|
||||
const getMarketEnginner = () => {}
|
||||
const deleteEngineering = (row:any) => {}
|
||||
const getMarketEnginner = () => {
|
||||
filterText.value = ''
|
||||
|
||||
queryEnginnerByUseId({ userId: user.value.id }).then(res => {
|
||||
tableData2.value = res.data
|
||||
dialogVisible.value = true
|
||||
setTimeout(() => {
|
||||
tableRef.value.clearCheckboxRow()
|
||||
}, 0)
|
||||
})
|
||||
}
|
||||
const deleteEngineering = (row: any) => {
|
||||
ElMessageBox.confirm('是否移出该工程?', '请确认', {
|
||||
confirmButtonText: '确认',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
removeMarketData({ ids: row.id }).then((res: any) => {
|
||||
ElMessage.success(res.message)
|
||||
selectUser(user.value)
|
||||
})
|
||||
})
|
||||
}
|
||||
const addMarketData = () => {
|
||||
const table = tableRef.value.getCheckboxRecords()
|
||||
|
||||
if (table.length === 0) {
|
||||
ElMessage.warning('请选择要添加的工程')
|
||||
}
|
||||
let form: any = tableData.value.map((item: any) => {
|
||||
return {
|
||||
engineerId: item.engineerId,
|
||||
userId: user.value.id
|
||||
}
|
||||
})
|
||||
table.forEach((item: any) => {
|
||||
form.push({
|
||||
engineerId: item.id,
|
||||
userId: user.value.id
|
||||
})
|
||||
})
|
||||
add(form).then((res: any) => {
|
||||
ElMessage.success(res.message)
|
||||
selectUser(user.value)
|
||||
dialogVisible.value = false
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
<style lang="scss" scoped>
|
||||
.device-manage {
|
||||
display: flex;
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
:default-checked-keys="defaultCheckedKeys"
|
||||
@checkChange="checkChange"
|
||||
></DeviceTree>
|
||||
<div class="device-manage-right" :style="{ height: tableHeight }">
|
||||
<div class="device-manage-right" :style="{ height: pageHeight.height }">
|
||||
<vxe-table v-bind="defaultAttribute" :data="tableData" height="auto" style="width: 100%">
|
||||
<vxe-column field="enginerName" title="工程名称"></vxe-column>
|
||||
<vxe-column field="projectName" title="项目名称"></vxe-column>
|
||||
@@ -22,13 +22,11 @@ defineOptions({
|
||||
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||
import DeviceTree from '@/components/tree/govern/deviceTree.vue'
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
import { getVisitorConfig, updateVisitorConfig } from '@/api/cs-harmonic-boot/datatrend'
|
||||
import { getVisitorConfig, updateVisitorConfig } from '@/api/cs-device-boot/user'
|
||||
import { ref, onMounted } from 'vue'
|
||||
|
||||
const pageHeight = mainHeight(20)
|
||||
const loading = ref(true)
|
||||
|
||||
const tableHeight = mainHeight(20).height
|
||||
const defaultCheckedKeys: any = ref([])
|
||||
const tableData = ref([])
|
||||
|
||||
|
||||
50
src/views/govern/manage/engineering.vue
Normal file
50
src/views/govern/manage/engineering.vue
Normal file
@@ -0,0 +1,50 @@
|
||||
<template>
|
||||
<div class="default-main" :style="{ height: pageHeight.height }">
|
||||
<vxe-table
|
||||
v-loading="tableStore.table.loading"
|
||||
height="auto"
|
||||
auto-resize
|
||||
v-bind="defaultAttribute"
|
||||
:data="tableStore.table.data"
|
||||
:column-config="{ resizable: true }"
|
||||
:tree-config="{}"
|
||||
>
|
||||
<vxe-column field="name" align="left" title="名称" tree-node></vxe-column>
|
||||
<vxe-column field="area" title="区域">
|
||||
<template #default="{ row }">
|
||||
{{ row.area || '/' }}
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column field="remark" title="备注">
|
||||
<template #default="{ row }">
|
||||
{{ row.remark || '/' }}
|
||||
</template>
|
||||
</vxe-column>
|
||||
</vxe-table>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted, provide } from 'vue'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
defineOptions({
|
||||
name: 'govern/manage/engineering'
|
||||
})
|
||||
const pageHeight = mainHeight(20)
|
||||
const tableStore = new TableStore({
|
||||
url: '/cs-device-boot/csLedger/getProjectTree',
|
||||
method: 'POST',
|
||||
column: [],
|
||||
|
||||
loadCallback: () => {}
|
||||
})
|
||||
|
||||
provide('tableStore', tableStore)
|
||||
|
||||
onMounted(() => {
|
||||
tableStore.index()
|
||||
})
|
||||
|
||||
const addMenu = () => {}
|
||||
</script>
|
||||
87
src/views/govern/manage/factory.vue
Normal file
87
src/views/govern/manage/factory.vue
Normal file
@@ -0,0 +1,87 @@
|
||||
<template>
|
||||
<div class="default-main">
|
||||
<TableHeader>
|
||||
<template v-slot:select>
|
||||
<el-form-item label="设备类型">
|
||||
<!-- <el-input v-model="tableStore.table.params.searchValue" placeholder="请输入设备类型" /> -->
|
||||
<el-select v-model="tableStore.table.params.devType" clearable placeholder="请选择设备类型">
|
||||
<el-option
|
||||
v-for="item in devTypeOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="设备型号">
|
||||
<el-select v-model="tableStore.table.params.devModel" clearable placeholder="请选择设备型号">
|
||||
<el-option
|
||||
v-for="item in devModelOptionsFilter"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="通讯协议">
|
||||
<el-select v-model="tableStore.table.params.devAccessMethod" clearable placeholder="请选择通讯协议">
|
||||
<el-option label="MQTT" value="mqtt"></el-option>
|
||||
<el-option label="CLD" value="cloud"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态">
|
||||
<el-select v-model="tableStore.table.params.status" clearable placeholder="请选择状态">
|
||||
<el-option label="未注册" :value="1"></el-option>
|
||||
<el-option label="注册" :value="2"></el-option>
|
||||
<el-option label="接入" :value="3"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</TableHeader>
|
||||
<Table ref="tableRef" :isGroup="true" />
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { Plus } from '@element-plus/icons-vue'
|
||||
import { ref, onMounted, provide } from 'vue'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import Table from '@/components/table/index.vue'
|
||||
import TableHeader from '@/components/table/header/index.vue'
|
||||
|
||||
defineOptions({
|
||||
name: 'govern/log/debug'
|
||||
})
|
||||
|
||||
const devTypeOptions: any = ref([])
|
||||
const devModelOptionsFilter: any = ref([])
|
||||
|
||||
const tableStore = new TableStore({
|
||||
url: '/cs-device-boot/EquipmentDelivery/list',
|
||||
method: 'POST',
|
||||
column: [
|
||||
{ title: '设备名称', field: 'name', align: 'center' },
|
||||
{ title: '设备类型', field: 'operatorName', align: 'center' },
|
||||
{ title: '设备型号', field: 'devModel', align: 'center', width: '300' },
|
||||
{ title: '通讯协议', field: 'devAccessMethod', align: 'center' },
|
||||
{ title: '录入时间', field: 'createTime', align: 'center' },
|
||||
{ title: '网络设备ID', field: 'ndid', align: 'center' },
|
||||
{ title: '状态', field: 'status', align: 'center' }
|
||||
],
|
||||
|
||||
loadCallback: () => {
|
||||
tableStore.table.data.forEach((item: any) => {
|
||||
item.failReason = item.failReason || '/'
|
||||
item.result = item.result === 1 ? '成功' : '失败'
|
||||
item.loginName = item.loginName || '/'
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
provide('tableStore', tableStore)
|
||||
|
||||
onMounted(() => {
|
||||
tableStore.index()
|
||||
})
|
||||
|
||||
const addMenu = () => {}
|
||||
</script>
|
||||
87
src/views/govern/manage/feedback.vue
Normal file
87
src/views/govern/manage/feedback.vue
Normal file
@@ -0,0 +1,87 @@
|
||||
<template>
|
||||
<div class="default-main">
|
||||
<TableHeader datePicker>
|
||||
<template v-slot:select>
|
||||
<el-form-item label="关键词">
|
||||
<el-input v-model="tableStore.table.params.searchValue" clearable placeholder="请输入关键词" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
</TableHeader>
|
||||
<Table ref="tableRef" :isGroup="true">
|
||||
<template v-slot:columns>
|
||||
<vxe-column title="问题状态">
|
||||
<template v-slot:default="scoped">
|
||||
<el-tag v-if="scoped.row.status == 2">处理中</el-tag>
|
||||
<el-tag v-if="scoped.row.status == 0" type="success">已解决</el-tag>
|
||||
<el-tag v-if="scoped.row.status == 1" type="warning">待处理</el-tag>
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column title="操作" min-width="15px">
|
||||
<template v-slot:default="scoped">
|
||||
<el-button
|
||||
size="small"
|
||||
type="primary"
|
||||
icon="el-icon-Finished"
|
||||
@click="solve(scoped.row)"
|
||||
v-if="scoped.row.status != 0"
|
||||
>
|
||||
解决
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
</template>
|
||||
>
|
||||
</Table>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted, provide } from 'vue'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import Table from '@/components/table/index.vue'
|
||||
import TableHeader from '@/components/table/header/index.vue'
|
||||
import { auditFeedBack } from '@/api/cs-system-boot/manage'
|
||||
import { ElMessageBox, ElMessage } from 'element-plus'
|
||||
|
||||
defineOptions({
|
||||
name: 'govern/manage/feedback'
|
||||
})
|
||||
const tableStore = new TableStore({
|
||||
url: '/cs-system-boot/feedback/queryFeedBackPage',
|
||||
method: 'POST',
|
||||
column: [
|
||||
{ title: '问题标题', field: 'title', align: 'center' },
|
||||
{ title: '问题描述', field: 'description', align: 'center' },
|
||||
{ title: '发布时间', field: 'createTime', align: 'center' }
|
||||
],
|
||||
|
||||
loadCallback: () => {}
|
||||
})
|
||||
|
||||
provide('tableStore', tableStore)
|
||||
tableStore.table.params.searchState = 0
|
||||
tableStore.table.params.sortBy = ''
|
||||
tableStore.table.params.orderBy = ''
|
||||
tableStore.table.params.searchValue = ''
|
||||
|
||||
const solve = (row: any) => {
|
||||
ElMessageBox.confirm('该问题是否已解决?', '提示', {
|
||||
confirmButtonText: '确认',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
auditFeedBack({
|
||||
id: row.id,
|
||||
status: 0
|
||||
}).then(res => {
|
||||
tableStore.onTableAction('search', {})
|
||||
ElMessage.success('操作成功!')
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
tableStore.index()
|
||||
})
|
||||
|
||||
const addMenu = () => {}
|
||||
</script>
|
||||
Reference in New Issue
Block a user