|
|
@@ -23,11 +23,11 @@
|
|
|
placeholder="请选择厂商"
|
|
|
:schema="manufacturerSelectSchema"
|
|
|
/>
|
|
|
- <span class="c-grid-form__label u-required">名称</span>
|
|
|
+ <span class="c-grid-form__label u-required">型号</span>
|
|
|
<el-input
|
|
|
- v-model.trim="item.name"
|
|
|
- placeholder="最多30个字符"
|
|
|
- maxlength="30"
|
|
|
+ v-model.trim="item.model"
|
|
|
+ placeholder="最多50个字符"
|
|
|
+ maxlength="50"
|
|
|
clearable
|
|
|
/>
|
|
|
<span class="c-grid-form__label u-required">标识</span>
|
|
|
@@ -44,6 +44,18 @@
|
|
|
v-model.trim="item.password"
|
|
|
class="u-password"
|
|
|
/>
|
|
|
+ <span class="c-grid-form__label">备注</span>
|
|
|
+ <div
|
|
|
+ class="has-info"
|
|
|
+ data-info="备注将用于多摄像头展示时的区分"
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ v-model.trim="item.remark"
|
|
|
+ placeholder="最多30个字符"
|
|
|
+ maxlength="30"
|
|
|
+ clearable
|
|
|
+ />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</confirm-dialog>
|
|
|
<camera-dialog ref="cameraDialog" />
|
|
|
@@ -52,15 +64,17 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import { CameraToThirdPartyMap } from '@/constant'
|
|
|
import {
|
|
|
- getManufacturersByType,
|
|
|
- getThirdPartyDevices
|
|
|
-} from '@/api/external'
|
|
|
+ ThirdPartyDeviceInfo,
|
|
|
+ CameraToThirdPartyMap
|
|
|
+} from '@/constant'
|
|
|
import {
|
|
|
+ getManufacturersByType,
|
|
|
+ getCameras,
|
|
|
addCamera,
|
|
|
+ updateCamera,
|
|
|
deleteCamera
|
|
|
-} from '@/api/camera'
|
|
|
+} from '@/api/external'
|
|
|
import MeshDialog from '../components/MeshDialog.vue'
|
|
|
|
|
|
export default {
|
|
|
@@ -85,21 +99,30 @@ export default {
|
|
|
item: {},
|
|
|
manufacturerSelectSchema,
|
|
|
schema: {
|
|
|
- list: this.getThirdPartyDevices,
|
|
|
+ list: this.getCameras,
|
|
|
buttons: [
|
|
|
{ type: 'add', on: this.onAdd }
|
|
|
],
|
|
|
filters: [
|
|
|
+ { key: 'manufacturerKey', type: 'select', placeholder: '厂商', ...manufacturerSelectSchema },
|
|
|
{ key: 'boundFlag', type: 'select', placeholder: '使用情况', options: [
|
|
|
{ value: 0, label: '未使用' },
|
|
|
{ value: 1, label: '已使用' }
|
|
|
] },
|
|
|
- { key: 'name', type: 'search', placeholder: '名称' }
|
|
|
+ { key: 'identifier', type: 'search', placeholder: '唯一标识' },
|
|
|
+ { key: 'remark', type: 'search', placeholder: '备注' }
|
|
|
],
|
|
|
cols: [
|
|
|
{ type: 'refresh' },
|
|
|
- { prop: 'name', label: '名称' },
|
|
|
+ { prop: 'manufacturerName', label: '厂商' },
|
|
|
+ { prop: 'model', label: '型号' },
|
|
|
{ prop: 'identifier', label: '唯一标识' },
|
|
|
+ { prop: 'remark', label: '备注', render: (data, h) => h('edit-input', {
|
|
|
+ props: {
|
|
|
+ value: `${data.remark}`
|
|
|
+ },
|
|
|
+ on: { edit: val => this.onEditRemark(data, val) }
|
|
|
+ }), 'class-name': 'c-edit-column', 'min-width': 120 },
|
|
|
{ type: 'tag', render: ({ onlineStatus }) => onlineStatus === 1
|
|
|
? { type: 'success', label: '在线' }
|
|
|
: { type: 'danger', label: '离线' } },
|
|
|
@@ -119,10 +142,9 @@ export default {
|
|
|
getManufacturersByType () {
|
|
|
return getManufacturersByType(CameraToThirdPartyMap[this.type])
|
|
|
},
|
|
|
- getThirdPartyDevices (params) {
|
|
|
- return getThirdPartyDevices({
|
|
|
+ getCameras (params) {
|
|
|
+ return getCameras({
|
|
|
cameraType: this.type,
|
|
|
- deviceType: CameraToThirdPartyMap[this.type],
|
|
|
...params
|
|
|
})
|
|
|
},
|
|
|
@@ -131,7 +153,8 @@ export default {
|
|
|
cameraType: this.type,
|
|
|
identifier: '',
|
|
|
manufacturerKey: '',
|
|
|
- name: '',
|
|
|
+ model: '',
|
|
|
+ remark: ThirdPartyDeviceInfo[CameraToThirdPartyMap[this.type]],
|
|
|
username: '',
|
|
|
password: ''
|
|
|
}
|
|
|
@@ -145,24 +168,24 @@ export default {
|
|
|
})
|
|
|
return
|
|
|
}
|
|
|
- if (!this.item.name) {
|
|
|
+ if (!this.item.model) {
|
|
|
this.$message({
|
|
|
type: 'warning',
|
|
|
- message: '请填写设备名称'
|
|
|
+ message: '请填写型号'
|
|
|
})
|
|
|
return
|
|
|
}
|
|
|
if (!this.item.identifier) {
|
|
|
this.$message({
|
|
|
type: 'warning',
|
|
|
- message: '请填写设备标识'
|
|
|
+ message: '请填写唯一标识'
|
|
|
})
|
|
|
return
|
|
|
}
|
|
|
if (!/^[0-9a-zA-Z]+$/.test(this.item.identifier)) {
|
|
|
this.$message({
|
|
|
type: 'warning',
|
|
|
- message: '设备标识格式错误仅支持数字和字母'
|
|
|
+ message: '唯一标识格式错误仅支持数字和字母'
|
|
|
})
|
|
|
return
|
|
|
}
|
|
|
@@ -189,6 +212,19 @@ export default {
|
|
|
done()
|
|
|
})
|
|
|
},
|
|
|
+ onEditRemark (camera, { newVal, oldVal }) {
|
|
|
+ if (newVal === oldVal) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ camera.remark = newVal
|
|
|
+ updateCamera({
|
|
|
+ id: camera.id,
|
|
|
+ username: camera.username,
|
|
|
+ remark: newVal
|
|
|
+ }).catch(() => {
|
|
|
+ camera.remark = oldVal
|
|
|
+ })
|
|
|
+ },
|
|
|
onDel ({ id }) {
|
|
|
deleteCamera(id).then(() => {
|
|
|
this.$refs.table.decrease(1)
|