mirror of
https://gitee.com/beecue/fastbee.git
synced 2026-05-07 16:24:39 +08:00
feat(国际化): 新增国际化
This commit is contained in:
@@ -2,45 +2,45 @@
|
||||
<div style="padding:6px;">
|
||||
<el-card v-show="showSearch" style="margin-bottom:5px;">
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px" style="margin-bottom:-20px;">
|
||||
<el-form-item label="分类名称" prop="categoryName">
|
||||
<el-input v-model="queryParams.categoryName" placeholder="请输入产品分类名称" clearable size="small"
|
||||
<el-form-item :label="$t('product.category.142342-0')" prop="categoryName">
|
||||
<el-input v-model="queryParams.categoryName" :placeholder="$t('product.index.091251-3')" clearable size="small"
|
||||
@keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('search') }}</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('reset') }}</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item style="float:right;">
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
|
||||
v-hasPermi="['iot:category:add']">新增</el-button>
|
||||
v-hasPermi="['iot:category:add']">{{ $t('add') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<el-card style="padding-bottom:100px;">
|
||||
<el-table v-loading="loading" :data="categoryList" @selection-change="handleSelectionChange" border>
|
||||
<el-table-column label="产品分类名称" align="center" prop="categoryName" />
|
||||
<el-table-column label="备注" align="left" header-align="center" prop="remark" min-width="150" />
|
||||
<el-table-column label="系统定义" align="center" prop="isSys">
|
||||
<el-table-column :label="$t('product.category.142342-0')" align="center" prop="categoryName" />
|
||||
<el-table-column :label="$t('remark')" align="left" header-align="center" prop="remark" min-width="150" />
|
||||
<el-table-column :label="$t('template.index.891112-12')" align="center" prop="isSys">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_yes_no" :value="scope.row.isSys" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="显示顺序" align="center" prop="orderNum" />
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
|
||||
<el-table-column :label="$t('product.category.142342-1')" align="center" prop="orderNum" />
|
||||
<el-table-column :label="$t('creatTime')" align="center" prop="createTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="150">
|
||||
<el-table-column :label="$t('opation')" align="center" class-name="small-padding fixed-width" width="150">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="small" type="text" style="padding:5px;" icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)" v-hasPermi="['iot:category:query']"
|
||||
v-if="scope.row.isSys == '0' ? true : !isTenant">修改</el-button>
|
||||
v-if="scope.row.isSys == '0' ? true : !isTenant">{{ $t('update') }}</el-button>
|
||||
<el-button size="small" type="text" style="padding:5px;" icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)" v-hasPermi="['iot:category:remove']"
|
||||
v-if="scope.row.isSys == '0' ? true : !isTenant">删除</el-button>
|
||||
<span style="font-size:10px;color:#999;" v-if="scope.row.isSys == '1' && isTenant">系统定义,不能修改</span>
|
||||
v-if="scope.row.isSys == '0' ? true : !isTenant">{{ $t('del') }}</el-button>
|
||||
<span style="font-size:10px;color:#999;" v-if="scope.row.isSys == '1' && isTenant">{{ $t('template.index.891112-21') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -49,25 +49,25 @@
|
||||
:limit.sync="queryParams.pageSize" @pagination="getList" />
|
||||
|
||||
<!-- 添加或修改产品分类对话框 -->
|
||||
<el-dialog title="产品分类" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-dialog :title="$t('product.product-edit.473153-3')" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="分类名称" prop="categoryName">
|
||||
<el-input v-model="form.categoryName" placeholder="请输入产品分类名称" />
|
||||
<el-form-item :label="$t('product.category.142342-0')" prop="categoryName">
|
||||
<el-input v-model="form.categoryName" :placeholder="$t('product.index.091251-3')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="显示顺序" prop="orderNum">
|
||||
<el-form-item :label="$t('product.category.142342-1')" prop="orderNum">
|
||||
<el-input-number controls-position="right" v-model="form.orderNum"
|
||||
placeholder="请输入显示顺序" style="width:100%" />
|
||||
:placeholder="$t('product.category.142342-2')" style="width:100%" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
||||
<el-form-item :label="$t('remark')" prop="remark">
|
||||
<el-input v-model="form.remark" type="textarea" :placeholder="$t('product.category.142342-3')" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm" v-hasPermi="['iot:category:edit']"
|
||||
v-show="form.categoryId">修 改</el-button>
|
||||
v-show="form.categoryId">{{ $t('update') }}</el-button>
|
||||
<el-button type="primary" @click="submitForm" v-hasPermi="['iot:category:add']"
|
||||
v-show="!form.categoryId">新 增</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
v-show="!form.categoryId">{{ $t('add') }}</el-button>
|
||||
<el-button @click="cancel">{{ $t('cancel') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
@@ -122,35 +122,35 @@ export default {
|
||||
rules: {
|
||||
categoryName: [{
|
||||
required: true,
|
||||
message: "产品分类名称不能为空",
|
||||
message: this.$t('product.category.142342-4'),
|
||||
trigger: "blur"
|
||||
}, {
|
||||
min: 1,
|
||||
max: 64,
|
||||
message: '产品分类不能少于1个字符和超过64字符',
|
||||
message: this.$t('product.category.142342-12'),
|
||||
},
|
||||
],
|
||||
orderNum: [{
|
||||
required: true,
|
||||
message: '分类顺序不能为空',
|
||||
message: this.$t('product.category.142342-13'),
|
||||
trigger: 'blur',
|
||||
}, {
|
||||
type: 'number',
|
||||
min: -2147483648,
|
||||
max: 2147483647,
|
||||
message: '顺序值不能超过int型的取值范围(-2^31——2^31-1)',
|
||||
message: this.$t('product.category.142342-14'),
|
||||
trigger: 'blur',
|
||||
}],
|
||||
remark: [{
|
||||
required: false,
|
||||
min: 0,
|
||||
max: 500,
|
||||
message: '备注不能输入超过500个字符',
|
||||
message: this.$t('product.category.142342-15'),
|
||||
trigger: 'blur',
|
||||
}],
|
||||
isSys: [{
|
||||
required: true,
|
||||
message: "是否系统通用不能为空",
|
||||
message: this.$t('product.category.142342-5'),
|
||||
trigger: "blur"
|
||||
}],
|
||||
}
|
||||
@@ -219,7 +219,7 @@ export default {
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = "添加产品分类";
|
||||
this.title = this.$t('product.category.142342-6');
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
@@ -228,7 +228,7 @@ export default {
|
||||
getCategory(categoryId).then(response => {
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = "修改产品分类";
|
||||
this.title = this.$t('product.category.142342-7');
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
@@ -237,13 +237,13 @@ export default {
|
||||
if (valid) {
|
||||
if (this.form.categoryId != null) {
|
||||
updateCategory(this.form).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.$modal.msgSuccess(this.$t('updateSuccess'));
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addCategory(this.form).then(response => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.$modal.msgSuccess(this.$t('addSuccess'));
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
@@ -255,7 +255,7 @@ export default {
|
||||
handleDelete(row) {
|
||||
const categoryIds = row.categoryId || this.ids;
|
||||
let msg = "";
|
||||
this.$modal.confirm('是否确认删除产品分类编号为"' + categoryIds + '"的数据项?').then(function () {
|
||||
this.$modal.confirm(this.$t('product.category.142342-8', [categoryIds])).then(function () {
|
||||
return delCategory(categoryIds).then(response => {
|
||||
msg = response.msg;
|
||||
});
|
||||
|
||||
@@ -2,101 +2,101 @@
|
||||
<div style="padding: 6px">
|
||||
<el-card v-show="showSearch" style="margin-bottom: 6px">
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px" style="margin-bottom:-20px;">
|
||||
<el-form-item label="客户端ID" prop="clientId">
|
||||
<el-input v-model="queryParams.clientId" placeholder="请输入客户端ID" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
<el-form-item :label="$t('speaker.clientDetails.index.893021-0')" prop="clientId">
|
||||
<el-input v-model="queryParams.clientId" :placeholder="$t('speaker.clientDetails.index.893021-1')" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="授权平台" prop="type">
|
||||
<el-select v-model="queryParams.type" placeholder="请选择平台" clearable size="small">
|
||||
<el-form-item :label="$t('speaker.clientDetails.index.893021-2')" prop="type">
|
||||
<el-select v-model="queryParams.type" :placeholder="$t('speaker.clientDetails.index.893021-3')" clearable size="small">
|
||||
<el-option v-for="dict in dict.type.oauth_platform" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
<el-tag type="danger" style="margin-left:15px;">该功能暂不可用,后面版本发布</el-tag>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('search') }}</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('reset') }}</el-button>
|
||||
<el-tag type="danger" style="margin-left:15px;">{{ $t('system.clientDetails.293742-0') }}</el-tag>
|
||||
</el-form-item>
|
||||
<el-form-item style="float:right;">
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['iot:clientDetails:add']">新增</el-button>
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['iot:clientDetails:add']">{{ $t('add') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<el-card style="padding-bottom: 100px">
|
||||
<el-table v-loading="loading" :data="clientDetailsList" @selection-change="handleSelectionChange">
|
||||
<el-table-column label="客户端ID" align="center" prop="clientId" />
|
||||
<el-table-column label="资源" align="center" prop="resourceIds" />
|
||||
<el-table-column label="权限范围" align="center" prop="scope" />
|
||||
<el-table-column label="授权平台" align="center" prop="type">
|
||||
<el-table-column :label="$t('speaker.clientDetails.index.893021-0')" align="center" prop="clientId" />
|
||||
<el-table-column :label="$t('system.clientDetails.293742-1')" align="center" prop="resourceIds" />
|
||||
<el-table-column :label="$t('speaker.clientDetails.index.893021-12')" align="center" prop="scope" />
|
||||
<el-table-column :label="$t('speaker.clientDetails.index.893021-2')" align="center" prop="type">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.oauth_platform" :value="scope.row.type" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="自动授权" align="center" prop="autoapprove">
|
||||
<el-table-column :label="$t('system.clientDetails.293742-2')" align="center" prop="autoapprove">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.autoapprove=='true'">自动授权</span>
|
||||
<span v-if="scope.row.autoapprove=='false'">用户验证</span>
|
||||
<span v-if="scope.row.autoapprove=='true'">{{ $t('system.clientDetails.293742-3') }}</span>
|
||||
<span v-if="scope.row.autoapprove=='false'">{{ $t('system.clientDetails.293742-4') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="授权模式" align="center" prop="authorizedGrantTypes">
|
||||
<el-table-column :label="$t('speaker.clientDetails.index.893021-14')" align="center" prop="authorizedGrantTypes">
|
||||
<template slot-scope="scope">
|
||||
<div v-html="formatGrantTypesDisplay(scope.row.authorizedGrantTypes)"></div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="回调地址" align="center" prop="webServerRedirectUri" min-width="130" />
|
||||
<el-table-column label="权限" align="center" prop="authorities" />
|
||||
<el-table-column label="Token有效期" align="center" prop="accessTokenValidity" />
|
||||
<el-table-column label="Token刷新时间" align="center" prop="refreshTokenValidity" />
|
||||
<el-table-column :label="$t('speaker.clientDetails.index.893021-15')" align="center" prop="webServerRedirectUri" min-width="130" />
|
||||
<el-table-column :label="$t('system.clientDetails.293742-5')" align="center" prop="authorities" />
|
||||
<el-table-column :label="$t('speaker.clientDetails.index.893021-16')" align="center" prop="accessTokenValidity" />
|
||||
<el-table-column :label="$t('system.clientDetails.293742-6')" align="center" prop="refreshTokenValidity" />
|
||||
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<el-table-column :label="$t('opation')" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['iot:clientDetails:edit']">修改</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['iot:clientDetails:remove']" disabled>删除</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['iot:clientDetails:edit']">{{ $t('update') }}</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['iot:clientDetails:remove']" disabled>{{ $t('del') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
|
||||
|
||||
<!-- 添加或修改云云对接对话框 -->
|
||||
<!-- 添加或修改对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
|
||||
<el-form-item label="授权平台" prop="type">
|
||||
<el-select v-model="form.type" placeholder="请选择授权平台">
|
||||
<el-form-item :label="$t('speaker.clientDetails.index.893021-2')" prop="type">
|
||||
<el-select v-model="form.type" :placeholder="$t('speaker.clientDetails.detail-dialog.455323-5')">
|
||||
<el-option v-for="dict in dict.type.oauth_platform" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="客户端ID" prop="clientId">
|
||||
<el-input v-model="form.clientId" placeholder="请输入客户端ID" />
|
||||
<el-form-item :label="$t('speaker.clientDetails.index.893021-0')" prop="clientId">
|
||||
<el-input v-model="form.clientId" :placeholder="$t('speaker.clientDetails.index.893021-1')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="资源集合" prop="resourceIds">
|
||||
<el-input v-model="form.resourceIds" placeholder="请输入资源" />
|
||||
<el-form-item :label="$t('system.clientDetails.293742-7')" prop="resourceIds">
|
||||
<el-input v-model="form.resourceIds" :placeholder="$t('system.clientDetails.293742-8')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="授权模式" prop="authorizedGrantTypes">
|
||||
<el-input v-model="form.authorizedGrantTypes" type="textarea" placeholder="请输入授权模式" />
|
||||
<el-form-item :label="$t('speaker.clientDetails.index.893021-14')" prop="authorizedGrantTypes">
|
||||
<el-input v-model="form.authorizedGrantTypes" type="textarea" :placeholder="$t('system.clientDetails.293742-9')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="秘钥" prop="clientSecret">
|
||||
<el-input v-model="form.clientSecret" placeholder="请输入客户端秘钥" />
|
||||
<el-form-item :label="$t('speaker.clientDetails.detail-dialog.455323-15')" prop="clientSecret">
|
||||
<el-input v-model="form.clientSecret" :placeholder="$t('system.clientDetails.293742-10')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="回调地址" prop="webServerRedirectUri">
|
||||
<el-input v-model="form.webServerRedirectUri" type="textarea" placeholder="请输入回调地址" />
|
||||
<el-form-item :label="$t('speaker.clientDetails.index.893021-15')" prop="webServerRedirectUri">
|
||||
<el-input v-model="form.webServerRedirectUri" type="textarea" :placeholder="$t('speaker.clientDetails.detail-dialog.455323-24')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="权限" prop="authorities">
|
||||
<el-input v-model="form.authorities" placeholder="请输入权限" />
|
||||
<el-form-item :label="$t('system.clientDetails.293742-5')" prop="authorities">
|
||||
<el-input v-model="form.authorities" :placeholder="$t('system.clientDetails.293742-11')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Token有效期" prop="accessTokenValidity">
|
||||
<el-input v-model="form.accessTokenValidity" placeholder="请输入Token有效时间" />
|
||||
<el-form-item :label="$t('speaker.clientDetails.index.893021-16')" prop="accessTokenValidity">
|
||||
<el-input v-model="form.accessTokenValidity" :placeholder="$t('system.clientDetails.293742-12')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Token刷新时间" prop="refreshTokenValidity">
|
||||
<el-input v-model="form.refreshTokenValidity" placeholder="请输入Token刷新有效时间" />
|
||||
<el-form-item :label="$t('system.clientDetails.293742-6')" prop="refreshTokenValidity">
|
||||
<el-input v-model="form.refreshTokenValidity" :placeholder="$t('system.clientDetails.293742-13')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="预留信息" prop="additionalInformation">
|
||||
<el-input v-model="form.additionalInformation" type="textarea" placeholder="请输入内容" />
|
||||
<el-form-item :label="$t('speaker.clientDetails.detail-dialog.455323-25')" prop="additionalInformation">
|
||||
<el-input v-model="form.additionalInformation" type="textarea" :placeholder="$t('product.category.142342-3')" />
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm" disabled>确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
<el-button type="primary" @click="submitForm" disabled>{{ $t('confirm') }}</el-button>
|
||||
<el-button @click="cancel">{{ $t('cancel') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</el-card>
|
||||
@@ -154,7 +154,7 @@ export default {
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
/** 查询云云对接列表 */
|
||||
/** 查询列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
listClientDetails(this.queryParams).then((response) => {
|
||||
@@ -206,7 +206,7 @@ export default {
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = "添加云云对接";
|
||||
this.title = this.$t('system.clientDetails.293742-14');
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
@@ -215,7 +215,7 @@ export default {
|
||||
getClientDetails(clientId).then((response) => {
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = "修改云云对接";
|
||||
this.title = this.$t('system.clientDetails.293742-15');
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
@@ -224,13 +224,13 @@ export default {
|
||||
if (valid) {
|
||||
if (this.form.clientId != null) {
|
||||
updateClientDetails(this.form).then((response) => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.$modal.msgSuccess(this.$t('updateSuccess'));
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addClientDetails(this.form).then((response) => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.$modal.msgSuccess(this.$t('addSuccess'));
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
@@ -242,13 +242,13 @@ export default {
|
||||
handleDelete(row) {
|
||||
const clientIds = row.clientId || this.ids;
|
||||
this.$modal
|
||||
.confirm('是否确认删除云云对接编号为"' + clientIds + '"的数据项?')
|
||||
.confirm(this.$t('speaker.clientDetails.index.893021-21', [clientIds]))
|
||||
.then(function () {
|
||||
return delClientDetails(clientIds);
|
||||
})
|
||||
.then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
this.$modal.msgSuccess(this.$t('delSuccess'));
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
@@ -273,15 +273,15 @@ export default {
|
||||
/** 授权模式转换 */
|
||||
convertGrantType(type) {
|
||||
if (type == "client_credentials") {
|
||||
return "客户端模式"
|
||||
return this.$t('system.clientDetails.293742-16')
|
||||
} else if (type == "password") {
|
||||
return "密码模式";
|
||||
return this.$t('system.clientDetails.293742-17');
|
||||
} else if (type == "authorization_code") {
|
||||
return "授权码模式";
|
||||
return this.$t('system.clientDetails.293742-18');
|
||||
} else if (type == "implicit") {
|
||||
return "简化模式";
|
||||
return this.$t('system.clientDetails.293742-19');
|
||||
} else if (type == "refresh_token") {
|
||||
return "刷新Token";
|
||||
return this.$t('system.clientDetails.293742-20');
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
|
||||
@@ -2,53 +2,53 @@
|
||||
<el-card style="margin: 6px; padding-bottom: 100px">
|
||||
<el-tabs v-model="activeName" tab-position="left" @tab-click="tabChange" style="padding: 10px; min-height: 400px">
|
||||
<el-tab-pane name="basic">
|
||||
<span slot="label">* 基本信息</span>
|
||||
<span slot="label">* {{ $t('device.device-edit.148398-0') }}</span>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
|
||||
<el-row :gutter="100">
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="8">
|
||||
<el-form-item label="设备名称" prop="deviceName">
|
||||
<el-input v-model="form.deviceName" placeholder="请输入设备名称">
|
||||
<el-button slot="append" @click="openSummaryDialog" v-if="form.deviceId != 0">摘要</el-button>
|
||||
<el-form-item :label="$t('device.device-edit.148398-1')" prop="deviceName">
|
||||
<el-input v-model="form.deviceName" :placeholder="$t('device.device-edit.148398-2')">
|
||||
<el-button slot="append" @click="openSummaryDialog" v-if="form.deviceId != 0">{{ $t('device.device-edit.148398-3') }}</el-button>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="" prop="productName">
|
||||
<template slot="label">
|
||||
<span style="color: red">*</span>
|
||||
所属产品
|
||||
{{ $t('device.device-edit.148398-4') }}
|
||||
</template>
|
||||
<el-input readonly v-model="form.productName" placeholder="请选择产品" :disabled="form.status != 1">
|
||||
<el-button slot="append" @click="selectProduct()" :disabled="form.status != 1">选择</el-button>
|
||||
<el-input readonly v-model="form.productName" :placeholder="$t('device.device-edit.148398-95')" :disabled="form.status != 1">
|
||||
<el-button slot="append" @click="selectProduct()" :disabled="form.status != 1">{{ $t('device.device-edit.148398-6') }}</el-button>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="" prop="serialNumber">
|
||||
<template slot="label">
|
||||
<span style="color: red">*</span>
|
||||
设备编号
|
||||
{{ $t('device.device-edit.148398-7') }}
|
||||
</template>
|
||||
<el-input v-model="form.serialNumber" placeholder="请输入设备编号" :disabled="form.status !== 1" maxlength="32">
|
||||
<el-button v-if="form.deviceType !== 3" slot="append" @click="generateNum" :loading="genDisabled" :disabled="form.status != 1" v-hasPermi="['iot:device:add']">生成</el-button>
|
||||
<el-button v-if="form.deviceType === 3" slot="append" @click="genSipID()" :disabled="form.status != 1" v-hasPermi="['iot:device:add']">生成</el-button>
|
||||
<el-input v-model="form.serialNumber" :placeholder="$t('device.device-edit.148398-8')" :disabled="form.status !== 1" maxlength="32">
|
||||
<el-button v-if="form.deviceType !== 3" slot="append" @click="generateNum" :loading="genDisabled" :disabled="form.status != 1" v-hasPermi="['iot:device:add']">{{ $t('device.device-edit.148398-9') }}</el-button>
|
||||
<el-button v-if="form.deviceType === 3" slot="append" @click="genSipID()" :disabled="form.status != 1" v-hasPermi="['iot:device:add']">{{ $t('device.device-edit.148398-9') }}</el-button>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="openServerTip">
|
||||
<template>
|
||||
<el-alert type="info" show-icon description="当前选择TCP协议,设备编号生成为HEX格式"></el-alert>
|
||||
<el-alert type="info" show-icon :description="$t('device.device-edit.148398-10')"></el-alert>
|
||||
</template>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="openTip">
|
||||
<template>
|
||||
<el-alert type="success" show-icon description="当前选择的产品属于modbus协议,将在网关设备创建后根据采集点模板生成子设备"></el-alert>
|
||||
<el-alert type="success" show-icon :description="$t('device.device-edit.148398-11')"></el-alert>
|
||||
</template>
|
||||
</el-form-item>
|
||||
<el-form-item label="固件版本" prop="firmwareVersion">
|
||||
<el-input v-model="form.firmwareVersion" placeholder="请输入固件版本" type="number" step="0.1" :disabled="form.status != 1 || form.deviceType === 3">
|
||||
<el-form-item :label="$t('device.device-edit.148398-12')" prop="firmwareVersion">
|
||||
<el-input v-model="form.firmwareVersion" :placeholder="$t('device.device-edit.148398-12')" type="number" step="0.1" :disabled="form.status != 1 || form.deviceType === 3">
|
||||
<template slot="prepend">Version</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="设备影子" prop="isShadow">
|
||||
<el-form-item :label="$t('device.device-edit.148398-15')" prop="isShadow">
|
||||
<el-switch v-model="form.isShadow" active-text="" inactive-text="" :active-value="1" :inactive-value="0" :disabled="form.deviceType === 3"></el-switch>
|
||||
</el-form-item>
|
||||
<el-form-item label="禁用设备" prop="deviceStatus">
|
||||
<el-form-item :label="$t('device.device-edit.148398-16')" prop="deviceStatus">
|
||||
<el-switch
|
||||
v-model="deviceStatus"
|
||||
active-text=""
|
||||
@@ -59,47 +59,47 @@
|
||||
active-color="#F56C6C"
|
||||
></el-switch>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注信息" prop="remark">
|
||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" rows="3" />
|
||||
<el-form-item :label="$t('device.device-edit.148398-17')" prop="remark">
|
||||
<el-input v-model="form.remark" type="textarea" :placeholder="$t('device.device-edit.148398-18')" rows="3" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="8">
|
||||
<el-form-item label="定位方式" prop="locationWay">
|
||||
<el-select v-model="form.locationWay" placeholder="请选择设备状态" clearable size="small" style="width: 100%" :disabled="form.deviceType === 3">
|
||||
<el-form-item :label="$t('device.device-edit.148398-19')" prop="locationWay">
|
||||
<el-select v-model="form.locationWay" :placeholder="$t('device.device-edit.148398-20')" clearable size="small" style="width: 100%" :disabled="form.deviceType === 3">
|
||||
<el-option v-for="dict in dict.type.iot_location_way" :key="dict.value" :label="dict.label" :value="Number(dict.value)" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="设备经度" prop="longitude">
|
||||
<el-input v-model="form.longitude" placeholder="请输入设备经度" type="number" :disabled="form.locationWay != 3">
|
||||
<el-link slot="append" :underline="false" href="https://api.map.baidu.com/lbsapi/getpoint/index.html" target="_blank" :disabled="form.locationWay != 3">坐标拾取</el-link>
|
||||
<el-form-item :label="$t('device.device-edit.148398-21')" prop="longitude">
|
||||
<el-input v-model="form.longitude" :placeholder="$t('device.device-edit.148398-22')" type="number" :disabled="form.locationWay != 3">
|
||||
<el-link slot="append" :underline="false" href="https://api.map.baidu.com/lbsapi/getpoint/index.html" target="_blank" :disabled="form.locationWay != 3">{{ $t('device.device-edit.148398-23') }}</el-link>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="设备纬度" prop="latitude">
|
||||
<el-input v-model="form.latitude" placeholder="请输入设备纬度" type="number" :disabled="form.locationWay != 3">
|
||||
<el-link slot="append" :underline="false" href="https://api.map.baidu.com/lbsapi/getpoint/index.html" target="_blank" :disabled="form.locationWay != 3">坐标拾取</el-link>
|
||||
<el-form-item :label="$t('device.device-edit.148398-24')" prop="latitude">
|
||||
<el-input v-model="form.latitude" :placeholder="$t('device.device-edit.148398-25')" type="number" :disabled="form.locationWay != 3">
|
||||
<el-link slot="append" :underline="false" href="https://api.map.baidu.com/lbsapi/getpoint/index.html" target="_blank" :disabled="form.locationWay != 3">{{ $t('device.device-edit.148398-23') }}</el-link>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="所在地址" prop="networkAddress">
|
||||
<el-input v-model="form.networkAddress" placeholder="请输入设备所在地址" :disabled="form.locationWay != 3" />
|
||||
<el-form-item :label="$t('device.device-edit.148398-26')" prop="networkAddress">
|
||||
<el-input v-model="form.networkAddress" :placeholder="$t('device.device-edit.148398-27')" :disabled="form.locationWay != 3" />
|
||||
</el-form-item>
|
||||
<el-form-item label="入网地址" prop="networkIp">
|
||||
<el-input v-model="form.networkIp" placeholder="设备入网IP" disabled />
|
||||
<el-form-item :label="$t('device.device-edit.148398-28')" prop="networkIp">
|
||||
<el-input v-model="form.networkIp" :placeholder="$t('device.device-edit.148398-29')" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="激活时间" prop="activeTime">
|
||||
<el-date-picker clearable v-model="form.activeTime" type="date" value-format="yyyy-MM-dd" placeholder="设备激活时间" disabled style="width: 100%"></el-date-picker>
|
||||
<el-form-item :label="$t('device.device-edit.148398-30')" prop="activeTime">
|
||||
<el-date-picker clearable v-model="form.activeTime" type="date" value-format="yyyy-MM-dd" :placeholder="$t('device.device-edit.148398-31')" disabled style="width: 100%"></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="设备信号" prop="rssi">
|
||||
<el-input v-model="form.rssi" placeholder="设备信号强度" disabled />
|
||||
<el-form-item :label="$t('device.device-edit.148398-32')" prop="rssi">
|
||||
<el-input v-model="form.rssi" :placeholder="$t('device.device-edit.148398-33')" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="其他信息" prop="remark" v-if="form.deviceId != 0">
|
||||
<el-form-item :label="$t('device.device-edit.148398-34')" prop="remark" v-if="form.deviceId != 0">
|
||||
<dict-tag :options="dict.type.iot_device_status" :value="form.status" style="display: inline-block; margin-right: 8px" />
|
||||
<el-button size="small" @click="handleViewMqtt()">认证信息</el-button>
|
||||
<el-button size="small" @click="openCodeDialog()">二维码</el-button>
|
||||
<el-button size="small" @click="handleViewMqtt()">{{ $t('device.device-edit.148398-35') }}</el-button>
|
||||
<el-button size="small" @click="openCodeDialog()">{{ $t('device.device-edit.148398-36') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="8" v-if="form.deviceId != 0">
|
||||
<div style="border: 1px solid #dfe4ed; border-radius: 5px; padding: 5px; text-align: center; line-height: 400px">
|
||||
<div id="map" style="height: 435px; width: 100%">地图展示区域,新增后显示</div>
|
||||
<div id="map" style="height: 435px; width: 100%">{{ $t('device.device-edit.148398-37') }}</div>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -107,8 +107,8 @@
|
||||
|
||||
<el-form label-width="100px" style="margin-top: 50px">
|
||||
<el-form-item style="text-align: center; margin-left: -100px; margin-top: 10px">
|
||||
<el-button type="primary" @click="submitForm" v-hasPermi="['iot:device:edit']" v-show="form.deviceId != 0">修 改</el-button>
|
||||
<el-button type="primary" @click="submitForm" v-hasPermi="['iot:device:add']" v-show="form.deviceId == 0">新 增</el-button>
|
||||
<el-button type="primary" @click="submitForm" v-hasPermi="['iot:device:edit']" v-show="form.deviceId != 0">{{ $t('device.device-timer.433369-33') }}</el-button>
|
||||
<el-button type="primary" @click="submitForm" v-hasPermi="['iot:device:add']" v-show="form.deviceId == 0">{{ $t('device.device-timer.433369-32') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
@@ -119,31 +119,31 @@
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane name="runningStatus" key="1" v-if="form.deviceType !== 3 && form.deviceId !=0 && !isSubDev">
|
||||
<span slot="label">运行状态</span>
|
||||
<span slot="label">{{ $t('device.device-edit.148398-42') }}</span>
|
||||
<running-status ref="runningStatus" :device="form" @statusEvent="getDeviceStatusData($event)"/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane name="videoLive" key="2" v-if="form.deviceType === 3 && form.deviceId !=0 ">
|
||||
<span slot="label">设备直播</span>
|
||||
<span slot="label">{{ $t('device.device-edit.148398-45') }}</span>
|
||||
<device-live-stream ref="deviceLiveStream" :device="form" />
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane name="deviceTimer" key="3" v-if="form.deviceType !== 3 && form.deviceId !=0 && hasShrarePerm('timer')">
|
||||
<span slot="label">设备定时</span>
|
||||
<span slot="label">{{ $t('device.device-edit.148398-47') }}</span>
|
||||
<device-timer ref="deviceTimer" :device="form" />
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane name="deviceUser" key="4" v-if="form.deviceId !=0">
|
||||
<span slot="label">设备用户</span>
|
||||
<span slot="label">{{ $t('device.device-user.037521-12') }}</span>
|
||||
<device-user ref="deviceUser" :device="form" @userEvent="getUserData($event)" />
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane name="deviceLog" key="5" v-if="form.deviceType !== 3 && form.deviceId !=0 && hasShrarePerm('log')" lazy>
|
||||
<span slot="label">事件日志</span>
|
||||
<span slot="label">{{ $t('device.device-edit.148398-49') }}</span>
|
||||
<device-log ref="deviceLog" :device="form" />
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane name="deviceFuncLog" key="6" v-if="form.deviceType !== 3 && form.deviceId !=0 && hasShrarePerm('log')" lazy>
|
||||
<span slot="label">指令日志</span>
|
||||
<span slot="label">{{ $t('device.device-edit.148398-50') }}</span>
|
||||
<device-func ref="deviceFuncLog" :device="form" />
|
||||
</el-tab-pane>
|
||||
|
||||
@@ -156,63 +156,63 @@
|
||||
|
||||
<el-tab-pane name="deviceReturn" disabled>
|
||||
<span slot="label">
|
||||
<el-button type="info" size="mini" @click="goBack()">返回列表</el-button>
|
||||
<el-button type="info" size="mini" @click="goBack()">{{ $t('device.device-edit.148398-53') }}</el-button>
|
||||
</span>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
<!-- 设备配置JSON -->
|
||||
<el-dialog title="摘要(设备上传的只读数据)" :visible.sync="openSummary" width="700px" append-to-body>
|
||||
<el-dialog :title="$t('device.device-edit.148398-54')" :visible.sync="openSummary" width="700px" append-to-body>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="14">
|
||||
<div style="border: 1px solid #ccc; margin-top: -15px; height: 350px; width: 360px; overflow: scroll">
|
||||
<json-viewer :value="summary" :expand-depth="10" copyable>
|
||||
<template v-slot:copy>复制</template>
|
||||
<template v-slot:copy>{{ $t('device.device-edit.148398-55') }}</template>
|
||||
</json-viewer>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="10">
|
||||
<div style="border: 1px solid #ccc; width: 200px; text-align: center; margin-left: 20px; margin-top: -10px">
|
||||
<vue-qr :text="qrText" :size="200"></vue-qr>
|
||||
<div style="padding-bottom: 10px">设备二维码</div>
|
||||
<div style="padding-bottom: 10px">{{ $t('device.device-edit.148398-56') }}</div>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="info" @click="closeSummaryDialog">关 闭</el-button>
|
||||
<el-button type="info" @click="closeSummaryDialog">{{ $t('device.device-edit.148398-57') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!-- 二维码 -->
|
||||
<el-dialog :visible.sync="openCode" width="300px" append-to-body>
|
||||
<div style="border: 1px solid #ccc; width: 220px; text-align: center; margin: 0 auto; margin-top: -15px">
|
||||
<vue-qr :text="qrText" :size="200"></vue-qr>
|
||||
<div style="padding-bottom: 10px">设备二维码</div>
|
||||
<div style="padding-bottom: 10px">{{ $t('device.device-edit.148398-56') }}</div>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<el-dialog title="Mqtt连接参数" :visible.sync="openViewMqtt" width="600px" :show-close="true" append-to-body :close-on-click-modal="false">
|
||||
<el-dialog :title="$t('device.device-edit.148398-58')" :visible.sync="openViewMqtt" width="600px" :show-close="true" append-to-body :close-on-click-modal="false">
|
||||
<el-form ref="listQuery" :model="listQuery" :rules="rules" label-width="150px">
|
||||
<el-form-item label="客户端ID" prop="clientId">
|
||||
<el-form-item :label="$t('device.device-edit.148398-88')" prop="clientId">
|
||||
<el-input v-model="listQuery.clientId" readonly style="width: 80%" />
|
||||
</el-form-item>
|
||||
<el-form-item label="MQ账号" prop="username">
|
||||
<el-form-item :label="$t('device.device-edit.148398-92')" prop="username">
|
||||
<el-input v-model="listQuery.username" readonly style="width: 80%" />
|
||||
</el-form-item>
|
||||
<el-form-item label="MQ密码" prop="passwd">
|
||||
<el-form-item :label="$t('device.device-edit.148398-93')" prop="passwd">
|
||||
<el-input clearable v-model="listQuery.passwd" readonly style="width: 80%"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="订阅主题" prop="subscribeTopic">
|
||||
<el-form-item :label="$t('device.device-edit.148398-87')" prop="subscribeTopic">
|
||||
<el-input clearable v-model="listQuery.subscribeTopic" readonly style="width: 80%"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="发布主题" prop="reportTopic">
|
||||
<el-form-item :label="$t('device.device-edit.148398-106')" prop="reportTopic">
|
||||
<el-input clearable v-model="listQuery.reportTopic" readonly style="width: 80%"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="连接端口" prop="port">
|
||||
<el-form-item :label="$t('device.device-edit.148398-90')" prop="port">
|
||||
<el-input clearable v-model="listQuery.port" readonly style="width: 80%"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button class="btns" type="primary" @click="doCopy(2)">一键复制</el-button>
|
||||
<el-button @click="closeSummaryDialog">关 闭</el-button>
|
||||
<el-button class="btns" type="primary" @click="doCopy(2)">{{ $t('device.device-edit.148398-59') }}</el-button>
|
||||
<el-button @click="closeSummaryDialog">{{ $t('device.device-edit.148398-57') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</el-card>
|
||||
@@ -343,20 +343,20 @@ export default {
|
||||
deviceName: [
|
||||
{
|
||||
required: true,
|
||||
message: '设备名称不能为空',
|
||||
message: this.$t('device.device-edit.148398-60'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
{
|
||||
min: 2,
|
||||
max: 32,
|
||||
message: '设备名称长度在 2 到 32 个字符',
|
||||
message: this.$t('device.device-edit.148398-61'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
firmwareVersion: [
|
||||
{
|
||||
required: true,
|
||||
message: '固件版本不能为空',
|
||||
message: this.$t('device.device-edit.148398-62'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
@@ -407,8 +407,8 @@ export default {
|
||||
return;
|
||||
}
|
||||
if (topics[3] == 'status' || topics[2] == 'status') {
|
||||
console.log('接收到【设备状态-详情】主题:', topic);
|
||||
console.log('接收到【设备状态-详情】内容:', message);
|
||||
console.log(this.$t('device.device-edit.148398-63'), topic);
|
||||
console.log(this.$t('device.device-edit.148398-64'), message);
|
||||
// 更新列表中设备的状态
|
||||
if (this.form.serialNumber == deviceNum) {
|
||||
this.oldDeviceStatus = message.status;
|
||||
@@ -782,16 +782,16 @@ export default {
|
||||
/** 提交按钮 */
|
||||
async submitForm() {
|
||||
if (this.form.serialNumber == null || this.form.serialNumber == 0) {
|
||||
this.$modal.alertError('设备编号不能为空');
|
||||
this.$modal.alertError(this.$t('device.device-edit.148398-65'));
|
||||
return;
|
||||
}
|
||||
let reg = /^[0-9a-zA-Z]+$/;
|
||||
if (!reg.test(this.form.serialNumber)) {
|
||||
this.$modal.alertError('设备编号只能是字母和数字');
|
||||
this.$modal.alertError(this.$t('device.device-edit.148398-66'));
|
||||
return;
|
||||
}
|
||||
if (this.form.productId == null || this.form.productId == 0) {
|
||||
this.$modal.alertError('所属产品不能为空');
|
||||
this.$modal.alertError(this.$t('device.device-edit.148398-67'));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -802,7 +802,7 @@ export default {
|
||||
if (response.data == 0) {
|
||||
this.$modal.alertError(response.msg);
|
||||
} else {
|
||||
this.$modal.alertSuccess('修改成功');
|
||||
this.$modal.alertSuccess(this.$t('device.device-edit.148398-68'));
|
||||
this.form = JSON.parse(JSON.stringify(this.form));
|
||||
this.loadMap();
|
||||
}
|
||||
@@ -812,13 +812,13 @@ export default {
|
||||
// 获取设备状态
|
||||
await this.getDeviceStatusWitchThingsModel(response);
|
||||
if (this.form.deviceId == null || this.form.deviceId == 0) {
|
||||
this.$modal.alertError('设备编号已经存在,添加设备失败');
|
||||
this.$modal.alertError(this.$t('device.device-edit.148398-69'));
|
||||
} else {
|
||||
if (this.form.status == 2) {
|
||||
this.deviceStatus = 1;
|
||||
}
|
||||
|
||||
this.$modal.alertSuccess('添加设备成功');
|
||||
this.$modal.alertSuccess(this.$t('device.device-edit.148398-70'));
|
||||
this.loadMap();
|
||||
}
|
||||
});
|
||||
@@ -953,7 +953,7 @@ export default {
|
||||
// 生成随机字母和数字
|
||||
generateNum() {
|
||||
if (!this.form.productId || this.form.productId == 0) {
|
||||
this.$modal.alertError('请先选择产品');
|
||||
this.$modal.alertError(this.$t('device.device-edit.148398-72'));
|
||||
return;
|
||||
}
|
||||
this.genDisabled = true;
|
||||
|
||||
@@ -1,44 +1,44 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="请选择设备从机:" label-width="120px" v-if="isSubDev">
|
||||
<el-select v-model="queryParams.slaveId" placeholder="请选择设备从机" @change="selectSlave">
|
||||
<el-option v-for="slave in slaveList" :key="slave.slaveId" :label="`${slave.deviceName} (从机地址:${slave.slaveId})`" :value="slave.slaveId"></el-option>
|
||||
<el-form-item :label="$t('device.device-functionlog.399522-0')" label-width="120px" v-if="isSubDev">
|
||||
<el-select v-model="queryParams.slaveId" :placeholder="$t('device.device-functionlog.399522-1')" @change="selectSlave">
|
||||
<el-option v-for="slave in slaveList" :key="slave.slaveId" :label="`${slave.deviceName} (${ $t('device.device-functionlog.399522-2').replace('$', slave.slaveId) })`" :value="slave.slaveId"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="日志类型" prop="funType">
|
||||
<el-select v-model="queryParams.funType" placeholder="请选择类型" clearable size="small">
|
||||
<el-form-item :label="$t('device.device-functionlog.399522-3')" prop="funType">
|
||||
<el-select v-model="queryParams.funType" :placeholder="$t('device.device-functionlog.399522-4')" clearable size="small">
|
||||
<el-option v-for="dict in dict.type.iot_function_type" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="标识符" prop="identify">
|
||||
<el-input v-model="queryParams.identify" placeholder="请输入标识符" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
<el-form-item :label="$t('device.device-functionlog.399522-5')" prop="identify">
|
||||
<el-input v-model="queryParams.identify" :placeholder="$t('device.device-functionlog.399522-6')" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="时间范围">
|
||||
<el-date-picker v-model="daterangeTime" size="small" style="width: 240px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
|
||||
<el-form-item :label="$t('device.device-functionlog.399522-7')">
|
||||
<el-date-picker v-model="daterangeTime" size="small" style="width: 240px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" :start-placeholder="$t('device.device-functionlog.399522-8')" :end-placeholder="$t('device.device-functionlog.399522-9')"></el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('device.device-functionlog.399522-10') }}</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('device.device-functionlog.399522-11') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table v-loading="loading" :data="logList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column :label="showName" align="center" prop="identify" />
|
||||
<el-table-column label="指令类型" align="center" prop="funType" width="120px">
|
||||
<el-table-column :label="$t('device.device-functionlog.399522-12')" align="center" prop="funType" width="120px">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_function_type" :value="scope.row.funType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="设置值" align="center" prop="funValue" />
|
||||
<el-table-column label="设备编号" align="center" prop="serialNumber" />
|
||||
<el-table-column label="下发时间" align="center" prop="createTime" />
|
||||
<el-table-column label="下发结果描述" align="center" prop="resultMsg" />
|
||||
<el-table-column label="操作" align="center" width="80">
|
||||
<el-table-column :label="$t('device.device-functionlog.399522-13')" align="center" prop="funValue" />
|
||||
<el-table-column :label="$t('device.device-edit.148398-7')" align="center" prop="serialNumber" />
|
||||
<el-table-column :label="$t('device.device-functionlog.399522-15')" align="center" prop="createTime" />
|
||||
<el-table-column :label="$t('device.device-functionlog.399522-16')" align="center" prop="resultMsg" />
|
||||
<el-table-column :label="$t('device.index.105953-34')" align="center" width="80">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['iot:device:remove']">删除</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['iot:device:remove']">{{ $t('device.device-functionlog.399522-18') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -65,7 +65,7 @@ export default {
|
||||
this.deviceInfo = newVal;
|
||||
if (this.deviceInfo && this.deviceInfo.deviceId != 0) {
|
||||
this.isSubDev = this.deviceInfo.subDeviceList && this.deviceInfo.subDeviceList.length > 0;
|
||||
this.showName = this.isSubDev ? '寄存器地址' : '标识符';
|
||||
this.showName = this.isSubDev ? this.$t('device.device-functionlog.399522-19') : this.$t('device.device-functionlog.399522-5');
|
||||
this.queryParams.deviceId = this.deviceInfo.deviceId;
|
||||
this.queryParams.slaveId = this.deviceInfo.slaveId;
|
||||
this.queryParams.serialNumber = this.deviceInfo.serialNumber;
|
||||
@@ -122,10 +122,10 @@ export default {
|
||||
slaveList: [],
|
||||
// 表单校验
|
||||
rules: {
|
||||
identify: [{ required: true, message: '标识符不能为空', trigger: 'blur' }],
|
||||
funType: [{ required: true, message: '功能下发类型不能为空', trigger: 'change' }],
|
||||
funValue: [{ required: true, message: '日志值不能为空', trigger: 'blur' }],
|
||||
serialNumber: [{ required: true, message: '设备编号不能为空', trigger: 'blur' }],
|
||||
identify: [{ required: true, message: this.$t('device.device-functionlog.399522-20'), trigger: 'blur' }],
|
||||
funType: [{ required: true, message: this.$t('device.device-functionlog.399522-21'), trigger: 'change' }],
|
||||
funValue: [{ required: true, message: this.$t('device.device-functionlog.399522-22'), trigger: 'blur' }],
|
||||
serialNumber: [{ required: true, message: this.$t('device.device-functionlog.399522-23'), trigger: 'blur' }],
|
||||
},
|
||||
};
|
||||
},
|
||||
@@ -195,13 +195,13 @@ export default {
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
this.$modal
|
||||
.confirm('是否确认删除设备服务下发日志编号为"' + ids + '"的数据项?')
|
||||
.confirm(this.$t('device.device-functionlog.399522-24', [ids]))
|
||||
.then(function () {
|
||||
return delLog(ids);
|
||||
})
|
||||
.then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess('删除成功');
|
||||
this.$modal.msgSuccess(this.$t('device.device-functionlog.399522-26'));
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
|
||||
@@ -1,75 +1,80 @@
|
||||
<template>
|
||||
<div style="padding-left:20px;">
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="日志类型" prop="logType">
|
||||
<el-select v-model="queryParams.logType" placeholder="请选择类型" clearable size="small">
|
||||
<el-option v-for="dict in dict.type.iot_event_type" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="标识符" prop="identify">
|
||||
<el-input v-model="queryParams.identify" placeholder="请输入标识符" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="时间范围">
|
||||
<el-date-picker v-model="daterangeTime" size="small" style="width: 240px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div style="padding-left: 20px">
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item :label="$t('device.device-log.798283-0')" prop="logType">
|
||||
<el-select v-model="queryParams.logType" :placeholder="$t('device.device-log.798283-1')" clearable size="small">
|
||||
<el-option v-for="dict in dict.type.iot_event_type" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('device.device-log.798283-2')" prop="identify">
|
||||
<el-input v-model="queryParams.identify" :placeholder="$t('device.device-log.798283-3')" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('device.device-log.798283-4')">
|
||||
<el-date-picker
|
||||
v-model="daterangeTime"
|
||||
size="small"
|
||||
style="width: 240px"
|
||||
value-format="yyyy-MM-dd"
|
||||
type="daterange"
|
||||
range-separator="-"
|
||||
:start-placeholder="$t('device.device-log.798283-5')"
|
||||
:end-placeholder="$t('device.device-log.798283-6')"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('device.device-log.798283-7') }}</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('device.device-log.798283-8') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table v-loading="loading" :data="deviceLogList" size="mini">
|
||||
<el-table-column label="类型" align="center" prop="logType" width="120">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_event_type" :value="scope.row.logType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="模式" align="center" prop="logType" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="primary" v-if="scope.row.mode==1">影子模式</el-tag>
|
||||
<el-tag type="success" v-else-if="scope.row.mode==2">在线模式</el-tag>
|
||||
<el-tag type="info" v-else>其他信息</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="时间" align="center" prop="createTime" width="150">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.createTime }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="标识符" align="center" prop="identify" />
|
||||
<el-table-column label="动作" align="left" header-align="center" prop="logValue">
|
||||
<template slot-scope="scope">
|
||||
<div v-html="formatValueDisplay(scope.row)"></div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table v-loading="loading" :data="deviceLogList" size="mini">
|
||||
<el-table-column :label="$t('device.device-log.798283-9')" align="center" prop="logType" width="120">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_event_type" :value="scope.row.logType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="$t('device.device-log.798283-10')" align="center" prop="logType" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="primary" v-if="scope.row.mode == 1">{{ $t('device.device-log.798283-11') }}</el-tag>
|
||||
<el-tag type="success" v-else-if="scope.row.mode == 2">{{ $t('device.device-log.798283-12') }}</el-tag>
|
||||
<el-tag type="info" v-else>{{ $t('device.device-log.798283-13') }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="$t('device.device-log.798283-14')" align="center" prop="createTime" width="150">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.createTime }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="标识符" align="center" prop="identify" />
|
||||
<el-table-column label="动作" align="left" header-align="center" prop="logValue">
|
||||
<template slot-scope="scope">
|
||||
<div v-html="formatValueDisplay(scope.row)"></div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="备注" header-align="center" align="left" prop="remark">
|
||||
<template slot-scope="scope">
|
||||
{{scope.row.remark==null ?"无":scope.row.remark}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
<div style="height:40px;">
|
||||
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
|
||||
<el-table-column :label="$t('device.device-log.798283-16')" header-align="center" align="left" prop="remark">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.remark == null ? '无' : scope.row.remark }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div style="height: 40px">
|
||||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
listEventLog
|
||||
} from "../../../api/iot/eventLog";
|
||||
import { listEventLog } from '../../../api/iot/eventLog';
|
||||
|
||||
export default {
|
||||
name: "DeviceLog",
|
||||
dicts: ['iot_event_type', "iot_yes_no"],
|
||||
name: 'DeviceLog',
|
||||
dicts: ['iot_event_type', 'iot_yes_no'],
|
||||
props: {
|
||||
device: {
|
||||
type: Object,
|
||||
default: null
|
||||
}
|
||||
default: null,
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
// 获取到父组件传递的device后,刷新列表
|
||||
@@ -81,7 +86,7 @@ export default {
|
||||
// 解析缓存物模型
|
||||
this.thingsModel = this.deviceInfo.cacheThingsModel;
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@@ -118,7 +123,7 @@ export default {
|
||||
/** 查询设备日志列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
listEventLog(this.addDateRange(this.queryParams, this.daterangeTime)).then(response => {
|
||||
listEventLog(this.addDateRange(this.queryParams, this.daterangeTime)).then((response) => {
|
||||
this.deviceLogList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
@@ -131,65 +136,83 @@ export default {
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm");
|
||||
this.daterangeTime=[];
|
||||
this.resetForm('queryForm');
|
||||
this.daterangeTime = [];
|
||||
this.handleQuery();
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
this.download('iot/event/export', {
|
||||
...this.queryParams
|
||||
}, `eventLog_${new Date().getTime()}.xlsx`)
|
||||
this.download(
|
||||
'iot/event/export',
|
||||
{
|
||||
...this.queryParams,
|
||||
},
|
||||
`eventLog_${new Date().getTime()}.xlsx`
|
||||
);
|
||||
},
|
||||
/** 格式化显示数据定义 */
|
||||
formatValueDisplay(row) {
|
||||
// 类型(1=属性上报,2=调用功能,3=事件上报,4=设备升级,5=设备上线,6=设备离线)
|
||||
if (row.logType == 1) {
|
||||
let propertyItem = this.getThingsModelItem(1, row.identify);
|
||||
if (propertyItem != "") {
|
||||
return (propertyItem.parentName ? '[' + propertyItem.parentName + (propertyItem.arrayIndex ? propertyItem.arrayIndex : '') + '] ' : '') +
|
||||
if (propertyItem != '') {
|
||||
return (
|
||||
(propertyItem.parentName ? '[' + propertyItem.parentName + (propertyItem.arrayIndex ? propertyItem.arrayIndex : '') + '] ' : '') +
|
||||
propertyItem.name +
|
||||
': <span style="color:#409EFF;">' + this.getThingsModelItemValue(propertyItem, row.logValue) + ' ' +
|
||||
(propertyItem.datatype.unit != undefined ? propertyItem.datatype.unit : '') + '</span>';
|
||||
': <span style="color:#409EFF;">' +
|
||||
this.getThingsModelItemValue(propertyItem, row.logValue) +
|
||||
' ' +
|
||||
(propertyItem.datatype.unit != undefined ? propertyItem.datatype.unit : '') +
|
||||
'</span>'
|
||||
);
|
||||
}
|
||||
} else if (row.logType == 2) {
|
||||
let functionItem = this.getThingsModelItem(2, row.identify);
|
||||
if (functionItem != "") {
|
||||
return (functionItem.parentName ? '[' + functionItem.parentName + (functionItem.arrayIndex ? functionItem.arrayIndex : '') + '] ' : '') +
|
||||
if (functionItem != '') {
|
||||
return (
|
||||
(functionItem.parentName ? '[' + functionItem.parentName + (functionItem.arrayIndex ? functionItem.arrayIndex : '') + '] ' : '') +
|
||||
functionItem.name +
|
||||
': <span style="color:#409EFF">' + this.getThingsModelItemValue(functionItem, row.logValue) + ' ' +
|
||||
(functionItem.datatype.unit != undefined ? functionItem.datatype.unit : '') + '</span>';
|
||||
': <span style="color:#409EFF">' +
|
||||
this.getThingsModelItemValue(functionItem, row.logValue) +
|
||||
' ' +
|
||||
(functionItem.datatype.unit != undefined ? functionItem.datatype.unit : '') +
|
||||
'</span>'
|
||||
);
|
||||
}
|
||||
} else if (row.logType == 3) {
|
||||
let eventItem = this.getThingsModelItem(3, row.identify);
|
||||
if (eventItem != "") {
|
||||
return (eventItem.parentName ? '[' + eventItem.parentName + (eventItem.arrayIndex ? eventItem.arrayIndex : '') + '] ' : '') +
|
||||
if (eventItem != '') {
|
||||
return (
|
||||
(eventItem.parentName ? '[' + eventItem.parentName + (eventItem.arrayIndex ? eventItem.arrayIndex : '') + '] ' : '') +
|
||||
eventItem.name +
|
||||
': <span style="color:#409EFF">' + this.getThingsModelItemValue(eventItem, row.logValue) + ' ' +
|
||||
(eventItem.datatype.unit != undefined ? eventItem.datatype.unit : '') + '</span>';
|
||||
}
|
||||
else {
|
||||
': <span style="color:#409EFF">' +
|
||||
this.getThingsModelItemValue(eventItem, row.logValue) +
|
||||
' ' +
|
||||
(eventItem.datatype.unit != undefined ? eventItem.datatype.unit : '') +
|
||||
'</span>'
|
||||
);
|
||||
} else {
|
||||
return row.logValue;
|
||||
}
|
||||
} else if (row.logType == 4) {
|
||||
return '<span style="font-weight:bold">设备升级</span>';
|
||||
return '<span style="font-weight:bold">' + this.$t('device.device-log.798283-18') + '</span>';
|
||||
} else if (row.logType == 5) {
|
||||
return '<span style="font-weight:bold">设备上线</span>';
|
||||
return '<span style="font-weight:bold">' + this.$t('device.device-log.798283-19') + '</span>';
|
||||
} else if (row.logType == 6) {
|
||||
return '<span style="font-weight:bold">设备离线</span>';
|
||||
return '<span style="font-weight:bold">' + this.$t('device.device-log.798283-20') + '</span>';
|
||||
}
|
||||
return "";
|
||||
return '';
|
||||
},
|
||||
/** 获取物模型项中的值*/
|
||||
getThingsModelItemValue(item, oldValue) {
|
||||
// 枚举和布尔转换为文字
|
||||
if (item.datatype.type == "bool") {
|
||||
if (oldValue == "0") {
|
||||
if (item.datatype.type == 'bool') {
|
||||
if (oldValue == '0') {
|
||||
return item.datatype.falseText;
|
||||
} else if (oldValue == "1") {
|
||||
} else if (oldValue == '1') {
|
||||
return item.datatype.trueText;
|
||||
}
|
||||
} else if (item.datatype.type == "enum") {
|
||||
} else if (item.datatype.type == 'enum') {
|
||||
for (let i = 0; i < item.datatype.enumList.length; i++) {
|
||||
if (oldValue == item.datatype.enumList[i].value) {
|
||||
return item.datatype.enumList[i].text;
|
||||
@@ -207,7 +230,7 @@ export default {
|
||||
return this.thingsModel.properties[i];
|
||||
}
|
||||
// 对象 object
|
||||
if (this.thingsModel.properties[i].datatype.type == "object") {
|
||||
if (this.thingsModel.properties[i].datatype.type == 'object') {
|
||||
for (let j = 0; j < this.thingsModel.properties[i].datatype.params.length; j++) {
|
||||
if (this.thingsModel.properties[i].datatype.params[j].id == identify) {
|
||||
this.thingsModel.properties[i].datatype.params[j].parentName = this.thingsModel.properties[i].name;
|
||||
@@ -216,12 +239,12 @@ export default {
|
||||
}
|
||||
}
|
||||
// 数组 array
|
||||
if (this.thingsModel.properties[i].datatype.type == "array" && this.thingsModel.properties[i].datatype.arrayType) {
|
||||
if (this.thingsModel.properties[i].datatype.arrayType == "object") {
|
||||
if (this.thingsModel.properties[i].datatype.type == 'array' && this.thingsModel.properties[i].datatype.arrayType) {
|
||||
if (this.thingsModel.properties[i].datatype.arrayType == 'object') {
|
||||
// 数组元素格式:array_01_parentId_humidity,array_01_前缀终端上报时加上,物模型中没有
|
||||
let realidentify = identify;
|
||||
let arrayIndex = 0;
|
||||
if (identify.indexOf("array_") > -1) {
|
||||
if (identify.indexOf('array_') > -1) {
|
||||
arrayIndex = identify.substring(6, 8);
|
||||
realidentify = identify.substring(9);
|
||||
}
|
||||
@@ -238,12 +261,11 @@ export default {
|
||||
for (let j = 0; j < this.thingsModel.properties[i].datatype.arrayCount.length; j++) {
|
||||
if (this.thingsModel.properties[i].id == realidentify) {
|
||||
this.thingsModel.properties[i].arrayIndex = Number(arrayIndex) + 1;
|
||||
this.thingsModel.properties[i].parentName = "元素";
|
||||
this.thingsModel.properties[i].parentName = this.$t('device.device-log.798283-21');
|
||||
return this.thingsModel.properties[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
} else if (type == 2 && this.thingsModel.functions) {
|
||||
@@ -253,7 +275,7 @@ export default {
|
||||
return this.thingsModel.functions[i];
|
||||
}
|
||||
// 对象 object
|
||||
if (this.thingsModel.functions[i].datatype.type == "object") {
|
||||
if (this.thingsModel.functions[i].datatype.type == 'object') {
|
||||
for (let j = 0; j < this.thingsModel.functions[i].datatype.params.length; j++) {
|
||||
if (this.thingsModel.functions[i].datatype.params[j].id == identify) {
|
||||
this.thingsModel.functions[i].datatype.params[j].parentName = this.thingsModel.functions[i].name;
|
||||
@@ -262,15 +284,15 @@ export default {
|
||||
}
|
||||
}
|
||||
// 数组 array
|
||||
if (this.thingsModel.functions[i].datatype.type == "array" && this.thingsModel.functions[i].datatype.arrayType) {
|
||||
if (this.thingsModel.functions[i].datatype.type == 'array' && this.thingsModel.functions[i].datatype.arrayType) {
|
||||
// 数组元素格式:array_01_parentId_humidity,array_01_前缀终端上报时加上,物模型中没有
|
||||
let realidentify = identify;
|
||||
let arrayIndex = 0;
|
||||
if (identify.indexOf("array_") > -1) {
|
||||
if (identify.indexOf('array_') > -1) {
|
||||
arrayIndex = identify.substring(6, 8);
|
||||
realidentify = identify.substring(9);
|
||||
}
|
||||
if (this.thingsModel.functions[i].datatype.arrayType == "object") {
|
||||
if (this.thingsModel.functions[i].datatype.arrayType == 'object') {
|
||||
for (let j = 0; j < this.thingsModel.functions[i].datatype.params.length; j++) {
|
||||
if (this.thingsModel.functions[i].datatype.params[j].id == realidentify) {
|
||||
// 标注索引和父级名称
|
||||
@@ -284,23 +306,22 @@ export default {
|
||||
for (let j = 0; j < this.thingsModel.functions[i].datatype.arrayCount.length; j++) {
|
||||
if (this.thingsModel.functions[i].id == realidentify) {
|
||||
this.thingsModel.functions[i].arrayIndex = Number(arrayIndex) + 1;
|
||||
this.thingsModel.functions[i].parentName = "元素";
|
||||
this.thingsModel.functions[i].parentName = this.$t('device.device-log.798283-21');
|
||||
return this.thingsModel.functions[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
} else if (type == 3 && this.thingsModel.events) {
|
||||
for (let i = 0; i < this.thingsModel.events.length; i++) {
|
||||
if (this.thingsModel.events[i].id == identify) {
|
||||
if (this.ththingsModel.events[i].id == identify) {
|
||||
return this.thingsModel.events[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
return '';
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
<template>
|
||||
<div style="padding-left: 20px">
|
||||
<el-form :inline="true" label-width="100px">
|
||||
<el-form-item label="监测间隔(ms)">
|
||||
<el-tooltip class="item" effect="light" content="取值范围500-10000毫秒" placement="top">
|
||||
<el-input v-model="monitorInterval" placeholder="请输入监测间隔" type="number" clearable size="small" style="width: 180px" />
|
||||
<el-form-item :label="$t('device.device-monitor.817489-0') + '(ms)'">
|
||||
<el-tooltip class="item" effect="light" :content="$t('device.device-monitor.817489-1')" placement="top">
|
||||
<el-input v-model="monitorInterval" :placeholder="$t('device.device-monitor.817489-2')" type="number" clearable size="small" style="width: 180px" />
|
||||
</el-tooltip>
|
||||
</el-form-item>
|
||||
<el-form-item label="监测次数">
|
||||
<el-tooltip class="item" effect="light" content="取值方位1-300" placement="top">
|
||||
<el-input v-model="monitorNumber" placeholder="请输入监测次数" type="number" clearable size="small" style="width: 180px" />
|
||||
<el-form-item :label="$t('device.device-monitor.817489-3')">
|
||||
<el-tooltip class="item" effect="light" :content="$t('device.device-monitor.817489-4')" placement="top">
|
||||
<el-input v-model="monitorNumber" :placeholder="$t('device.device-monitor.817489-5')" type="number" clearable size="small" style="width: 180px" />
|
||||
</el-tooltip>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="success" icon="el-icon-video-play" size="mini" @click="beginMonitor()" style="margin-left: 30px">开始监测</el-button>
|
||||
<el-button type="danger" icon="el-icon-video-pause" size="mini" @click="stopMonitor()">停止监测</el-button>
|
||||
<el-button type="success" icon="el-icon-video-play" size="mini" @click="beginMonitor()" style="margin-left: 30px">{{ $t('device.device-monitor.817489-6') }}</el-button>
|
||||
<el-button type="danger" icon="el-icon-video-pause" size="mini" @click="stopMonitor()">{{ $t('device.device-monitor.817489-7') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row :gutter="20" v-loading="chartLoading" element-loading-text="正在接收设备数据,请耐心等待......" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.8)">
|
||||
<el-row :gutter="20" v-loading="chartLoading" :element-loading-text="$t('device.device-monitor.817489-8')" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.8)">
|
||||
<el-col :span="12" v-for="(item, index) in monitorThings" :key="index" style="margin-bottom: 20px">
|
||||
<el-card shadow="hover" :body-style="{ paddingTop: '10px', marginBottom: '-20px' }">
|
||||
<div ref="monitor" style="height: 210px; padding: 0"></div>
|
||||
@@ -128,8 +128,8 @@ export default {
|
||||
}
|
||||
}
|
||||
if (topics[3] == 'monitor') {
|
||||
console.log('接收到【实时监测】主题:', topic);
|
||||
console.log('接收到【实时监测】内容:', message);
|
||||
console.log(this.$t('device.device-monitor.817489-11'), topic);
|
||||
console.log(this.$t('device.device-monitor.817489-12'), message);
|
||||
// 实时监测
|
||||
this.chartLoading = false;
|
||||
for (let k = 0; k < message.length; k++) {
|
||||
@@ -190,10 +190,10 @@ export default {
|
||||
this.dataList[i].data = [];
|
||||
}
|
||||
if (this.monitorInterval < 500 || this.monitorInterval > 10000) {
|
||||
this.$modal.alertError('实时监测的间隔范围500-10000毫秒');
|
||||
this.$modal.alertError(this.$t('device.device-monitor.817489-14'));
|
||||
}
|
||||
if (this.monitorNumber == 0 || this.monitorNumber > 300) {
|
||||
this.$modal.alertError('实时监测数量范围1-300');
|
||||
this.$modal.alertError(this.$t('device.device-monitor.817489-15'));
|
||||
}
|
||||
// Mqtt发布实时监测消息
|
||||
let model = {};
|
||||
@@ -212,7 +212,7 @@ export default {
|
||||
this.chartLoading = false;
|
||||
// Mqtt发布实时监测
|
||||
let model = {};
|
||||
model.name = '关闭实时监测';
|
||||
model.name = this.$t('device.device-monitor.817489-17');
|
||||
model.value = 0;
|
||||
model.type = 4;
|
||||
this.mqttPublish(this.deviceInfo, model);
|
||||
@@ -228,7 +228,7 @@ export default {
|
||||
option = {
|
||||
title: {
|
||||
left: 'center',
|
||||
text: this.monitorThings[i].name + ' (单位 ' + (this.monitorThings[i].datatype.unit != undefined ? this.monitorThings[i].datatype.unit : '无') + ')',
|
||||
text: this.monitorThings[i].name + ' ' + this.$t('device.device-monitor.817489-18') + ' ' + (this.monitorThings[i].datatype.unit != undefined ? this.monitorThings[i].datatype.unit : this.$t('device.device-monitor.817489-19')) + ')',
|
||||
textStyle: {
|
||||
fontSize: 14,
|
||||
},
|
||||
|
||||
@@ -1,57 +1,57 @@
|
||||
<template>
|
||||
<div style="padding-left: 20px">
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="70px">
|
||||
<el-form-item label="定时名称" prop="jobName">
|
||||
<el-input v-model="queryParams.jobName" placeholder="请输入定时名称" clearable size="small"
|
||||
<el-form-item :label="$t('device.device-timer.433369-0')" prop="jobName">
|
||||
<el-input v-model="queryParams.jobName" :placeholder="$t('device.device-timer.433369-1')" clearable size="small"
|
||||
@keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="定时状态" prop="status" style="margin-left: 20px">
|
||||
<el-select v-model="queryParams.status" placeholder="请选择定时状态" clearable size="small">
|
||||
<el-form-item :label="$t('device.device-timer.433369-2')" prop="status" style="margin-left: 20px">
|
||||
<el-select v-model="queryParams.status" :placeholder="$t('device.device-timer.433369-3')" clearable size="small">
|
||||
<el-option v-for="dict in dict.type.sys_job_status" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('device.device-timer.433369-4') }}</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('device.device-timer.433369-5') }}</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item style="float: right">
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
|
||||
v-hasPermi="['iot:device:timer']">新增</el-button>
|
||||
v-hasPermi="['iot:device:timer']">{{ $t('device.device-timer.433369-6') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table v-loading="loading" :data="jobList" @selection-change="handleSelectionChange" size="small">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="名称" align="center" prop="jobName" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="描述" align="center" prop="cronText">
|
||||
<el-table-column :label="$t('device.device-timer.433369-7')" align="center" prop="jobName" :show-overflow-tooltip="true" />
|
||||
<el-table-column :label="$t('device.device-timer.433369-8')" align="center" prop="cronText">
|
||||
<template slot-scope="scope">
|
||||
<div v-html="formatCronDisplay(scope.row)"></div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="CRON表达式" align="center" prop="cronExpression" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="动作" align="left" prop="actions" :show-overflow-tooltip="true">
|
||||
<el-table-column :label="$t('device.device-timer.433369-9')" align="center" prop="cronExpression" :show-overflow-tooltip="true" />
|
||||
<el-table-column :label="$t('device.device-timer.433369-10')" align="left" prop="actions" :show-overflow-tooltip="true">
|
||||
<template slot-scope="scope">
|
||||
<div v-html="formatActionsDisplay(scope.row.actions)" style="overflow: hidden; white-space: nowrap"></div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="状态" align="center">
|
||||
<el-table-column :label="$t('device.device-timer.433369-11')" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-switch v-model="scope.row.status" active-value="0" inactive-value="1" active-text="启用"
|
||||
<el-switch v-model="scope.row.status" active-value="0" inactive-value="1" :active-text="$t('device.device-timer.433369-12')"
|
||||
@change="handleStatusChange(scope.row)"></el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<el-table-column :label="$t('device.index.105953-34')" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['iot:device:timer']">修改</el-button>
|
||||
v-hasPermi="['iot:device:timer']">{{ $t('device.device-timer.433369-33') }}</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-caret-right" @click="handleView(scope.row)"
|
||||
v-hasPermi="['iot:device:timer']">定时详细</el-button>
|
||||
v-hasPermi="['iot:device:timer']">{{ $t('device.device-timer.433369-15') }}</el-button>
|
||||
<br />
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
|
||||
v-hasPermi="['iot:device:timer']">删除</el-button>
|
||||
v-hasPermi="['iot:device:timer']">{{ $t('device.device-timer.433369-16') }}</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-caret-right" @click="handleRun(scope.row)"
|
||||
v-hasPermi="['iot:device:timer']">执行一次</el-button>
|
||||
v-hasPermi="['iot:device:timer']">{{ $t('device.device-timer.433369-17') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -62,17 +62,17 @@
|
||||
<!-- 添加或修改定时定时对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
|
||||
<el-form-item label="定时名称" prop="jobName">
|
||||
<el-input v-model="form.jobName" placeholder="请输入定时名称" style="width: 340px" />
|
||||
<el-form-item :label="$t('device.device-timer.433369-0')" prop="jobName">
|
||||
<el-input v-model="form.jobName" :placeholder="$t('device.device-timer.433369-1')" style="width: 340px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="执行时间" required>
|
||||
<el-time-picker v-model="timerTimeValue" value-format="HH:mm" format="HH:mm" placeholder="选择时间" :editable="false"
|
||||
<el-form-item :label="$t('device.device-timer.433369-18')" required>
|
||||
<el-time-picker v-model="timerTimeValue" value-format="HH:mm" format="HH:mm" :placeholder="$t('device.device-timer.433369-19')" :editable="false"
|
||||
style="width: 340px" @change="timeChange" :disabled="form.isAdvance == 1"></el-time-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="选择星期" prop="timerWeek">
|
||||
<el-form-item :label="$t('device.device-timer.433369-20')" prop="timerWeek">
|
||||
<el-row>
|
||||
<el-col :span="18">
|
||||
<el-select v-model="timerWeekValue" placeholder="请选择" multiple style="width: 100%" @change="weekChange"
|
||||
<el-select v-model="timerWeekValue" :placeholder="$t('device.device-timer.433369-21')" multiple style="width: 100%" @change="weekChange"
|
||||
:disabled="form.isAdvance == 1">
|
||||
<el-option v-for="item in timerWeeks" :key="item.value" :label="item.label"
|
||||
:value="item.value"></el-option>
|
||||
@@ -80,13 +80,13 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
<el-form-item label="cron表达式" prop="cron">
|
||||
<el-form-item :label="$t('device.device-timer.433369-22')" prop="cron">
|
||||
<el-row>
|
||||
<el-col :span="18">
|
||||
<el-input v-model="form.cronExpression" placeholder="cron执行表达式" :disabled="form.isAdvance == 0">
|
||||
<el-input v-model="form.cronExpression" :placeholder="$t('device.device-timer.433369-23')" :disabled="form.isAdvance == 0">
|
||||
<template slot="append">
|
||||
<el-button type="primary" @click="handleShowCron" :disabled="form.isAdvance == 0">
|
||||
生成表达式
|
||||
{{ $t('device.device-timer.433369-24') }}
|
||||
<i class="el-icon-time el-icon--right"></i>
|
||||
</el-button>
|
||||
</template>
|
||||
@@ -94,11 +94,11 @@
|
||||
</el-col>
|
||||
<el-col :span="4" :offset="1">
|
||||
<el-checkbox v-model="form.isAdvance" :true-label="1" :false-label="0"
|
||||
@change="customerCronChange">自定义表达式</el-checkbox>
|
||||
@change="customerCronChange">{{ $t('device.device-timer.433369-25') }}</el-checkbox>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
<el-form-item label="定时状态" prop="status">
|
||||
<el-form-item :label="$t('device.device-timer.433369-2')" prop="status">
|
||||
<el-radio-group v-model="form.status">
|
||||
<el-radio v-for="dict in dict.type.sys_job_status" :key="dict.value" :label="dict.value">{{ dict.label
|
||||
}}</el-radio>
|
||||
@@ -108,26 +108,26 @@
|
||||
<div style="padding-bottom: 15px; padding: 0 20px">
|
||||
<el-divider></el-divider>
|
||||
</div>
|
||||
<el-form-item label="执行动作" required>
|
||||
<el-form-item :label="$t('device.device-timer.433369-26')" required>
|
||||
<el-row v-for="(actionItem, index) in actionList" :key="index + 'action'" style="margin-bottom: 10px">
|
||||
<el-col :span="4">
|
||||
<el-select v-model="actionItem.type" placeholder="请选择类别" @change="actionTypeChange($event, index)">
|
||||
<el-select v-model="actionItem.type" :placeholder="$t('device.device-timer.433369-27')" @change="actionTypeChange($event, index)">
|
||||
<el-option v-for="(subItem, subIndex) in modelTypes" :key="subIndex + 'type'" :label="subItem.label"
|
||||
:value="subItem.value"></el-option>
|
||||
</el-select>
|
||||
</el-col>
|
||||
<el-col :span="4" :offset="1">
|
||||
<el-select v-model="actionItem.id" placeholder="请选择" v-if="actionItem.type == 1"
|
||||
<el-select v-model="actionItem.id" :placeholder="$t('device.device-timer.433369-21')" v-if="actionItem.type == 1"
|
||||
@change="thingsModelItemChange($event, index)">
|
||||
<el-option v-for="(subItem, subIndex) in thingsModel.properties" :key="subIndex + 'property'"
|
||||
:label="subItem.name" :value="subItem.id"></el-option>
|
||||
</el-select>
|
||||
<el-select v-model="actionItem.id" placeholder="请选择" v-else-if="actionItem.type == 2"
|
||||
<el-select v-model="actionItem.id" :placeholder="$t('device.device-timer.433369-21')" v-else-if="actionItem.type == 2"
|
||||
@change="thingsModelItemChange($event, index)">
|
||||
<el-option v-for="(subItem, subIndex) in thingsModel.functions" :key="subIndex + 'func'"
|
||||
:label="subItem.name" :value="subItem.id"></el-option>
|
||||
</el-select>
|
||||
<el-select v-model="form.id" placeholder="请选择" v-else-if="actionItem.type == 3"
|
||||
<el-select v-model="form.id" :placeholder="$t('device.device-timer.433369-21')" v-else-if="actionItem.type == 3"
|
||||
@change="thingsModelItemChange($event, index)">
|
||||
<el-option v-for="(subItem, subIndex) in thingsModel.functions" :key="subIndex + 'func'"
|
||||
:label="subItem.name" :value="subItem.id"></el-option>
|
||||
@@ -137,7 +137,7 @@
|
||||
<!--物模型项的值-->
|
||||
<span
|
||||
v-if="actionItem.thingsModelItem && (actionItem.thingsModelItem.datatype.type == 'integer' || actionItem.thingsModelItem.datatype.type == 'decimal')">
|
||||
<el-input v-model="actionItem.value" placeholder="值" :max="actionItem.thingsModelItem.datatype.max"
|
||||
<el-input v-model="actionItem.value" :placeholder="$t('device.device-timer.433369-29')" :max="actionItem.thingsModelItem.datatype.max"
|
||||
:min="actionItem.thingsModelItem.datatype.min" type="number" size="small">
|
||||
<template slot="append">{{ actionItem.thingsModelItem.datatype.unit }}</template>
|
||||
</el-input>
|
||||
@@ -148,80 +148,80 @@
|
||||
inactive-value="0"></el-switch>
|
||||
</span>
|
||||
<span v-else-if="actionItem.thingsModelItem && actionItem.thingsModelItem.datatype.type == 'enum'">
|
||||
<el-select v-model="actionItem.value" placeholder="请选择" style="width: 100%">
|
||||
<el-select v-model="actionItem.value" :placeholder="$t('device.device-timer.433369-21')" style="width: 100%">
|
||||
<el-option v-for="(subItem, subIndex) in actionItem.thingsModelItem.datatype.enumList"
|
||||
:key="subIndex + 'things'" :label="subItem.text" :value="subItem.value"></el-option>
|
||||
</el-select>
|
||||
</span>
|
||||
<span v-else-if="actionItem.thingsModelItem && actionItem.thingsModelItem.datatype.type == 'string'">
|
||||
<el-input v-model="actionItem.value" placeholder="请输入字符串"
|
||||
<el-input v-model="actionItem.value" :placeholder="$t('device.device-timer.433369-30')"
|
||||
:max="actionItem.thingsModelItem.datatype.maxLength" />
|
||||
</span>
|
||||
<span v-else-if="actionItem.thingsModelItem && actionItem.thingsModelItem.datatype.type == 'array'">
|
||||
<el-input v-model="actionItem.value" placeholder="请输入英文逗号分隔的数组" />
|
||||
<el-input v-model="actionItem.value" :placeholder="$t('device.device-timer.433369-97')" />
|
||||
</span>
|
||||
</el-col>
|
||||
<el-col :span="2" :offset="1" v-if="index != 0"><a style="color: #f56c6c"
|
||||
@click="removeEnumItem(index)">删除</a></el-col>
|
||||
@click="removeEnumItem(index)">{{ $t('del') }}</a></el-col>
|
||||
</el-row>
|
||||
<div>
|
||||
+
|
||||
<a style="color: #409eff" @click="addEnumItem()">添加执行动作</a>
|
||||
<a style="color: #409eff" @click="addEnumItem()">{{ $t('device.device-timer.433369-31') }}</a>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm" :loading="submitButtonLoading">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
<el-button type="primary" @click="submitForm" :loading="submitButtonLoading">{{ $t('confirm') }}</el-button>
|
||||
<el-button @click="cancel">{{ $t('cancel') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog title="Cron表达式生成器" :visible.sync="openCron" append-to-body destroy-on-close class="scrollbar">
|
||||
<el-dialog :title="$t('device.device-timer.433369-35')" :visible.sync="openCron" append-to-body destroy-on-close class="scrollbar">
|
||||
<crontab @hide="openCron = false" @fill="crontabFill" :expression="expression" style="padding-bottom: 80px">
|
||||
</crontab>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 定时日志详细 -->
|
||||
<el-dialog title="定时详细" :visible.sync="openView" width="700px" append-to-body>
|
||||
<el-dialog :title="$t('device.device-timer.433369-15')" :visible.sync="openView" width="700px" append-to-body>
|
||||
<el-form ref="form" :model="form" label-width="120px" size="mini">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="定时编号:">{{ form.jobId }}</el-form-item>
|
||||
<el-form-item label="定时名称:">{{ form.jobName }}</el-form-item>
|
||||
<el-form-item :label="$t('device.device-timer.433369-36')">{{ form.jobId }}</el-form-item>
|
||||
<el-form-item :label="$t('device.device-timer.433369-37')">{{ form.jobName }}</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="定时分组:">{{ jobGroupFormat(form) }}</el-form-item>
|
||||
<el-form-item label="创建时间:">{{ form.createTime }}</el-form-item>
|
||||
<el-form-item :label="$t('device.device-timer.433369-38')">{{ jobGroupFormat(form) }}</el-form-item>
|
||||
<el-form-item :label="$t('device.device-timer.433369-39')">{{ form.createTime }}</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="是否并发:">
|
||||
<div v-if="form.concurrent == 0">允许</div>
|
||||
<div v-else-if="form.concurrent == 1">禁止</div>
|
||||
<el-form-item :label="$t('device.device-timer.433369-40')">
|
||||
<div v-if="form.concurrent == 0">{{ $t('device.device-timer.433369-41') }}</div>
|
||||
<div v-else-if="form.concurrent == 1">{{ $t('device.device-timer.433369-42') }}</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="cron表达式:">{{ form.cronExpression }}</el-form-item>
|
||||
<el-form-item :label="$t('device.device-timer.433369-43')">{{ form.cronExpression }}</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="执行策略:">
|
||||
<div v-if="form.misfirePolicy == 0">默认策略</div>
|
||||
<div v-else-if="form.misfirePolicy == 1">立即执行</div>
|
||||
<div v-else-if="form.misfirePolicy == 2">执行一次</div>
|
||||
<div v-else-if="form.misfirePolicy == 3">放弃执行</div>
|
||||
<el-form-item :label="$t('device.device-timer.433369-44')">
|
||||
<div v-if="form.misfirePolicy == 0">{{ $t('device.device-timer.433369-45') }}</div>
|
||||
<div v-else-if="form.misfirePolicy == 1">{{ $t('device.device-timer.433369-46') }}</div>
|
||||
<div v-else-if="form.misfirePolicy == 2">{{ $t('device.device-timer.433369-17') }}</div>
|
||||
<div v-else-if="form.misfirePolicy == 3">{{ $t('device.device-timer.433369-47') }}</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="下次执行时间:">{{ parseTime(form.nextValidTime) }}</el-form-item>
|
||||
<el-form-item :label="$t('device.device-timer.433369-48')">{{ parseTime(form.nextValidTime) }}</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="定时状态:">
|
||||
<div v-if="form.status == 0">正常</div>
|
||||
<div v-else-if="form.status == 1">暂停</div>
|
||||
<el-form-item :label="$t('device.device-timer.433369-49')">
|
||||
<div v-if="form.status == 0">{{ $t('device.device-timer.433369-50') }}</div>
|
||||
<div v-else-if="form.status == 1">{{ $t('device.device-timer.433369-51') }}</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="执行动作:">
|
||||
<el-form-item :label="$t('device.device-timer.433369-52')">
|
||||
<div v-html="formatActionsDisplay(form.actions)"
|
||||
style="border: 1px solid #ddd; padding: 10px; border-radius: 5px; width: 465px"></div>
|
||||
</el-form-item>
|
||||
@@ -229,7 +229,7 @@
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="openView = false">关 闭</el-button>
|
||||
<el-button @click="openView = false">{{ $t('device.device-timer.433369-53') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
@@ -307,31 +307,31 @@ export default {
|
||||
timerWeeks: [
|
||||
{
|
||||
value: 1,
|
||||
label: '周一',
|
||||
label: this.$t('device.device-timer.433369-54'),
|
||||
},
|
||||
{
|
||||
value: 2,
|
||||
label: '周二',
|
||||
label: this.$t('device.device-timer.433369-55'),
|
||||
},
|
||||
{
|
||||
value: 3,
|
||||
label: '周三',
|
||||
label: this.$t('device.device-timer.433369-56'),
|
||||
},
|
||||
{
|
||||
value: 4,
|
||||
label: '周四',
|
||||
label: this.$t('device.device-timer.433369-57'),
|
||||
},
|
||||
{
|
||||
value: 5,
|
||||
label: '周五',
|
||||
label: this.$t('device.device-timer.433369-58'),
|
||||
},
|
||||
{
|
||||
value: 6,
|
||||
label: '周六',
|
||||
label: this.$t('device.device-timer.433369-59'),
|
||||
},
|
||||
{
|
||||
value: 7,
|
||||
label: '周日',
|
||||
label: this.$t('device.device-timer.433369-60'),
|
||||
},
|
||||
],
|
||||
timerWeekValue: [1, 2, 3, 4, 5, 6, 7],
|
||||
@@ -341,11 +341,11 @@ export default {
|
||||
modelTypes: [
|
||||
{
|
||||
value: 1,
|
||||
label: '属性',
|
||||
label: this.$t('device.device-timer.433369-61'),
|
||||
},
|
||||
{
|
||||
value: 2,
|
||||
label: '功能',
|
||||
label: this.$t('device.device-timer.433369-62'),
|
||||
},
|
||||
],
|
||||
// 表单参数
|
||||
@@ -355,7 +355,7 @@ export default {
|
||||
jobName: [
|
||||
{
|
||||
required: true,
|
||||
message: '定时名称不能为空',
|
||||
message: this.$t('device.device-timer.433369-63'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
@@ -443,14 +443,14 @@ export default {
|
||||
},
|
||||
// 定时状态修改
|
||||
handleStatusChange(row) {
|
||||
let text = row.status === '0' ? '启用' : '停用';
|
||||
let text = row.status === '0' ? this.$t('device.device-timer.433369-12') : this.$t('device.device-timer.433369-64');
|
||||
this.$modal
|
||||
.confirm('确认要"' + text + '""' + row.jobName + '"定时吗?')
|
||||
.confirm(this.$t('device.device-timer.433369-65', [text]))
|
||||
.then(function () {
|
||||
return changeJobStatus(row.jobId, row.status);
|
||||
})
|
||||
.then(() => {
|
||||
this.$modal.msgSuccess(text + '成功');
|
||||
this.$modal.msgSuccess(text + this.$t('device.device-timer.433369-67'));
|
||||
})
|
||||
.catch(function () {
|
||||
row.status = row.status === '0' ? '1' : '0';
|
||||
@@ -459,12 +459,12 @@ export default {
|
||||
/* 立即执行一次 */
|
||||
handleRun(row) {
|
||||
this.$modal
|
||||
.confirm('确认要立即执行一次"' + row.jobName + '"定时吗?')
|
||||
.confirm(this.$t('device.device-timer.433369-68', [row.jobName]))
|
||||
.then(function () {
|
||||
return runJob(row.jobId, row.jobGroup);
|
||||
})
|
||||
.then(() => {
|
||||
this.$modal.msgSuccess('执行成功');
|
||||
this.$modal.msgSuccess(this.$t('device.device-timer.433369-69'));
|
||||
})
|
||||
.catch(() => { });
|
||||
},
|
||||
@@ -488,7 +488,7 @@ export default {
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = '添加定时';
|
||||
this.title = this.$t('device.device-timer.433369-70');
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
@@ -521,7 +521,7 @@ export default {
|
||||
this.timerTimeValue = this.form.cronExpression.substring(5, 7) + ':' + this.form.cronExpression.substring(2, 4);
|
||||
}
|
||||
this.open = true;
|
||||
this.title = '修改定时';
|
||||
this.title = this.$t('device.device-timer.433369-71');
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
@@ -531,22 +531,22 @@ export default {
|
||||
// 验证不能为空
|
||||
if (this.form.isAdvance == 0) {
|
||||
if (this.timerTimeValue == '' || this.timerTimeValue == null) {
|
||||
this.$modal.alertError('执行时间不能空');
|
||||
this.$modal.alertError(this.$t('device.device-timer.433369-87'));
|
||||
return;
|
||||
}
|
||||
if (this.timerWeekValue == null || this.timerWeekValue == '') {
|
||||
this.$modal.alertError('请选择要执行的星期');
|
||||
this.$modal.alertError(this.$t('device.device-timer.433369-88'));
|
||||
return;
|
||||
}
|
||||
} else if (this.form.isAdvance == 1) {
|
||||
if (this.form.cronExpression == '') {
|
||||
this.$modal.alertError('cron表达式不能为空');
|
||||
this.$modal.alertError(this.$t('device.device-timer.433369-89'));
|
||||
return;
|
||||
}
|
||||
}
|
||||
for (let i = 0; i < this.actionList.length; i++) {
|
||||
if (this.actionList[i].id == '' || this.actionList[i].name == '' || this.actionList[i].value == '') {
|
||||
this.$modal.alertError('执行动作中的选项和值不能为空');
|
||||
this.$modal.alertError(this.$t('device.device-timer.433369-90'));
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -568,14 +568,14 @@ export default {
|
||||
this.submitButtonLoading = true;
|
||||
if (this.form.jobId != undefined) {
|
||||
updateJob(this.form).then((response) => {
|
||||
this.$modal.msgSuccess('修改成功');
|
||||
this.$modal.msgSuccess(this.$t('device.device-timer.433369-91'));
|
||||
this.submitButtonLoading = false;
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addJob(this.form).then((response) => {
|
||||
this.$modal.msgSuccess('新增成功');
|
||||
this.$modal.msgSuccess(this.$t('device.device-timer.433369-92'));
|
||||
this.submitButtonLoading = false;
|
||||
this.open = false;
|
||||
this.getList();
|
||||
@@ -585,19 +585,19 @@ export default {
|
||||
});
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const jobIds = row.jobId || this.ids;
|
||||
this.$modal
|
||||
.confirm('是否确认删除定时定时编号为"' + jobIds + '"的数据项?')
|
||||
.then(function () {
|
||||
return delJob(jobIds);
|
||||
})
|
||||
.then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess('删除成功');
|
||||
})
|
||||
.catch(() => { });
|
||||
},
|
||||
handleDelete(row) {
|
||||
const jobIds = row.jobId || this.ids;
|
||||
this.$modal
|
||||
.confirm(this.$t('device.device-timer.433369-73', [jobIds]))
|
||||
.then(function () {
|
||||
return delJob(jobIds);
|
||||
})
|
||||
.then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess(this.$t('device.device-timer.433369-75'));
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
this.download(
|
||||
@@ -737,7 +737,7 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
result = result + actions[i].name + ':<span style="color:#F56C6C">' + value + '</span><br />';
|
||||
result = result + actions[i].name + ': <span style="color:#F56C6C">' + value + '</span><br />';
|
||||
}
|
||||
return result;
|
||||
},
|
||||
@@ -745,33 +745,33 @@ export default {
|
||||
formatCronDisplay(item) {
|
||||
let result = '';
|
||||
if (item.isAdvance == 0) {
|
||||
let time = '<br /><span style="color:#F56C6C">时间 ' + item.cronExpression.substring(5, 7) + ':' + item.cronExpression.substring(2, 4) + '</span>';
|
||||
let time = '<br /><span style="color:#F56C6C">' + this.$t('device.device-timer.433369-76') + ' ' + item.cronExpression.substring(5, 7) + ':' + item.cronExpression.substring(2, 4) + '</span>';
|
||||
let week = item.cronExpression.substring(12);
|
||||
if (week == '1,2,3,4,5,6,7') {
|
||||
result = '每天 ' + time;
|
||||
result = this.$t('device.device-timer.433369-77') + ' ' + time;
|
||||
} else {
|
||||
let weekArray = week.split(',');
|
||||
for (let i = 0; i < weekArray.length; i++) {
|
||||
if (weekArray[i] == '1') {
|
||||
result = result + '周一、';
|
||||
result = result + this.$t('device.device-timer.433369-78');
|
||||
} else if (weekArray[i] == '2') {
|
||||
result = result + '周二、';
|
||||
result = result + this.$t('device.device-timer.433369-79');
|
||||
} else if (weekArray[i] == '3') {
|
||||
result = result + '周三、';
|
||||
result = result + this.$t('device.device-timer.433369-80');
|
||||
} else if (weekArray[i] == '4') {
|
||||
result = result + '周四、';
|
||||
result = result + this.$t('device.device-timer.433369-81');
|
||||
} else if (weekArray[i] == '5') {
|
||||
result = result + '周五、';
|
||||
result = result + this.$t('device.device-timer.433369-82');
|
||||
} else if (weekArray[i] == '6') {
|
||||
result = result + '周六、';
|
||||
result = result + this.$t('device.device-timer.433369-83');
|
||||
} else if (weekArray[i] == '7') {
|
||||
result = result + '周日、';
|
||||
result = result + this.$t('device.device-timer.433369-84');
|
||||
}
|
||||
}
|
||||
result = result.substring(0, result.length - 1) + ' ' + time;
|
||||
}
|
||||
} else {
|
||||
result = '自定义Cron表达式';
|
||||
result = this.$t('device.device-timer.433369-85');
|
||||
}
|
||||
return result;
|
||||
},
|
||||
|
||||
@@ -2,49 +2,49 @@
|
||||
<div style="padding-left: 20px">
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="el-icon-share" size="mini" @click="shareDevice" v-hasPermi="['iot:device:share']">分享设备</el-button>
|
||||
<el-button type="primary" plain icon="el-icon-share" size="mini" @click="shareDevice" v-hasPermi="['iot:device:share']">{{ $t('device.device-edit.148398-48') }}</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="warning" plain icon="el-icon-refresh" size="mini" @click="getList">刷新</el-button>
|
||||
<el-button type="warning" plain icon="el-icon-refresh" size="mini" @click="getList">{{ $t('device.device-user.037521-0') }}</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="deviceUserList" @selection-change="handleSelectionChange" size="mini">
|
||||
<el-table-column label="用户编号" align="center" prop="userId" width="100" />
|
||||
<el-table-column label="用户名称" align="center" prop="userName" />
|
||||
<el-table-column label="手机号码" align="center" prop="phonenumber" width="150" />
|
||||
<el-table-column label="用户类型" align="center" prop="isOwner" width="150">
|
||||
<el-table-column :label="$t('device.device-user.037521-1')" align="center" prop="userId" width="100" />
|
||||
<el-table-column :label="$t('device.device-user.037521-2')" align="center" prop="userName" />
|
||||
<el-table-column :label="$t('device.device-user.037521-3')" align="center" prop="phonenumber" width="150" />
|
||||
<el-table-column :label="$t('device.device-user.037521-4')" align="center" prop="isOwner" width="150">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="primary" v-if="scope.row.isOwner">主人</el-tag>
|
||||
<el-tag type="success" v-else>分享</el-tag>
|
||||
<el-tag type="primary" v-if="scope.row.isOwner">{{ $t('device.device-user.037521-5') }}</el-tag>
|
||||
<el-tag type="success" v-else>{{ $t('device.device-user.037521-6') }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="分享时间" align="center" prop="createTime" width="150">
|
||||
<el-table-column :label="$t('device.device-user.037521-7')" align="center" prop="createTime" width="150">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" align="left" prop="remark" header-align="center" min-width="150" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180">
|
||||
<el-table-column :label="$t('device.device-user.037521-8')" align="left" prop="remark" header-align="center" min-width="150" />
|
||||
<el-table-column :label="$t('device.index.105953-34')" align="center" class-name="small-padding fixed-width" width="180">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['iot:device:share']" v-if="scope.row.isOwner == 0">编辑</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['iot:device:share']" v-if="scope.row.isOwner == 0">取消分享</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['iot:device:share']" v-if="scope.row.isOwner == 0">{{ $t('edit') }}</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['iot:device:share']" v-if="scope.row.isOwner == 0">{{ $t('device.device-user.037521-11') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!--设备分享对话框-->
|
||||
<el-dialog title="设备分享" :visible.sync="open" width="800px">
|
||||
<el-dialog :title="$t('device.device-user.037521-12')" :visible.sync="open" width="800px">
|
||||
<div style="margin-top: -50px">
|
||||
<el-divider></el-divider>
|
||||
</div>
|
||||
<!--用户查询-->
|
||||
<el-form :model="permParams" ref="queryForm" :rules="rules" :inline="true" label-width="80px" v-if="type == 1">
|
||||
<el-form-item label="手机号码" prop="phonenumber">
|
||||
<el-input type="text" placeholder="请输入用户手机号码" v-model="permParams.phonenumber" minlength="10" clearable size="small" show-word-limit style="width: 240px" @keyup.enter.native="handleQuery"></el-input>
|
||||
<el-form-item :label="$t('device.device-user.037521-3')" prop="phonenumber">
|
||||
<el-input type="text" :placeholder="$t('device.device-user.037521-13')" v-model="permParams.phonenumber" minlength="10" clearable size="small" show-word-limit style="width: 240px" @keyup.enter.native="handleQuery"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="userQuery">查询用户</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="userQuery">{{ $t('device.device-user.037521-14') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
@@ -52,32 +52,32 @@
|
||||
<div v-loading="permsLoading" style="background-color: #f8f8f9; line-height: 28px">
|
||||
<div v-if="message" style="padding: 20px">{{ message }}</div>
|
||||
<div v-if="form.userId" style="padding: 15px">
|
||||
<div style="font-weight: bold; line-height: 28px">用户信息</div>
|
||||
<span style="width: 80px; display: inline-block">用户ID:</span>
|
||||
<div style="font-weight: bold; line-height: 28px">{{ $t('device.device-user.037521-15') }}</div>
|
||||
<span style="width: 80px; display: inline-block">{{ $t('device.device-user.037521-16') }}</span>
|
||||
<span>{{ form.userId }}</span>
|
||||
<br />
|
||||
<span style="width: 80px; display: inline-block">手机号码:</span>
|
||||
<span style="width: 80px; display: inline-block">{{ $t('device.device-user.037521-17') }}</span>
|
||||
<span>{{ form.phonenumber }}</span>
|
||||
<br />
|
||||
<span style="width: 80px; display: inline-block">用户名称:</span>
|
||||
<span style="width: 80px; display: inline-block">{{ $t('device.device-user.037521-18') }}</span>
|
||||
<span>{{ form.userName }}</span>
|
||||
<br />
|
||||
<!--选择权限-->
|
||||
<div style="font-weight: bold; margin: 15px 0 10px">设置用户权限</div>
|
||||
<div style="font-weight: bold; margin: 15px 0 10px">{{ $t('device.device-user.037521-19') }}</div>
|
||||
<el-table :data="sharePermissionList" highlight-current-row size="mini" ref="multipleTable" @select="handleSelectionChange" @select-all="handleSelectionAll">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="权限名称" align="center" key="modelName" prop="modelName" />
|
||||
<el-table-column label="权限标识" align="center" key="identifier" prop="identifier" />
|
||||
<el-table-column label="备注信息" align="left" min-width="100" header-align="center" key="remark" prop="remark" />
|
||||
<el-table-column :label="$t('device.device-user.037521-20')" align="center" key="modelName" prop="modelName" />
|
||||
<el-table-column :label="$t('device.device-user.037521-21')" align="center" key="identifier" prop="identifier" />
|
||||
<el-table-column :label="$t('device.device-edit.148398-17')" align="left" min-width="100" header-align="center" key="remark" prop="remark" />
|
||||
</el-table>
|
||||
<!--选择权限-->
|
||||
<div style="font-weight: bold; margin: 15px 0 10px">备注信息</div>
|
||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" rows="2" />
|
||||
<div style="font-weight: bold; margin: 15px 0 10px">{{ $t('device.device-edit.148398-17') }}</div>
|
||||
<el-input v-model="form.remark" type="textarea" :placeholder="$t('device.device-edit.148398-18')" rows="2" />
|
||||
</div>
|
||||
</div>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm" :disabled="!form.userId || !deviceInfo.deviceId">确定</el-button>
|
||||
<el-button @click="closeSelectUser">关 闭</el-button>
|
||||
<el-button type="primary" @click="submitForm" :disabled="!form.userId || !deviceInfo.deviceId">{{ $t('device.product-list.058448-14') }}</el-button>
|
||||
<el-button @click="closeSelectUser">{{ $t('device.device-user.037521-25') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
@@ -131,13 +131,13 @@ export default {
|
||||
phonenumber: [
|
||||
{
|
||||
required: true,
|
||||
message: '手机号码不能为空',
|
||||
message: this.$t('device.device-user.037521-26'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
{
|
||||
min: 11,
|
||||
max: 11,
|
||||
message: '手机号码长度为11位',
|
||||
message: this.$t('device.device-user.037521-27'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
@@ -216,13 +216,13 @@ export default {
|
||||
handleDelete(row) {
|
||||
const deviceUser = row;
|
||||
this.$modal
|
||||
.confirm('确认取消分享设备?')
|
||||
.confirm(this.$t('device.device-user.037521-28'))
|
||||
.then(function () {
|
||||
return delDeviceUser(deviceUser);
|
||||
})
|
||||
.then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess('取消分享成功');
|
||||
this.$modal.msgSuccess(this.$t('device.device-user.037521-29'));
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
@@ -239,7 +239,7 @@ export default {
|
||||
getShareUser() {
|
||||
this.permsLoading = true;
|
||||
if (!this.deviceInfo.deviceId) {
|
||||
this.$modal.alert('查询不到设备信息,请刷新后重试');
|
||||
this.$modal.alert(this.$t('device.device-user.037521-30'));
|
||||
return;
|
||||
}
|
||||
this.permParams.deviceId = this.deviceInfo.deviceId;
|
||||
@@ -266,8 +266,8 @@ export default {
|
||||
this.sharePermissionList = [
|
||||
{
|
||||
identifier: 'timer',
|
||||
modelName: '设备定时',
|
||||
remark: '定时执行任务',
|
||||
modelName: this.$t('device.device-user.037521-34'),
|
||||
remark: this.$t('device.device-user.037521-35'),
|
||||
},
|
||||
{
|
||||
identifier: 'log',
|
||||
@@ -276,8 +276,8 @@ export default {
|
||||
},
|
||||
{
|
||||
identifier: 'monitor',
|
||||
modelName: '实时监测',
|
||||
remark: '下发实时监测指令后,图表实时显示设备上报数据',
|
||||
modelName: this.$t('device.device-user.037521-38'),
|
||||
remark: this.$t('device.device-user.037521-39'),
|
||||
},
|
||||
{
|
||||
identifier: 'statistic',
|
||||
@@ -326,7 +326,7 @@ export default {
|
||||
if (this.type == 2) {
|
||||
// 更新设备用户
|
||||
updateDeviceUser(this.form).then((response) => {
|
||||
this.$modal.msgSuccess('更新成功');
|
||||
this.$modal.msgSuccess(this.$t('device.device-user.037521-42'));
|
||||
this.resetUserQuery();
|
||||
this.open = false;
|
||||
this.getList();
|
||||
@@ -336,13 +336,8 @@ export default {
|
||||
this.form.deviceId = this.deviceInfo.deviceId;
|
||||
this.form.deviceName = this.deviceInfo.deviceName;
|
||||
addDeviceUser(this.form).then((response) => {
|
||||
this.$modal.msgSuccess('新增成功');
|
||||
this.$modal.msgSuccess(this.$t('device.device-user.037521-43'));
|
||||
this.resetUserQuery();
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -2,58 +2,58 @@
|
||||
<div style="padding: 6px">
|
||||
<el-card style="margin-bottom: 6px">
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="75px" style="margin-bottom: -20px">
|
||||
<el-form-item label="设备名称" prop="deviceName">
|
||||
<el-input v-model="queryParams.deviceName" placeholder="请输入设备名称" clearable size="small" @keyup.enter.native="handleQuery" style="width: 150px" />
|
||||
<el-form-item :label="$t('device.index.105953-0')" prop="deviceName">
|
||||
<el-input v-model="queryParams.deviceName" :placeholder="$t('device.index.105953-1')" clearable size="small" @keyup.enter.native="handleQuery" style="width: 150px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="设备编号" prop="serialNumber">
|
||||
<el-input v-model="queryParams.serialNumber" placeholder="请输入设备编号" clearable size="small" @keyup.enter.native="handleQuery" style="width: 150px" />
|
||||
<el-form-item :label="$t('device.index.105953-2')" prop="serialNumber">
|
||||
<el-input v-model="queryParams.serialNumber" :placeholder="$t('device.index.105953-3')" clearable size="small" @keyup.enter.native="handleQuery" style="width: 150px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="设备状态" prop="status">
|
||||
<el-select v-model="queryParams.status" placeholder="请选择设备状态" clearable size="small" style="width: 150px">
|
||||
<el-form-item :label="$t('device.index.105953-4')" prop="status">
|
||||
<el-select v-model="queryParams.status" :placeholder="$t('device.index.105953-5')" clearable size="small" style="width: 150px">
|
||||
<el-option v-for="dict in dict.type.iot_device_status" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="我的分组">
|
||||
<el-select v-model="queryParams.groupId" placeholder="请选择我的分组" clearable size="small" style="width: 150px">
|
||||
<el-form-item :label="$t('device.index.105953-6')">
|
||||
<el-select v-model="queryParams.groupId" :placeholder="$t('device.index.105953-7')" clearable size="small" style="width: 150px">
|
||||
<el-option v-for="group in myGroupList" :key="group.groupId" :label="group.groupName" :value="group.groupId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('search') }}</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('reset') }}</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item style="float: right">
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleEditDevice(0)" v-hasPermi="['iot:device:add']">新增</el-button>
|
||||
<el-button type="primary" plain icon="el-icon-s-grid" size="mini" @click="handleChangeShowType" v-hasPermi="['iot:device:add']">切换</el-button>
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleEditDevice(0)" v-hasPermi="['iot:device:add']">{{ $t('add') }}</el-button>
|
||||
<el-button type="primary" plain icon="el-icon-s-grid" size="mini" @click="handleChangeShowType" v-hasPermi="['iot:device:add']">{{ $t('device.index.105953-17') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<el-card style="padding-bottom: 100px" v-if="showType == 'list'">
|
||||
<el-table v-loading="loading" :data="deviceList" border>
|
||||
<el-table-column label="编号" align="center" header-align="center" prop="deviceId" width="50" />
|
||||
<el-table-column label="设备名称" align="center" header-align="center" prop="deviceName" min-width="120" />
|
||||
<el-table-column label="设备编号" align="center" prop="serialNumber" min-width="130" />
|
||||
<el-table-column label="所属产品" align="center" prop="productName" min-width="120" />
|
||||
<el-table-column label="协议" align="center" prop="transport" min-width="50" />
|
||||
<el-table-column label="通讯协议" align="center" prop="protocolCode" min-width="100" />
|
||||
<el-table-column label="子设备数" align="center" prop="subDeviceCount" width="80">
|
||||
<el-table-column :label="$t('device.index.105953-20')" align="center" header-align="center" prop="deviceId" width="50" />
|
||||
<el-table-column :label="$t('device.index.105953-0')" align="center" header-align="center" prop="deviceName" min-width="120" />
|
||||
<el-table-column :label="$t('device.index.105953-2')" align="center" prop="serialNumber" min-width="130" />
|
||||
<el-table-column :label="$t('device.index.105953-21')" align="center" prop="productName" min-width="120" />
|
||||
<el-table-column :label="$t('device.index.105953-22')" align="center" prop="transport" min-width="50" />
|
||||
<el-table-column :label="$t('device.index.105953-23')" align="center" prop="protocolCode" min-width="100" />
|
||||
<el-table-column :label="$t('device.index.105953-24')" align="center" prop="subDeviceCount" width="80">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.subDeviceCount }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="设备影子" align="center" prop="isShadow" width="80">
|
||||
<el-table-column :label="$t('device.device-edit.148398-15')" align="center" prop="isShadow" width="80">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="success" size="small" v-if="scope.row.isShadow == 1">启用</el-tag>
|
||||
<el-tag type="info" size="small" v-else>禁用</el-tag>
|
||||
<el-tag type="success" size="small" v-if="scope.row.isShadow == 1">{{ $t('device.index.105953-26') }}</el-tag>
|
||||
<el-tag type="info" size="small" v-else>{{ $t('device.index.105953-27') }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="状态" align="center" prop="status" width="80">
|
||||
<el-table-column :label="$t('status')" align="center" prop="status" width="80">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_device_status" :value="scope.row.status" size="small" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="信号" align="center" prop="rssi" width="60">
|
||||
<el-table-column :label="$t('device.index.105953-29')" align="center" prop="rssi" width="60">
|
||||
<template slot-scope="scope">
|
||||
<svg-icon v-if="scope.row.status == 3 && scope.row.rssi >= '-55'" icon-class="wifi_4" />
|
||||
<svg-icon v-else-if="scope.row.status == 3 && scope.row.rssi >= '-70' && scope.row.rssi < '-55'" icon-class="wifi_3" />
|
||||
@@ -62,32 +62,32 @@
|
||||
<svg-icon v-else icon-class="wifi_0" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="定位方式" align="center" prop="locationWay">
|
||||
<el-table-column :label="$t('device.index.105953-30')" align="center" prop="locationWay">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_location_way" :value="scope.row.locationWay" size="small" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="固件版本" align="center" prop="firmwareVersion">
|
||||
<el-table-column :label="$t('device.index.105953-31')" align="center" prop="firmwareVersion">
|
||||
<template slot-scope="scope">
|
||||
<el-tag size="mini" type="info">Ver {{ scope.row.firmwareVersion }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="激活时间" align="center" prop="activeTime">
|
||||
<el-table-column :label="$t('device.index.105953-32')" align="center" prop="activeTime">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.activeTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建时间" align="center" prop="createTime">
|
||||
<el-table-column :label="$t('creatTime')" align="center" prop="createTime">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200">
|
||||
<el-table-column :label="$t('opation')" align="center" class-name="small-padding fixed-width" width="200">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="danger" size="small" style="padding: 5px" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['iot:device:remove']">删除</el-button>
|
||||
<el-button type="primary" size="small" style="padding: 5px" icon="el-icon-view" @click="handleEditDevice(scope.row)" v-hasPermi="['iot:device:add']">查看</el-button>
|
||||
<el-button type="primary" size="small" style="padding: 5px" @click="openSummaryDialog(scope.row)" v-if="form.deviceId != 0">二维码</el-button>
|
||||
<el-button type="danger" size="small" style="padding: 5px" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['iot:device:remove']">{{ $t('del') }}</el-button>
|
||||
<el-button type="primary" size="small" style="padding: 5px" icon="el-icon-view" @click="handleEditDevice(scope.row)" v-hasPermi="['iot:device:add']">{{ $t('look') }}</el-button>
|
||||
<el-button type="primary" size="small" style="padding: 5px" @click="openSummaryDialog(scope.row)" v-if="form.deviceId != 0">{{ $t('device.index.105953-37') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -101,7 +101,7 @@
|
||||
<el-row type="flex" :gutter="10" justify="space-between">
|
||||
<el-col :span="20" style="text-align: left">
|
||||
<el-link type="" :underline="false" @click="handleEditDevice(item)" style="font-weight: bold; font-size: 16px; line-height: 32px">
|
||||
<el-tooltip class="item" effect="dark" content="分享的设备" placement="top-start">
|
||||
<el-tooltip class="item" effect="dark" :content="$t('device.index.105953-38')" placement="top-start">
|
||||
<svg-icon icon-class="share" style="font-size: 20px" v-if="item.isOwner != 1" />
|
||||
</el-tooltip>
|
||||
<svg-icon icon-class="device" v-if="item.isOwner == 1" />
|
||||
@@ -137,13 +137,13 @@
|
||||
<!-- <dict-tag :options="dict.type.iot_transport_type" :value="item.transport" size="small" style="display: inline-block" /> -->
|
||||
</div>
|
||||
<el-descriptions :column="1" size="mini" style="white-space: nowrap">
|
||||
<el-descriptions-item label="编号">
|
||||
<el-descriptions-item :label="$t('device.index.105953-20')">
|
||||
{{ item.serialNumber }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="产品">
|
||||
<el-descriptions-item :label="$t('device.index.105953-21')">
|
||||
{{ item.productName }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="激活时间">
|
||||
<el-descriptions-item :label="$t('device.index.105953-32')">
|
||||
{{ parseTime(item.activeTime, '{y}-{m}-{d}') }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
@@ -183,21 +183,21 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-button-group style="margin-top: 15px">
|
||||
<el-button type="danger" size="mini" style="padding: 5px 10px" icon="el-icon-delete" @click="handleDelete(item)" v-hasPermi="['iot:device:remove']">删除</el-button>
|
||||
<el-button type="primary" size="mini" style="padding: 5px 15px" icon="el-icon-view" @click="handleEditDevice(item, 'basic')" v-hasPermi="['iot:device:add']">查看</el-button>
|
||||
<el-button type="success" size="mini" style="padding: 5px 15px" icon="el-icon-odometer" @click="handleRunDevice(item)" v-hasPermi="['iot:device:add']">运行状态</el-button>
|
||||
<el-button type="danger" size="mini" style="padding: 5px 10px" icon="el-icon-delete" @click="handleDelete(item)" v-hasPermi="['iot:device:remove']">{{ $t('del') }}</el-button>
|
||||
<el-button type="primary" size="mini" style="padding: 5px 15px" icon="el-icon-view" @click="handleEditDevice(item, 'basic')" v-hasPermi="['iot:device:add']">{{ $t('look') }}</el-button>
|
||||
<el-button type="success" size="mini" style="padding: 5px 15px" icon="el-icon-odometer" @click="handleRunDevice(item)" v-hasPermi="['iot:device:add']">{{ $t('device.index.105953-40') }}</el-button>
|
||||
</el-button-group>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-empty description="暂无数据,请添加设备" v-if="total == 0"></el-empty>
|
||||
<el-empty :description="$t('device.index.105953-41')" v-if="total == 0"></el-empty>
|
||||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" :pageSizes="[12, 24, 36, 60]" @pagination="getList" />
|
||||
</el-card>
|
||||
<!-- 二维码 -->
|
||||
<el-dialog :visible.sync="openSummary" width="300px" append-to-body>
|
||||
<div style="border: 1px solid #ccc; width: 220px; text-align: center; margin: 0 auto; margin-top: -15px">
|
||||
<vue-qr :text="qrText" :size="200"></vue-qr>
|
||||
<div style="padding-bottom: 10px">设备二维码</div>
|
||||
<div style="padding-bottom: 10px">{{ $t('device.index.105953-42') }}</div>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
@@ -340,8 +340,8 @@ export default {
|
||||
return;
|
||||
}
|
||||
if (topics[3] == 'status') {
|
||||
console.log('接收到【设备状态】主题:', topic);
|
||||
console.log('接收到【设备状态】内容:', message);
|
||||
console.log(this.$t('device.index.105953-43'), topic);
|
||||
console.log(this.$t('device.index.105953-44'), message);
|
||||
// 更新列表中设备的状态
|
||||
for (let i = 0; i < this.deviceList.length; i++) {
|
||||
if (this.deviceList[i].serialNumber == deviceNum) {
|
||||
@@ -471,7 +471,7 @@ export default {
|
||||
handleDelete(row) {
|
||||
const deviceIds = row.deviceId || this.ids;
|
||||
this.$modal
|
||||
.confirm('是否确认删除设备编号为"' + deviceIds + '"的数据项?')
|
||||
.confirm(this.$t('device.index.105953-45', [deviceIds]))
|
||||
.then(function () {
|
||||
if (row.deviceType === 3) {
|
||||
delSipDeviceBySipId(row.serialNumber);
|
||||
@@ -480,7 +480,7 @@ export default {
|
||||
})
|
||||
.then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess('删除成功');
|
||||
this.$modal.msgSuccess(this.$t('delSuccess'));
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
|
||||
@@ -1,43 +1,43 @@
|
||||
<template>
|
||||
<el-dialog title="选择产品" :visible.sync="open" width="800px">
|
||||
<el-dialog :title="$t('device.product-list.058448-0')" :visible.sync="open" width="800px">
|
||||
<div style="margin-top:-55px;">
|
||||
<el-divider style="margin-top:-30px;"></el-divider>
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
|
||||
<el-form-item label="产品名称" prop="productName">
|
||||
<el-input v-model="queryParams.productName" placeholder="请输入产品名称" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
<el-form-item :label="$t('device.device-edit.148398-5')" prop="productName">
|
||||
<el-input v-model="queryParams.productName" :placeholder="$t('device.product-list.058448-2')" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('device.product-list.058448-3') }}</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('device.product-list.058448-4') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table v-loading="loading" ref="singleTable" :data="productList" @row-click="rowClick" highlight-current-row size="mini">
|
||||
<el-table-column label="选择" width="50" align="center">
|
||||
<el-table-column :label="$t('device.device-edit.148398-6')" width="50" align="center">
|
||||
<template slot-scope="scope">
|
||||
<input type="radio" :checked="scope.row.isSelect" name="product" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="产品名称" align="center" prop="productName" />
|
||||
<el-table-column label="分类名称" align="center" prop="categoryName" />
|
||||
<el-table-column label="租户名称" align="center" prop="tenantName" />
|
||||
<el-table-column label="授权码" align="center" prop="status" width="70">
|
||||
<el-table-column :label="$t('device.device-edit.148398-5')" align="center" prop="productName" />
|
||||
<el-table-column :label="$t('device.product-list.058448-6')" align="center" prop="categoryName" />
|
||||
<el-table-column :label="$t('device.product-list.058448-7')" align="center" prop="tenantName" />
|
||||
<el-table-column :label="$t('device.product-list.058448-8')" align="center" prop="status" width="70">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="success" v-if="scope.row.isAuthorize==1">启用</el-tag>
|
||||
<el-tag type="info" v-if="scope.row.isAuthorize==0">未启用</el-tag>
|
||||
<el-tag type="success" v-if="scope.row.isAuthorize==1">{{ $t('device.product-list.058448-9') }}</el-tag>
|
||||
<el-tag type="info" v-if="scope.row.isAuthorize==0">{{ $t('device.product-list.058448-10') }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="认证方式" align="center" prop="status">
|
||||
<el-table-column :label="$t('device.product-list.058448-11')" align="center" prop="status">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_vertificate_method" :value="scope.row.vertificateMethod" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="联网方式" align="center" prop="networkMethod">
|
||||
<el-table-column :label="$t('device.product-list.058448-12')" align="center" prop="networkMethod">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_network_method" :value="scope.row.networkMethod" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" width="100">
|
||||
<el-table-column :label="$t('device.product-list.058448-13')" align="center" prop="createTime" width="100">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
@@ -47,8 +47,8 @@
|
||||
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
|
||||
</div>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="confirmSelectProduct" type="primary">确定</el-button>
|
||||
<el-button @click="closeDialog" type="info">关 闭</el-button>
|
||||
<el-button @click="confirmSelectProduct" type="primary">{{ $t('device.product-list.058448-14') }}</el-button>
|
||||
<el-button @click="closeDialog" type="info">{{ $t('device.product-list.058448-15') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<el-descriptions-item :labelStyle="statusColor">
|
||||
<template slot="label">
|
||||
<i class="el-icon-menu"></i>
|
||||
设备模式
|
||||
{{ $t('device.running-status.866086-0') }}
|
||||
</template>
|
||||
<el-link :underline="false" style="line-height: 28px; font-size: 16px; padding-right: 10px">{{ title }}</el-link>
|
||||
</el-descriptions-item>
|
||||
@@ -43,13 +43,13 @@
|
||||
{{ subItem.text }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-select v-else v-model="item.shadow" placeholder="请选择" @change="mqttPublish(deviceInfo, item)" :disabled="shadowUnEnable || item.isReadonly == 1">
|
||||
<el-select v-else v-model="item.shadow" :placeholder="$t('device.running-status.866086-3')" @change="mqttPublish(deviceInfo, item)" :disabled="shadowUnEnable || item.isReadonly == 1">
|
||||
<el-option v-for="subItem in item.datatype.enumList" :key="subItem.value" :label="subItem.text" :value="subItem.value" />
|
||||
</el-select>
|
||||
</div>
|
||||
<div v-if="item.datatype.type == 'string'">
|
||||
<el-input v-model="item.shadow" :placeholder="'请输入字符串 ' + (item.datatype.unit ? ',单位:' + item.datatype.unit : '')" :disabled="shadowUnEnable || item.isReadonly == 1">
|
||||
<el-button slot="append" icon="el-icon-s-promotion" @click="mqttPublish(deviceInfo, item)" style="font-size: 20px" title="指令发送" v-if="!shadowUnEnable && item.isReadonly == 0"></el-button>
|
||||
<el-button slot="append" icon="el-icon-s-promotion" @click="mqttPublish(deviceInfo, item)" style="font-size: 20px" :title="$t('device.running-status.866086-6')" v-if="!shadowUnEnable && item.isReadonly == 0"></el-button>
|
||||
</el-input>
|
||||
</div>
|
||||
<div v-if="item.datatype.type == 'decimal'">
|
||||
@@ -206,17 +206,17 @@
|
||||
</el-select>
|
||||
</div>
|
||||
<div v-if="param.datatype.type == 'string'">
|
||||
<el-input v-model="param.shadow" placeholder="请输入字符串" :disabled="shadowUnEnable || param.isReadonly == 1">
|
||||
<el-input v-model="param.shadow" :placeholder="$t('device.running-status.866086-4')" :disabled="shadowUnEnable || param.isReadonly == 1">
|
||||
<el-button slot="append" icon="el-icon-s-promotion" @click="mqttPublish(deviceInfo, param)" style="font-size: 20px" title="指令发送" v-if="!shadowUnEnable && param.isReadonly == 0"></el-button>
|
||||
</el-input>
|
||||
</div>
|
||||
<div v-if="param.datatype.type == 'decimal'">
|
||||
<el-input v-model="param.shadow" type="number" placeholder="请输入小数 " :disabled="shadowUnEnable || param.isReadonly == 1">
|
||||
<el-input v-model="param.shadow" type="number" :placeholder="$t('device.running-status.866086-7')" :disabled="shadowUnEnable || param.isReadonly == 1">
|
||||
<el-button slot="append" icon="el-icon-s-promotion" @click="mqttPublish(deviceInfo, param)" style="font-size: 20px" title="指令发送" v-if="!shadowUnEnable && param.isReadonly == 0"></el-button>
|
||||
</el-input>
|
||||
</div>
|
||||
<div v-if="param.datatype.type == 'integer'">
|
||||
<el-input v-model="param.shadow" type="integer" placeholder="请输入整数 " :disabled="shadowUnEnable || param.isReadonly == 1">
|
||||
<el-input v-model="param.shadow" type="integer" :placeholder="$t('device.running-status.866086-8')" :disabled="shadowUnEnable || param.isReadonly == 1">
|
||||
<el-button slot="append" icon="el-icon-s-promotion" @click="mqttPublish(deviceInfo, param)" style="font-size: 20px" title="指令发送" v-if="!shadowUnEnable && param.isReadonly == 0"></el-button>
|
||||
</el-input>
|
||||
</div>
|
||||
@@ -231,7 +231,7 @@
|
||||
<!---设备状态(影子模式,value值不会更新)-->
|
||||
<el-descriptions :column="1" border size="mini" v-if="deviceInfo.isShadow == 1 && deviceInfo.status != 3">
|
||||
<template slot="title">
|
||||
<span style="font-size: 14px; color: #606266">设备离线时状态</span>
|
||||
<span style="font-size: 14px; color: #606266">{{ $t('device.running-status.866086-9') }}</span>
|
||||
</template>
|
||||
|
||||
<!-- 设备物模型-->
|
||||
@@ -375,7 +375,7 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
// 控制模块标题
|
||||
title: '设备控制 ',
|
||||
title: this.$t('device.running-status.866086-48'),
|
||||
// 未启用设备影子
|
||||
shadowUnEnable: false,
|
||||
// 控制项标题背景
|
||||
@@ -428,8 +428,8 @@ export default {
|
||||
return;
|
||||
}
|
||||
if (topics[3] == 'status') {
|
||||
console.log('接收到【设备状态-运行】主题:', topic);
|
||||
console.log('接收到【设备状态-运行】内容:', message);
|
||||
console.log(this.$t('device.running-status.866086-21'), topic);
|
||||
console.log(this.$t('device.running-status.866086-22'), message);
|
||||
// 更新列表中设备的状态
|
||||
if (this.deviceInfo.serialNumber == deviceNum) {
|
||||
this.deviceInfo.status = message.status;
|
||||
@@ -594,7 +594,7 @@ export default {
|
||||
if (response.code === 200) {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: '服务调用成功!',
|
||||
message: this.$t('device.running-status.866086-25'),
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -654,14 +654,14 @@ export default {
|
||||
updateDeviceStatus(device) {
|
||||
if (device.status == 3) {
|
||||
this.statusColor.background = '#12d09f';
|
||||
this.title = '在线模式';
|
||||
this.title = this.$t('device.running-status.866086-26');
|
||||
} else {
|
||||
if (device.isShadow == 1) {
|
||||
this.statusColor.background = '#409EFF';
|
||||
this.title = '影子模式';
|
||||
this.title = this.$t('device.running-status.866086-27');
|
||||
} else {
|
||||
this.statusColor.background = '#909399';
|
||||
this.title = '离线模式';
|
||||
this.title = this.$t('device.running-status.866086-28');
|
||||
this.shadowUnEnable = true;
|
||||
}
|
||||
}
|
||||
@@ -832,4 +832,4 @@ export default {
|
||||
.el-slider__button-wrapper {
|
||||
top: -9px;
|
||||
}
|
||||
</style>
|
||||
</
|
||||
@@ -1,29 +1,29 @@
|
||||
<template>
|
||||
<el-dialog title="选择用户" :visible.sync="openSelectUser" width="800px">
|
||||
<el-dialog :title="$t('device.user-list.041943-0')" :visible.sync="openSelectUser" width="800px">
|
||||
<div style="margin-top:-50px;">
|
||||
<el-divider></el-divider>
|
||||
</div>
|
||||
<!--用户数据-->
|
||||
<el-form :model="queryParams" ref="queryForm" :rules="rules" :inline="true" label-width="80px">
|
||||
<el-form-item label="手机号码" prop="phonenumber">
|
||||
<el-input type="text" placeholder="请输入用户手机号码" v-model="queryParams.phonenumber" minlength="10" clearable size="small" show-word-limit style="width: 240px" @keyup.enter.native="handleQuery"></el-input>
|
||||
<el-form-item :label="$t('device.user-list.041943-1')" prop="phonenumber">
|
||||
<el-input type="text" :placeholder="$t('device.user-list.041943-2')" v-model="queryParams.phonenumber" minlength="10" clearable size="small" show-word-limit style="width: 240px" @keyup.enter.native="handleQuery"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">查询</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('device.user-list.041943-3') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table v-loading="loading" :data="userList" highlight-current-row size="mini" @current-change="handleCurrentChange" border>
|
||||
<el-table-column label="选择" width="50" align="center">
|
||||
<el-table-column :label="$t('device.device-edit.148398-6')" width="50" align="center">
|
||||
<template slot-scope="scope">
|
||||
<input type="radio" :checked="scope.row.isSelect" name="user" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="用户编号" align="center" key="userId" prop="userId" width="120" />
|
||||
<el-table-column label="用户名称" align="center" key="userName" prop="userName" />
|
||||
<el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" />
|
||||
<el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" width="120" />
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" width="160">
|
||||
<el-table-column :label="$t('device.user-list.041943-5')" align="center" key="userId" prop="userId" width="120" />
|
||||
<el-table-column :label="$t('device.user-list.041943-6')" align="center" key="userName" prop="userName" />
|
||||
<el-table-column :label="$t('device.user-list.041943-7')" align="center" key="nickName" prop="nickName" />
|
||||
<el-table-column :label="$t('device.user-list.041943-1')" align="center" key="phonenumber" prop="phonenumber" width="120" />
|
||||
<el-table-column :label="$t('device.user-list.041943-8')" align="center" prop="createTime" width="160">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime) }}</span>
|
||||
</template>
|
||||
@@ -31,8 +31,8 @@
|
||||
|
||||
</el-table>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="addDeviceUser">分享</el-button>
|
||||
<el-button @click="closeSelectUser">关 闭</el-button>
|
||||
<el-button type="primary" @click="addDeviceUser">{{ $t('device.user-list.041943-9') }}</el-button>
|
||||
<el-button @click="closeSelectUser">{{ $t('device.user-list.041943-10') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
@@ -89,12 +89,12 @@ export default {
|
||||
rules: {
|
||||
phonenumber: [{
|
||||
required: true,
|
||||
message: "手机号码不能为空",
|
||||
message: this.$t('device.user-list.041943-11'),
|
||||
trigger: "blur"
|
||||
}, {
|
||||
min: 11,
|
||||
max: 11,
|
||||
message: '手机号码长度为11位',
|
||||
message: this.$t('device.user-list.041943-12'),
|
||||
trigger: 'blur'
|
||||
}],
|
||||
},
|
||||
@@ -160,7 +160,7 @@ export default {
|
||||
form.userName = this.user.userName;
|
||||
form.phonenumber=this.user.phonenumber;
|
||||
addDeviceUser(form).then(response => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.$modal.msgSuccess(this.$t('device.user-list.041943-13'));
|
||||
this.resetQuery();
|
||||
this.openSelectUser = false;
|
||||
this.$parent.getList();
|
||||
@@ -178,7 +178,7 @@ export default {
|
||||
});
|
||||
|
||||
addDeviceUsers(form).then(response => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.$modal.msgSuccess(this.$t('device.user-list.041943-13'));
|
||||
this.resetQuery();
|
||||
this.openSelectUser = false;
|
||||
this.$parent.getList();
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
<template>
|
||||
<el-dialog title="选择设备" :visible.sync="openDeviceList" width="800px" append-to-body>
|
||||
<el-dialog :title="$t('iot.group.device-list.849593-0')" :visible.sync="openDeviceList" width="800px" append-to-body>
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
|
||||
<el-form-item label="设备名称" prop="deviceName">
|
||||
<el-input v-model="queryParams.deviceName" placeholder="请输入设备名称" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
<el-form-item :label="$t('iot.group.device-list.849593-1')" prop="deviceName">
|
||||
<el-input v-model="queryParams.deviceName" :placeholder="$t('iot.group.device-list.849593-2')" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('iot.group.device-list.849593-3') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table v-loading="loading" :data="deviceList" @select="handleSelectionChange" @select-all="handleSelectionAll" ref="multipleTable" size="mini" border>
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="设备名称" align="center" prop="deviceName" />
|
||||
<el-table-column label="设备编号" align="center" prop="serialNumber" />
|
||||
<el-table-column label="产品名称" align="center" prop="productName" />
|
||||
<el-table-column label="设备类型" align="center">
|
||||
<el-table-column :label="$t('iot.group.device-list.849593-4')" align="center" prop="deviceName" />
|
||||
<el-table-column :label="$t('iot.group.device-list.849593-5')" align="center" prop="serialNumber" />
|
||||
<el-table-column :label="$t('iot.group.device-list.849593-6')" align="center" prop="productName" />
|
||||
<el-table-column :label="$t('iot.group.device-list.849593-7')" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="success" v-if="scope.row.isOwner==0">分享</el-tag>
|
||||
<el-tag type="primary" v-else>拥有</el-tag>
|
||||
<el-tag type="success" v-if="scope.row.isOwner==0">{{ $t('iot.group.device-list.849593-8') }}</el-tag>
|
||||
<el-tag type="primary" v-else>{{ $t('iot.group.device-list.849593-9') }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="设备状态" align="center" prop="status">
|
||||
<el-table-column :label="$t('iot.group.device-list.849593-10')" align="center" prop="status">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_device_status" :value="scope.row.status" />
|
||||
</template>
|
||||
@@ -29,8 +29,8 @@
|
||||
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
|
||||
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="handleDeviceSelected">确 定</el-button>
|
||||
<el-button @click="closeSelectDeviceList">取 消</el-button>
|
||||
<el-button type="primary" @click="handleDeviceSelected">{{ $t('iot.group.device-list.849593-11') }}</el-button>
|
||||
<el-button @click="closeSelectDeviceList">{{ $t('iot.group.device-list.849593-12') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
@@ -182,7 +182,7 @@ export default {
|
||||
handleDeviceSelected() {
|
||||
this.group.deviceIds = this.ids;
|
||||
updateDeviceGroups(this.group).then(response => {
|
||||
this.$modal.msgSuccess("更新分组下的设备成功");
|
||||
this.$modal.msgSuccess(this.$t('iot.group.device-list.849593-13'));
|
||||
this.openDeviceList = false;
|
||||
})
|
||||
}
|
||||
|
||||
@@ -2,45 +2,45 @@
|
||||
<div style="padding: 6px">
|
||||
<el-card v-show="showSearch" style="margin-bottom: 6px">
|
||||
<el-form ref="queryForm" :model="queryParams" :inline="true" label-width="68px" style="margin-bottom: -20px">
|
||||
<el-form-item label="分组名称" prop="groupName">
|
||||
<el-input v-model="queryParams.groupName" placeholder="请输入分组名称" clearable size="small"
|
||||
<el-form-item :label="$t('iot.group.index.637432-0')" prop="groupName">
|
||||
<el-input v-model="queryParams.groupName" :placeholder="$t('iot.group.index.637432-1')" clearable size="small"
|
||||
@keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="isAdmin" label="我的分组" style="margin: 0 20px">
|
||||
<el-form-item v-if="isAdmin" :label="$t('iot.group.index.637432-2')" style="margin: 0 20px">
|
||||
<el-switch v-model="myGroup" @change="myGroupChange"></el-switch>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('iot.group.index.637432-3') }}</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('iot.group.index.637432-4') }}</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item style="float: right">
|
||||
<el-button v-hasPermi="['iot:group:add']" type="primary" plain icon="el-icon-plus" size="mini"
|
||||
@click="handleAdd">新增</el-button>
|
||||
@click="handleAdd">{{ $t('iot.group.index.637432-5') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<el-card style="padding-bottom: 100px">
|
||||
<el-table v-loading="loading" :data="groupList" border @selection-change="handleSelectionChange">
|
||||
<el-table-column label="分组名称" align="center" prop="groupName" width="200" />
|
||||
<el-table-column label="分组排序" align="center" prop="groupOrder" width="100" />
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
|
||||
<el-table-column :label="$t('iot.group.index.637432-0')" align="center" prop="groupName" width="200" />
|
||||
<el-table-column :label="$t('iot.group.index.637432-6')" align="center" prop="groupOrder" width="100" />
|
||||
<el-table-column :label="$t('iot.group.index.637432-7')" align="center" prop="createTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="isAdmin" label="所属用户" align="center" prop="userName" width="100" />
|
||||
<el-table-column label="备注" align="left" header-align="center" prop="remark" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="320">
|
||||
<el-table-column v-if="isAdmin" :label="$t('iot.group.index.637432-8')" align="center" prop="userName" width="100" />
|
||||
<el-table-column :label="$t('iot.group.index.637432-9')" align="left" header-align="center" prop="remark" />
|
||||
<el-table-column :label="$t('iot.group.index.637432-10')" align="center" class-name="small-padding fixed-width" width="320">
|
||||
<template slot-scope="scope">
|
||||
<el-button v-hasPermi="['iot:device:query']" size="small" type="text" style="padding: 5px"
|
||||
icon="el-icon-search" @click="handleViewDevice(scope.row.groupId)">查看设备</el-button>
|
||||
icon="el-icon-search" @click="handleViewDevice(scope.row.groupId)">{{ $t('iot.group.index.637432-11') }}</el-button>
|
||||
<el-button v-hasPermi="['iot:group:add']" size="small" type="text" style="padding: 5px" icon="el-icon-folder-add"
|
||||
@click="selectDevice(scope.row)">添加设备</el-button>
|
||||
@click="selectDevice(scope.row)">{{ $t('iot.group.index.637432-12') }}</el-button>
|
||||
<el-button v-hasPermi="['iot:group:edit']" size="small" type="text" style="padding: 5px"
|
||||
icon="el-icon-edit" @click="handleUpdate(scope.row)">修改</el-button>
|
||||
icon="el-icon-edit" @click="handleUpdate(scope.row)">{{ $t('iot.group.index.637432-17') }}</el-button>
|
||||
<el-button v-hasPermi="['iot:group:remove']" size="small" type="text" style="padding: 5px"
|
||||
icon="el-icon-delete" @click="handleDelete(scope.row)">删除</el-button>
|
||||
icon="el-icon-delete" @click="handleDelete(scope.row)">{{ $t('iot.group.index.637432-14') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -53,19 +53,19 @@
|
||||
<!-- 添加或修改设备分组对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="分组名称" prop="groupName">
|
||||
<el-input v-model="form.groupName" placeholder="请输入分组名称" />
|
||||
<el-form-item :label="$t('iot.group.index.637432-0')" prop="groupName">
|
||||
<el-input v-model="form.groupName" :placeholder="$t('iot.group.index.637432-1')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="分组排序" prop="groupOrder">
|
||||
<el-input v-model="form.groupOrder" type="number" placeholder="请输入分组排序" />
|
||||
<el-form-item :label="$t('iot.group.index.637432-6')" prop="groupOrder">
|
||||
<el-input v-model="form.groupOrder" type="number" :placeholder="$t('iot.group.index.637432-15')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
||||
<el-form-item :label="$t('iot.group.index.637432-9')" prop="remark">
|
||||
<el-input v-model="form.remark" type="textarea" :placeholder="$t('iot.group.index.637432-16')" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
<el-button type="primary" @click="submitForm">{{ form.groupId ? $t('iot.group.index.637432-17') : $t('iot.group.index.637432-18') }}</el-button>
|
||||
<el-button @click="cancel">{{ $t('iot.group.index.637432-19') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</el-card>
|
||||
@@ -122,24 +122,14 @@ export default {
|
||||
groupName: [
|
||||
{
|
||||
required: true,
|
||||
message: '分组名称不能为空',
|
||||
message: this.$t('iot.group.index.637432-20'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
{
|
||||
min: 1,
|
||||
max: 64,
|
||||
message: '分组名称不能少于1个字符和超过64字符',
|
||||
},
|
||||
],
|
||||
groupOrder: [
|
||||
{
|
||||
required: true,
|
||||
message: '分组排序不能为空,最大值为99',
|
||||
trigger: 'blur',
|
||||
},
|
||||
{
|
||||
max: 128,
|
||||
message: '分组排序不能少于1个位和超过10位',
|
||||
message: this.$t('iot.group.index.637432-21'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
@@ -222,7 +212,7 @@ export default {
|
||||
handleAdd() {
|
||||
this.reset()
|
||||
this.open = true
|
||||
this.title = '添加设备分组'
|
||||
this.title = this.$t('iot.group.index.637432-22')
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
@@ -231,7 +221,7 @@ export default {
|
||||
getGroup(groupId).then((response) => {
|
||||
this.form = response.data
|
||||
this.open = true
|
||||
this.title = '修改设备分组'
|
||||
this.title = this.$t('iot.group.index.637432-23')
|
||||
})
|
||||
},
|
||||
/** 选择设备 */
|
||||
@@ -246,13 +236,13 @@ export default {
|
||||
if (valid) {
|
||||
if (this.form.groupId != null) {
|
||||
updateGroup(this.form).then((response) => {
|
||||
this.$modal.msgSuccess('修改成功')
|
||||
this.$modal.msgSuccess(this.$t('iot.group.index.637432-24'))
|
||||
this.open = false
|
||||
this.getList()
|
||||
})
|
||||
} else {
|
||||
addGroup(this.form).then((response) => {
|
||||
this.$modal.msgSuccess('新增成功')
|
||||
this.$modal.msgSuccess(this.$t('iot.group.index.637432-25'))
|
||||
this.open = false
|
||||
this.getList()
|
||||
})
|
||||
@@ -264,13 +254,13 @@ export default {
|
||||
handleDelete(row) {
|
||||
const groupIds = row.groupId || this.ids
|
||||
this.$modal
|
||||
.confirm('是否确认删除设备分组编号为"' + groupIds + '"的数据项?')
|
||||
.confirm(this.$t('iot.group.index.637432-26', [groupIds]))
|
||||
.then(function () {
|
||||
return delGroup(groupIds)
|
||||
})
|
||||
.then(() => {
|
||||
this.getList()
|
||||
this.$modal.msgSuccess('删除成功')
|
||||
this.$modal.msgSuccess(this.$t('iot.group.index.637432-27'))
|
||||
})
|
||||
.catch(() => { })
|
||||
},
|
||||
|
||||
@@ -2,40 +2,40 @@
|
||||
<div style="padding:6px;">
|
||||
<el-card v-show="showSearch" style="margin-bottom:6px;">
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px" style="margin-bottom:-20px;">
|
||||
<el-form-item label="日志名称" prop="logName">
|
||||
<el-input v-model="queryParams.logName" placeholder="请输入日志名称" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
<el-form-item :label="$t('iot.log.index.902341-0')" prop="logName">
|
||||
<el-input v-model="queryParams.logName" :placeholder="$t('iot.log.index.902341-1')" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="类型" prop="logType">
|
||||
<el-select v-model="queryParams.logType" placeholder="请选择类型" clearable size="small">
|
||||
<el-form-item :label="$t('iot.log.index.902341-2')" prop="logType">
|
||||
<el-select v-model="queryParams.logType" :placeholder="$t('iot.log.index.902341-3')" clearable size="small">
|
||||
<el-option v-for="dict in dict.type.iot_things_type" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="日志级别" prop="logLevel">
|
||||
<el-input v-model="queryParams.logLevel" placeholder="请输入日志级别" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
<el-form-item :label="$t('iot.log.index.902341-4')" prop="logLevel">
|
||||
<el-input v-model="queryParams.logLevel" :placeholder="$t('iot.log.index.902341-5')" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="设备ID" prop="deviceId">
|
||||
<el-input v-model="queryParams.deviceId" placeholder="请输入设备ID" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
<el-form-item :label="$t('iot.log.index.902341-6')" prop="deviceId">
|
||||
<el-input v-model="queryParams.deviceId" :placeholder="$t('iot.log.index.902341-7')" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="设备名称" prop="deviceName">
|
||||
<el-input v-model="queryParams.deviceName" placeholder="请输入设备名称" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
<el-form-item :label="$t('iot.log.index.902341-8')" prop="deviceName">
|
||||
<el-input v-model="queryParams.deviceName" :placeholder="$t('iot.log.index.902341-9')" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="用户昵称" prop="userName">
|
||||
<el-input v-model="queryParams.userName" placeholder="请输入用户昵称" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
<el-form-item :label="$t('iot.log.index.902341-10')" prop="userName">
|
||||
<el-input v-model="queryParams.userName" :placeholder="$t('iot.log.index.902341-11')" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="租户名称" prop="tenantName">
|
||||
<el-input v-model="queryParams.tenantName" placeholder="请输入租户名称" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
<el-form-item :label="$t('iot.log.index.902341-12')" prop="tenantName">
|
||||
<el-input v-model="queryParams.tenantName" :placeholder="$t('iot.log.index.902341-13')" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="生成告警" prop="isAlert">
|
||||
<el-input v-model="queryParams.isAlert" placeholder="请输入是否生成告警" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
<el-form-item :label="$t('iot.log.index.902341-14')" prop="isAlert">
|
||||
<el-input v-model="queryParams.isAlert" :placeholder="$t('iot.log.index.902341-15')" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="告警处理" prop="status">
|
||||
<el-select v-model="queryParams.status" placeholder="请选择告警处理" clearable size="small">
|
||||
<el-form-item :label="$t('iot.log.index.902341-16')" prop="status">
|
||||
<el-select v-model="queryParams.status" :placeholder="$t('iot.log.index.902341-17')" clearable size="small">
|
||||
<el-option v-for="dict in dict.type.iot_yes_no" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('device.index.105953-8') }}</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('device.index.105953-9') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
@@ -43,65 +43,65 @@
|
||||
<el-card style="padding-bottom:100px;">
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['iot:log:add']">新增</el-button>
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['iot:log:add']">{{ $t('iot.group.index.637432-5') }}</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['iot:log:edit']">修改</el-button>
|
||||
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['iot:log:edit']">{{ $t('iot.group.index.637432-17') }}</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['iot:log:remove']">删除</el-button>
|
||||
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['iot:log:remove']">{{ $t('iot.group.index.637432-14') }}</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['iot:log:export']">导出</el-button>
|
||||
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['iot:log:export']">{{ $t('export') }}</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="logList" @selection-change="handleSelectionChange" border>
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="日志名称" align="center" prop="logName" />
|
||||
<el-table-column label="值" align="center" prop="logValue" />
|
||||
<el-table-column label="类型" align="center" prop="logType">
|
||||
<el-table-column :label="$t('iot.log.index.902341-0')" align="center" prop="logName" />
|
||||
<el-table-column :label="$t('iot.log.index.902341-18')" align="center" prop="logValue" />
|
||||
<el-table-column :label="$t('iot.log.index.902341-2')" align="center" prop="logType">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_things_type" :value="scope.row.logType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="日志级别" align="center" prop="logLevel">
|
||||
<el-table-column :label="$t('iot.log.index.902341-4')" align="center" prop="logLevel">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_yes_no" :value="scope.row.logLevel" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="设备ID" align="center" prop="deviceId" />
|
||||
<el-table-column label="设备名称" align="center" prop="deviceName" />
|
||||
<el-table-column label="用户ID" align="center" prop="userId" />
|
||||
<el-table-column label="用户昵称" align="center" prop="userName" />
|
||||
<el-table-column label="租户ID" align="center" prop="tenantId" />
|
||||
<el-table-column label="租户名称" align="center" prop="tenantName" />
|
||||
<el-table-column label="触发源" align="center" prop="triggerSource">
|
||||
<el-table-column :label="$t('iot.log.index.902341-6')" align="center" prop="deviceId" />
|
||||
<el-table-column :label="$t('iot.log.index.902341-8')" align="center" prop="deviceName" />
|
||||
<el-table-column :label="$t('iot.log.index.902341-19')" align="center" prop="userId" />
|
||||
<el-table-column :label="$t('iot.log.index.902341-10')" align="center" prop="userName" />
|
||||
<el-table-column :label="$t('iot.log.index.902341-20')" align="center" prop="tenantId" />
|
||||
<el-table-column :label="$t('iot.log.index.902341-12')" align="center" prop="tenantName" />
|
||||
<el-table-column :label="$t('iot.log.index.902341-21')" align="center" prop="triggerSource">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_yes_no" :value="scope.row.triggerSource" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="生成告警" align="center" prop="isAlert">
|
||||
<el-table-column :label="$t('iot.log.index.902341-14')" align="center" prop="isAlert">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_yes_no" :value="scope.row.isAlert" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="告警处理" align="center" prop="status">
|
||||
<el-table-column :label="$t('iot.log.index.902341-16')" align="center" prop="status">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_yes_no" :value="scope.row.status" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
|
||||
<el-table-column :label="$t('iot.group.index.637432-7')" align="center" prop="createTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="150">
|
||||
<el-table-column :label="$t('iot.group.index.637432-9')" align="center" prop="remark" />
|
||||
<el-table-column :label="$t('iot.group.index.637432-10')" align="center" class-name="small-padding fixed-width" width="150">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="small" type="primary" style="padding:5px;" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['iot:log:edit']">处理</el-button>
|
||||
<!-- <el-button size="small" type="danger" style="padding:5px;" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['iot:log:remove']">删除</el-button> -->
|
||||
<el-button size="small" type="primary" style="padding:5px;" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['iot:log:edit']">{{ $t('iot.log.index.902341-22') }}</el-button>
|
||||
<!-- <el-button size="small" type="danger" style="padding:5px;" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['iot:log:remove']">{{ $t('iot.group.index.637432-14') }}</el-button> -->
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -111,62 +111,62 @@
|
||||
<!-- 添加或修改设备日志对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="日志名称" prop="logName">
|
||||
<el-input v-model="form.logName" placeholder="请输入日志名称" />
|
||||
<el-form-item :label="$t('iot.log.index.902341-0')" prop="logName">
|
||||
<el-input v-model="form.logName" :placeholder="$t('iot.log.index.902341-1')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="类型" prop="logType">
|
||||
<el-select v-model="form.logType" placeholder="请选择类型">
|
||||
<el-form-item :label="$t('iot.log.index.902341-2')" prop="logType">
|
||||
<el-select v-model="form.logType" :placeholder="$t('iot.log.index.902341-3')">
|
||||
<el-option v-for="dict in dict.type.iot_things_type" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="日志级别" prop="logLevel">
|
||||
<el-input v-model="form.logLevel" placeholder="请输入日志级别" />
|
||||
<el-form-item :label="$t('iot.log.index.902341-4')" prop="logLevel">
|
||||
<el-input v-model="form.logLevel" :placeholder="$t('iot.log.index.902341-5')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="设备ID" prop="deviceId">
|
||||
<el-input v-model="form.deviceId" placeholder="请输入设备ID" />
|
||||
<el-form-item :label="$t('iot.log.index.902341-6')" prop="deviceId">
|
||||
<el-input v-model="form.deviceId" :placeholder="$t('iot.log.index.902341-7')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="设备名称" prop="deviceName">
|
||||
<el-input v-model="form.deviceName" placeholder="请输入设备名称" />
|
||||
<el-form-item :label="$t('iot.log.index.902341-8')" prop="deviceName">
|
||||
<el-input v-model="form.deviceName" :placeholder="$t('iot.log.index.902341-9')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="用户ID" prop="userId">
|
||||
<el-input v-model="form.userId" placeholder="请输入用户ID" />
|
||||
<el-form-item :label="$t('iot.log.index.902341-19')" prop="userId">
|
||||
<el-input v-model="form.userId" :placeholder="$t('iot.log.index.902341-23')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="用户昵称" prop="userName">
|
||||
<el-input v-model="form.userName" placeholder="请输入用户昵称" />
|
||||
<el-form-item :label="$t('iot.log.index.902341-10')" prop="userName">
|
||||
<el-input v-model="form.userName" :placeholder="$t('iot.log.index.902341-11')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="租户ID" prop="tenantId">
|
||||
<el-input v-model="form.tenantId" placeholder="请输入租户ID" />
|
||||
<el-form-item :label="$t('iot.log.index.902341-20')" prop="tenantId">
|
||||
<el-input v-model="form.tenantId" :placeholder="$t('iot.log.index.902341-24')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="租户名称" prop="tenantName">
|
||||
<el-input v-model="form.tenantName" placeholder="请输入租户名称" />
|
||||
<el-form-item :label="$t('iot.log.index.902341-12')" prop="tenantName">
|
||||
<el-input v-model="form.tenantName" :placeholder="$t('iot.log.index.902341-13')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="触发源" prop="triggerSource">
|
||||
<el-input v-model="form.triggerSource" placeholder="请输入触发源" />
|
||||
<el-form-item :label="$t('iot.log.index.902341-21')" prop="triggerSource">
|
||||
<el-input v-model="form.triggerSource" :placeholder="$t('iot.log.index.902341-25')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="是否生成告警" prop="isAlert">
|
||||
<el-input v-model="form.isAlert" placeholder="请输入是否生成告警" />
|
||||
<el-form-item :label="$t('iot.log.index.902341-26')" prop="isAlert">
|
||||
<el-input v-model="form.isAlert" :placeholder="$t('iot.log.index.902341-15')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="告警处理">
|
||||
<el-form-item :label="$t('iot.log.index.902341-16')">
|
||||
<el-radio-group v-model="form.status">
|
||||
<el-radio v-for="dict in dict.type.iot_yes_no" :key="dict.value" :label="parseInt(dict.value)">{{dict.label}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="form.remark" placeholder="请输入备注" />
|
||||
<el-form-item :label="$t('iot.group.index.637432-9')" prop="remark">
|
||||
<el-input v-model="form.remark" :placeholder="$t('iot.group.index.637432-16')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="日志收到的值" prop="logValue">
|
||||
<el-input v-model="form.logValue" placeholder="请输入日志收到的值" />
|
||||
<el-form-item :label="$t('iot.log.index.902341-27')" prop="logValue">
|
||||
<el-input v-model="form.logValue" :placeholder="$t('iot.log.index.902341-28')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="是否置顶" prop="istop">
|
||||
<el-input v-model="form.istop" placeholder="请输入是否置顶" />
|
||||
<el-form-item :label="$t('iot.log.index.902341-29')" prop="istop">
|
||||
<el-input v-model="form.istop" :placeholder="$t('iot.log.index.902341-30')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="是否监测" prop="ismonitor">
|
||||
<el-input v-model="form.ismonitor" placeholder="请输入是否监测" />
|
||||
<el-form-item :label="$t('iot.log.index.902341-31')" prop="ismonitor">
|
||||
<el-input v-model="form.ismonitor" :placeholder="$t('iot.log.index.902341-32')" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
<el-button type="primary" @click="submitForm">{{ $t('device.index.105953-56') }}</el-button>
|
||||
<el-button @click="cancel">{{ $t('iot.group.index.637432-19') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
@@ -229,47 +229,47 @@ export default {
|
||||
rules: {
|
||||
logName: [{
|
||||
required: true,
|
||||
message: "日志名称不能为空",
|
||||
message: this.$t('iot.log.index.902341-33'),
|
||||
trigger: "blur"
|
||||
}],
|
||||
logType: [{
|
||||
required: true,
|
||||
message: "类型不能为空",
|
||||
message: this.$t('iot.log.index.902341-34'),
|
||||
trigger: "change"
|
||||
}],
|
||||
logLevel: [{
|
||||
required: true,
|
||||
message: "日志级别不能为空",
|
||||
message: this.$t('iot.log.index.902341-35'),
|
||||
trigger: "blur"
|
||||
}],
|
||||
deviceId: [{
|
||||
required: true,
|
||||
message: "设备ID不能为空",
|
||||
message: this.$t('iot.log.index.902341-36'),
|
||||
trigger: "blur"
|
||||
}],
|
||||
deviceName: [{
|
||||
required: true,
|
||||
message: "设备名称不能为空",
|
||||
message: this.$t('iot.log.index.902341-37'),
|
||||
trigger: "blur"
|
||||
}],
|
||||
userId: [{
|
||||
required: true,
|
||||
message: "用户ID不能为空",
|
||||
message: this.$t('iot.log.index.902341-38'),
|
||||
trigger: "blur"
|
||||
}],
|
||||
userName: [{
|
||||
required: true,
|
||||
message: "用户昵称不能为空",
|
||||
message: this.$t('iot.log.index.902341-39'),
|
||||
trigger: "blur"
|
||||
}],
|
||||
tenantId: [{
|
||||
required: true,
|
||||
message: "租户ID不能为空",
|
||||
message: this.$t('iot.log.index.902341-40'),
|
||||
trigger: "blur"
|
||||
}],
|
||||
tenantName: [{
|
||||
required: true,
|
||||
message: "租户名称不能为空",
|
||||
message: this.$t('iot.log.index.902341-41'),
|
||||
trigger: "blur"
|
||||
}],
|
||||
}
|
||||
@@ -338,7 +338,7 @@ export default {
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = "添加设备日志";
|
||||
this.title = this.$t('iot.log.index.902341-42');
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
@@ -347,7 +347,7 @@ export default {
|
||||
getLog(deviceLogId).then(response => {
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = "修改设备日志";
|
||||
this.title = this.$t('iot.log.index.902341-43');
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
@@ -356,13 +356,13 @@ export default {
|
||||
if (valid) {
|
||||
if (this.form.deviceLogId != null) {
|
||||
updateLog(this.form).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.$modal.msgSuccess(this.$t('iot.group.index.637432-24'));
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addLog(this.form).then(response => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.$modal.msgSuccess(this.$t('iot.group.index.637432-25'));
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
@@ -373,11 +373,11 @@ export default {
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const deviceLogIds = row.deviceLogId || this.ids;
|
||||
this.$modal.confirm('是否确认删除设备日志编号为"' + deviceLogIds + '"的数据项?').then(function () {
|
||||
this.$modal.confirm(this.$t('iot.log.index.902341-44', [deviceLogIds])).then(function () {
|
||||
return delLog(deviceLogIds);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
this.$modal.msgSuccess(this.$t('iot.group.index.637432-27'));
|
||||
}).catch(() => {});
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
|
||||
@@ -2,49 +2,49 @@
|
||||
<div style="padding: 6px">
|
||||
<el-card v-show="showSearch" style="margin-bottom: 6px">
|
||||
<el-form @submit.native.prevent :model="queryParams" ref="queryForm" :inline="true" label-width="68px" style="margin-bottom: -20px">
|
||||
<el-form-item label="客户端" prop="clientId">
|
||||
<el-input v-model="queryParams.clientId" placeholder="请输入客户端ID" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
<el-form-item :label="$t('netty.clients.654908-0')" prop="clientId">
|
||||
<el-input v-model="queryParams.clientId" :placeholder="$t('netty.clients.654908-1')" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item prop="isClient">
|
||||
<el-checkbox v-model="queryParams.isClient" true-label="1" false-label="0">只看设备端</el-checkbox>
|
||||
<el-checkbox v-model="queryParams.isClient" true-label="1" false-label="0">{{ $t('netty.clients.654908-2') }}</el-checkbox>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('device.index.105953-8') }}</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('device.index.105953-9') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<el-card style="padding-bottom:100px;">
|
||||
<el-table v-loading="loading" :data="clientList">
|
||||
<el-table-column label="客户端ID" align="left" header-align="center" prop="clientId">
|
||||
<el-table-column :label="$t('netty.clients.654908-4')" align="left" header-align="center" prop="clientId">
|
||||
<template slot-scope="scope">
|
||||
<el-link :underline="false" type="primary" @click.native="handleOpen(scope.row)">{{ scope.row.clientId }}</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="类型" align="center" prop="type">
|
||||
<el-table-column :label="$t('netty.clients.654908-5')" align="center" prop="type">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="danger" v-if="scope.row.clientId.indexOf('server') == 0">服务端</el-tag>
|
||||
<el-tag type="success" v-else-if="scope.row.clientId.indexOf('web') == 0">Web端</el-tag>
|
||||
<el-tag type="warning" v-else-if="scope.row.clientId.indexOf('phone') == 0">移动端</el-tag>
|
||||
<el-tag type="info" v-else-if="scope.row.clientId.indexOf('test') == 0">测试端</el-tag>
|
||||
<el-tag type="primary" v-else>设备端</el-tag>
|
||||
<el-tag type="danger" v-if="scope.row.clientId.indexOf('server') == 0">{{ $t('netty.clients.654908-6') }}</el-tag>
|
||||
<el-tag type="success" v-else-if="scope.row.clientId.indexOf('web') == 0">{{ $t('netty.clients.654908-7') }}</el-tag>
|
||||
<el-tag type="warning" v-else-if="scope.row.clientId.indexOf('phone') == 0">{{ $t('netty.clients.654908-8') }}</el-tag>
|
||||
<el-tag type="info" v-else-if="scope.row.clientId.indexOf('test') == 0">{{ $t('netty.clients.654908-9') }}</el-tag>
|
||||
<el-tag type="primary" v-else>{{ $t('netty.clients.654908-10') }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="连接状态" align="center" prop="connected">
|
||||
<el-table-column :label="$t('netty.clients.654908-11')" align="center" prop="connected">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="success" v-if="scope.row.connected">已连接</el-tag>
|
||||
<el-tag type="info" v-else>已断开</el-tag>
|
||||
<el-tag type="success" v-if="scope.row.connected">{{ $t('netty.clients.654908-12') }}</el-tag>
|
||||
<el-tag type="info" v-else>{{ $t('netty.clients.654908-13') }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="心跳(秒)" align="center" prop="keepAlive" width="100" />
|
||||
<el-table-column label="账号" align="center" prop="username" width="100px" />
|
||||
<el-table-column label="当前订阅数量" align="center" prop="topicCount" width="100" />
|
||||
<el-table-column label="连接时间" align="center" prop="connected_at" />
|
||||
<el-table-column :label="$t('netty.clients.654908-14')" align="center" prop="keepAlive" width="100" />
|
||||
<el-table-column :label="$t('netty.clients.654908-15')" align="center" prop="username" width="100px" />
|
||||
<el-table-column :label="$t('netty.clients.654908-16')" align="center" prop="topicCount" width="100" />
|
||||
<el-table-column :label="$t('netty.clients.654908-17')" align="center" prop="connected_at" />
|
||||
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<el-table-column :label="$t('iot.group.index.637432-10')" align="center" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-button type="primary" icon="edit" @click="clickClientOut(scope.row)" size="small">踢出</el-button>
|
||||
<el-button type="primary" icon="edit" @click="clickClientOut(scope.row)" size="small">{{ $t('netty.clients.654908-18') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -55,10 +55,10 @@
|
||||
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
|
||||
<el-tabs v-model="activeName" tab-position="top" style="padding: 10px">
|
||||
<el-tab-pane name="subscribe">
|
||||
<span slot="label">订阅列表</span>
|
||||
<span slot="label">{{ $t('netty.clients.654908-19') }}</span>
|
||||
<el-row :gutter="10" class="mb8"></el-row>
|
||||
<el-table :data="subscribeList" size="mini">
|
||||
<el-table-column label="主题" align="center" prop="topicName" />
|
||||
<el-table-column :label="$t('netty.clients.654908-20')" align="center" prop="topicName" />
|
||||
<el-table-column label="QoS" align="center" prop="qos" />
|
||||
</el-table>
|
||||
</el-tab-pane>
|
||||
@@ -67,15 +67,15 @@
|
||||
</el-card>
|
||||
|
||||
<!-- 添加或修改订阅对话框 -->
|
||||
<el-dialog title="添加订阅" :visible.sync="subscribeOpen" width="800px" append-to-body>
|
||||
<el-dialog :title="$t('netty.clients.654908-22')" :visible.sync="subscribeOpen" width="800px" append-to-body>
|
||||
<el-form ref="subscribeForm" :model="subscribeForm" :rules="rules" label-width="60px">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="主题" prop="topic">
|
||||
<el-input v-model="subscribeForm.topic" placeholder="请输入主题" />
|
||||
<el-form-item :label="$t('netty.clients.654908-20')" prop="topic">
|
||||
<el-input v-model="subscribeForm.topic" :placeholder="$t('netty.clients.654908-23')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Qos" prop="qos">
|
||||
<el-select v-model="subscribeForm.qos" placeholder="请选择消息类型">
|
||||
<el-select v-model="subscribeForm.qos" :placeholder="$t('netty.clients.654908-24')">
|
||||
<el-option key="0" label="0" value="0"></el-option>
|
||||
<el-option key="1" label="1" value="1"></el-option>
|
||||
<el-option key="2" label="2" value="2"></el-option>
|
||||
@@ -85,8 +85,8 @@
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">添 加 订 阅</el-button>
|
||||
<el-button @click="cancelSubscribe">取 消</el-button>
|
||||
<el-button type="primary" @click="submitForm">{{ $t('netty.clients.654908-25') }}</el-button>
|
||||
<el-button @click="cancelSubscribe">{{ $t('iot.group.device-list.849593-12') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
@@ -148,7 +148,7 @@ export default {
|
||||
topic: [
|
||||
{
|
||||
required: true,
|
||||
message: '主题不能为空',
|
||||
message: this.$t('netty.clients.654908-26'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
@@ -213,13 +213,13 @@ export default {
|
||||
handleDelete(row) {
|
||||
const clientId = row.clientId;
|
||||
this.$modal
|
||||
.confirm('是否确认删除MQTT客户端编号为"' + clientId + '"的数据项?')
|
||||
.confirm(this.$t('netty.clients.654908-27', [clientId]))
|
||||
.then(function () {
|
||||
return eliminateClient(clientId);
|
||||
})
|
||||
.then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess('删除成功');
|
||||
this.$modal.msgSuccess(this.$t('iot.group.index.637432-27'));
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
@@ -228,7 +228,7 @@ export default {
|
||||
const clientId = row.clientId;
|
||||
const topic = row.topic;
|
||||
this.$modal
|
||||
.confirm('是否确认取消订阅主题为"' + topic + '"的数据项?')
|
||||
.confirm(this.$t('netty.clients.654908-28', [topic]))
|
||||
.then(function () {
|
||||
const param = {};
|
||||
param.topic = topic;
|
||||
@@ -237,14 +237,14 @@ export default {
|
||||
})
|
||||
.then(() => {
|
||||
this.getSubscribeList(clientId);
|
||||
this.$modal.msgSuccess('取消订阅成功');
|
||||
this.$modal.msgSuccess(this.$t('netty.clients.654908-29'));
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
//查看客户端详情
|
||||
handleOpen(row) {
|
||||
this.open = true;
|
||||
this.title = '详情';
|
||||
this.title = this.$t('iot.group.index.637432-13');
|
||||
this.subscribeList = row.topics;
|
||||
console.log(this.subscribeList);
|
||||
},
|
||||
@@ -260,7 +260,7 @@ export default {
|
||||
this.$refs['subscribeForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
addSubscribe(this.subscribeForm).then((response) => {
|
||||
this.$modal.msgSuccess('新增订阅成功');
|
||||
this.$modal.msgSuccess(this.$t('netty.clients.654908-30'));
|
||||
this.subscribeOpen = false;
|
||||
this.getSubscribeList(this.clientId);
|
||||
});
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<el-card style="margin-bottom: 6px">
|
||||
<el-row :gutter="120">
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="8" :xl="8">
|
||||
<h3 style="font-weight: bold">Mqtt 统计指标</h3>
|
||||
<h3 style="font-weight: bold">{{ $t('netty.mqtt.564432-0') }}</h3>
|
||||
<el-row :gutter="20" class="panel-group">
|
||||
<el-col :span="24" class="card-panel-col" style="margin-bottom: 17px">
|
||||
<div class="card-panel">
|
||||
@@ -12,7 +12,7 @@
|
||||
</div>
|
||||
<div class="card-panel-description">
|
||||
<div>
|
||||
<div class="card-panel-text">发送消息</div>
|
||||
<div class="card-panel-text">{{ $t('netty.mqtt.564432-1') }}</div>
|
||||
<count-to :start-val="0" :end-val="this.static['send_total']" :duration="3000" class="card-panel-num" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
<div class="card-panel-description">
|
||||
<div>
|
||||
<div class="card-panel-text">接收消息</div>
|
||||
<div class="card-panel-text">{{ $t('netty.mqtt.564432-2') }}</div>
|
||||
<count-to :start-val="0" :end-val="this.static['receive_total']" :duration="3000" class="card-panel-num" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -38,7 +38,7 @@
|
||||
<svg-icon icon-class="authenticate" class-name="card-panel-icon" />
|
||||
</div>
|
||||
<div class="card-panel-description">
|
||||
<div class="card-panel-text">认证次数</div>
|
||||
<div class="card-panel-text">{{ $t('netty.mqtt.564432-3') }}</div>
|
||||
<count-to :start-val="0" :end-val="this.static['auth_total']" :duration="1000" class="card-panel-num" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -49,7 +49,7 @@
|
||||
<svg-icon icon-class="connect" class-name="card-panel-icon" />
|
||||
</div>
|
||||
<div class="card-panel-description">
|
||||
<div class="card-panel-text">连接次数</div>
|
||||
<div class="card-panel-text">{{ $t('netty.mqtt.564432-4') }}</div>
|
||||
<count-to :start-val="0" :end-val="this.static['connect_total']" :duration="1000" class="card-panel-num" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -60,7 +60,7 @@
|
||||
<svg-icon icon-class="subscribe1" class-name="card-panel-icon" />
|
||||
</div>
|
||||
<div class="card-panel-description">
|
||||
<div class="card-panel-text">订阅次数</div>
|
||||
<div class="card-panel-text">{{ $t('netty.mqtt.564432-5') }}</div>
|
||||
<count-to :start-val="0" :end-val="this.static['subscribe_total']" :duration="2000" class="card-panel-num" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -73,7 +73,7 @@
|
||||
</div>
|
||||
<div class="card-panel-description">
|
||||
<div>
|
||||
<div class="card-panel-text">今日接收</div>
|
||||
<div class="card-panel-text">{{ $t('netty.mqtt.564432-6') }}</div>
|
||||
<count-to :start-val="0" :end-val="this.static['today_received']" :duration="3000" class="card-panel-num" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -85,7 +85,7 @@
|
||||
<svg-icon icon-class="subscribe1" class-name="card-panel-icon" />
|
||||
</div>
|
||||
<div class="card-panel-description">
|
||||
<div class="card-panel-text">今日发送</div>
|
||||
<div class="card-panel-text">{{ $t('netty.mqtt.564432-7') }}</div>
|
||||
<count-to :start-val="0" :end-val="this.static['today_send']" :duration="2000" class="card-panel-num" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -147,7 +147,7 @@ export default {
|
||||
var option;
|
||||
option = {
|
||||
title: {
|
||||
text: 'Mqtt消息',
|
||||
text: this.$t('netty.mqtt.564432-8'),
|
||||
left: 'left',
|
||||
textStyle: {
|
||||
fontSize: 16,
|
||||
@@ -163,7 +163,7 @@ export default {
|
||||
color: ['#E6A23C', '#F56C6C', '#DDD'],
|
||||
series: [
|
||||
{
|
||||
name: 'Mqtt消息 %',
|
||||
name: this.$t('netty.mqtt.564432-9'),
|
||||
type: 'pie',
|
||||
radius: '55%',
|
||||
label: {
|
||||
@@ -178,11 +178,11 @@ export default {
|
||||
data: [
|
||||
{
|
||||
value: this.static['send_total'],
|
||||
name: '发送消息总数',
|
||||
name: this.$t('netty.mqtt.564432-10'),
|
||||
},
|
||||
{
|
||||
value: this.static['receive_total'],
|
||||
name: '接收消息总数',
|
||||
name: this.$t('netty.mqtt.564432-11'),
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -198,7 +198,7 @@ export default {
|
||||
|
||||
option = {
|
||||
title: {
|
||||
text: 'Mqtt 状态数据',
|
||||
text: this.$t('netty.mqtt.564432-12'),
|
||||
textStyle: {
|
||||
fontSize: 18,
|
||||
color: '#000',
|
||||
@@ -227,11 +227,17 @@ export default {
|
||||
axisLabel: {
|
||||
fontSize: 14,
|
||||
},
|
||||
data: ['连接数量', '会话数量', '订阅数量', '路由数量', '保留消息'],
|
||||
data: [
|
||||
this.$t('netty.mqtt.564432-13'),
|
||||
this.$t('netty.mqtt.564432-14'),
|
||||
this.$t('netty.mqtt.564432-15'),
|
||||
this.$t('netty.mqtt.564432-16'),
|
||||
this.$t('netty.mqtt.564432-17'),
|
||||
],
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '当前数量',
|
||||
name: this.$t('netty.mqtt.564432-18'),
|
||||
type: 'bar',
|
||||
data: [this.stats['connection_count'], this.stats['session_count'], this.stats['subscription_count'], this.stats['retain_count'], this.stats['retain_count']],
|
||||
itemStyle: {
|
||||
@@ -239,7 +245,7 @@ export default {
|
||||
},
|
||||
},
|
||||
{
|
||||
name: '累计总数',
|
||||
name: this.$t('netty.mqtt.564432-19'),
|
||||
type: 'bar',
|
||||
data: [this.stats['connection_total'], this.stats['session_total'], this.stats['subscription_total'], this.stats['retain_total'], this.stats['retain_total']],
|
||||
itemStyle: {
|
||||
|
||||
@@ -1,105 +1,105 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="60px" v-if="isAdmin">
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input v-model="queryParams.title" placeholder="请输入标题" clearable size="small"
|
||||
<el-form-item :label="$t('system.news.893410-0')" prop="title">
|
||||
<el-input v-model="queryParams.title" :placeholder="$t('system.news.893410-1')" clearable size="small"
|
||||
@keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="分类" prop="categoryName">
|
||||
<el-input v-model="queryParams.categoryName" placeholder="请输入分类名称" clearable size="small"
|
||||
<el-form-item :label="$t('system.news.893410-2')" prop="categoryName">
|
||||
<el-input v-model="queryParams.categoryName" :placeholder="$t('system.news.893410-3')" clearable size="small"
|
||||
@keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="置顶" prop="isTop">
|
||||
<el-select v-model="queryParams.isTop" placeholder="是否置顶" clearable size="small" style="width:100px;">
|
||||
<el-form-item :label="$t('system.news.893410-4')" prop="isTop">
|
||||
<el-select v-model="queryParams.isTop" :placeholder="$t('system.news.893410-5')" clearable size="small" style="width:100px;">
|
||||
<el-option v-for="dict in dict.type.iot_yes_no" :key="dict.value" :label="dict.label"
|
||||
:value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="轮播" prop="isBanner">
|
||||
<el-select v-model="queryParams.isBanner" placeholder="是否轮播" clearable size="small" style="width:100px;">
|
||||
<el-form-item :label="$t('system.news.893410-6')" prop="isBanner">
|
||||
<el-select v-model="queryParams.isBanner" :placeholder="$t('system.news.893410-7')" clearable size="small" style="width:100px;">
|
||||
<el-option v-for="dict in dict.type.iot_yes_no" :key="dict.value" :label="dict.label"
|
||||
:value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="发布" prop="status">
|
||||
<el-select v-model="queryParams.status" placeholder="选择状态" clearable size="small" style="width:100px;">
|
||||
<el-form-item :label="$t('system.news.893410-8')" prop="status">
|
||||
<el-select v-model="queryParams.status" :placeholder="$t('system.news.893410-9')" clearable size="small" style="width:100px;">
|
||||
<el-option v-for="dict in dict.type.iot_yes_no" :key="dict.value" :label="dict.label"
|
||||
:value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('device.index.105953-8') }}</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('device.index.105953-9') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
|
||||
v-hasPermi="['iot:news:add']">新增</el-button>
|
||||
v-hasPermi="['iot:news:add']">{{ $t('system.sysclient.652154-4') }}</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
|
||||
v-hasPermi="['iot:news:edit']">修改</el-button>
|
||||
v-hasPermi="['iot:news:edit']">{{ $t('system.sysclient.652154-5') }}</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
|
||||
v-hasPermi="['iot:news:remove']">删除</el-button>
|
||||
v-hasPermi="['iot:news:remove']">{{ $t('system.sysclient.652154-6') }}</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
|
||||
v-hasPermi="['iot:news:export']">导出</el-button>
|
||||
v-hasPermi="['iot:news:export']">{{ $t('system.sysclient.652154-7') }}</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="newsList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="图片" align="center" prop="imgUrl" width="140px;">
|
||||
<el-table-column :label="$t('system.news.893410-10')" align="center" prop="imgUrl" width="140px;">
|
||||
<template slot-scope="scope">
|
||||
<el-image style="border-radius:5px;height:80px;width:120px;margin-bottom:-5px;" lazy
|
||||
:preview-src-list="[baseUrl + scope.row.imgUrl]" :src="baseUrl + scope.row.imgUrl"
|
||||
fit="cover"></el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="标题" align="center" prop="title" />
|
||||
<el-table-column label="分类" align="center" prop="categoryName">
|
||||
<el-table-column :label="$t('system.news.893410-0')" align="center" prop="title" />
|
||||
<el-table-column :label="$t('system.news.893410-2')" align="center" prop="categoryName">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="info">{{ scope.row.categoryName }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="作者" align="center" prop="author" width="100" />
|
||||
<el-table-column label="置顶" align="center" prop="isTop" width="80">
|
||||
<el-table-column :label="$t('system.news.893410-11')" align="center" prop="author" width="100" />
|
||||
<el-table-column :label="$t('system.news.893410-4')" align="center" prop="isTop" width="80">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_yes_no" :value="scope.row.isTop" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="轮播" align="center" prop="isBanner" width="80">
|
||||
<el-table-column :label="$t('system.news.893410-6')" align="center" prop="isBanner" width="80">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_yes_no" :value="scope.row.isBanner" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="发布" align="center" prop="status" width="80">
|
||||
<el-table-column :label="$t('system.news.893410-8')" align="center" prop="status" width="80">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_yes_no" :value="scope.row.status" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" width="120">
|
||||
<el-table-column :label="$t('device.index.105953-33')" align="center" prop="createTime" width="120">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<el-table-column :label="$t('iot.group.index.637432-9')" align="center" prop="remark" />
|
||||
<el-table-column :label="$t('device.index.105953-34')" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" icon="el-icon-view"
|
||||
@click="openDetailDialog(scope.row.newsId)">查看</el-button>
|
||||
@click="openDetailDialog(scope.row.newsId)">{{ $t('system.news.893410-25') }}</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['iot:news:edit']">修改</el-button>
|
||||
v-hasPermi="['iot:news:edit']">{{ $t('system.sysclient.652154-5') }}</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
|
||||
v-hasPermi="['iot:news:remove']">删除</el-button>
|
||||
v-hasPermi="['iot:news:remove']">{{ $t('system.sysclient.652154-6') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -112,30 +112,30 @@
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="60px">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input v-model="form.title" placeholder="请输入标题" />
|
||||
<el-form-item :label="$t('system.news.893410-0')" prop="title">
|
||||
<el-input v-model="form.title" :placeholder="$t('system.news.893410-1')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="作者" prop="author">
|
||||
<el-input v-model="form.author" placeholder="请输入作者" />
|
||||
<el-form-item :label="$t('system.news.893410-11')" prop="author">
|
||||
<el-input v-model="form.author" :placeholder="$t('system.news.893410-12')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="摘要" prop="remark">
|
||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" rows="3" />
|
||||
<el-form-item :label="$t('system.news.893410-13')" prop="remark">
|
||||
<el-input v-model="form.remark" type="textarea" :placeholder="$t('iot.group.index.637432-16')" rows="3" />
|
||||
</el-form-item>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="置顶" prop="isTop">
|
||||
<el-form-item :label="$t('system.news.893410-4')" prop="isTop">
|
||||
<el-switch v-model="form.isTop" active-text="" inactive-text="" :active-value="1"
|
||||
:inactive-value="0"></el-switch>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="轮播" prop="isBanner">
|
||||
<el-form-item :label="$t('system.news.893410-6')" prop="isBanner">
|
||||
<el-switch v-model="form.isBanner" active-text="" inactive-text="" :active-value="1"
|
||||
:inactive-value="0"></el-switch>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="发布" prop="status">
|
||||
<el-form-item :label="$t('system.news.893410-8')" prop="status">
|
||||
<el-switch v-model="form.status" active-text="" inactive-text="" :active-value="1"
|
||||
:inactive-value="0"></el-switch>
|
||||
</el-form-item>
|
||||
@@ -144,25 +144,25 @@
|
||||
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="分类" prop="categoryId">
|
||||
<el-select v-model="form.categoryId" placeholder="请选择分类" @change="selectCategory">
|
||||
<el-form-item :label="$t('system.news.893410-2')" prop="categoryId">
|
||||
<el-select v-model="form.categoryId" :placeholder="$t('system.news.893410-14')" @change="selectCategory">
|
||||
<el-option v-for="category in categoryList" :key="category.id" :label="category.name"
|
||||
:value="category.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="图片">
|
||||
<el-form-item :label="$t('system.news.893410-10')">
|
||||
<imageUpload ref="image-upload" :value="form.imgUrl" :limit="1" :fileSize="1"
|
||||
@input="getImagePath($event)"></imageUpload>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="内容">
|
||||
<el-form-item :label="$t('system.news.893410-15')">
|
||||
<editor v-model="form.content" :min-height="192" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
<el-button type="primary" @click="submitForm">{{ $t('device.index.105953-56') }}</el-button>
|
||||
<el-button @click="cancel">{{ $t('iot.group.index.637432-19') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
@@ -176,7 +176,7 @@
|
||||
<div v-html="form.content"></div>
|
||||
</div>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="closeDetail"> 关 闭 </el-button>
|
||||
<el-button type="primary" @click="closeDetail"> {{ $t('device.device-edit.148398-57') }} </el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
@@ -246,35 +246,24 @@ export default {
|
||||
rules: {
|
||||
title: [{
|
||||
required: true,
|
||||
message: "标题不能为空",
|
||||
message: this.$t('system.news.893410-16'),
|
||||
trigger: "blur"
|
||||
},
|
||||
{
|
||||
min: 1,
|
||||
max: 64,
|
||||
message: '标题不能少于1个字符和超过64字符',
|
||||
},
|
||||
],
|
||||
}],
|
||||
content: [{
|
||||
required: true,
|
||||
message: "内容不能为空",
|
||||
message: this.$t('system.news.893410-17'),
|
||||
trigger: "blur"
|
||||
}],
|
||||
categoryId: [{
|
||||
required: true,
|
||||
message: "分类不能为空",
|
||||
message: this.$t('system.news.893410-18'),
|
||||
trigger: "blur"
|
||||
}],
|
||||
author: [{
|
||||
required: true,
|
||||
message: "作者不能为空",
|
||||
message: this.$t('system.news.893410-19'),
|
||||
trigger: "blur"
|
||||
},
|
||||
{
|
||||
min: 1,
|
||||
max: 50,
|
||||
message: '作者名称不能少于1个字符和超过50字符',
|
||||
},],
|
||||
}],
|
||||
}
|
||||
};
|
||||
},
|
||||
@@ -316,7 +305,7 @@ export default {
|
||||
this.form = {
|
||||
newsId: null,
|
||||
title: null,
|
||||
content: "暂无内容",
|
||||
content: this.$t('system.news.893410-20'),
|
||||
imgUrl: "",
|
||||
isTop: null,
|
||||
isBanner: null,
|
||||
@@ -353,7 +342,7 @@ export default {
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = "添加新闻资讯";
|
||||
this.title = this.$t('system.news.893410-21');
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
@@ -362,27 +351,27 @@ export default {
|
||||
getNews(newsId).then(response => {
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = "修改新闻资讯";
|
||||
this.title = this.$t('system.news.893410-22');
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
console.log(this.form);
|
||||
if (this.form.imgUrl == null || this.form.imgUrl == "") {
|
||||
this.$modal.msgError("请上传图片");
|
||||
this.$modal.msgError(this.$t('system.news.893410-23'));
|
||||
return;
|
||||
}
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
if (this.form.newsId != null) {
|
||||
updateNews(this.form).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.$modal.msgSuccess(this.$t('iot.group.index.637432-24'));
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addNews(this.form).then(response => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.$modal.msgSuccess(this.$t('iot.group.index.637432-25'));
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
@@ -393,11 +382,11 @@ export default {
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const newsIds = row.newsId || this.ids;
|
||||
this.$modal.confirm('是否确认删除新闻资讯编号为"' + newsIds + '"的数据项?').then(function () {
|
||||
this.$modal.confirm(this.$t('system.news.893410-24', [newsIds])).then(function () {
|
||||
return delNews(newsIds);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
this.$modal.msgSuccess(this.$t('iot.group.index.637432-27'));
|
||||
}).catch(() => { });
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
@@ -427,7 +416,7 @@ export default {
|
||||
},
|
||||
// 取消按钮
|
||||
closeDetail() {
|
||||
this.titleDetail = "详情";
|
||||
this.titleDetail = this.$t('system.news.893410-25');
|
||||
this.openDetail = false;
|
||||
this.reset();
|
||||
},
|
||||
|
||||
@@ -1,53 +1,53 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="分类名称" prop="categoryName">
|
||||
<el-input v-model="queryParams.categoryName" placeholder="请输入分类名称" clearable size="small"
|
||||
<el-form-item :label="$t('system.newsCategory.874509-0')" prop="categoryName">
|
||||
<el-input v-model="queryParams.categoryName" :placeholder="$t('system.news.893410-3')" clearable size="small"
|
||||
@keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('device.index.105953-8') }}</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('device.index.105953-9') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
|
||||
v-hasPermi="['iot:newsCategory:add']">新增</el-button>
|
||||
v-hasPermi="['iot:newsCategory:add']">{{ $t('system.sysclient.652154-4') }}</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
|
||||
v-hasPermi="['iot:newsCategory:edit']">修改</el-button>
|
||||
v-hasPermi="['iot:newsCategory:edit']">{{ $t('system.sysclient.652154-5') }}</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
|
||||
v-hasPermi="['iot:newsCategory:remove']">删除</el-button>
|
||||
v-hasPermi="['iot:newsCategory:remove']">{{ $t('system.sysclient.652154-6') }}</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
|
||||
v-hasPermi="['iot:newsCategory:export']">导出</el-button>
|
||||
v-hasPermi="['iot:newsCategory:export']">{{ $t('system.sysclient.652154-7') }}</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="categoryList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="分类编号" align="center" prop="categoryId" />
|
||||
<el-table-column label="分类名称" align="center" prop="categoryName" />
|
||||
<el-table-column label="显示顺序" align="center" prop="orderNum" />
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
|
||||
<el-table-column :label="$t('system.newsCategory.874509-1')" align="center" prop="categoryId" />
|
||||
<el-table-column :label="$t('system.newsCategory.874509-0')" align="center" prop="categoryName" />
|
||||
<el-table-column :label="$t('system.newsCategory.874509-2')" align="center" prop="orderNum" />
|
||||
<el-table-column :label="$t('device.index.105953-33')" align="center" prop="createTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" align="center" prop="remark" min-width="200" header-align="center" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<el-table-column :label="$t('iot.group.index.637432-9')" align="center" prop="remark" min-width="200" header-align="center" />
|
||||
<el-table-column :label="$t('device.index.105953-34')" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" icon="el-icon-view" @click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['iot:newsCategory:add']">查看</el-button>
|
||||
v-hasPermi="['iot:newsCategory:add']">{{ $t('device.index.105953-60') }}</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
|
||||
v-hasPermi="['iot:newsCategory:remove']">删除</el-button>
|
||||
v-hasPermi="['iot:newsCategory:remove']">{{ $t('system.sysclient.652154-6') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -58,23 +58,23 @@
|
||||
<!-- 添加或修改新闻分类对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="分类名称" prop="categoryName">
|
||||
<el-input v-model="form.categoryName" placeholder="请输入分类名称" />
|
||||
<el-form-item :label="$t('system.newsCategory.874509-0')" prop="categoryName">
|
||||
<el-input v-model="form.categoryName" :placeholder="$t('system.news.893410-3')" />
|
||||
</el-form-item>
|
||||
<el-form-item label="显示顺序" prop="orderNum">
|
||||
<el-input-number v-model="form.orderNum" placeholder="请输入显示顺序" type="number" controls-position="right"
|
||||
<el-form-item :label="$t('system.newsCategory.874509-2')" prop="orderNum">
|
||||
<el-input-number v-model="form.orderNum" :placeholder="$t('system.newsCategory.874509-3')" type="number" controls-position="right"
|
||||
style="width: 100%" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
||||
<el-form-item :label="$t('iot.group.index.637432-9')" prop="remark">
|
||||
<el-input v-model="form.remark" type="textarea" :placeholder="$t('iot.group.index.637432-16')" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm" v-hasPermi="['iot:newsCategory:edit']"
|
||||
v-show="form.categoryId">修 改</el-button>
|
||||
v-show="form.categoryId">{{ $t('iot.group.index.637432-17') }}</el-button>
|
||||
<el-button type="primary" @click="submitForm" v-hasPermi="['iot:newsCategory:add']"
|
||||
v-show="!form.categoryId">新 增</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
v-show="!form.categoryId">{{ $t('iot.group.index.637432-18') }}</el-button>
|
||||
<el-button @click="cancel">{{ $t('iot.group.index.637432-19') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
@@ -123,21 +123,14 @@ export default {
|
||||
rules: {
|
||||
categoryName: [{
|
||||
required: true,
|
||||
message: "分类名字不能为空",
|
||||
message: this.$t('system.newsCategory.874509-4'),
|
||||
trigger: "blur"
|
||||
},
|
||||
{
|
||||
min: 1,
|
||||
max: 64,
|
||||
message: '分类名字不能少于1个字符和超过64字符',
|
||||
},
|
||||
],
|
||||
}],
|
||||
orderNum: [{
|
||||
required: true,
|
||||
message: "显示顺序不能为空",
|
||||
message: this.$t('system.newsCategory.874509-5'),
|
||||
trigger: "blur"
|
||||
}
|
||||
],
|
||||
}],
|
||||
}
|
||||
};
|
||||
},
|
||||
@@ -194,7 +187,7 @@ export default {
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = "添加新闻分类";
|
||||
this.title = this.$t('system.newsCategory.874509-6');
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
@@ -203,7 +196,7 @@ export default {
|
||||
getNewsCategory(categoryId).then(response => {
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = "修改新闻分类";
|
||||
this.title = this.$t('system.newsCategory.874509-7');
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
@@ -212,13 +205,13 @@ export default {
|
||||
if (valid) {
|
||||
if (this.form.categoryId != null) {
|
||||
updateNewsCategory(this.form).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.$modal.msgSuccess(this.$t('iot.group.index.637432-24'));
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addNewsCategory(this.form).then(response => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.$modal.msgSuccess(this.$t('iot.group.index.637432-25'));
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
@@ -230,7 +223,7 @@ export default {
|
||||
handleDelete(row) {
|
||||
const categoryIds = row.categoryId || this.ids;
|
||||
let msg = "";
|
||||
this.$modal.confirm('是否确认删除新闻分类编号为"' + categoryIds + '"的数据项?').then(function () {
|
||||
this.$modal.confirm(this.$t('system.newsCategory.874509-8', [categoryIds])).then(function () {
|
||||
return delNewsCategory(categoryIds).then(response => {
|
||||
msg = response.msg;
|
||||
});
|
||||
|
||||
@@ -3,18 +3,18 @@
|
||||
<el-card v-show="showSearch" class="search-card">
|
||||
<el-form @submit.native.prevent :model="queryParams" ref="queryForm" :inline="true" label-width="85px" class="search-form">
|
||||
<el-form-item prop="platform">
|
||||
<el-select v-model="queryParams.platform" clearable placeholder="请选择平台">
|
||||
<el-select v-model="queryParams.platform" clearable :placeholder="$t('system.platform.675309-1')">
|
||||
<el-option v-for="dict in dict.type.iot_social_platform" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="status">
|
||||
<el-select v-model="queryParams.status" clearable placeholder="请选择状态">
|
||||
<el-select v-model="queryParams.status" clearable :placeholder="$t('system.platform.675309-2')">
|
||||
<el-option v-for="dict in dict.type.iot_social_platform_status" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<div style="float: right">
|
||||
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{ $t('device.index.105953-8') }}</el-button>
|
||||
<el-button icon="el-icon-refresh" @click="resetQuery">{{ $t('device.index.105953-9') }}</el-button>
|
||||
</div>
|
||||
</el-form>
|
||||
</el-card>
|
||||
@@ -22,38 +22,38 @@
|
||||
<el-card>
|
||||
<el-row :gutter="10" style="margin-bottom: 16px">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="small" @click="handleAdd" v-hasPermi="['iot:platform:add']">新增</el-button>
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="small" @click="handleAdd" v-hasPermi="['iot:platform:add']">{{ $t('system.sysclient.652154-4') }}</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button plain icon="el-icon-edit" size="small" :disabled="single" @click="handleUpdate" v-hasPermi="['iot:platform:edit']">修改</el-button>
|
||||
<el-button plain icon="el-icon-edit" size="small" :disabled="single" @click="handleUpdate" v-hasPermi="['iot:platform:edit']">{{ $t('system.sysclient.652154-5') }}</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button plain icon="el-icon-delete" size="small" :disabled="multiple" @click="handleDelete" v-hasPermi="['iot:platform:remove']">删除</el-button>
|
||||
<el-button plain icon="el-icon-delete" size="small" :disabled="multiple" @click="handleDelete" v-hasPermi="['iot:platform:remove']">{{ $t('system.sysclient.652154-6') }}</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button plain icon="el-icon-download" size="small" @click="handleExport" v-hasPermi="['iot:platform:export']">导出</el-button>
|
||||
<el-button plain icon="el-icon-download" size="small" @click="handleExport" v-hasPermi="['iot:platform:export']">{{ $t('system.sysclient.652154-7') }}</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="platformList" :border="false" @selection-change="handleSelectionChange" ref="multipleTable" :row-key="getRowKeys">
|
||||
<el-table-column :reserve-selection="true" type="selection" width="55" align="center" />
|
||||
<el-table-column align="left" label="平台名称" prop="platform" min-width="200">
|
||||
<el-table-column align="left" :label="$t('system.platform.675309-3')" prop="platform" min-width="200">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_social_platform" :value="scope.row.platform" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="状态" prop="status" width="80">
|
||||
<el-table-column align="center" :label="$t('device.device-timer.433369-11')" prop="status" width="80">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_social_platform_status" :value="scope.row.status" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="平台申请ID" align="center" prop="clientId" min-width="180" />
|
||||
<el-table-column label="跳转地址" align="left" prop="redirectUri" min-width="250" :show-overflow-tooltip="true" />
|
||||
<el-table-column align="left" label="绑定登录uri" prop="bindUri" :show-tooltip-when-overflow="true" :render-header="(h, column) => renderHeaderMethods(h, column, columnTips.bindId)" min-width="250" />
|
||||
<el-table-column :label="$t('system.platform.675309-4')" align="center" prop="clientId" min-width="180" />
|
||||
<el-table-column :label="$t('system.platform.675309-5')" align="left" prop="redirectUri" min-width="250" :show-overflow-tooltip="true" />
|
||||
<el-table-column align="left" :label="$t('system.platform.675309-6')" prop="bindUri" :show-tooltip-when-overflow="true" :render-header="(h, column) => renderHeaderMethods(h, column, columnTips.bindId)" min-width="250" />
|
||||
<el-table-column
|
||||
align="left"
|
||||
label="跳转登录uri"
|
||||
:label="$t('system.platform.675309-7')"
|
||||
prop="redirectLoginUri"
|
||||
:show-tooltip-when-overflow="true"
|
||||
:render-header="(h, column) => renderHeaderMethods(h, column, columnTips.redirectLogin)"
|
||||
@@ -61,21 +61,21 @@
|
||||
/>
|
||||
<el-table-column
|
||||
align="left"
|
||||
label="错误提示uri"
|
||||
:label="$t('system.platform.675309-8')"
|
||||
prop="errorMsgUri"
|
||||
:show-tooltip-when-overflow="true"
|
||||
:render-header="(h, column) => renderHeaderMethods(h, column, columnTips.errorId)"
|
||||
min-width="250"
|
||||
/>
|
||||
<el-table-column align="center" label="创建时间" prop="createTime" width="100">
|
||||
<el-table-column align="center" :label="$t('device.index.105953-33')" prop="createTime" width="100">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column fixed="right" label="操作" align="center" width="125">
|
||||
<el-table-column fixed="right" :label="$t('device.index.105953-34')" align="center" width="125">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="small" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['iot:platform:edit']">修改</el-button>
|
||||
<el-button size="small" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['iot:platform:remove']">删除</el-button>
|
||||
<el-button size="small" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['iot:platform:edit']">{{ $t('system.sysclient.652154-5') }}</el-button>
|
||||
<el-button size="small" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['iot:platform:remove']">{{ $t('system.sysclient.652154-6') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -86,41 +86,41 @@
|
||||
<!-- 添加或修改第三方登录平台控制对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="630px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="130px">
|
||||
<el-form-item label="平台名称" prop="platform">
|
||||
<el-select v-model="form.platform" placeholder="请选择平台" style="width: 400px">
|
||||
<el-form-item :label="$t('system.platform.675309-9')" prop="platform">
|
||||
<el-select v-model="form.platform" :placeholder="$t('system.platform.675309-10')" style="width: 400px">
|
||||
<el-option v-for="dict in dict.type.iot_social_platform" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="平台状态" prop="status">
|
||||
<el-select v-model="form.status" placeholder="请选择状态" style="width: 400px">
|
||||
<el-form-item :label="$t('system.platform.675309-11')" prop="status">
|
||||
<el-select v-model="form.status" :placeholder="$t('system.platform.675309-2')" style="width: 400px">
|
||||
<el-option v-for="dict in dict.type.iot_social_platform_status" :key="dict.value" :label="dict.label" :value="Number(dict.value)"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="平台申请ID" prop="clientId">
|
||||
<el-input v-model="form.clientId" placeholder="请输入平台申请ID" style="width: 400px" />
|
||||
<el-form-item :label="$t('system.platform.675309-12')" prop="clientId">
|
||||
<el-input v-model="form.clientId" :placeholder="$t('system.platform.675309-13')" style="width: 400px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="平台密钥" prop="secretKey">
|
||||
<el-input v-model="form.secretKey" placeholder="请输入平台密钥" style="width: 400px" />
|
||||
<el-form-item :label="$t('system.platform.675309-14')" prop="secretKey">
|
||||
<el-input v-model="form.secretKey" :placeholder="$t('system.platform.675309-15')" style="width: 400px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="认证跳转地址" prop="redirectUri">
|
||||
<el-input v-model="form.redirectUri" placeholder="请输入认证跳转地址" style="width: 400px" />
|
||||
<el-form-item :label="$t('system.platform.675309-16')" prop="redirectUri">
|
||||
<el-input v-model="form.redirectUri" :placeholder="$t('system.platform.675309-17')" style="width: 400px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="绑定注册urL" prop="bindUri">
|
||||
<el-input v-model="form.bindUri" placeholder="请输入绑定注册 url, http://localhost/login?bindId=" style="width: 400px" />
|
||||
<el-form-item :label="$t('system.platform.675309-18')" prop="bindUri">
|
||||
<el-input v-model="form.bindUri" :placeholder="$t('system.platform.675309-19')" style="width: 400px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="跳转登录URL" prop="redirectLoginUri">
|
||||
<el-input v-model="form.redirectLoginUri" placeholder="请输入跳转登录 url, http://localhost/login?loginId=" style="width: 400px" />
|
||||
<el-form-item :label="$t('system.platform.675309-20')" prop="redirectLoginUri">
|
||||
<el-input v-model="form.redirectLoginUri" :placeholder="$t('system.platform.675309-21')" style="width: 400px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="错误提示URL" prop="errorMsgUri">
|
||||
<el-input v-model="form.errorMsgUri" placeholder="请输入错误提示 url, http://localhost/login?errorId=" style="width: 400px" />
|
||||
<el-form-item :label="$t('system.platform.675309-22')" prop="errorMsgUri">
|
||||
<el-input v-model="form.errorMsgUri" :placeholder="$t('system.platform.675309-23')" style="width: 400px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="form.remark" placeholder="请输入" type="textarea" :autosize="{ minRows: 3, maxRows: 5 }" style="width: 400px" />
|
||||
<el-form-item :label="$t('iot.group.index.637432-9')" prop="remark">
|
||||
<el-input v-model="form.remark" :placeholder="$t('iot.group.index.637432-16')" type="textarea" :autosize="{ minRows: 3, maxRows: 5 }" style="width: 400px" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确定</el-button>
|
||||
<el-button @click="cancel">取消</el-button>
|
||||
<el-button type="primary" @click="submitForm">{{ $t('device.index.105953-56') }}</el-button>
|
||||
<el-button @click="cancel">{{ $t('iot.group.index.637432-19') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
@@ -160,9 +160,9 @@ export default {
|
||||
status: null,
|
||||
},
|
||||
columnTips: {
|
||||
bindId: '绑定登录uri, http://localhost/login?bindId=,域名换成对应域名即可,本地开发不需要更改',
|
||||
redirectLogin: '跳转登录uri,http://localhost/login?loginId=,域名换成对应域名即可,本地开发不需要更改',
|
||||
errorId: '错误提示获取uri,http://localhost/login?errorId=,域名换成对应域名即可,本地开发不需要更改',
|
||||
bindId: this.$t('system.platform.675309-24'),
|
||||
redirectLogin: this.$t('system.platform.675309-25'),
|
||||
errorId: this.$t('system.platform.675309-26'),
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
@@ -171,56 +171,56 @@ export default {
|
||||
platform: [
|
||||
{
|
||||
required: true,
|
||||
message: '第三方平台不能为空',
|
||||
message: this.$t('system.platform.675309-27'),
|
||||
trigger: 'change',
|
||||
},
|
||||
],
|
||||
status: [
|
||||
{
|
||||
required: true,
|
||||
message: ' 0:启用 ,1:禁用不能为空',
|
||||
message: this.$t('system.platform.675309-28'),
|
||||
trigger: 'change',
|
||||
},
|
||||
],
|
||||
clientId: [
|
||||
{
|
||||
required: true,
|
||||
message: '第三方平台申请Id不能为空',
|
||||
message: this.$t('system.platform.675309-29'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
secretKey: [
|
||||
{
|
||||
required: true,
|
||||
message: '第三方平台密钥不能为空',
|
||||
message: this.$t('system.platform.675309-30'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
redirectUri: [
|
||||
{
|
||||
required: true,
|
||||
message: '用户认证后跳转地址不能为空',
|
||||
message: this.$t('system.platform.675309-31'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
bindUri: [
|
||||
{
|
||||
required: true,
|
||||
message: '绑定注册登录uri,http://localhost/login?bindId=不能为空',
|
||||
message: this.$t('system.platform.675309-32'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
redirectLoginUri: [
|
||||
{
|
||||
required: true,
|
||||
message: '跳转登录uri,http://localhost/login?loginId=不能为空',
|
||||
message: this.$t('system.platform.675309-33'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
errorMsgUri: [
|
||||
{
|
||||
required: true,
|
||||
message: '错误提示uri,http://localhost/login?errorId=不能为空',
|
||||
message: this.$t('system.platform.675309-34'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
@@ -306,7 +306,7 @@ export default {
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = '添加平台控制';
|
||||
this.title = this.$t('system.platform.675309-35');
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
@@ -315,7 +315,7 @@ export default {
|
||||
getPlatform(socialPlatformId).then((response) => {
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = '修改平台控制';
|
||||
this.title = this.$t('system.platform.675309-36');
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
@@ -324,13 +324,13 @@ export default {
|
||||
if (valid) {
|
||||
if (this.form.socialPlatformId != null) {
|
||||
updatePlatform(this.form).then((response) => {
|
||||
this.$modal.msgSuccess('修改成功');
|
||||
this.$modal.msgSuccess(this.$t('iot.group.index.637432-24'));
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addPlatform(this.form).then((response) => {
|
||||
this.$modal.msgSuccess('新增成功');
|
||||
this.$modal.msgSuccess(this.$t('iot.group.index.637432-25'));
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
@@ -342,13 +342,13 @@ export default {
|
||||
handleDelete(row) {
|
||||
const socialPlatformIds = row.socialPlatformId || this.ids;
|
||||
this.$modal
|
||||
.confirm('是否确认删除平台控制编号为"' + socialPlatformIds + '"的数据项')
|
||||
.confirm(this.$t('system.platform.675309-37', [socialPlatformIds]))
|
||||
.then(function () {
|
||||
return delPlatform(socialPlatformIds);
|
||||
})
|
||||
.then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess('删除成功');
|
||||
this.$modal.msgSuccess(this.$t('iot.group.index.637432-27'));
|
||||
this.$refs.multipleTable.clearSelection();
|
||||
})
|
||||
.catch(() => {});
|
||||
|
||||
@@ -2,23 +2,23 @@
|
||||
<div style="padding:6px;">
|
||||
<el-card style="margin-bottom:5px;">
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px" style="margin-bottom:-20px;">
|
||||
<el-form-item label="产品名称" prop="productName">
|
||||
<el-input v-model="queryParams.productName" placeholder="请输入产品名称" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
<el-form-item :label="$t('product.index.091251-0')" prop="productName">
|
||||
<el-input v-model="queryParams.productName" :placeholder="$t('product.index.091251-1')" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="分类名称" prop="categoryName">
|
||||
<el-input v-model="queryParams.categoryName" placeholder="请输入产品分类名称" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
<el-form-item :label="$t('product.index.091251-2')" prop="categoryName">
|
||||
<el-input v-model="queryParams.categoryName" :placeholder="$t('product.index.091251-3')" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
|
||||
<el-form-item :label="$t('product.index.091251-4')" prop="status">
|
||||
<el-select v-model="queryParams.status" :placeholder="$t('product.index.091251-5')" clearable size="small">
|
||||
<el-option v-for="dict in dict.type.iot_product_status" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('search') }}</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('reset') }}</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item style="float:right;">
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleEditProduct(0)" v-hasPermi="['iot:product:add']">新增</el-button>
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleEditProduct(0)" v-hasPermi="['iot:product:add']">{{ $t('add') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
@@ -30,33 +30,33 @@
|
||||
<el-col :span="20" style="text-align:left;">
|
||||
<el-link type="" :underline="false" @click="handleEditProduct(item)" style="font-weight:bold;font-size:16px;line-height:32px;white-space:nowrap;">
|
||||
<svg-icon icon-class="product" /> {{item.productName}}
|
||||
<el-tag type="info" size="mini" style="margin-left:5px;font-weight:200" v-if="item.isSys==1">系统</el-tag>
|
||||
<el-tag type="info" size="mini" style="margin-left:5px;font-weight:200" v-if="item.isSys==1">{{ $t('product.index.091251-47') }}</el-tag>
|
||||
</el-link>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-tooltip class="item" effect="dark" content="取消发布" placement="top-start" v-if="item.status==2">
|
||||
<el-button type="success" size="mini" style="padding:5px;" @click="changeProductStatus(item.productId,1,item.deviceType)">已发布</el-button>
|
||||
<el-tooltip class="item" effect="dark" :content="$t('product.index.091251-12')" placement="top-start" v-if="item.status==2">
|
||||
<el-button type="success" size="mini" style="padding:5px;" @click="changeProductStatus(item.productId,1,item.deviceType)">{{ $t('product.index.091251-13') }}</el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip class="item" effect="dark" content="现在发布" placement="top-start" v-if="item.status==1">
|
||||
<el-button type="info" size="mini" style="padding:5px;" @click="changeProductStatus(item.productId,2,item.deviceType)">未发布</el-button>
|
||||
<el-tooltip class="item" effect="dark" :content="$t('product.index.091251-14')" placement="top-start" v-if="item.status==1">
|
||||
<el-button type="info" size="mini" style="padding:5px;" @click="changeProductStatus(item.productId,2,item.deviceType)">{{ $t('product.index.091251-15') }}</el-button>
|
||||
</el-tooltip>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="14">
|
||||
<el-descriptions :column="1" size="small" style="margin-top:10px;white-space:nowrap;">
|
||||
<el-descriptions-item label="所属分类">
|
||||
<el-descriptions-item :label="$t('product.index.091251-16')">
|
||||
<el-link type="primary" :underline="false">{{item.categoryName}}</el-link>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="产品类型">
|
||||
<el-descriptions-item :label="$t('product.index.091251-17')">
|
||||
<dict-tag :options="dict.type.iot_device_type" :value="item.deviceType" />
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="联网方式">
|
||||
<el-descriptions-item :label="$t('product.index.091251-18')">
|
||||
<dict-tag :options="dict.type.iot_network_method" :value="item.networkMethod" />
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="设备授权">
|
||||
<el-tag type="success" size="mini" v-if="item.isAuthorize==1">已启用</el-tag>
|
||||
<el-tag type="info" size="mini" v-else>未启用</el-tag>
|
||||
<el-descriptions-item :label="$t('product.index.091251-19')">
|
||||
<el-tag type="success" size="mini" v-if="item.isAuthorize==1">{{ $t('product.index.091251-20') }}</el-tag>
|
||||
<el-tag type="info" size="mini" v-else>{{ $t('product.index.091251-21') }}</el-tag>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
@@ -70,31 +70,31 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-button-group style="margin-top:15px;height:28px;">
|
||||
<el-button size="mini" type="primary" icon="el-icon-view" @click="handleEditProduct(item)" v-hasPermi="['iot:product:query']">详情</el-button>
|
||||
<el-button size="mini" type="danger" icon="el-icon-delete" @click="handleDelete(item)" v-hasPermi="['iot:product:remove']" v-if="item.status==1">删除</el-button>
|
||||
<el-button size="mini" type="success" icon="el-icon-s-check" @click="handleDeviceAuthorize(item)" v-hasPermi="['iot:product:edit']" v-if="item.status==2" :disabled="item.isAuthorize!=1">设备授权</el-button>
|
||||
<el-button size="mini" type="warning" icon="el-icon-search" @click="handleViewDevice(item.productId)" v-hasPermi="['iot:device:query']">查看设备</el-button>
|
||||
<el-button size="mini" type="primary" icon="el-icon-view" @click="handleEditProduct(item)" v-hasPermi="['iot:product:query']">{{ $t('product.index.091251-48') }}</el-button>
|
||||
<el-button size="mini" type="danger" icon="el-icon-delete" @click="handleDelete(item)" v-hasPermi="['iot:product:remove']" v-if="item.status==1">{{ $t('product.index.091251-23') }}</el-button>
|
||||
<el-button size="mini" type="success" icon="el-icon-s-check" @click="handleDeviceAuthorize(item)" v-hasPermi="['iot:product:edit']" v-if="item.status==2" :disabled="item.isAuthorize!=1">{{ $t('product.index.091251-19') }}</el-button>
|
||||
<el-button size="mini" type="warning" icon="el-icon-search" @click="handleViewDevice(item.productId)" v-hasPermi="['iot:device:query']">{{ $t('product.index.091251-24') }}</el-button>
|
||||
</el-button-group>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-empty description="暂无数据,请添加产品" v-if="total==0"></el-empty>
|
||||
<el-empty :description="$t('product.index.091251-25')" v-if="total==0"></el-empty>
|
||||
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" :pageSizes="[12, 24, 36, 60]" @pagination="getList" />
|
||||
|
||||
<!-- 下载SDK -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-link type="danger" style="padding-left:10px;" :underline="false">该功能暂未实现,参考教程和项目的SDK示例</el-link>
|
||||
<el-link type="danger" style="padding-left:10px;" :underline="false">{{ $t('product.index.091251-26') }}</el-link>
|
||||
<el-form label-width="80px">
|
||||
<el-form-item label="设备类型">
|
||||
<el-form-item :label="$t('product.index.091251-27')">
|
||||
<el-radio-group v-model="form.datatype">
|
||||
<el-radio v-for="dict in dict.type.iot_device_chip" :key="dict.value" :label="dict.value" style="margin-top:15px;width:160px;">{{dict.label}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="downloadSdk" disabled>下 载</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
<el-button type="primary" @click="downloadSdk" disabled>{{ $t('product.index.091251-28') }}</el-button>
|
||||
<el-button @click="cancel">{{ $t('product.index.091251-29') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
@@ -181,30 +181,30 @@ export default {
|
||||
},
|
||||
/** 更新产品状态 */
|
||||
async changeProductStatus(productId, status, deviceType) {
|
||||
let message = "确定取消发布?";
|
||||
let message = this.$t('product.index.091251-30');
|
||||
if (status == 2) {
|
||||
// 发布
|
||||
let hasPermission = checkPermi(['iot:product:add']);
|
||||
if (!hasPermission) {
|
||||
this.$modal.alertError("没有操作权限");
|
||||
this.$modal.alertError(this.$t('product.index.091251-31'));
|
||||
return;
|
||||
}
|
||||
message = "产品发布后,可以创建对应的设备";
|
||||
message = this.$t('product.index.091251-32');
|
||||
} else if (status == 1) {
|
||||
// 取消发布
|
||||
let hasPermission = checkPermi(['iot:product:edit']);
|
||||
if (!hasPermission) {
|
||||
this.$modal.alertError("没有操作权限");
|
||||
this.$modal.alertError(this.$t('product.index.091251-31'));
|
||||
return;
|
||||
}
|
||||
let result = await this.getDeviceCountByProductId(productId);
|
||||
if (result.data > 0) {
|
||||
message = "重要提示:产品下已有 " + result.data + " 个设备,取消发布可以修改产品信息和模型,重新发布后对应设备状态将会被重置!"
|
||||
message = this.$i18n.t('product.index.091251-33', [result.data]);
|
||||
}
|
||||
}
|
||||
this.$confirm(message, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
this.$confirm(message, this.$t('product.index.091251-34'), {
|
||||
confirmButtonText: this.$t('product.index.091251-35'),
|
||||
cancelButtonText: this.$t('cancel'),
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
let data = {};
|
||||
@@ -245,7 +245,7 @@ export default {
|
||||
},
|
||||
/** 生成SDK */
|
||||
handleGeneratorSDK(row) {
|
||||
this.title = "生成SDK"
|
||||
this.title = this.$t('product.index.091251-38')
|
||||
this.open = true;
|
||||
},
|
||||
/** 下载SDK */
|
||||
@@ -256,7 +256,7 @@ export default {
|
||||
handleDelete(row) {
|
||||
const productIds = row.productId || this.ids;
|
||||
let msg = "";
|
||||
this.$modal.confirm('是否确认删除产品编号为"' + productIds + '"的数据项?').then(function () {
|
||||
this.$modal.confirm(this.$i18n.t('product.index.091251-39', [productIds])).then(function () {
|
||||
// // 删除SIP配置
|
||||
// delSipconfigByProductId(productIds).then(response => {});
|
||||
return delProduct(productIds);
|
||||
|
||||
@@ -4,34 +4,36 @@
|
||||
<el-col :span="14">
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="warning" plain icon="el-icon-refresh" size="mini" @click="getList">刷新</el-button>
|
||||
<el-button type="warning" plain icon="el-icon-refresh" size="mini" @click="getList">{{ $t('refresh') }}</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-tag type="danger" style="margin-left:15px;">{{ $t('product.product-app.045891-1') }}</el-tag>
|
||||
</el-col>
|
||||
<el-tag type="danger" style="margin-left:15px;">该功能暂不可用,后面版本发布</el-tag>
|
||||
</el-row>
|
||||
<el-table v-loading="loading" :data="modelList" border style="margin-bottom:60px;margin-top:20px;" size="small">
|
||||
<el-table-column label="名称" align="center" prop="modelName" />
|
||||
<el-table-column label="标识符" align="center" prop="identifier" />
|
||||
<el-table-column label="物模型类别" align="center" prop="type">
|
||||
<el-table-column :label="$t('product.product-app.045891-2')" align="center" prop="modelName" />
|
||||
<el-table-column :label="$t('product.product-app.045891-3')" align="center" prop="identifier" />
|
||||
<el-table-column :label="$t('product.product-app.045891-4')" align="center" prop="type">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_things_type" :value="scope.row.type" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="数据类型" align="center" prop="datatype">
|
||||
<el-table-column :label="$t('product.product-app.045891-5')" align="center" prop="datatype">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_data_type" :value="scope.row.datatype" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="部件" align="center" prop="part">
|
||||
<el-table-column :label="$t('product.product-app.045891-6')" align="center" prop="part">
|
||||
<template slot-scope="scope">
|
||||
{{scope.row.part}} 系统定义的部件
|
||||
{{scope.row.part}} {{ $t('product.product-app.045891-7') }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<el-divider>高级功能</el-divider>
|
||||
<el-divider>{{ $t('product.product-app.045891-8') }}</el-divider>
|
||||
<el-form ref="form" :model="form" label-width="100px">
|
||||
<el-form-item label="自定义页面" prop="page">
|
||||
<el-input v-model="form.page" placeholder="请输入自定义页面" />
|
||||
<el-form-item :label="$t('product.product-app.045891-9')" prop="page">
|
||||
<el-input v-model="form.page" :placeholder="$t('product.product-app.045891-10')" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
@@ -40,7 +42,7 @@
|
||||
<div class="phone">
|
||||
<div class="phone-container"></div>
|
||||
</div>
|
||||
<div style="text-align:center;margin-top:15px;width:370px;">界面展示</div>
|
||||
<div style="text-align:center;margin-top:15px;width:370px;">{{ $t('product.product-app.045891-11') }}</div>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
|
||||
@@ -1,62 +1,62 @@
|
||||
<template>
|
||||
<div style="padding-left:20px;">
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="设备编号" prop="serialNumber">
|
||||
<el-input v-model="queryParams.serialNumber" placeholder="请输入设备编号" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
<el-form-item :label="$t('product.product-authorize.314975-0')" prop="serialNumber">
|
||||
<el-input v-model="queryParams.serialNumber" :placeholder="$t('product.product-authorize.314975-1')" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="授权码" prop="authorizeCode">
|
||||
<el-input v-model="queryParams.authorizeCode" placeholder="请输入授权码" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
<el-form-item :label="$t('product.product-authorize.314975-2')" prop="authorizeCode">
|
||||
<el-input v-model="queryParams.authorizeCode" :placeholder="$t('product.product-authorize.314975-3')" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
|
||||
<el-form-item :label="$t('product.product-authorize.314975-4')" prop="status">
|
||||
<el-select v-model="queryParams.status" :placeholder="$t('product.product-authorize.314975-5')" clearable size="small">
|
||||
<el-option v-for="dict in dict.type.iot_auth_status" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('search') }}</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('reset') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['iot:authorize:add']">生成授权码</el-button>
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['iot:authorize:add']">{{ $t('product.product-authorize.314975-8') }}</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['iot:authorize:remove']">批量删除</el-button>
|
||||
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['iot:authorize:remove']">{{ $t('product.product-authorize.314975-9') }}</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['iot:authorize:export']">导出</el-button>
|
||||
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['iot:authorize:export']">{{ $t('product.product-authorize.314975-10') }}</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-link type="info" style="padding-top:5px" :underline="false">Tips:双击可以复制授权码。</el-link>
|
||||
<el-link type="info" style="padding-top:5px" :underline="false">{{ $t('product.product-authorize.314975-11') }}</el-link>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="authorizeList" @selection-change="handleSelectionChange" @cell-dblclick="celldblclick" size="small">
|
||||
<el-table-column type="selection" :selectable="selectable" width="55" align="center" />
|
||||
<el-table-column label="授权码" width="320" align="center" prop="authorizeCode" />
|
||||
<el-table-column label="状态" align="center" prop="active" width="100">
|
||||
<el-table-column :label="$t('product.product-authorize.314975-2')" width="320" align="center" prop="authorizeCode" />
|
||||
<el-table-column :label="$t('product.product-authorize.314975-4')" align="center" prop="active" width="100">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_auth_status" :value="scope.row.status" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="设备编号" width="150" align="center" prop="serialNumber">
|
||||
<el-table-column :label="$t('product.product-authorize.314975-0')" width="150" align="center" prop="serialNumber">
|
||||
<template slot-scope="scope">
|
||||
<el-link type="primary" @click="getDeviceBySerialNumber(scope.row.serialNumber)" :underline="false">{{scope.row.serialNumber}}</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="授权时间" align="center" prop="updateTime" width="180">
|
||||
<el-table-column :label="$t('product.product-authorize.314975-12')" align="center" prop="updateTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{m}:{s}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<el-table-column :label="$t('product.product-authorize.314975-13')" align="center" prop="remark" />
|
||||
<el-table-column :label="$t('opation')" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" icon="el-icon-s-check" @click="handleUpdate(scope.row,'auth')" v-hasPermi="['iot:authorize:edit']" v-if="scope.row.status==1 && !scope.row.deviceId">设备授权</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-notebook-1" @click="handleUpdate(scope.row,'remark')" v-hasPermi="['iot:authorize:edit']">备注</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['iot:authorize:remove']" v-if="!scope.row.deviceId">删除</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-s-check" @click="handleUpdate(scope.row,'auth')" v-hasPermi="['iot:authorize:edit']" v-if="scope.row.status==1 && !scope.row.deviceId">{{ $t('product.product-authorize.314975-69') }}</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-notebook-1" @click="handleUpdate(scope.row,'remark')" v-hasPermi="['iot:authorize:edit']">{{ $t('product.product-authorize.314975-13') }}</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['iot:authorize:remove']" v-if="!scope.row.deviceId">{{ $t('del') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -68,28 +68,28 @@
|
||||
<div v-if="editType=='auth'">
|
||||
<div class="el-divider el-divider--horizontal" style="margin-top: -25px;"></div>
|
||||
<el-form :model="deviceParams" ref="queryDeviceForm" :inline="true" label-width="68px">
|
||||
<el-form-item label="设备名称" prop="deviceName">
|
||||
<el-input v-model="deviceParams.deviceName" placeholder="请输入设备名称" clearable size="small" @keyup.enter.native="handleQuery" style="width:150px;" />
|
||||
<el-form-item :label="$t('product.product-authorize.314975-17')" prop="deviceName">
|
||||
<el-input v-model="deviceParams.deviceName" :placeholder="$t('product.product-authorize.314975-18')" clearable size="small" @keyup.enter.native="handleQuery" style="width:150px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="设备编号" prop="serialNumber" style="margin:0 30px;">
|
||||
<el-input v-model="deviceParams.serialNumber" placeholder="请输入设备编号" clearable size="small" @keyup.enter.native="handleQuery" style="width:150px;" />
|
||||
<el-form-item :label="$t('product.product-authorize.314975-0')" prop="serialNumber" style="margin:0 30px;">
|
||||
<el-input v-model="deviceParams.serialNumber" :placeholder="$t('product.product-authorize.314975-1')" clearable size="small" @keyup.enter.native="handleQuery" style="width:150px;" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleDeviceQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetDeviceQuery">重置</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleDeviceQuery">{{ $t('search') }}</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetDeviceQuery">{{ $t('reset') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-table v-loading="deviceLoading" :data="deviceList" ref="singleTable" size="mini" @row-click="rowClick" highlight-current-row>
|
||||
<el-table-column label="选择" width="50" align="center">
|
||||
<el-table-column :label="$t('product.product-authorize.314975-19')" width="50" align="center">
|
||||
<template slot-scope="scope">
|
||||
<input type="radio" :checked="scope.row.isSelect" name="device" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="设备名称" align="center" prop="deviceName" />
|
||||
<el-table-column label="设备ID" align="center" prop="deviceId" />
|
||||
<el-table-column label="设备编号" align="center" prop="serialNumber" />
|
||||
<el-table-column label="用户名称" align="center" prop="userName" />
|
||||
<el-table-column label="设备状态" align="center" prop="status">
|
||||
<el-table-column :label="$t('product.product-authorize.314975-17')" align="center" prop="deviceName" />
|
||||
<el-table-column :label="$t('product.product-authorize.314975-20')" align="center" prop="deviceId" />
|
||||
<el-table-column :label="$t('product.product-authorize.314975-0')" align="center" prop="serialNumber" />
|
||||
<el-table-column :label="$t('product.product-authorize.314975-21')" align="center" prop="userName" />
|
||||
<el-table-column :label="$t('product.product-authorize.314975-22')" align="center" prop="status">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_device_status" :value="scope.row.status" />
|
||||
</template>
|
||||
@@ -98,53 +98,53 @@
|
||||
<pagination v-show="deviceTotal>0" :total="deviceTotal" :page.sync="deviceParams.pageNum" :limit.sync="deviceParams.pageSize" @pagination="getDeviceList" />
|
||||
</div>
|
||||
<div v-if="editType=='remark'">
|
||||
<el-input v-model="form.remark" type="textarea" rows="4" placeholder="请输入内容" />
|
||||
<el-input v-model="form.remark" type="textarea" rows="4" :placeholder="$t('plzInput')" />
|
||||
</div>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
<el-button type="primary" @click="submitForm">{{ $t('confirm') }}</el-button>
|
||||
<el-button @click="cancel">{{ $t('cancel') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 设备详情对话框 -->
|
||||
<el-dialog title="设备详情" :visible.sync="openDevice" width="600px" append-to-body>
|
||||
<div v-if="device==null" style="text-align:center;"><i class="el-icon-warning" style="color:#E6A23C;"></i> 提示:查找不到设备,可能已经被删除</div>
|
||||
<el-dialog :title="$t('product.product-authorize.314975-26')" :visible.sync="openDevice" width="600px" append-to-body>
|
||||
<div v-if="device==null" style="text-align:center;"><i class="el-icon-warning" style="color:#E6A23C;"></i> {{ $t('product.product-authorize.314975-27') }}</div>
|
||||
<el-descriptions border :column="2" size="medium" v-if="device!=null">
|
||||
<el-descriptions-item label="设备ID">{{device.deviceId}}</el-descriptions-item>
|
||||
<el-descriptions-item label="设备名称">{{device.deviceName}}</el-descriptions-item>
|
||||
<el-descriptions-item label="设备编号">{{device.serialNumber}}</el-descriptions-item>
|
||||
<el-descriptions-item label="设备状态">
|
||||
<el-descriptions-item :label="$t('product.product-authorize.314975-20')">{{device.deviceId}}</el-descriptions-item>
|
||||
<el-descriptions-item :label="$t('product.product-authorize.314975-17')">{{device.deviceName}}</el-descriptions-item>
|
||||
<el-descriptions-item :label="$t('product.product-authorize.314975-0')">{{device.serialNumber}}</el-descriptions-item>
|
||||
<el-descriptions-item :label="$t('product.product-authorize.314975-22')">
|
||||
<!-- (1-未激活,2-禁用,3-在线,4-离线) -->
|
||||
<el-tag v-if="device.status==1" type="warning">未激活</el-tag>
|
||||
<el-tag v-else-if="device.status==2" type="danger">禁用</el-tag>
|
||||
<el-tag v-else-if="device.status==3" type="success">在线</el-tag>
|
||||
<el-tag v-else-if="device.status==4" type="info">离线</el-tag>
|
||||
<el-tag v-if="device.status==1" type="warning">{{ $t('product.product-authorize.314975-28') }}</el-tag>
|
||||
<el-tag v-else-if="device.status==2" type="danger">{{ $t('product.product-authorize.314975-29') }}</el-tag>
|
||||
<el-tag v-else-if="device.status==3" type="success">{{ $t('product.product-authorize.314975-30') }}</el-tag>
|
||||
<el-tag v-else-if="device.status==4" type="info">{{ $t('product.product-authorize.314975-31') }}</el-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="设备影子">
|
||||
<el-tag v-if="device.isShadow==1" type="success">启用</el-tag>
|
||||
<el-tag v-else type="info">未启用</el-tag>
|
||||
<el-descriptions-item :label="$t('product.product-authorize.314975-32')">
|
||||
<el-tag v-if="device.isShadow==1" type="success">{{ $t('product.product-authorize.314975-33') }}</el-tag>
|
||||
<el-tag v-else type="info">{{ $t('product.index.091251-21') }}</el-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="定位方式">
|
||||
<el-descriptions-item :label="$t('product.product-authorize.314975-35')">
|
||||
<!-- (1=ip自动定位,2=设备定位,3=自定义) -->
|
||||
<el-tag v-if="device.locationWay==1" type="success">自动定位</el-tag>
|
||||
<el-tag v-else-if="device.locationWay==2" type="warning">设备定位</el-tag>
|
||||
<el-tag v-else-if="device.locationWay==3" type="primary">自定义位置</el-tag>
|
||||
<el-tag v-if="device.locationWay==1" type="success">{{ $t('product.product-authorize.314975-36') }}</el-tag>
|
||||
<el-tag v-else-if="device.locationWay==2" type="warning">{{ $t('product.product-authorize.314975-37') }}</el-tag>
|
||||
<el-tag v-else-if="device.locationWay==3" type="primary">{{ $t('product.product-authorize.314975-38') }}</el-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="产品名称">{{device.productName}}</el-descriptions-item>
|
||||
<el-descriptions-item label="租户名称">{{device.userName}}</el-descriptions-item>
|
||||
<el-descriptions-item label="固件版本">Version {{device.firmwareVersion}}</el-descriptions-item>
|
||||
<el-descriptions-item label="所在地址">{{device.networkAddress}}</el-descriptions-item>
|
||||
<el-descriptions-item label="设备经度">{{device.longitude}}</el-descriptions-item>
|
||||
<el-descriptions-item label="设备纬度">{{device.latitude}}</el-descriptions-item>
|
||||
<el-descriptions-item label="入网IP">{{device.networkIp}}</el-descriptions-item>
|
||||
<el-descriptions-item label="设备信号">{{device.rssi}}</el-descriptions-item>
|
||||
<el-descriptions-item label="创建时间">{{device.createTime}}</el-descriptions-item>
|
||||
<el-descriptions-item label="激活时间">{{device.activeTime}}</el-descriptions-item>
|
||||
<el-descriptions-item label="备注信息">{{device.remark}}</el-descriptions-item>
|
||||
<el-descriptions-item :label="$t('product.index.091251-0')">{{device.productName}}</el-descriptions-item>
|
||||
<el-descriptions-item :label="$t('product.product-authorize.314975-40')">{{device.userName}}</el-descriptions-item>
|
||||
<el-descriptions-item :label="$t('product.product-authorize.314975-41')">{{ $t('product.product-authorize.314975-41') }} {{device.firmwareVersion}}</el-descriptions-item>
|
||||
<el-descriptions-item :label="$t('product.product-authorize.314975-42')">{{device.networkAddress}}</el-descriptions-item>
|
||||
<el-descriptions-item :label="$t('product.product-authorize.314975-43')">{{device.longitude}}</el-descriptions-item>
|
||||
<el-descriptions-item :label="$t('product.product-authorize.314975-44')">{{device.latitude}}</el-descriptions-item>
|
||||
<el-descriptions-item :label="$t('product.product-authorize.314975-45')">{{device.networkIp}}</el-descriptions-item>
|
||||
<el-descriptions-item :label="$t('product.product-authorize.314975-46')">{{device.rssi}}</el-descriptions-item>
|
||||
<el-descriptions-item :label="$t('product.product-authorize.314975-47')">{{device.createTime}}</el-descriptions-item>
|
||||
<el-descriptions-item :label="$t('product.product-authorize.314975-48')">{{device.activeTime}}</el-descriptions-item>
|
||||
<el-descriptions-item :label="$t('product.product-authorize.314975-49')">{{device.remark}}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="goToEditDevice(device.deviceId)" type="primary">查看设备</el-button>
|
||||
<el-button @click="closeDevice">关 闭</el-button>
|
||||
<el-button @click="goToEditDevice(device.deviceId)" type="primary">{{ $t('product.product-authorize.314975-50') }}</el-button>
|
||||
<el-button @click="closeDevice">{{ $t('product.product-authorize.314975-51') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
@@ -388,12 +388,12 @@ export default {
|
||||
},
|
||||
/** 批量新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.$prompt('', '输入授权码数量', {
|
||||
this.$prompt('', this.$t('product.product-authorize.314975-52'), {
|
||||
customClass: 'createNum',
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
confirmButtonText: this.$t('product.product-authorize.314975-53'),
|
||||
cancelButtonText: this.$t('product.product-authorize.314975-54'),
|
||||
inputPattern: /[0-9\-]/,
|
||||
inputErrorMessage: '数量内容不正确',
|
||||
inputErrorMessage: this.$t('product.product-authorize.314975-55'),
|
||||
inputType: 'number',
|
||||
inputValue: this.createNum
|
||||
}).then(({
|
||||
@@ -406,7 +406,7 @@ export default {
|
||||
createNum: this.createNum
|
||||
}
|
||||
addProductAuthorizeByNum(_addData).then(response => {
|
||||
this.$modal.msgSuccess("新增授权码成功");
|
||||
this.$modal.msgSuccess(this.$t('product.product-authorize.314975-56'));
|
||||
this.getList();
|
||||
this.createNum = 10;
|
||||
});
|
||||
@@ -414,7 +414,7 @@ export default {
|
||||
}).catch(() => {
|
||||
this.$message({
|
||||
type: 'info',
|
||||
message: '取消新增'
|
||||
message: this.$t('product.product-authorize.314975-57')
|
||||
});
|
||||
});
|
||||
},
|
||||
@@ -427,10 +427,10 @@ export default {
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
if (this.editType == 'auth') {
|
||||
this.title = "选择设备";
|
||||
this.title = this.$t('product.product-authorize.314975-58');
|
||||
this.editWidth = "800px";
|
||||
} else {
|
||||
this.title = "备注信息";
|
||||
this.title = this.$t('product.product-authorize.314975-13');
|
||||
this.editWidth = "500px";
|
||||
}
|
||||
// 取消选中
|
||||
@@ -449,16 +449,16 @@ export default {
|
||||
if (this.editType == 'auth') {
|
||||
if (this.form.deviceId != null && this.form.deviceId != 0) {
|
||||
updateAuthorize(this.form).then(response => {
|
||||
this.$modal.msgSuccess("设备授权成功");
|
||||
this.$modal.msgSuccess(this.$t('product.product-authorize.314975-59'));
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
this.$modal.msg("请选择要授权的设备");
|
||||
this.$modal.msg(this.$t('product.product-authorize.314975-60'));
|
||||
}
|
||||
} else if (this.form.authorizeId != null) {
|
||||
updateAuthorize(this.form).then(response => {
|
||||
this.$modal.msgSuccess("备注成功");
|
||||
this.$modal.msgSuccess(this.$t('product.product-authorize.314975-61'));
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
@@ -467,11 +467,11 @@ export default {
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const authorizeIds = row.authorizeId || this.ids;
|
||||
this.$modal.confirm('是否确认删除产品授权码编号为"' + authorizeIds + '"的数据项?').then(function () {
|
||||
this.$modal.confirm(this.$i18n.t('product.product-authorize.314975-62', [authorizeIds])).then(function () {
|
||||
return delAuthorize(authorizeIds);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
this.$modal.msgSuccess(this.$t('product.product-authorize.314975-63'));
|
||||
}).catch(() => {});
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
@@ -494,8 +494,8 @@ export default {
|
||||
},
|
||||
onCopy() {
|
||||
this.$notify({
|
||||
title: '成功',
|
||||
message: '复制成功!',
|
||||
title: this.$t('product.product-authorize.314975-64'),
|
||||
message: this.$t('product.product-authorize.314975-66'),
|
||||
type: 'success',
|
||||
offset: 50,
|
||||
duration: 2000
|
||||
@@ -503,8 +503,8 @@ export default {
|
||||
},
|
||||
onError() {
|
||||
this.$notify({
|
||||
title: '失败',
|
||||
message: '复制失败!',
|
||||
title: this.$t('product.product-authorize.314975-67'),
|
||||
message: this.$t('product.product-authorize.314975-68'),
|
||||
type: 'error',
|
||||
offset: 50,
|
||||
duration: 2000
|
||||
|
||||
@@ -2,87 +2,87 @@
|
||||
<el-card style="margin:6px;padding-bottom:100px;">
|
||||
<el-tabs v-model="activeName" tab-position="left" style="padding:10px;min-height:400px;" @tab-click="tabChange">
|
||||
<el-tab-pane name="basic">
|
||||
<span slot="label"><span style="color:red;">* </span>基本信息</span>
|
||||
<span slot="label"><span style="color:red;">* </span>{{ $t('product.product-edit.473153-0') }}</span>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
|
||||
<el-row :gutter="100">
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="8">
|
||||
<el-form-item label="产品名称" prop="productName">
|
||||
<el-input v-model="form.productName" placeholder="请输入产品名称" :readonly="form.status == 2" />
|
||||
<el-form-item :label="$t('product.product-edit.473153-1')" prop="productName">
|
||||
<el-input v-model="form.productName" :placeholder="$t('product.product-edit.473153-2')" :readonly="form.status == 2" />
|
||||
</el-form-item>
|
||||
<el-form-item label="产品分类" prop="categoryId">
|
||||
<el-select v-model="form.categoryId" placeholder="请选择分类" @change="selectCategory"
|
||||
<el-form-item :label="$t('product.product-edit.473153-3')" prop="categoryId">
|
||||
<el-select v-model="form.categoryId" :placeholder="$t('product.product-edit.473153-4')" @change="selectCategory"
|
||||
style="width:100%" :disabled="form.status == 2">
|
||||
<el-option v-for="category in categoryShortList" :key="category.id"
|
||||
:label="category.name" :value="category.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="设备类型" prop="deviceType">
|
||||
<el-select v-model="form.deviceType" placeholder="请选择设备类型" @change="deviceTypeChange" :disabled="form.status == 2"
|
||||
<el-form-item :label="$t('product.product-edit.473153-78')" prop="deviceType">
|
||||
<el-select v-model="form.deviceType" :placeholder="$t('product.product-edit.473153-98')" @change="deviceTypeChange" :disabled="form.status == 2"
|
||||
style="width:100%">
|
||||
<el-option v-for="dict in dict.type.iot_device_type" :key="dict.value"
|
||||
:label="dict.label" :value="parseInt(dict.value)"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="传输协议" prop="transport">
|
||||
<el-select v-model="form.transport" placeholder="请选择传输协议" style="width: 100%"
|
||||
<el-form-item :label="$t('product.product-edit.473153-14')" prop="transport">
|
||||
<el-select v-model="form.transport" :placeholder="$t('product.product-edit.473153-15')" style="width: 100%"
|
||||
:disabled="true">
|
||||
<el-option v-for="dict in dict.type.iot_transport_type" :key="dict.value"
|
||||
:label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.deviceType !== 3" label="编码协议" prop="protocolCode">
|
||||
<el-select v-model="form.protocolCode" placeholder="请选择编码协议" style="width: 100%"
|
||||
<el-form-item :label="$t('product.product-edit.473153-97')" prop="protocolCode">
|
||||
<el-select v-model="form.protocolCode" :placeholder="$t('product.product-edit.473153-4')" style="width: 100%"
|
||||
:disabled="form.status == 2" @change="changeProductCode">
|
||||
<el-option v-for="p in protocolList" :key="p.protocolCode" :label="p.protocolName"
|
||||
:value="p.protocolCode" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="联网方式" prop="networkMethod">
|
||||
<el-select v-model="form.networkMethod" placeholder="请选择联网方式" style="width:100%;"
|
||||
<el-form-item :label="$t('product.product-edit.473153-16')" prop="networkMethod">
|
||||
<el-select v-model="form.networkMethod" :placeholder="$t('product.product-edit.473153-17')" style="width:100%;"
|
||||
:disabled="form.status == 2">
|
||||
<el-option v-for="dict in dict.type.iot_network_method" :key="dict.value"
|
||||
:label="dict.label" :value="parseInt(dict.value)"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="备注信息" prop="remark">
|
||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" rows="3"
|
||||
<el-form-item :label="$t('product.product-edit.473153-32')" prop="remark">
|
||||
<el-input v-model="form.remark" type="textarea" :placeholder="$t('product.product-edit.473153-33')" rows="3"
|
||||
:readonly="form.status == 2" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="8">
|
||||
<el-form-item label="启用授权" prop="networkMethod">
|
||||
<el-form-item :label="$t('product.product-edit.473153-96')" prop="networkMethod">
|
||||
<el-switch v-model="form.isAuthorize" @change="changeIsAuthorize(form.isAuthorize)"
|
||||
:active-value="1" :inactive-value="0"
|
||||
:disabled="form.status == 2 || form.deviceType == 3" />
|
||||
</el-form-item>
|
||||
<el-form-item label="认证方式" prop="vertificateMethod">
|
||||
<el-select v-model="form.vertificateMethod" placeholder="请选择认证方式" style="width:100%"
|
||||
<el-form-item :label="$t('product.product-edit.473153-21')" prop="vertificateMethod">
|
||||
<el-select v-model="form.vertificateMethod" :placeholder="$t('product.product-edit.473153-22')" style="width:100%"
|
||||
:disabled="form.status == 2 || form.deviceType == 3">
|
||||
<el-option v-for="dict in dict.type.iot_vertificate_method" :key="dict.value"
|
||||
:label="dict.label" :value="parseInt(dict.value)"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="产品编号" prop="productId">
|
||||
<el-input v-model="form.productId" placeholder="自动生成"
|
||||
<el-form-item :label="$t('product.product-edit.473153-25')" prop="productId">
|
||||
<el-input v-model="form.productId" :placeholder="$t('product.product-edit.473153-26')"
|
||||
:disabled="!form.mqttAccount || form.deviceType == 3" readonly />
|
||||
</el-form-item>
|
||||
<el-form-item label="Mqtt账号" prop="mqttAccount">
|
||||
<el-input v-model="form.mqttAccount" placeholder="不填自动生成" :disabled="form.deviceType == 3"
|
||||
<el-form-item :label="$t('product.product-edit.473153-27')" prop="mqttAccount">
|
||||
<el-input v-model="form.mqttAccount" :placeholder="$t('product.product-edit.473153-28')" :disabled="form.deviceType == 3"
|
||||
:readonly="accountInputType == 'password'" :type="accountInputType">
|
||||
<el-button slot="append" icon="el-icon-view" style="font-size:18px;"
|
||||
@click="changeInputType('account')"></el-button>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Mqtt密码" prop="mqttPassword">
|
||||
<el-input v-model="form.mqttPassword" placeholder="不填则自动生成" :disabled="form.deviceType == 3"
|
||||
<el-form-item :label="$t('product.product-edit.473153-29')" prop="mqttPassword">
|
||||
<el-input v-model="form.mqttPassword" :placeholder="$t('product.product-edit.473153-30')" :disabled="form.deviceType == 3"
|
||||
:readonly="passwordInputType == 'password'" :type="passwordInputType">
|
||||
<el-button slot="append" icon="el-icon-view" style="font-size:18px;"
|
||||
@click="changeInputType('password')"></el-button>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="产品秘钥" prop="mqttSecret">
|
||||
<el-input v-model="form.mqttSecret" placeholder="自动生成"
|
||||
<el-form-item :label="$t('product.product-edit.473153-31')" prop="mqttSecret">
|
||||
<el-input v-model="form.mqttSecret" :placeholder="$t('product.product-edit.473153-26')"
|
||||
:disabled="!form.mqttAccount || form.deviceType == 3" readonly :type="keyInputType">
|
||||
<el-button slot="append" icon="el-icon-view" style="font-size:18px;"
|
||||
@click="changeInputType('key')"></el-button>
|
||||
@@ -90,7 +90,7 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="8">
|
||||
<el-form-item label="产品图片">
|
||||
<el-form-item :label="$t('product.product-edit.473153-34')">
|
||||
<div v-if="form.status == 2 && form.imgUrl == null">
|
||||
<el-image style="height:145px;height:145px;border-radius:10px;"
|
||||
:preview-src-list="[require('@/assets/images/gateway.png')]"
|
||||
@@ -110,7 +110,7 @@
|
||||
</imageUpload>
|
||||
</div>
|
||||
<div class="el-upload__tip" style="color:#f56c6c"
|
||||
v-if="form.productId == null || form.productId == 0">提示:上传后需要提交保存</div>
|
||||
v-if="form.productId == null || form.productId == 0">{{ $t('product.product-edit.473153-35') }}</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -118,26 +118,26 @@
|
||||
<el-col :span="20">
|
||||
<el-form-item style="text-align: center;margin:40px 0px;">
|
||||
<el-button type="primary" @click="submitForm" v-hasPermi="['iot:product:edit']"
|
||||
v-show="form.productId != 0 && form.status != 2">修 改</el-button>
|
||||
v-show="form.productId != 0 && form.status != 2">{{ $t('product.product-edit.473153-36') }}</el-button>
|
||||
<el-button type="primary" @click="submitForm" v-hasPermi="['iot:product:add']"
|
||||
v-show="form.productId == 0 && form.status != 2">新 增</el-button>
|
||||
v-show="form.productId == 0 && form.status != 2">{{ $t('product.product-edit.473153-37') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="" name="things" :disabled="form.productId == 0">
|
||||
<span slot="label"><span style="color:red;">* </span>产品模型</span>
|
||||
<span slot="label"><span style="color:red;">* </span>{{ $t('product.product-edit.473153-38') }}</span>
|
||||
<product-things-model ref="productThingsModel" :product="form" />
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="" name="productAuthorize" :disabled="form.productId == 0" v-if="form.deviceType !== 3">
|
||||
<span slot="label">设备授权</span>
|
||||
<span slot="label">{{ $t('product.product-edit.473153-40') }}</span>
|
||||
<product-authorize ref="productAuthorize" :product="form" />
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="" name="sipConfig" :disabled="form.productId == 0" v-if="form.deviceType === 3">
|
||||
<span slot="label">SIP配置</span>
|
||||
<span slot="label">{{ $t('product.product-edit.473153-41') }}</span>
|
||||
<config-sip ref="configSip" :product="form" />
|
||||
</el-tab-pane>
|
||||
|
||||
@@ -156,18 +156,18 @@
|
||||
<el-tab-pane v-if="form.status == 1" name="product04" disabled>
|
||||
<span slot="label">
|
||||
<el-button type="success" size="mini" @click="changeProductStatus(2)"
|
||||
v-hasPermi="['iot:product:add']">发布产品</el-button>
|
||||
v-hasPermi="['iot:product:add']">{{ $t('product.product-edit.473153-86') }}</el-button>
|
||||
</span>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="form.status == 2" name="product05" disabled>
|
||||
<span slot="label">
|
||||
<el-button type="danger" size="mini" @click="changeProductStatus(1)"
|
||||
v-hasPermi="['iot:product:edit']">取消发布</el-button>
|
||||
v-hasPermi="['iot:product:edit']">{{ $t('product.product-edit.473153-87') }}</el-button>
|
||||
</span>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane name="product06" disabled>
|
||||
<span slot="label">
|
||||
<el-button type="info" size="mini" @click="goBack()">返回列表</el-button>
|
||||
<el-button type="info" size="mini" @click="goBack()">{{ $t('back') }}</el-button>
|
||||
</span>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
@@ -235,35 +235,35 @@ export default {
|
||||
rules: {
|
||||
productName: [{
|
||||
required: true,
|
||||
message: "产品名称不能为空",
|
||||
message: this.$t('product.product-edit.473153-58'),
|
||||
trigger: "blur",
|
||||
|
||||
},
|
||||
{
|
||||
min: 1,
|
||||
max: 64,
|
||||
message: '产品名称不能少于1个字符和超过64字符',
|
||||
message: this.$i18n.t('product.product-edit.473153-59'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
categoryId: [{
|
||||
required: true,
|
||||
message: "产品分类ID不能为空",
|
||||
message: this.$t('product.product-edit.473153-59'),
|
||||
trigger: "blur"
|
||||
}],
|
||||
deviceType: [{
|
||||
required: true,
|
||||
message: "请选择设备类型",
|
||||
message: this.$t('product.product-edit.473153-98'),
|
||||
trigger: "blur"
|
||||
}],
|
||||
protocolCode: [{
|
||||
required: true,
|
||||
message: "设备协议不能为空",
|
||||
message: this.$t('product.product-edit.473153-60'),
|
||||
trigger: "blur"
|
||||
}],
|
||||
transport: [{
|
||||
required: true,
|
||||
message: "传输协议不能为空",
|
||||
message: this.$t('product.product-edit.473153-61'),
|
||||
trigger: 'blur'
|
||||
}]
|
||||
},
|
||||
@@ -390,14 +390,14 @@ export default {
|
||||
if (this.form.productId != null && this.form.productId != 0) {
|
||||
updateProduct(this.form).then(response => {
|
||||
this.changeProductCode(this.form.protocolCode);
|
||||
this.$modal.alertSuccess("修改成功");
|
||||
this.$modal.alertSuccess(this.$t('product.product-edit.473153-62'));
|
||||
});
|
||||
} else {
|
||||
addProduct(this.form).then(response => {
|
||||
if (!this.form.isModbus) {
|
||||
this.$modal.alertSuccess("添加成功,可以开始定义物模型或配置");
|
||||
this.$modal.alertSuccess(this.$t('product.product-edit.473153-99'));
|
||||
} else {
|
||||
this.$modal.alertSuccess("物模型已经从采集点模板同步至产品")
|
||||
this.$modal.alertSuccess(this.$t('product.product-edit.473153-65'));
|
||||
}
|
||||
this.form = response.data;
|
||||
this.changeProductCode(this.form.protocolCode);
|
||||
@@ -418,18 +418,18 @@ export default {
|
||||
},
|
||||
/** 更新产品状态 */
|
||||
async changeProductStatus(status) {
|
||||
let message = "确定取消发布?";
|
||||
let message = this.$t('product.product-edit.473153-66');
|
||||
if (status == 2) {
|
||||
message = "产品发布后,可以创建对应的设备";
|
||||
message = this.$t('product.product-edit.473153-67');
|
||||
} else if (status == 1) {
|
||||
let result = await this.getDeviceCountByProductId(this.form.productId);
|
||||
if (result.data > 0) {
|
||||
message = "重要提示:产品下已有 " + result.data + " 个设备,取消发布可以修改产品信息和模型,重新发布后对应设备状态将会被重置!"
|
||||
message = this.$i18n.t('product.product-edit.473153-68', [result.data]);
|
||||
}
|
||||
}
|
||||
this.$confirm(message, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
this.$confirm(message, this.$t('product.product-edit.473153-69'), {
|
||||
confirmButtonText: this.$t('product.product-edit.473153-70'),
|
||||
cancelButtonText: this.$t('cancel'),
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
let data = {};
|
||||
@@ -476,11 +476,11 @@ export default {
|
||||
},
|
||||
// 授权码状态修改
|
||||
changeIsAuthorize() {
|
||||
let text = this.form.isAuthorize == "1" ? "启用" : "停用";
|
||||
this.$modal.confirm('确认要' + text + '授权码吗?').then(() => {
|
||||
let text = this.form.isAuthorize == "1" ? this.$t('product.product-edit.473153-72') : this.$t('product.product-edit.473153-74');
|
||||
this.$modal.confirm(this.$i18n.t('product.product-edit.473153-75', [text])).then(() => {
|
||||
if (this.form.productId != null && this.form.productId != 0) {
|
||||
updateProduct(this.form).then(response => {
|
||||
this.$modal.alertSuccess("授权码已" + text);
|
||||
this.$modal.alertSuccess(this.$i18n.t('product.product-edit.473153-77', [text]));
|
||||
});
|
||||
}
|
||||
}).catch(() => {
|
||||
|
||||
@@ -2,53 +2,53 @@
|
||||
<div style="margin-top:-50px;">
|
||||
<el-divider></el-divider>
|
||||
<el-form :model="queryParams" ref="product-select-template" :inline="true" label-width="48px">
|
||||
<el-form-item label="名称" prop="templateName">
|
||||
<el-input v-model="queryParams.templateName" placeholder="请输入物模型名称" clearable size="small"
|
||||
<el-form-item :label="$t('product.product-select-template.318012-0')" prop="templateName">
|
||||
<el-input v-model="queryParams.templateName" :placeholder="$t('product.product-select-template.318012-1')" clearable size="small"
|
||||
@keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="类别" prop="type">
|
||||
<el-select v-model="queryParams.type" placeholder="请选择模型类别" clearable size="small">
|
||||
<el-form-item :label="$t('product.product-select-template.318012-2')" prop="type">
|
||||
<el-select v-model="queryParams.type" :placeholder="$t('product.product-select-template.318012-3')" clearable size="small">
|
||||
<el-option v-for="dict in dict.type.iot_things_type" :key="dict.value" :label="dict.label"
|
||||
:value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('search') }}</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('reset') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table v-loading="loading" :data="templateList" @selection-change="handleSelectionChange"
|
||||
ref="selectTemplateTable" size="small">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="名称" align="center" prop="templateName" />
|
||||
<el-table-column label="标识符" align="center" prop="identifier" />
|
||||
<el-table-column label="物模型类别" align="center" prop="type">
|
||||
<el-table-column :label="$t('product.product-select-template.318012-0')" align="center" prop="templateName" />
|
||||
<el-table-column :label="$t('product.product-select-template.318012-6')" align="center" prop="identifier" />
|
||||
<el-table-column :label="$t('product.product-select-template.318012-7')" align="center" prop="type">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_things_type" :value="scope.row.type" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="图表展示" align="center" prop="isChart" width="75">
|
||||
<el-table-column :label="$t('product.product-select-template.318012-8')" align="center" prop="isChart" width="75">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_yes_no" :value="scope.row.isChart" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="实时监测" align="center" prop="isMonitor" width="75">
|
||||
<el-table-column :label="$t('product.product-select-template.318012-9')" align="center" prop="isMonitor" width="75">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_yes_no" :value="scope.row.isMonitor" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="只读" align="center" prop="isReadonly" width="75">
|
||||
<el-table-column :label="$t('product.product-select-template.318012-10')" align="center" prop="isReadonly" width="75">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_yes_no" :value="scope.row.isReadonly" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="历史存储" align="center" prop="isHistory" width="75">
|
||||
<el-table-column :label="$t('product.product-select-template.318012-11')" align="center" prop="isHistory" width="75">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_yes_no" :value="scope.row.isHistory" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="数据类型" align="center" prop="datatype">
|
||||
<el-table-column :label="$t('product.product-select-template.318012-12')" align="center" prop="datatype">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_data_type" :value="scope.row.datatype" />
|
||||
</template>
|
||||
|
||||
@@ -3,70 +3,70 @@
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
|
||||
v-if="productInfo.status == 1">新增</el-button>
|
||||
v-if="productInfo.status == 1">{{ $t('product.product-things-model.142341-0') }}</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="success" plain icon="el-icon-upload2" size="mini" @click="handleSelect"
|
||||
v-if="productInfo.status == 1">导入通用物模型</el-button>
|
||||
v-if="productInfo.status == 1">{{ $t('product.product-things-model.142341-1') }}</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="warning" plain icon="el-icon-refresh" size="mini" @click="getList">刷新</el-button>
|
||||
<el-button type="warning" plain icon="el-icon-refresh" size="mini" @click="getList">{{ $t('refresh') }}</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="info" plain icon="el-icon-view" size="mini" @click="handleOpenThingsModel">查看物模型</el-button>
|
||||
<el-button type="info" plain icon="el-icon-view" size="mini" @click="handleOpenThingsModel">{{ $t('product.product-things-model.142341-3') }}</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-link type="danger" style="padding-top: 5px" :underline="false">注意:标识符不能重复</el-link>
|
||||
<el-link type="danger" style="padding-top: 5px" :underline="false">{{ $t('product.product-things-model.142341-4') }}</el-link>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="modelList" size="mini">
|
||||
<el-table-column label="名称" align="center" prop="modelName" width="230" />
|
||||
<el-table-column label="标识符" align="center" prop="identifier" />
|
||||
<el-table-column label="图表展示" align="center" prop="" width="80">
|
||||
<el-table-column :label="$t('product.product-things-model.142341-8')" align="center" prop="modelName" width="230" />
|
||||
<el-table-column :label="$t('product.product-things-model.142341-9')" align="center" prop="identifier" />
|
||||
<el-table-column :label="$t('product.product-things-model.142341-12')" align="center" prop="" width="80">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_yes_no" :value="scope.row.isChart" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="实时监测" align="center" prop="" width="75">
|
||||
<el-table-column :label="$t('product.product-things-model.142341-13')" align="center" prop="" width="75">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_yes_no" :value="scope.row.isMonitor" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="只读" align="center" prop="" width="75">
|
||||
<el-table-column :label="$t('product.product-things-model.142341-14')" align="center" prop="" width="75">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_yes_no" :value="scope.row.isReadonly" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="历史存储" align="center" prop="" width="75">
|
||||
<el-table-column :label="$t('product.product-things-model.142341-15')" align="center" prop="" width="75">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_yes_no" :value="scope.row.isHistory" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="物模型类别" align="center" prop="type" width="100">
|
||||
<el-table-column :label="$t('product.product-things-model.142341-16')" align="center" prop="type" width="100">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_things_type" :value="scope.row.type" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="数据类型" align="center" prop="datatype" width="80">
|
||||
<el-table-column :label="$t('product.product-things-model.142341-17')" align="center" prop="datatype" width="80">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_data_type" :value="scope.row.datatype" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="数据定义" align="left" header-align="center" prop="specs" min-width="150"
|
||||
<el-table-column :label="$t('product.product-things-model.142341-18')" align="left" header-align="center" prop="specs" min-width="150"
|
||||
class-name="specsColor">
|
||||
<template slot-scope="scope">
|
||||
<div v-html="formatSpecsDisplay(scope.row.specs)"></div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="计算公式" align="center" prop="formula" />
|
||||
<el-table-column label="排序" align="center" prop="modelOrder" width="80" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<el-table-column :label="$t('product.product-things-model.142341-19')" align="center" prop="formula" />
|
||||
<el-table-column :label="$t('product.product-things-model.142341-20')" align="center" prop="modelOrder" width="80" />
|
||||
<el-table-column :label="$t('opation')" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
|
||||
v-if="productInfo.status != 2">修改</el-button>
|
||||
v-if="productInfo.status != 2">{{ $t('product.product-things-model.142341-84') }}</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
|
||||
v-if="productInfo.status != 2">删除</el-button>
|
||||
v-if="productInfo.status != 2">{{ $t('del') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -74,101 +74,101 @@
|
||||
<!-- 添加或修改物模型对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
|
||||
<el-form-item label="模型名称" prop="modelName">
|
||||
<el-input v-model="form.modelName" placeholder="请输入物模型名称,例如:温度" style="width: 385px" />
|
||||
<el-form-item :label="$t('product.product-things-model.142341-24')" prop="modelName">
|
||||
<el-input v-model="form.modelName" :placeholder="$t('product.product-things-model.142341-25')" style="width: 385px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="模型标识" prop="identifier">
|
||||
<el-input v-model="form.identifier" placeholder="请输入标识符,例如:temperature" style="width: 385px" />
|
||||
<el-form-item :label="$t('product.product-things-model.142341-26')" prop="identifier">
|
||||
<el-input v-model="form.identifier" :placeholder="$t('product.product-things-model.142341-27')" style="width: 385px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="模型排序" prop="modelOrder">
|
||||
<el-input-number v-model="form.modelOrder" placeholder="请输入排序" type="number" style="width: 386px"
|
||||
<el-form-item :label="$t('product.product-things-model.142341-28')" prop="modelOrder">
|
||||
<el-input-number v-model="form.modelOrder" :placeholder="$t('product.product-things-model.142341-29')" type="number" style="width: 386px"
|
||||
controls-position="right" />
|
||||
</el-form-item>
|
||||
<el-form-item label="模型类别" prop="type">
|
||||
<el-form-item :label="$t('product.product-things-model.142341-30')" prop="type">
|
||||
<el-radio-group v-model="form.type" @change="typeChange(form.type)">
|
||||
<el-radio-button label="1">属性</el-radio-button>
|
||||
<el-radio-button label="2">功能</el-radio-button>
|
||||
<el-radio-button label="3">事件</el-radio-button>
|
||||
<el-radio-button label="1">{{ $t('product.product-things-model.142341-31') }}</el-radio-button>
|
||||
<el-radio-button label="2">{{ $t('product.product-things-model.142341-32') }}</el-radio-button>
|
||||
<el-radio-button label="3">{{ $t('product.product-things-model.142341-33') }}</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="模型特性" prop="property">
|
||||
<el-checkbox name="isChart" label="图表展示" @change="isChartChange" v-show="form.type == 1" v-model="form.isChart"
|
||||
<el-form-item :label="$t('product.product-things-model.142341-34')" prop="property">
|
||||
<el-checkbox name="isChart" :label="$t('product.product-things-model.142341-12')" @change="isChartChange" v-show="form.type == 1" v-model="form.isChart"
|
||||
:true-label="1" :false-label="0"></el-checkbox>
|
||||
<el-checkbox name="isMonitor" label="实时监测" @change="isMonitorChange" v-show="form.type == 1"
|
||||
<el-checkbox name="isMonitor" :label="$t('product.product-things-model.142341-13')" @change="isMonitorChange" v-show="form.type == 1"
|
||||
v-model="form.isMonitor" :true-label="1" :false-label="0"></el-checkbox>
|
||||
<el-checkbox name="isReadonly" label="只读数据" @change="isReadonlyChange" :disabled="form.type == 3"
|
||||
<el-checkbox name="isReadonly" :label="$t('product.product-things-model.142341-35')" @change="isReadonlyChange" :disabled="form.type == 3"
|
||||
v-model="form.isReadonly" :true-label="1" :false-label="0"></el-checkbox>
|
||||
<el-checkbox name="isHistory" label="历史存储" v-model="form.isHistory" :true-label="1"
|
||||
<el-checkbox name="isHistory" :label="$t('product.product-things-model.142341-15')" v-model="form.isHistory" :true-label="1"
|
||||
:false-label="0"></el-checkbox>
|
||||
<el-checkbox name="isSharePerm" label="分享权限" v-model="form.isSharePerm" :true-label="1"
|
||||
<el-checkbox name="isSharePerm" :label="$t('product.product-things-model.142341-36')" v-model="form.isSharePerm" :true-label="1"
|
||||
:false-label="0"></el-checkbox>
|
||||
</el-form-item>
|
||||
<el-divider></el-divider>
|
||||
<el-form-item label="数据类型" prop="datatype">
|
||||
<el-select v-model="form.datatype" placeholder="请选择数据类型" @change="dataTypeChange" style="width: 175px">
|
||||
<el-option key="integer" label="整数" value="integer"></el-option>
|
||||
<el-option key="decimal" label="小数" value="decimal"></el-option>
|
||||
<el-option key="bool" label="布尔" value="bool" :disabled="form.isChart == 1"></el-option>
|
||||
<el-option key="enum" label="枚举" value="enum" :disabled="form.isChart == 1"></el-option>
|
||||
<el-option key="string" label="字符串" value="string" :disabled="form.isChart == 1"></el-option>
|
||||
<el-option key="array" label="数组" value="array" :disabled="form.isChart == 1"></el-option>
|
||||
<el-option key="object" label="对象" value="object" :disabled="form.isChart == 1"></el-option>
|
||||
<el-form-item :label="$t('product.product-things-model.142341-17')" prop="datatype">
|
||||
<el-select v-model="form.datatype" :placeholder="$t('product.product-things-model.142341-37')" @change="dataTypeChange" style="width: 175px">
|
||||
<el-option key="integer" :label="$t('product.product-things-model.142341-38')" value="integer"></el-option>
|
||||
<el-option key="decimal" :label="$t('product.product-things-model.142341-39')" value="decimal"></el-option>
|
||||
<el-option key="bool" :label="$t('product.product-things-model.142341-40')" value="bool" :disabled="form.isChart == 1"></el-option>
|
||||
<el-option key="enum" :label="$t('product.product-things-model.142341-41')" value="enum" :disabled="form.isChart == 1"></el-option>
|
||||
<el-option key="string" :label="$t('product.product-things-model.142341-42')" value="string" :disabled="form.isChart == 1"></el-option>
|
||||
<el-option key="array" :label="$t('product.product-things-model.142341-43')" value="array" :disabled="form.isChart == 1"></el-option>
|
||||
<el-option key="object" :label="$t('product.product-things-model.142341-44')" value="object" :disabled="form.isChart == 1"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="取值范围" v-if="form.datatype == 'integer'">
|
||||
<el-form-item :label="$t('product.product-things-model.142341-45')" v-if="form.datatype == 'integer'">
|
||||
<el-row>
|
||||
<el-col :span="9">
|
||||
<el-input v-model="form.specs.min" placeholder="最小值" controls-position="right" type="number"
|
||||
<el-input v-model="form.specs.min" :placeholder="$t('product.product-things-model.142341-46')" controls-position="right" type="number"
|
||||
style="width: 174px;" @input="handleEdit" />
|
||||
</el-col>
|
||||
<el-col :span="2" align="center">到</el-col>
|
||||
<el-col :span="2" align="center">{{ $t('product.product-things-model.142341-47') }}</el-col>
|
||||
<el-col :span="9">
|
||||
<el-input v-model="form.specs.max" placeholder="最大值" type="number" controls-position="right"
|
||||
<el-input v-model="form.specs.max" :placeholder="$t('product.product-things-model.142341-48')" type="number" controls-position="right"
|
||||
style="width: 174px;" @input="handleEditmax" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
<el-form-item label="取值范围" v-if="form.datatype == 'decimal'">
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('product.product-things-model.142341-45')" v-if="form.datatype == 'decimal'">
|
||||
<el-row>
|
||||
<el-col :span="9">
|
||||
<el-input v-model="form.specs.min" placeholder="最小值" controls-position="right" type="number"
|
||||
<el-input v-model="form.specs.min" :placeholder="$t('product.product-things-model.142341-46')" controls-position="right" type="number"
|
||||
style="width: 174px;" />
|
||||
</el-col>
|
||||
<el-col :span="2" align="center">到</el-col>
|
||||
<el-col :span="2" align="center">{{ $t('product.product-things-model.142341-47') }}</el-col>
|
||||
<el-col :span="9">
|
||||
<el-input v-model="form.specs.max" placeholder="最大值" type="number" controls-position="right"
|
||||
<el-input v-model="form.specs.max" :placeholder="$t('product.product-things-model.142341-48')" type="number" controls-position="right"
|
||||
style="width: 174px;" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
<div v-if="form.datatype == 'integer' || form.datatype == 'decimal'">
|
||||
<el-form-item label="单位">
|
||||
<el-input v-model="form.specs.unit" placeholder="请输入单位,例如:℃" style="width: 385px" />
|
||||
<el-form-item :label="$t('product.product-things-model.142341-49')">
|
||||
<el-input v-model="form.specs.unit" :placeholder="$t('product.product-things-model.142341-50')" style="width: 385px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="步长">
|
||||
<el-input-number v-model="form.specs.step" placeholder="请输入步长,例如:1" type="number" style="width: 386px"
|
||||
<el-form-item :label="$t('product.product-things-model.142341-51')">
|
||||
<el-input-number v-model="form.specs.step" :placeholder="$t('product.product-things-model.142341-52')" type="number" style="width: 386px"
|
||||
controls-position="right" />
|
||||
</el-form-item>
|
||||
<el-form-item label="计算公式" prop="formula">
|
||||
<el-form-item :label="$t('product.product-things-model.142341-19')" prop="formula">
|
||||
<template slot="label">
|
||||
<span>计算公式</span>
|
||||
<el-tooltip style="cursor: pointer" effect="light" placement="top">
|
||||
<span>{{ $t('product.product-things-model.142341-19') }}</span>
|
||||
<el-tooltip style="cursor: pointer" effect="light" placement="top">
|
||||
<div slot="content">
|
||||
设备上行数据经计算公式计算后显示 。
|
||||
{{ $t('product.product-things-model.142341-53') }}
|
||||
<br />
|
||||
公式中的%s为占位符,是固定字段。
|
||||
{{ $t('product.product-things-model.142341-54') }}
|
||||
<br />
|
||||
如:
|
||||
{{ $t('product.product-things-model.142341-55') }}
|
||||
<br />
|
||||
加:%s+10
|
||||
{{ $t('product.product-things-model.142341-56') }}
|
||||
<br />
|
||||
减:%s-10
|
||||
{{ $t('product.product-things-model.142341-57') }}
|
||||
<br />
|
||||
乘:%s*10
|
||||
{{ $t('product.product-things-model.142341-58') }}
|
||||
<br />
|
||||
除:%s/10
|
||||
{{ $t('product.product-things-model.142341-59') }}
|
||||
<br />
|
||||
余数:%s%10
|
||||
{{ $t('product.product-things-model.142341-60') }}
|
||||
<br />
|
||||
</div>
|
||||
<i class="el-icon-question" />
|
||||
@@ -179,132 +179,132 @@
|
||||
</div>
|
||||
|
||||
<div v-if="form.datatype == 'bool'">
|
||||
<el-form-item label="布尔值" prop="">
|
||||
<el-form-item :label="$t('product.product-things-model.142341-63')" prop="">
|
||||
<el-row style="margin-bottom: 10px">
|
||||
<el-col :span="9">
|
||||
<el-input v-model="form.specs.falseText" placeholder="例如:关闭" />
|
||||
<el-input v-model="form.specs.falseText" :placeholder="$t('product.product-things-model.142341-64')" />
|
||||
</el-col>
|
||||
<el-col :span="10" :offset="1">(0 值对应文本)</el-col>
|
||||
<el-col :span="10" :offset="1">{{ $t('product.product-things-model.142341-65') }}</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="9">
|
||||
<el-input v-model="form.specs.trueText" placeholder="例如:打开" />
|
||||
<el-input v-model="form.specs.trueText" :placeholder="$t('product.product-things-model.142341-66')" />
|
||||
</el-col>
|
||||
<el-col :span="10" :offset="1">(1 值对应文本)</el-col>
|
||||
<el-col :span="10" :offset="1">{{ $t('product.product-things-model.142341-67') }}</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div v-if="form.datatype == 'enum'">
|
||||
<el-form-item label="展示方式">
|
||||
<el-select v-model="form.specs.showWay" placeholder="请选择展示方式" style="width: 175px">
|
||||
<el-option key="select" label="下拉框" value="select"></el-option>
|
||||
<el-option key="button" label="按钮" value="button"></el-option>
|
||||
<el-form-item :label="$t('product.product-things-model.142341-68')">
|
||||
<el-select v-model="form.specs.showWay" :placeholder="$t('product.product-things-model.142341-69')" style="width: 175px">
|
||||
<el-option key="select" :label="$t('product.product-things-model.142341-70')" value="select"></el-option>
|
||||
<el-option key="button" :label="$t('product.product-things-model.142341-71')" value="button"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="枚举项" prop="">
|
||||
<el-form-item :label="$t('product.product-things-model.142341-72')" prop="">
|
||||
<el-row v-for="(item, index) in form.specs.enumList" :key="'enum' + index" style="margin-bottom: 10px">
|
||||
<el-col :span="9">
|
||||
<el-input v-model="item.value" placeholder="参数值,例如:0" />
|
||||
<el-input v-model="item.value" :placeholder="$t('product.product-things-model.142341-73')" />
|
||||
</el-col>
|
||||
<el-col :span="11" :offset="1">
|
||||
<el-input v-model="item.text" placeholder="参数描述,例如:中速档位" />
|
||||
<el-input v-model="item.text" :placeholder="$t('product.product-things-model.142341-74')" />
|
||||
</el-col>
|
||||
<el-col :span="2" :offset="1" v-if="index != 0"><a style="color: #f56c6c"
|
||||
@click="removeEnumItem(index)">删除</a></el-col>
|
||||
@click="removeEnumItem(index)">{{ $t('del') }}</a></el-col>
|
||||
</el-row>
|
||||
<div>
|
||||
+
|
||||
<a style="color: #409eff" @click="addEnumItem()">添加枚举项</a>
|
||||
<a style="color: #409eff" @click="addEnumItem()">{{ $t('product.product-things-model.142341-75') }}</a>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div v-if="form.datatype == 'string'">
|
||||
<el-form-item label="最大长度" prop="">
|
||||
<el-form-item :label="$t('product.product-things-model.142341-76')" prop="">
|
||||
<el-row>
|
||||
<el-col :span="9">
|
||||
<el-input v-model="form.specs.maxLength" placeholder="例如:1024" type="number" />
|
||||
<el-input v-model="form.specs.maxLength" :placeholder="$t('product.product-things-model.142341-77')" type="number" />
|
||||
</el-col>
|
||||
<el-col :span="14" :offset="1">(字符串的最大长度)</el-col>
|
||||
<el-col :span="14" :offset="1">{{ $t('product.product-things-model.142341-78') }}</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<div v-if="form.datatype == 'array'">
|
||||
<el-form-item label="元素个数" prop="">
|
||||
<el-form-item :label="$t('product.product-things-model.142341-79')" prop="">
|
||||
<el-row>
|
||||
<el-col :span="9">
|
||||
<el-input v-model="form.specs.arrayCount" placeholder="例如:5" type="number" />
|
||||
<el-input v-model="form.specs.arrayCount" :placeholder="$t('product.product-things-model.142341-80')" type="number" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
<el-form-item label="数组类型" prop="">
|
||||
<el-form-item :label="$t('product.product-things-model.142341-81')" prop="">
|
||||
<el-radio-group v-model="form.specs.arrayType">
|
||||
<el-radio label="integer">整数</el-radio>
|
||||
<el-radio label="decimal">小数</el-radio>
|
||||
<el-radio label="string">字符串</el-radio>
|
||||
<el-radio label="object">对象</el-radio>
|
||||
<el-radio label="integer">{{ $t('product.product-things-model.142341-38') }}</el-radio>
|
||||
<el-radio label="decimal">{{ $t('product.product-things-model.142341-39') }}</el-radio>
|
||||
<el-radio label="string">{{ $t('product.product-things-model.142341-42') }}</el-radio>
|
||||
<el-radio label="object">{{ $t('product.product-things-model.142341-44') }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="对象参数" v-if="form.specs.arrayType == 'object'">
|
||||
<el-form-item :label="$t('product.product-things-model.142341-82')" v-if="form.specs.arrayType == 'object'">
|
||||
<div style="background-color: #f8f8f8; border-radius: 5px">
|
||||
<el-row style="padding: 0 10px 5px" v-for="(item, index) in form.specs.params" :key="index">
|
||||
<div style="margin-top: 5px" v-if="index == 0"></div>
|
||||
<el-col :span="18">
|
||||
<el-input readonly v-model="item.name" size="mini" placeholder="请选择设备" style="margin-top: 3px">
|
||||
<el-input readonly v-model="item.name" size="mini" :placeholder="$t('product.product-things-model.142341-83')" style="margin-top: 3px">
|
||||
<template slot="prepend">
|
||||
<el-tag size="mini" effect="dark" style="margin-left: -21px; height: 26px; line-height: 26px">{{
|
||||
item.order }}</el-tag>
|
||||
{{ form.identifier + '_' + item.id }}
|
||||
</template>
|
||||
<el-button slot="append" @click="editParameter(item, index)" size="small">编辑</el-button>
|
||||
<el-button slot="append" @click="editParameter(item, index)" size="small">{{ $t('product.product-things-model.142341-84') }}</el-button>
|
||||
</el-input>
|
||||
</el-col>
|
||||
<el-col :span="2" :offset="2">
|
||||
<el-button size="small" plain type="danger" style="padding: 5px" icon="el-icon-delete"
|
||||
@click="removeParameter(index)">删除</el-button>
|
||||
@click="removeParameter(index)">{{ $t('del') }}</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
<div>
|
||||
+
|
||||
<a style="color: #409eff" @click="addParameter()">添加参数</a>
|
||||
<a style="color: #409eff" @click="addParameter()">{{ $t('product.product-things-model.142341-85') }}</a>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div v-if="form.datatype == 'object'">
|
||||
<el-form-item label="对象参数" prop="">
|
||||
<el-form-item :label="$t('product.product-things-model.142341-87')" prop="">
|
||||
<div style="background-color: #f8f8f8; border-radius: 5px">
|
||||
<el-row style="padding: 0 10px 5px" v-for="(item, index) in form.specs.params" :key="index">
|
||||
<div style="margin-top: 5px" v-if="index == 0"></div>
|
||||
<el-col :span="18">
|
||||
<el-input readonly v-model="item.name" size="mini" placeholder="请选择设备" style="margin-top: 3px">
|
||||
<el-input readonly v-model="item.name" size="mini" :placeholder="$t('product.product-things-model.142341-88')" style="margin-top: 3px">
|
||||
<template slot="prepend">
|
||||
<el-tag size="mini" effect="dark" style="margin-left: -21px; height: 26px; line-height: 26px">{{
|
||||
item.order }}</el-tag>
|
||||
{{ form.identifier + '_' + item.id }}
|
||||
</template>
|
||||
<el-button slot="append" @click="editParameter(item, index)" size="small">编辑</el-button>
|
||||
<el-button slot="append" @click="editParameter(item, index)" size="small">{{ $t('product.product-things-model.142341-84') }}</el-button>
|
||||
</el-input>
|
||||
</el-col>
|
||||
<el-col :span="2" :offset="2">
|
||||
<el-button size="small" plain type="danger" style="padding: 5px" icon="el-icon-delete"
|
||||
@click="removeParameter(index)">删除</el-button>
|
||||
@click="removeParameter(index)">{{ $t('del') }}</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
<div>
|
||||
+
|
||||
<a style="color: #409eff" @click="addParameter()">添加参数</a>
|
||||
<a style="color: #409eff" @click="addParameter()">{{ $t('product.product-things-model.142341-85') }}</a>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
<el-button type="primary" @click="submitForm">{{ $t('confirm') }}</el-button>
|
||||
<el-button @click="cancel">{{ $t('cancel') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
@@ -315,8 +315,8 @@
|
||||
<el-dialog :title="title" :visible.sync="openSelect" width="800px" append-to-body>
|
||||
<product-select-template ref="productSelectTemplate" @idsToParentEvent="getChildData($event)" />
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="importSelect">导 入</el-button>
|
||||
<el-button @click="cancelSelect">取 消</el-button>
|
||||
<el-button type="primary" @click="importSelect">{{ $t('import') }}</el-button>
|
||||
<el-button @click="cancelSelect">{{ $t('cancel') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
@@ -324,14 +324,15 @@
|
||||
<el-dialog :title="title" :visible.sync="openThingsModel" width="600px" append-to-body>
|
||||
<div style="border: 1px solid #ccc; margin-top: -15px; height: 600px; overflow: scroll">
|
||||
<json-viewer :value="thingsModel" :expand-depth="10" copyable>
|
||||
<template v-slot:copy>复制</template>
|
||||
<template v-slot:copy>{{ $t('product.product-things-model.142341-92') }}</template>
|
||||
</json-viewer>
|
||||
</div>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="info" @click="handleCloseThingsModel">关 闭</el-button>
|
||||
<el-button type="info" @click="handleCloseThingsModel">{{ $t('close') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<style>
|
||||
@@ -425,46 +426,46 @@ export default {
|
||||
modelName: [
|
||||
{
|
||||
required: true,
|
||||
message: '物模型名称不能为空',
|
||||
message: this.$t('product.product-things-model.142341-94'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
{
|
||||
min: 1,
|
||||
max: 64,
|
||||
message: '物模型名称不能少于1个字符和超过64字符',
|
||||
message: this.$i18n.t('product.product-things-model.142341-94'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
identifier: [
|
||||
{
|
||||
required: true,
|
||||
message: '标识符,产品下唯一不能为空',
|
||||
message: this.$t('product.product-things-model.142341-95'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
{
|
||||
min: 1,
|
||||
max: 32,
|
||||
message: '模型标识不能少于1个字符和超过32字符',
|
||||
message: this.$i18n.t('product.product-things-model.142341-95'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
modelOrder: [
|
||||
{
|
||||
required: true,
|
||||
message: '模型排序不能为空',
|
||||
message: this.$t('product.product-things-model.142341-96'),
|
||||
trigger: 'blur',
|
||||
}, {
|
||||
type: 'number',
|
||||
min: -2147483648,
|
||||
max: 2147483647,
|
||||
message: '排序不能超过int型的范围值( -2^31——2^31-1)',
|
||||
message: this.$t('product.product-things-model.142341-96'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
type: [
|
||||
{
|
||||
required: true,
|
||||
message: '模型类别不能为空',
|
||||
message: this.$t('product.product-things-model.142341-97'),
|
||||
trigger: 'change',
|
||||
},
|
||||
|
||||
@@ -472,7 +473,7 @@ export default {
|
||||
datatype: [
|
||||
{
|
||||
required: true,
|
||||
message: '数据类型不能为空',
|
||||
message: this.$t('product.product-things-model.142341-98'),
|
||||
trigger: 'change',
|
||||
},
|
||||
],
|
||||
@@ -481,7 +482,7 @@ export default {
|
||||
},
|
||||
created() { },
|
||||
methods: {
|
||||
/** 查询产品物模型列表 */
|
||||
/**查询产品物模型列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
listModel(this.queryParams).then((response) => {
|
||||
@@ -549,7 +550,7 @@ export default {
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = '添加物模型';
|
||||
this.title = this.$t('product.product-things-model.142341-99');
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
@@ -558,7 +559,7 @@ export default {
|
||||
getModel(modelId).then((response) => {
|
||||
let tempForm = response.data;
|
||||
this.open = true;
|
||||
this.title = '修改物模型';
|
||||
this.title = this.$t('product.product-things-model.142341-100');
|
||||
// Json转对象
|
||||
tempForm.specs = JSON.parse(tempForm.specs);
|
||||
if (!tempForm.specs.enumList) {
|
||||
@@ -590,7 +591,7 @@ export default {
|
||||
},
|
||||
/**查看物模型 */
|
||||
handleOpenThingsModel() {
|
||||
this.title = '物模型';
|
||||
this.title = this.$t('product.product-things-model.142341-101');
|
||||
// 生成物模型
|
||||
this.thingsModel = {
|
||||
properties: [],
|
||||
@@ -636,7 +637,7 @@ export default {
|
||||
/** 选择物模型 */
|
||||
handleSelect() {
|
||||
this.openSelect = true;
|
||||
this.title = '导入通用物模型';
|
||||
this.title = this.$t('product.product-things-model.142341-1');
|
||||
this.form.type = 1;
|
||||
this.form.datatype = 'integer';
|
||||
this.form.specs = {
|
||||
@@ -675,7 +676,7 @@ export default {
|
||||
// 验证对象或对象数组中的参数不能为空
|
||||
if (this.form.datatype == 'object' || (this.form.datatype == 'array' && this.form.specs.arrayType == 'object')) {
|
||||
if (!this.form.specs.params || this.form.specs.params == 0) {
|
||||
this.$modal.msgError('对象的参数不能为空');
|
||||
this.$modal.msgError(this.$t('product.product-things-model.142341-102'));
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -684,7 +685,7 @@ export default {
|
||||
let arr = this.form.specs.params.map((item) => item.id).sort();
|
||||
for (let i = 0; i < arr.length; i++) {
|
||||
if (arr[i] == arr[i + 1]) {
|
||||
this.$modal.msgError('参数标识 ' + arr[i] + ' 重复');
|
||||
this.$modal.msgError(this.$i18n.t('product.product-things-model.142341-105', [arr[i]]));
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -692,7 +693,7 @@ export default {
|
||||
//验证输入的取值范围最大值不能小于最小值
|
||||
if (this.form.datatype == 'integer' || this.form.datatype == 'decimal') {
|
||||
if (parseFloat(this.form.specs.min) > parseFloat(this.form.specs.max)) {
|
||||
this.$modal.msgError('请重新输入取值范围,最大值不能比最小值小!');
|
||||
this.$modal.msgError(this.$t('product.product-things-model.142341-143'));
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -700,13 +701,13 @@ export default {
|
||||
this.hasDecimalPoint();
|
||||
this.hasDecimalPointMax();
|
||||
if (this.isDecimal === false || this.isDecimalMax === false) {
|
||||
this.$modal.msgError('取值范围必须输入小数,请重新输入!');
|
||||
this.$modal.msgError(this.$t('product.product-things-model.142341-144'));
|
||||
return;
|
||||
}
|
||||
}
|
||||
//验证模型特性为图表展示时,数据类型是否为整数或者小数
|
||||
if ((this.form.isChart == 1 && this.form.datatype != 'integer') && (this.form.isChart == 1 && this.form.datatype != 'decimal')) {
|
||||
this.$modal.msgError('请重新选择数据类型!');
|
||||
this.$modal.msgError(this.$t('product.product-things-model.142341-106'));
|
||||
}
|
||||
else if (this.form.modelId != null) {
|
||||
// 格式化specs
|
||||
@@ -720,7 +721,7 @@ export default {
|
||||
tempForm.isChart = 0;
|
||||
}
|
||||
updateModel(tempForm).then((response) => {
|
||||
this.$modal.msgSuccess('修改成功');
|
||||
this.$modal.msgSuccess(this.$t('product.product-things-model.142341-107'));
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
@@ -737,7 +738,7 @@ export default {
|
||||
tempForm.isChart = 0;
|
||||
}
|
||||
addModel(tempForm).then((response) => {
|
||||
this.$modal.msgSuccess('新增成功');
|
||||
this.$modal.msgSuccess(this.$t('product.product-things-model.142341-108'));
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
@@ -750,13 +751,13 @@ export default {
|
||||
const modelIds = row.modelId;
|
||||
// if (!this.queryParams.isModbus) {
|
||||
this.$modal
|
||||
.confirm('是否确认删除物模型编号为"' + modelIds + '"的数据项?')
|
||||
.confirm(this.$i18n.t('product.product-things-model.142341-109', [modelIds]))
|
||||
.then(function () {
|
||||
return delModel(modelIds);
|
||||
})
|
||||
.then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess('删除成功');
|
||||
this.$modal.msgSuccess(this.$t('product.product-things-model.142341-111'));
|
||||
})
|
||||
.catch(() => { });
|
||||
// } else {
|
||||
@@ -830,8 +831,8 @@ export default {
|
||||
} else if (this.form.datatype == 'string') {
|
||||
data.maxLength = Number(this.form.specs.maxLength ? this.form.specs.maxLength : 1024);
|
||||
} else if (this.form.datatype == 'bool') {
|
||||
data.falseText = this.form.specs.falseText ? this.form.specs.falseText : '关闭';
|
||||
data.trueText = this.form.specs.trueText ? this.form.specs.trueText : '打开';
|
||||
data.falseText = this.form.specs.falseText ? this.form.specs.falseText : this.$t('product.product-things-model.142341-113');
|
||||
data.trueText = this.form.specs.trueText ? this.form.specs.trueText : this.$t('product.product-things-model.142341-114');
|
||||
} else if (this.form.datatype == 'enum') {
|
||||
data.showWay = this.form.specs.showWay;
|
||||
if (this.form.specs.enumList && this.form.specs.enumList[0].text != '') {
|
||||
@@ -841,11 +842,11 @@ export default {
|
||||
data.enumList = [
|
||||
{
|
||||
value: '0',
|
||||
text: '低',
|
||||
text: this.$t('product.product-things-model.142341-115'),
|
||||
},
|
||||
{
|
||||
value: '1',
|
||||
text: '高',
|
||||
text: this.$t('product.product-things-model.142341-116'),
|
||||
},
|
||||
];
|
||||
}
|
||||
@@ -886,19 +887,19 @@ export default {
|
||||
let specs = JSON.parse(json);
|
||||
if (specs.type === 'integer' || specs.type === 'decimal' || specs.type === 'INT16' || specs.type === 'INT') {
|
||||
return (
|
||||
'<span style=\'width:50%;display:inline-block;\'>最大值:<span style="color:#F56C6C">' +
|
||||
'<span style=\'width:50%;display:inline-block;\'>' + this.$t('product.product-things-model.142341-117') + '<span style="color:#F56C6C">' +
|
||||
specs.max +
|
||||
'</span></span>最小值:<span style="color:#F56C6C">' +
|
||||
'</span></span>' + this.$t('product.product-things-model.142341-118') + '<span style="color:#F56C6C">' +
|
||||
specs.min +
|
||||
'</span><br /><span style=\'width:50%;display:inline-block;\'>步长:<span style="color:#F56C6C">' +
|
||||
'</span><br /><span style=\'width:50%;display:inline-block;\'>' + this.$t('product.product-things-model.142341-119') + '<span style="color:#F56C6C">' +
|
||||
specs.step +
|
||||
'</span></span>单位:<span style="color:#F56C6C">' +
|
||||
'</span></span>' + this.$t('product.product-things-model.142341-120') + '<span style="color:#F56C6C">' +
|
||||
specs.unit
|
||||
);
|
||||
} else if (specs.type === 'string') {
|
||||
return '最大长度:<span style="color:#F56C6C">' + specs.maxLength + '</span>';
|
||||
return this.$t('product.product-things-model.142341-121') + '<span style="color:#F56C6C">' + specs.maxLength + '</span>';
|
||||
} else if (specs.type === 'array') {
|
||||
return '<span style=\'width:50%;display:inline-block;\'>数组类型:<span style="color:#F56C6C">' + specs.arrayType + '</span></span>元素个数:<span style="color:#F56C6C">' + specs.arrayCount;
|
||||
return '<span style=\'width:50%;display:inline-block;\'>' + this.$t('product.product-things-model.142341-122') + '<span style="color:#F56C6C">' + specs.arrayType + '</span></span>' + this.$t('product.product-things-model.142341-123') + '<span style="color:#F56C6C">' + specs.arrayCount;
|
||||
} else if (specs.type === 'enum') {
|
||||
let items = '';
|
||||
for (let i = 0; i < specs.enumList.length; i++) {
|
||||
|
||||
@@ -1,43 +1,43 @@
|
||||
<template>
|
||||
<el-dialog title="选择产品" :visible.sync="open" width="800px">
|
||||
<el-dialog :title="$t('productList.index.470902-0')" :visible.sync="open" width="800px">
|
||||
<div style="margin-top: -55px">
|
||||
<el-divider style="margin-top: -30px"></el-divider>
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
|
||||
<el-form-item label="产品名称" prop="productName">
|
||||
<el-input v-model="queryParams.productName" placeholder="请输入产品名称" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
<el-form-item :label="$t('productList.index.470902-1')" prop="productName">
|
||||
<el-input v-model="queryParams.productName" :placeholder="$t('productList.index.470902-2')" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.search') }}</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.reset') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table v-loading="loading" ref="singleTable" :data="productList" @row-click="rowClick" highlight-current-row size="mini">
|
||||
<el-table-column label="选择" width="50" align="center">
|
||||
<el-table-column :label="$t('common.select')" width="50" align="center">
|
||||
<template slot-scope="scope">
|
||||
<input type="radio" :checked="scope.row.isSelect" name="product" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="产品名称" align="center" prop="productName" />
|
||||
<el-table-column label="分类名称" align="center" prop="categoryName" />
|
||||
<el-table-column label="租户名称" align="center" prop="tenantName" />
|
||||
<el-table-column label="授权码" align="center" prop="status" width="70">
|
||||
<el-table-column :label="$t('productList.index.470902-1')" align="center" prop="productName" />
|
||||
<el-table-column :label="$t('productList.index.470902-3')" align="center" prop="categoryName" />
|
||||
<el-table-column :label="$t('productList.index.470902-4')" align="center" prop="tenantName" />
|
||||
<el-table-column :label="$t('productList.index.470902-5')" align="center" prop="status" width="70">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="success" v-if="scope.row.isAuthorize == 1">启用</el-tag>
|
||||
<el-tag type="info" v-if="scope.row.isAuthorize == 0">未启用</el-tag>
|
||||
<el-tag type="success" v-if="scope.row.isAuthorize == 1">{{ $t('productList.index.470902-6') }}</el-tag>
|
||||
<el-tag type="info" v-if="scope.row.isAuthorize == 0">{{ $t('productList.index.470902-7') }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="认证方式" align="center" prop="status">
|
||||
<el-table-column :label="$t('productList.index.470902-8')" align="center" prop="status">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_vertificate_method" :value="scope.row.vertificateMethod" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="联网方式" align="center" prop="networkMethod">
|
||||
<el-table-column :label="$t('productList.index.470902-9')" align="center" prop="networkMethod">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_network_method" :value="scope.row.networkMethod" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" width="100">
|
||||
<el-table-column :label="$t('productList.index.470902-10')" align="center" prop="createTime" width="100">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
@@ -47,8 +47,8 @@
|
||||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
|
||||
</div>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="confirmSelectProduct" type="primary">确定</el-button>
|
||||
<el-button @click="closeDialog" type="info">关 闭</el-button>
|
||||
<el-button @click="confirmSelectProduct" type="primary">{{ $t('productList.index.470902-11') }}</el-button>
|
||||
<el-button @click="closeDialog" type="info">{{ $t('productList.index.470902-12') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
@@ -3,56 +3,56 @@
|
||||
<el-card v-show="showSearch" style="margin-bottom: 6px">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
|
||||
label-width="68px" style="margin-bottom: -20px">
|
||||
<el-form-item label="脚本标识" prop="scriptId">
|
||||
<el-input v-model="queryParams.scriptId" placeholder="请输入脚本名" clearable
|
||||
<el-form-item :label="$t('script.349087-0')" prop="scriptId">
|
||||
<el-input v-model="queryParams.scriptId" :placeholder="$t('script.349087-1')" clearable
|
||||
@keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="脚本名" prop="scriptName">
|
||||
<el-input v-model="queryParams.scriptName" placeholder="请输入脚本名" clearable
|
||||
<el-form-item :label="$t('script.349087-2')" prop="scriptName">
|
||||
<el-input v-model="queryParams.scriptName" :placeholder="$t('script.349087-3')" clearable
|
||||
@keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.search') }}</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.reset') }}</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item style="float: right">
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
|
||||
v-hasPermi="['iot:script:add']">新增</el-button>
|
||||
v-hasPermi="['iot:script:add']">{{ $t('common.add') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<el-card style="padding-bottom: 100px">
|
||||
<el-table v-loading="loading" :data="scriptList" @selection-change="handleSelectionChange">
|
||||
<el-table-column label="脚本名称" align="center" prop="scriptName" />
|
||||
<el-table-column label="所属产品" align="center" prop="productName" />
|
||||
<el-table-column label="脚本标识" align="center" prop="scriptId" width="180" />
|
||||
<el-table-column label="脚本事件" align="center" prop="status">
|
||||
<el-table-column :label="$t('script.index.470901-0')" align="center" prop="scriptName" />
|
||||
<el-table-column :label="$t('script.index.470901-2')" align="center" prop="productName" />
|
||||
<el-table-column :label="$t('script.349087-0')" align="center" prop="scriptId" width="180" />
|
||||
<el-table-column :label="$t('script.349087-6')" align="center" prop="status">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.rule_script_event" :value="scope.row.scriptEvent" size="small" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="脚本动作" align="center" prop="status">
|
||||
<el-table-column :label="$t('script.index.470901-5')" align="center" prop="status">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.rule_script_action" :value="scope.row.scriptAction"
|
||||
size="small" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="脚本语言" align="center" prop="scriptLanguage" />
|
||||
<el-table-column label="状态" align="center" prop="enable" width="120">
|
||||
<el-table-column :label="$t('script.index.470901-7')" align="center" prop="scriptLanguage" />
|
||||
<el-table-column :label="$t('script.index.470901-8')" align="center" prop="enable" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.enable == 1" type="success" size="small">启动</el-tag>
|
||||
<el-tag v-if="scope.row.enable == 0" type="danger" size="small">暂停</el-tag>
|
||||
<el-tag v-if="scope.row.enable == 1" type="success" size="small">{{ $t('script.index.470901-11') }}</el-tag>
|
||||
<el-tag v-if="scope.row.enable == 0" type="danger" size="small">{{ $t('script.index.470901-12') }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="执行顺序" align="center" prop="scriptOrder" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200">
|
||||
<el-table-column :label="$t('script.index.470901-9')" align="center" prop="scriptOrder" />
|
||||
<el-table-column :label="$t('common.opation')" align="center" class-name="small-padding fixed-width" width="200">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="small" type="text" icon="el-icon-date" @click="handleLog(scope.row.scriptId)" v-hasPermi="['iot:script:query']">日志</el-button>
|
||||
<el-button size="small" type="text" icon="el-icon-date" @click="handleLog(scope.row.scriptId)" v-hasPermi="['iot:script:query']">{{ $t('script.index.470901-23') }}</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-view" @click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['iot:script:query']">查看</el-button>
|
||||
v-hasPermi="['iot:script:query']">{{ $t('script.index.470901-24') }}</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
|
||||
v-hasPermi="['iot:script:remove']">删除</el-button>
|
||||
v-hasPermi="['iot:script:remove']">{{ $t('common.del') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -66,19 +66,19 @@
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="90px">
|
||||
<el-row :gutter="50">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="脚本名称" prop="scriptName">
|
||||
<el-input v-model="form.scriptName" placeholder="请输入脚本名" />
|
||||
<el-form-item :label="$t('script.index.470901-0')" prop="scriptName">
|
||||
<el-input v-model="form.scriptName" :placeholder="$t('script.349087-3')" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="执行顺序" prop="scriptOrder">
|
||||
<el-input-number v-model="form.scriptOrder" placeholder="请输入脚本名" type="number"
|
||||
<el-form-item :label="$t('script.index.470901-9')" prop="scriptOrder">
|
||||
<el-input-number v-model="form.scriptOrder" :placeholder="$t('script.index.470901-10')" type="number"
|
||||
controls-position="right" style="width: 100%" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="脚本事件" prop="scriptEvent">
|
||||
<el-select v-model="form.scriptEvent" placeholder="请选择脚本事件" style="width: 100%">
|
||||
<el-form-item :label="$t('script.349087-6')" prop="scriptEvent">
|
||||
<el-select v-model="form.scriptEvent" :placeholder="$t('script.349087-11')" style="width: 100%">
|
||||
<el-option v-for="dict in dict.type.rule_script_event" :key="dict.label"
|
||||
:label="dict.label" :value="Number(dict.value)"
|
||||
:disabled="dict.value !== '1' && dict.value !== '2'"></el-option>
|
||||
@@ -87,8 +87,8 @@
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="脚本动作" prop="scriptAction">
|
||||
<el-select v-model="form.scriptAction" placeholder="请选择脚本动作" style="width: 100%">
|
||||
<el-form-item :label="$t('script.index.470901-5')" prop="scriptAction">
|
||||
<el-select v-model="form.scriptAction" :placeholder="$t('script.index.470901-6')" style="width: 100%">
|
||||
<el-option v-for="dict in dict.type.rule_script_action" :key="dict.label"
|
||||
:label="dict.label" :value="Number(dict.value)"
|
||||
:disabled="dict.value !== '1'"></el-option>
|
||||
@@ -96,16 +96,16 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="脚本状态" prop="enable">
|
||||
<el-form-item :label="$t('script.349087-13')" prop="enable">
|
||||
<el-switch v-model="form.enable" :active-value="1" :inactive-value="0" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="所属产品" prop="productName">
|
||||
<el-input readonly v-model="form.productName" size="small" placeholder="请选择产品"
|
||||
<el-form-item :label="$t('script.index.470901-2')" prop="productName">
|
||||
<el-input readonly v-model="form.productName" size="small" :placeholder="$t('script.index.470901-3')"
|
||||
style="margin-top: 3px">
|
||||
<el-button slot="append" @click="handleSelectProduct()"
|
||||
size="small">选择产品</el-button>
|
||||
size="small">{{ $t('script.index.470901-4') }}</el-button>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@@ -127,17 +127,15 @@
|
||||
<el-link style="line-height: 40px; padding-left: 20px" icon="el-icon-question"
|
||||
:underline="false" type="primary" href="https://fastbee.cn/doc/pages/rule_engine/"
|
||||
target="_blank">
|
||||
脚本使用Groovy引擎,查看教程>>>
|
||||
{{ $t('script.index.470901-17') }}
|
||||
</el-link>
|
||||
</span>
|
||||
<el-button type="success" @click="handleValidate">验 证</el-button>
|
||||
<el-button type="success" @click="handleValidate">{{ $t('script.index.470901-18') }}</el-button>
|
||||
<el-button type="primary" @click="submitForm" v-hasPermi="['iot:script:edit']"
|
||||
v-show="form.scriptId" :disabled="!isValidate">修
|
||||
改</el-button>
|
||||
v-show="form.scriptId" :disabled="!isValidate">{{ $t('script.index.470901-19') }}</el-button>
|
||||
<el-button type="primary" @click="submitForm" v-hasPermi="['iot:script:add']"
|
||||
v-show="!form.scriptId" :disabled="!isValidate">新
|
||||
增</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
v-show="!form.scriptId" :disabled="!isValidate">{{ $t('common.add') }}</el-button>
|
||||
<el-button @click="cancel">{{ $t('script.index.470901-20') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</el-card>
|
||||
@@ -146,7 +144,7 @@
|
||||
<div
|
||||
ref="logContainer"
|
||||
v-loading="logLoading"
|
||||
element-loading-text="加载中"
|
||||
:element-loading-text="$t('script.index.470901-13')"
|
||||
element-loading-spinner="el-icon-loading"
|
||||
element-loading-background="rgba(0, 0, 0, 0.8)"
|
||||
style="border: 1px solid #ccc; border-radius: 4px; height: 450px; background-color: #181818; color: #fff; padding: 10px; line-height: 20px; overflow: auto"
|
||||
@@ -157,7 +155,7 @@
|
||||
>
|
||||
</div>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="cancelLog">关闭</el-button>
|
||||
<el-button @click="cancelLog">{{ $t('script.index.470901-21') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
@@ -182,7 +180,7 @@ export default {
|
||||
var checkScriptId = (rule, value, callback) => {
|
||||
const regex = /^[a-zA-Z]+[0-9]*[a-zA-Z]*$/; // 定义只包含字母和数字,且字母开头的正则表达式
|
||||
if (!regex.test(value)) {
|
||||
return callback(new Error('脚本标识只能输入字母和数字,且字母开头'));
|
||||
return callback(new Error(this.$i18n.t('script.index.470901-22')));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
@@ -232,15 +230,15 @@ export default {
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
scriptId: [{ required: true, message: '脚本标识不能为空', trigger: 'blur' }],
|
||||
productName: [{ required: true, message: '所属产品不能为空', trigger: 'blur' }],
|
||||
scriptName: [{ required: true, message: '脚本名不能为空', trigger: 'blur' }],
|
||||
scriptType: [{ required: true, message: '脚本类型不能为空', trigger: 'change' }],
|
||||
scriptLanguage: [{ required: true, message: '脚本语言不能为空', trigger: 'change' }],
|
||||
scriptId: [{ required: true, message: this.$i18n.t('script.index.470901-29'), trigger: 'blur' }],
|
||||
productName: [{ required: true, message: this.$i18n.t('script.index.470901-30'), trigger: 'blur' }],
|
||||
scriptName: [{ required: true, message: this.$i18n.t('script.index.470901-31'), trigger: 'blur' }],
|
||||
scriptType: [{ required: true, message: '', trigger: 'change' }],
|
||||
scriptLanguage: [{ required: true, message: '', trigger: 'change' }],
|
||||
scriptEvent: [{ required: true, message: '', trigger: 'change' }],
|
||||
scriptAction: [{ required: true, message: '', trigger: 'change' }],
|
||||
scriptOrder: [{ required: true, message: '', trigger: 'change' }],
|
||||
enable: [{ required: true, message: '状态不能为空', trigger: 'blur' }],
|
||||
enable: [{ required: true, message: '', trigger: 'blur' }],
|
||||
},
|
||||
};
|
||||
},
|
||||
@@ -329,7 +327,7 @@ msgContext.setPayload(NewPayload);`,
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = '编辑规则脚本';
|
||||
this.title = this.$i18n.t('script.index.470901-14');
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
@@ -338,7 +336,7 @@ msgContext.setPayload(NewPayload);`,
|
||||
getScript(scriptId).then((response) => {
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = '修改规则引擎脚本';
|
||||
this.title = this.$i18n.t('script.index.470901-15');
|
||||
});
|
||||
},
|
||||
/** 日志按钮操作 */
|
||||
@@ -348,7 +346,7 @@ msgContext.setPayload(NewPayload);`,
|
||||
this.logs = response.msg;
|
||||
this.form.scriptId = scriptId;
|
||||
this.openLog = true;
|
||||
this.title = "脚本日志";
|
||||
this.title = this.$i18n.t('script.index.470901-16');
|
||||
this.logLoading = false;
|
||||
// 滑动到底部
|
||||
this.$nextTick(function () {
|
||||
@@ -382,13 +380,13 @@ msgContext.setPayload(NewPayload);`,
|
||||
if (valid) {
|
||||
if (this.form.scriptId != null) {
|
||||
updateScript(this.form).then((response) => {
|
||||
this.$modal.msgSuccess('修改成功');
|
||||
this.$modal.msgSuccess(this.$i18n.t('script.index.470901-26'));
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addScript(this.form).then((response) => {
|
||||
this.$modal.msgSuccess('新增成功');
|
||||
this.$modal.msgSuccess(this.$i18n.t('script.index.470901-25'));
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
@@ -400,13 +398,13 @@ msgContext.setPayload(NewPayload);`,
|
||||
handleDelete(row) {
|
||||
const scriptIds = row.scriptId || this.scriptIds;
|
||||
this.$modal
|
||||
.confirm('是否确认删除规则引擎脚本编号为"' + scriptIds + '"的数据项?')
|
||||
.confirm(this.$i18n.t('script.index.470901-28', [scriptIds]))
|
||||
.then(function () {
|
||||
return delScript(scriptIds);
|
||||
})
|
||||
.then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess('删除成功');
|
||||
this.$modal.msgSuccess(this.$i18n.t('script.index.470901-27'));
|
||||
})
|
||||
.catch(() => { });
|
||||
},
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
<div style="padding-left: 20px">
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="warning" plain icon="el-icon-refresh" size="mini" @click="getList">刷新</el-button>
|
||||
<el-button type="warning" plain icon="el-icon-refresh" size="mini" @click="getList">{{ $t('refresh') }}</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-table v-loading="loading" :data="channelList" size="mini">
|
||||
<el-table-column label="设备ID" align="center" prop="deviceSipId" />
|
||||
<el-table-column label="通道ID" align="center" prop="channelSipId" />
|
||||
<el-table-column label="快照" min-width="120">
|
||||
<el-table-column :label="$t('sip.channel.998532-0')" align="center" prop="deviceSipId" />
|
||||
<el-table-column :label="$t('sip.channel.998532-1')" align="center" prop="channelSipId" />
|
||||
<el-table-column :label="$t('sip.channel.998532-2')" min-width="120">
|
||||
<template v-slot:default="scope">
|
||||
<el-image v-if="isVideoChannel(scope.row)" :src="getSnap(scope.row)" :preview-src-list="getBigSnap(scope.row)" :fit="'contain'" style="width: 60px">
|
||||
<div slot="error" class="image-slot">
|
||||
@@ -17,34 +17,34 @@
|
||||
</el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="通道名称" align="center" prop="channelName" />
|
||||
<el-table-column label="产品型号" align="center" prop="model" />
|
||||
<el-table-column label="推流状态" align="center" prop="streamPush" >
|
||||
<el-table-column :label="$t('sip.channel.998532-3')" align="center" prop="channelName" />
|
||||
<el-table-column :label="$t('sip.channel.998532-4')" align="center" prop="model" />
|
||||
<el-table-column :label="$t('sip.channel.998532-9')" align="center" prop="streamPush" >
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="warning" v-if="scope.row.streamPush === 0">无</el-tag>
|
||||
<el-tag type="success" v-if="scope.row.streamPush === 1">推流中</el-tag>
|
||||
<el-tag type="warning" v-if="scope.row.streamPush === 0">{{ $t('sip.channel.998532-10') }}</el-tag>
|
||||
<el-tag type="success" v-if="scope.row.streamPush === 1">{{ $t('sip.channel.998532-11') }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="直播录像状态" align="center" prop="streamRecord" >
|
||||
<el-table-column :label="$t('sip.channel.998532-12')" align="center" prop="streamRecord" >
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="warning" v-if="scope.row.streamRecord === 0">无</el-tag>
|
||||
<el-tag type="success" v-if="scope.row.streamRecord === 1">录像中</el-tag>
|
||||
<el-tag type="warning" v-if="scope.row.streamRecord === 0">{{ $t('sip.channel.998532-10') }}</el-tag>
|
||||
<el-tag type="success" v-if="scope.row.streamRecord === 1">{{ $t('sip.channel.998532-14') }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="录像转存状态" align="center" prop="videoRecord" >
|
||||
<el-table-column :label="$t('sip.channel.998532-15')" align="center" prop="videoRecord" >
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="warning" v-if="scope.row.videoRecord === 0">无</el-tag>
|
||||
<el-tag type="success" v-if="scope.row.videoRecord === 1">转存中</el-tag>
|
||||
<el-tag type="warning" v-if="scope.row.videoRecord === 0">{{ $t('sip.channel.998532-10') }}</el-tag>
|
||||
<el-tag type="success" v-if="scope.row.videoRecord === 1">{{ $t('sip.channel.998532-17') }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="状态" align="center" prop="status" width="80">
|
||||
<el-table-column :label="$t('sip.channel.998532-5')" align="center" prop="status" width="80">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.sip_gen_status" :value="scope.row.status" size="mini" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="120" class-name="small-padding fixed-width">
|
||||
<el-table-column :label="$t('opation')" align="center" width="120" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="small" type="success" icon="el-icon-video-play" style="padding: 5px" :disabled="scope.row.status !== 2" @click="sendDevicePush(scope.row)">查看直播</el-button>
|
||||
<el-button size="small" type="success" icon="el-icon-video-play" style="padding: 5px" :disabled="scope.row.status !== 2" @click="sendDevicePush(scope.row)">{{ $t('sip.channel.998532-6') }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -165,30 +165,30 @@ export default {
|
||||
this.queryParams.pageNum = 1;
|
||||
this.getList();
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset();
|
||||
const channelId = row.channelId || this.ids;
|
||||
getChannel(channelId).then((response) => {
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = '修改监控设备通道信息';
|
||||
});
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const channelIds = row.channelId || this.ids;
|
||||
this.$modal
|
||||
.confirm('是否确认删除监控设备通道信息编号为"' + channelIds + '"的数据项?')
|
||||
.then(function () {
|
||||
return delChannel(channelIds);
|
||||
})
|
||||
.then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess('删除成功');
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset();
|
||||
const channelId = row.channelId || this.ids;
|
||||
getChannel(channelId).then((response) => {
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = this.$t('sip.channel.998532-7');
|
||||
});
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const channelIds = row.channelId || this.ids;
|
||||
this.$modal
|
||||
.confirm(this.$t('sip.channel.998532-8', [channelIds]))
|
||||
.then(function () {
|
||||
return delChannel(channelIds);
|
||||
})
|
||||
.then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess(this.$t('sip.channel.998532-18'));
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
getSnap: function (row) {
|
||||
console.log('getSnap:' + process.env.VUE_APP_BASE_API + '/profile/snap/' + row.deviceSipId + '_' + row.channelSipId + '.jpg');
|
||||
return process.env.VUE_APP_BASE_API + '/profile/snap/' + row.deviceSipId + '_' + row.channelSipId + '.jpg';
|
||||
|
||||
@@ -2,24 +2,24 @@
|
||||
<div style="padding: 6px">
|
||||
<el-card style="margin-bottom: 6px">
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="60px" style="margin-bottom: -20px">
|
||||
<el-form-item label="设备ID" prop="deviceSipId">
|
||||
<el-input v-model="queryParams.deviceSipId" placeholder="请输入设备编号" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
<el-form-item :label="$t('sip.index.998533-0')" prop="deviceSipId">
|
||||
<el-input v-model="queryParams.deviceSipId" :placeholder="$t('sip.index.998533-1')" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="通道ID" prop="channelSipId">
|
||||
<el-input v-model="queryParams.channelSipId" placeholder="请输入通道ID" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
<el-form-item :label="$t('sip.index.998533-2')" prop="channelSipId">
|
||||
<el-input v-model="queryParams.channelSipId" :placeholder="$t('sip.index.998533-3')" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
|
||||
<el-form-item :label="$t('sip.index.998533-4')" prop="status">
|
||||
<el-select v-model="queryParams.status" :placeholder="$t('sip.index.998533-5')" clearable size="small">
|
||||
<el-option v-for="dict in dict.type.sip_gen_status" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('search') }}</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('reset') }}</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item style="float: right">
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['iot:video:add']" :disabled="isGeneralUser">批量生成</el-button>
|
||||
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple || isGeneralUser" @click="handleDelete" v-hasPermi="['iot:video:remove']">批量删除</el-button>
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['iot:video:add']" :disabled="isGeneralUser">{{ $t('sip.index.998533-6') }}</el-button>
|
||||
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple || isGeneralUser" @click="handleDelete" v-hasPermi="['iot:video:remove']">{{ $t('del') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
@@ -27,30 +27,30 @@
|
||||
<el-card style="margin-bottom: 5px">
|
||||
<el-table v-loading="loading" :data="sipidList" @selection-change="handleSelectionChange" @cell-dblclick="celldblclick" size="">
|
||||
<el-table-column type="selection" :selectable="selectable" width="55" align="center" />
|
||||
<el-table-column label="设备编号" align="center" prop="deviceSipId">
|
||||
<el-table-column :label="$t('sip.index.998533-0')" align="center" prop="deviceSipId">
|
||||
<template slot-scope="scope">
|
||||
<el-link :underline="false" type="primary" @click="handleViewDevice(scope.row.deviceSipId)">{{ scope.row.deviceSipId }}</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="通道ID" align="center" prop="channelSipId" />
|
||||
<el-table-column label="状态" align="center" prop="status" width="80">
|
||||
<el-table-column :label="$t('sip.index.998533-2')" align="center" prop="channelSipId" />
|
||||
<el-table-column :label="$t('sip.index.998533-4')" align="center" prop="status" width="80">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.sip_gen_status" :value="scope.row.status" size="mini" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="所属产品" align="center" prop="productName" />
|
||||
<el-table-column label="设备类型" align="center" prop="deviceType">
|
||||
<el-table-column :label="$t('sip.index.998533-8')" align="center" prop="productName" />
|
||||
<el-table-column :label="$t('sip.index.998533-9')" align="center" prop="deviceType">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.video_type" :value="scope.row.deviceType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="通道类型" align="center" prop="channelType">
|
||||
<el-table-column :label="$t('sip.index.998533-15')" align="center" prop="channelType">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.channel_type" :value="scope.row.channelType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="行政区域" align="center" prop="citycode" />
|
||||
<el-table-column label="注册时间" align="center" prop="registerTime" width="180">
|
||||
<el-table-column :label="$t('sip.index.998533-10')" align="center" prop="citycode" />
|
||||
<el-table-column :label="$t('sip.index.998533-11')" align="center" prop="registerTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.registerTime, '{y}-{m}-{d} {h}:{m}:{s}') }}</span>
|
||||
</template>
|
||||
@@ -69,31 +69,31 @@
|
||||
|
||||
<el-dialog :title="title" :visible.sync="open" width="450px" append-to-body :close-on-click-modal="false">
|
||||
<el-form :model="createForm" :rules="createFormrules" label-width="80px" ref="createForm">
|
||||
<el-form-item label="行政区划" prop="city">
|
||||
<el-form-item :label="$t('sip.index.998533-13')" prop="city">
|
||||
<el-cascader :options="cityOptions" v-model="createForm.city" @change="changeProvince" change-on-select style="width: 330px" :props="{ checkStrictly: false }"></el-cascader>
|
||||
</el-form-item>
|
||||
<el-form-item label="设备类型" prop="deviceType">
|
||||
<el-select v-model="createForm.deviceType" placeholder="请选择设备类型" style="width: 330px">
|
||||
<el-form-item :label="$t('sip.index.998533-9')" prop="deviceType">
|
||||
<el-select v-model="createForm.deviceType" :placeholder="$t('sip.index.998533-14')" style="width: 330px">
|
||||
<el-option v-for="dict in dict.type.video_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="通道类型" prop="channelType">
|
||||
<el-select v-model="createForm.channelType" placeholder="请选择设备类型" style="width: 330px">
|
||||
<el-form-item :label="$t('sip.index.998533-15')" prop="channelType">
|
||||
<el-select v-model="createForm.channelType" :placeholder="$t('sip.index.998533-16')" style="width: 330px">
|
||||
<el-option v-for="dict in dict.type.channel_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="所属产品" prop="productName">
|
||||
<el-input readonly v-model="createForm.productName" placeholder="请选择产品">
|
||||
<el-button slot="append" @click="selectProduct()">选择</el-button>
|
||||
<el-form-item :label="$t('sip.index.998533-8')" prop="productName">
|
||||
<el-input readonly v-model="createForm.productName" :placeholder="$t('sip.index.998533-17')">
|
||||
<el-button slot="append" @click="selectProduct()">{{ $t('sip.index.998533-18') }}</el-button>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="通道数量" prop="createNum">
|
||||
<el-input-number controls-position="right" v-model="createForm.createNum" :min="1" :max="10" placeholder="请输入生成通道数量" type="number" style="width: 330px" />
|
||||
<el-form-item :label="$t('sip.index.998533-20')" prop="createNum">
|
||||
<el-input-number controls-position="right" v-model="createForm.createNum" :min="1" :max="10" :placeholder="$t('sip.index.998533-19')" type="number" style="width: 330px" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">生 成</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
<el-button type="primary" @click="submitForm">{{ $t('sip.index.998533-21') }}</el-button>
|
||||
<el-button @click="cancel">{{ $t('cancel') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
@@ -185,11 +185,11 @@ export default {
|
||||
// 表单校验
|
||||
//createForm表单校验
|
||||
createFormrules: {
|
||||
city: [{ required: true, message: '行政区划不能为空', trigger: 'change' }],
|
||||
deviceType: [{ required: true, message: '设备类型不饿能为空', trigger: 'change' }],
|
||||
channelType: [{ required: true, message: '通道类型不能为空', trigger: 'change' }],
|
||||
productName: [{ required: true, message: '产品类型不能为空', trigger: 'blur' }],
|
||||
createNum: [{ required: true, message: '请输入生成通道数量', trigger: 'change' }],
|
||||
city: [{ required: true, message: this.$t('sip.index.998533-44'), trigger: 'change' }],
|
||||
deviceType: [{ required: true, message: this.$t('sip.index.998533-44'), trigger: 'change' }],
|
||||
channelType: [{ required: true, message: this.$t('sip.index.998533-44'), trigger: 'change' }],
|
||||
productName: [{ required: true, message: this.$t('sip.index.998533-43'), trigger: 'blur' }],
|
||||
createNum: [{ required: true, message: this.$t('sip.index.998533-19'), trigger: 'change' }],
|
||||
},
|
||||
rules: {
|
||||
protocol: [
|
||||
@@ -377,7 +377,7 @@ export default {
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = '生成设备通道';
|
||||
this.title = this.$t('sip.index.998533-38');
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
@@ -387,17 +387,16 @@ export default {
|
||||
getChannel(id).then((response) => {
|
||||
this.createForm = response.data;
|
||||
this.open = true;
|
||||
this.title = '修改产品分类';
|
||||
this.title = this.$t('sip.index.998533-39');
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs['createForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.createForm.deviceSipId = this.createForm.city[2] + '0000' + this.createForm.deviceType + '0';
|
||||
this.createForm.channelSipId = this.createForm.city[2] + '0000' + this.createForm.channelType + '0';
|
||||
addChannel(this.createForm.createNum, this.createForm).then((response) => {
|
||||
this.$modal.msgSuccess('新增成功');
|
||||
this.$modal.msgSuccess(this.$t('addSuccess'));
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
@@ -408,13 +407,13 @@ export default {
|
||||
handleDelete(row) {
|
||||
const sipIds = row.id || this.ids;
|
||||
this.$modal
|
||||
.confirm('是否确认删除ID为"' + sipIds + '"的数据项?')
|
||||
.confirm(this.$t('sip.index.998533-45', [sipIds]))
|
||||
.then(function () {
|
||||
return delChannel(sipIds);
|
||||
})
|
||||
.then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess('删除成功');
|
||||
this.$modal.msgSuccess(this.$t('delSuccess'));
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
@@ -438,8 +437,8 @@ export default {
|
||||
},
|
||||
onCopy() {
|
||||
this.$notify({
|
||||
title: '成功',
|
||||
message: '复制成功!',
|
||||
title: this.$t('success'),
|
||||
message: this.$t('sip.index.998533-46'),
|
||||
type: 'success',
|
||||
offset: 50,
|
||||
duration: 2000,
|
||||
@@ -447,8 +446,8 @@ export default {
|
||||
},
|
||||
onError() {
|
||||
this.$notify({
|
||||
title: '失败',
|
||||
message: '复制失败!',
|
||||
title: this.$t('fail'),
|
||||
message: this.$t('sip.index.998533-47'),
|
||||
type: 'error',
|
||||
offset: 50,
|
||||
duration: 2000,
|
||||
|
||||
@@ -1,41 +1,36 @@
|
||||
<template>
|
||||
<div id="mediaServerEdit" v-loading="isLoging">
|
||||
<el-dialog title="流媒体服务器节点" :width="dialogWidth" top="2rem" :close-on-click-modal="false" :visible.sync="showDialog" :destroy-on-close="true" @close="close()">
|
||||
<el-dialog :title="$t('sip.mediaServerEdit.998534-0')" :width="dialogWidth" top="2rem" :close-on-click-modal="false" :visible.sync="showDialog" :destroy-on-close="true" @close="close()">
|
||||
<div id="formStep" style="margin-top: 1rem; margin-right: 20px">
|
||||
<el-form v-if="currentStep == 1" ref="mediaServerForm" :rules="rules" :model="mediaServerForm" label-width="280px" style="width: 70%">
|
||||
<!-- <el-form-item label="所属租户" prop="productName">-->
|
||||
<!-- <el-input readonly v-model="mediaServerForm.tenantName" placeholder="请选择所属租户">-->
|
||||
<!-- <el-button slot="append" @click="selectUser()">选择</el-button>-->
|
||||
<!-- </el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="服务器IP" prop="ip">
|
||||
<el-input v-model="mediaServerForm.ip" placeholder="媒体服务IP" clearable></el-input>
|
||||
<el-form-item :label="$t('sip.mediaServerEdit.998534-1')" prop="ip">
|
||||
<el-input v-model="mediaServerForm.ip" :placeholder="$t('sip.mediaServerEdit.998534-2')" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Http端口" prop="portHttp">
|
||||
<el-input v-model="mediaServerForm.portHttp" placeholder="媒体服务HTTP端口" clearable></el-input>
|
||||
<el-form-item :label="$t('sip.mediaServerEdit.998534-3')" prop="portHttp">
|
||||
<el-input v-model="mediaServerForm.portHttp" :placeholder="$t('sip.mediaServerEdit.998534-4')" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="服务密钥" prop="secret">
|
||||
<el-input v-model="mediaServerForm.secret" placeholder="媒体服务SECRET" clearable></el-input>
|
||||
<el-form-item :label="$t('sip.mediaServerEdit.998534-5')" prop="secret">
|
||||
<el-input v-model="mediaServerForm.secret" :placeholder="$t('sip.mediaServerEdit.998534-6')" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<div style="float: right; font-size: 28px">
|
||||
<el-button @click="close">取消</el-button>
|
||||
<el-button type="success" @click="checkServer" :loading="btnLoading">测试</el-button>
|
||||
<el-button type="primary" v-if="currentStep === 1 && serverCheck === 1" @click="next">下一步</el-button>
|
||||
<el-button @click="close">{{ $t('cancel') }}</el-button>
|
||||
<el-button type="success" @click="checkServer" :loading="btnLoading">{{ $t('test') }}</el-button>
|
||||
<el-button type="primary" v-if="currentStep === 1 && serverCheck === 1" @click="next">{{ $t('next') }}</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form v-if="currentStep === 2 || currentStep === 3" ref="mediaServerForm1" :rules="rules" :model="mediaServerForm" label-width="140px" :disabled="!editFlag">
|
||||
<el-form-item label="配置名称" prop="serverId">
|
||||
<el-input v-model="mediaServerForm.serverId" placeholder="配置名称" clearable></el-input>
|
||||
<el-form-item :label="$t('sip.mediaServerEdit.998534-7')" prop="serverId">
|
||||
<el-input v-model="mediaServerForm.serverId" :placeholder="$t('sip.mediaServerEdit.998534-8')" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="服务器IP" prop="ip">
|
||||
<el-form-item :label="$t('sip.mediaServerEdit.998534-9')" prop="ip">
|
||||
<el-input v-if="currentStep === 2" v-model="mediaServerForm.ip" disabled></el-input>
|
||||
<el-input v-if="currentStep === 3" v-model="mediaServerForm.ip"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="播放协议" prop="protocol">
|
||||
<el-form-item :label="$t('sip.mediaServerEdit.998534-10')" prop="protocol">
|
||||
<el-select v-model="mediaServerForm.protocol" style="width: 100%">
|
||||
<el-option key="http" label="http" value="http"></el-option>
|
||||
<el-option key="https" label="https" value="https"></el-option>
|
||||
@@ -44,44 +39,44 @@
|
||||
<el-form-item label="HookUrl" prop="hookurl">
|
||||
<el-input v-model="mediaServerForm.hookurl" placeholder="HookUrl" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Http端口" prop="portHttp">
|
||||
<el-form-item :label="$t('sip.mediaServerEdit.998534-11')" prop="portHttp">
|
||||
<el-input v-if="currentStep === 2" v-model="mediaServerForm.portHttp" disabled></el-input>
|
||||
<el-input v-if="currentStep === 3" v-model="mediaServerForm.portHttp"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Https端口" prop="portHttps">
|
||||
<el-input v-model="mediaServerForm.portHttps" placeholder="Https端口" clearable></el-input>
|
||||
<el-form-item :label="$t('sip.mediaServerEdit.998534-12')" prop="portHttps">
|
||||
<el-input v-model="mediaServerForm.portHttps" :placeholder="$t('sip.mediaServerEdit.998534-13')" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Rtsp端口" prop="portRtsp">
|
||||
<el-input v-model="mediaServerForm.portRtsp" placeholder="Rtsp端口" clearable></el-input>
|
||||
<el-form-item :label="$t('sip.mediaServerEdit.998534-14')" prop="portRtsp">
|
||||
<el-input v-model="mediaServerForm.portRtsp" :placeholder="$t('sip.mediaServerEdit.998534-15')" clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form v-if="currentStep === 2 || currentStep === 3" ref="mediaServerForm2" :rules="rules" :model="mediaServerForm" label-width="180px" :disabled="!editFlag">
|
||||
<el-form-item label="流媒体密钥" prop="secret">
|
||||
<el-form-item :label="$t('sip.mediaServerEdit.998534-16')" prop="secret">
|
||||
<el-input v-if="currentStep === 2" v-model="mediaServerForm.secret" disabled></el-input>
|
||||
<el-input v-if="currentStep === 3" v-model="mediaServerForm.secret"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="服务器域名" prop="domain">
|
||||
<el-input v-model="mediaServerForm.domain" placeholder="服务器域名" clearable></el-input>
|
||||
<el-form-item :label="$t('sip.mediaServerEdit.998534-17')" prop="domain">
|
||||
<el-input v-model="mediaServerForm.domain" :placeholder="$t('sip.mediaServerEdit.998534-18')" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="自动配置">
|
||||
<el-form-item :label="$t('sip.mediaServerEdit.998534-19')">
|
||||
<el-switch v-model="mediaServerForm.autoConfig"></el-switch>
|
||||
</el-form-item>
|
||||
<el-form-item label="收流模式">
|
||||
<el-switch active-text="多端口" inactive-text="单端口" @change="portRangeChange" v-model="mediaServerForm.rtpEnable"></el-switch>
|
||||
<el-form-item :label="$t('sip.mediaServerEdit.998534-20')">
|
||||
<el-switch :active-text="$t('sip.mediaServerEdit.998534-21')" :inactive-text="$t('sip.mediaServerEdit.998534-22')" @change="portRangeChange" v-model="mediaServerForm.rtpEnable"></el-switch>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="!mediaServerForm.rtpEnable" label="收流端口" prop="rtpProxyPort">
|
||||
<el-form-item v-if="!mediaServerForm.rtpEnable" :label="$t('sip.mediaServerEdit.998534-23')" prop="rtpProxyPort">
|
||||
<el-input v-model.number="mediaServerForm.rtpProxyPort" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="mediaServerForm.rtpEnable" label="收流端口">
|
||||
<el-input v-model="rtpPortRange1" placeholder="起始" @change="portRangeChange" clearable style="width: 100px" prop="rtpPortRange1"></el-input>
|
||||
<el-input v-model="rtpPortRange2" placeholder="终止" @change="portRangeChange" clearable style="width: 100px" prop="rtpPortRange2" ></el-input>
|
||||
<el-form-item v-if="mediaServerForm.rtpEnable" :label="$t('sip.mediaServerEdit.998534-23')">
|
||||
<el-input v-model="rtpPortRange1" :placeholder="$t('sip.mediaServerEdit.998534-24')" @change="portRangeChange" clearable style="width: 100px" prop="rtpPortRange1"></el-input>
|
||||
<el-input v-model="rtpPortRange2" :placeholder="$t('sip.mediaServerEdit.998534-25')" @change="portRangeChange" clearable style="width: 100px" prop="rtpPortRange2" ></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="Rtmp端口" prop="portRtmp">
|
||||
<el-input v-model="mediaServerForm.portRtmp" placeholder="Rtmp端口" clearable></el-input>
|
||||
<el-form-item :label="$t('sip.mediaServerEdit.998534-26')" prop="portRtmp">
|
||||
<el-input v-model="mediaServerForm.portRtmp" :placeholder="$t('sip.mediaServerEdit.998534-27')" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="录像管理端口" prop="recordPort">
|
||||
<el-form-item :label="$t('sip.mediaServerEdit.998534-28')" prop="recordPort">
|
||||
<el-input v-model.number="mediaServerForm.recordPort" :disabled="!editFlag">
|
||||
<el-button v-if="mediaServerForm.recordPort > 0" class="el-icon-check" slot="append" type="primary" @click="checkRecordServer"></el-button>
|
||||
</el-input>
|
||||
@@ -91,8 +86,8 @@
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<div style="float: right">
|
||||
<el-button type="primary" @click="onSubmit" v-if="editFlag">提交</el-button>
|
||||
<el-button @click="close" v-if="editFlag">关闭</el-button>
|
||||
<el-button type="primary" @click="onSubmit" v-if="editFlag">{{ $t('submit') }}</el-button>
|
||||
<el-button @click="close" v-if="editFlag">{{ $t('close') }}</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@@ -177,16 +172,16 @@ export default {
|
||||
rtpPortRange1: 30000,
|
||||
rtpPortRange2: 30100,
|
||||
rules: {
|
||||
ip: [{ required: true, validator: isValidIp, message: '请输入有效的IP地址', trigger: 'blur' }],
|
||||
portHttp: [{ required: true, validator: isValidPort, message: '请输入有效的端口号', trigger: 'blur' }],
|
||||
portHttps: [{ required: true, validator: isValidPort, message: '请输入有效的端口号', trigger: 'blur' }],
|
||||
recordPort: [{ required: true, validator: isValidPort, message: '请输入有效的端口号', trigger: 'blur' }],
|
||||
portRtmp: [{ required: true, validator: isValidPort, message: '请输入有效的端口号', trigger: 'blur' }],
|
||||
portRtsp: [{ required: true, validator: isValidPort, message: '请输入有效的端口号', trigger: 'blur' }],
|
||||
rtpPortRange1: [{ required: true, validator: isValidPort, message: '请输入有效的端口号', trigger: 'blur' }],
|
||||
rtpPortRange2: [{ required: true, validator: isValidPort, message: '请输入有效的端口号', trigger: 'blur' }],
|
||||
rtpProxyPort: [{ required: true, validator: isValidPort, message: '请输入有效的端口号', trigger: 'blur' }],
|
||||
secret: [{ required: true, message: '请输入secret', trigger: 'blur' }],
|
||||
ip: [{ required: true, validator: isValidIp, message: this.$t('sip.mediaServerEdit.998534-24'), trigger: 'blur' }],
|
||||
portHttp: [{ required: true, validator: isValidPort, message: this.$t('sip.mediaServerEdit.998534-25'), trigger: 'blur' }],
|
||||
portHttps: [{ required: true, validator: isValidPort, message: this.$t('sip.mediaServerEdit.998534-25'), trigger: 'blur' }],
|
||||
recordPort: [{ required: true, validator: isValidPort, message: this.$t('sip.mediaServerEdit.998534-25'), trigger: 'blur' }],
|
||||
portRtmp: [{ required: true, validator: isValidPort, message: this.$t('sip.mediaServerEdit.998534-25'), trigger: 'blur' }],
|
||||
portRtsp: [{ required: true, validator: isValidPort, message: this.$t('sip.mediaServerEdit.998534-25'), trigger: 'blur' }],
|
||||
rtpPortRange1: [{ required: true, validator: isValidPort, message: this.$t('sip.mediaServerEdit.998534-25'), trigger: 'blur' }],
|
||||
rtpPortRange2: [{ required: true, validator: isValidPort, message: this.$t('sip.mediaServerEdit.998534-25'), trigger: 'blur' }],
|
||||
rtpProxyPort: [{ required: true, validator: isValidPort, message: this.$t('sip.mediaServerEdit.998534-25'), trigger: 'blur' }],
|
||||
secret: [{ required: true, message: this.$t('sip.mediaServerEdit.998534-31'), trigger: 'blur' }],
|
||||
},
|
||||
};
|
||||
},
|
||||
@@ -262,10 +257,10 @@ export default {
|
||||
this.rtpPortRange1 = 30000;
|
||||
this.rtpPortRange2 = 30100;
|
||||
this.serverCheck = 1;
|
||||
this.$modal.alertSuccess('配置地址连接成功');
|
||||
this.$modal.alertSuccess(this.$t('sip.mediaServerEdit.998534-26'));
|
||||
} else {
|
||||
this.serverCheck = -1;
|
||||
this.$modal.alertError('配置地址无法连接');
|
||||
this.$modal.alertError(this.$t('sip.mediaServerEdit.998534-27'));
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
@@ -291,7 +286,7 @@ export default {
|
||||
that.recordServerCheck = -1;
|
||||
that.$message({
|
||||
showClose: true,
|
||||
message: '端口号应该在-65535之间',
|
||||
message: this.$t('sip.mediaServerEdit.998534-28'),
|
||||
type: 'error',
|
||||
});
|
||||
return;
|
||||
@@ -303,13 +298,13 @@ export default {
|
||||
this.mediaServerForm.autoConfig = this.mediaServerForm.autoConfig ? 1 : 0;
|
||||
if (this.mediaServerForm.id != null) {
|
||||
updatemediaServer(this.mediaServerForm).then((response) => {
|
||||
this.$modal.msgSuccess('修改成功');
|
||||
this.$modal.msgSuccess(this.$t('updateSuccess'));
|
||||
this.showDialog = false;
|
||||
});
|
||||
} else {
|
||||
this.portRangeChange();
|
||||
addmediaServer(this.mediaServerForm).then((response) => {
|
||||
this.$modal.msgSuccess('新增成功');
|
||||
this.$modal.msgSuccess(this.$t('addSuccess'));
|
||||
this.showDialog = false;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<template>
|
||||
<div id="mediaServer" style="padding: 6px">
|
||||
<el-card style="margin-bottom: 6px">
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="75px" style="margin-bottom: -20px">
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="75px" style="margin-bottom: -20px">
|
||||
<el-form-item>
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="add"
|
||||
v-hasPermi="['iot:video:add']">新增节点</el-button>
|
||||
v-hasPermi="['iot:video:add']">{{ $t('sip.mediaServer.998535-0') }}</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="warning" plain icon="el-icon-refresh" size="mini" @click="getServerList">刷新</el-button>
|
||||
<el-button type="warning" plain icon="el-icon-refresh" size="mini" @click="getServerList">{{ $t('refresh') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
@@ -20,16 +20,16 @@
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="15">
|
||||
<el-descriptions :column="1" size="mini" style="white-space: nowrap">
|
||||
<el-descriptions-item label="配置名称">
|
||||
<el-descriptions-item :label="$t('sip.mediaServer.998535-1')">
|
||||
{{ item.serverId }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="服务器IP">
|
||||
<el-descriptions-item :label="$t('sip.mediaServer.998535-2')">
|
||||
{{ item.ip }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="播放协议">
|
||||
<el-descriptions-item :label="$t('sip.mediaServer.998535-3')">
|
||||
{{ item.protocol }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="创建时间">
|
||||
<el-descriptions-item :label="$t('sip.mediaServer.998535-4')">
|
||||
{{ parseTime(item.createTime, '{y}-{m}-{d}') }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
@@ -42,20 +42,20 @@
|
||||
</el-row>
|
||||
<el-button-group style="margin-top: 10px">
|
||||
<el-button type="danger" size="mini" style="padding: 5px 10px" icon="el-icon-delete"
|
||||
v-hasPermi="['iot:video:remove']" @click="del(item)">删除</el-button>
|
||||
v-hasPermi="['iot:video:remove']" @click="del(item)">{{ $t('del') }}</el-button>
|
||||
<el-button type="primary" size="mini" style="padding: 5px 15px" icon="el-icon-view" @click="view(item)"
|
||||
v-hasPermi="['iot:video:query']">查看</el-button>
|
||||
v-hasPermi="['iot:video:query']">{{ $t('look') }}</el-button>
|
||||
<el-button v-if="!istrue" type="success" size="mini" style="padding: 5px 15px" icon="el-icon-odometer"
|
||||
@click.native.prevent="edit(item)" v-hasPermi="['iot:video:edit']">编辑
|
||||
@click.native.prevent="edit(item)" v-hasPermi="['iot:video:edit']">{{ $t('edit') }}
|
||||
</el-button>
|
||||
<el-button v-else type="success" size="mini" style="padding: 5px 15px" icon="el-icon-odometer"
|
||||
:loading="true" disabled>重启中...
|
||||
:loading="true" disabled>{{ $t('sip.mediaServer.998535-5') }}
|
||||
</el-button>
|
||||
</el-button-group>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-empty description="暂无数据,请添加流媒体服务器节点" v-if="total == 0"></el-empty>
|
||||
<el-empty :description="$t('sip.mediaServer.998535-6')" v-if="total == 0"></el-empty>
|
||||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
|
||||
:pageSizes="[12, 24, 36, 60]" @pagination="getServerList" />
|
||||
</el-card>
|
||||
@@ -147,13 +147,13 @@ export default {
|
||||
del: function (row) {
|
||||
const ids = row.id || this.ids;
|
||||
this.$modal
|
||||
.confirm('是否确认删除流媒体服务器配置编号为"' + ids + '"的数据项?')
|
||||
.confirm(this.$t('sip.mediaServer.998535-7', [ids]))
|
||||
.then(function () {
|
||||
delmediaServer(ids);
|
||||
})
|
||||
.then(() => {
|
||||
this.getServerList();
|
||||
this.$modal.msgSuccess('删除成功');
|
||||
this.$modal.msgSuccess(this.$t('delSuccess'));
|
||||
})
|
||||
.catch(() => { });
|
||||
},
|
||||
|
||||
@@ -1,32 +1,32 @@
|
||||
<template>
|
||||
<el-dialog title="选择产品" :visible.sync="open" width="600px" append-to-body>
|
||||
<el-dialog :title="$t('sip.product-list.998536-0')" :visible.sync="open" width="600px" append-to-body>
|
||||
<div style="margin-top: -55px">
|
||||
<el-divider style="margin-top: -30px"></el-divider>
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
|
||||
<el-form-item label="产品名称" prop="productName">
|
||||
<el-input v-model="queryParams.productName" placeholder="请输入产品名称" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
<el-form-item :label="$t('product.index.671004-0')" prop="productName">
|
||||
<el-input v-model="queryParams.productName" :placeholder="$t('product.index.671004-1')" clearable size="small" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('search') }}</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('reset') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table v-loading="loading" ref="singleTable" :data="productList" @row-click="rowClick" highlight-current-row size="mini">
|
||||
<el-table-column label="选择" width="50" align="center">
|
||||
<el-table-column :label="$t('sip.index.998533-18')" width="50" align="center">
|
||||
<template slot-scope="scope">
|
||||
<input type="radio" :checked="scope.row.isSelect" name="product" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="产品名称" align="center" prop="productName" />
|
||||
<el-table-column label="分类名称" align="center" prop="categoryName" />
|
||||
<el-table-column label="租户名称" align="center" prop="tenantName" />
|
||||
<el-table-column label="联网方式" align="center" prop="networkMethod">
|
||||
<el-table-column :label="$t('product.index.671004-0')" align="center" prop="productName" />
|
||||
<el-table-column :label="$t('product.index.671004-6')" align="center" prop="categoryName" />
|
||||
<el-table-column :label="$t('sip.product-list.998536-1')" align="center" prop="tenantName" />
|
||||
<el-table-column :label="$t('sip.product-list.998536-2')" align="center" prop="networkMethod">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_network_method" :value="scope.row.networkMethod" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" width="100">
|
||||
<el-table-column :label="$t('creatTime')" align="center" prop="createTime" width="100">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
@@ -36,8 +36,8 @@
|
||||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
|
||||
</div>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="confirmSelectProduct" type="primary">确定</el-button>
|
||||
<el-button @click="closeDialog" type="info">关 闭</el-button>
|
||||
<el-button @click="confirmSelectProduct" type="primary">{{ $t('confirm') }}</el-button>
|
||||
<el-button @click="closeDialog" type="info">{{ $t('close') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
@@ -130,7 +130,7 @@ export default {
|
||||
/**确定选择产品,产品传递给父组件 */
|
||||
confirmSelectProduct() {
|
||||
if (this.product == null) {
|
||||
this.$message.error('请选择产品');
|
||||
this.$message.error(this.$t('sip.index.998533-17'));
|
||||
return;
|
||||
}
|
||||
this.$emit('productEvent', this.product);
|
||||
|
||||
@@ -3,37 +3,37 @@
|
||||
<el-form ref="form" :model="form" label-width="100px">
|
||||
<el-row :gutter="100">
|
||||
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="8">
|
||||
<el-form-item label="默认配置" prop="isdefault">
|
||||
<el-form-item :label="$t('sip.sipConfig.998537-0')" prop="isdefault">
|
||||
<el-switch v-model="form.isdefault" :active-value="1" :inactive-value="0"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="服务器地址" prop="ip">
|
||||
<el-form-item :label="$t('sip.sipConfig.998537-1')" prop="ip">
|
||||
<el-input v-model="form.ip" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="服务器域" prop="domain">
|
||||
<el-form-item :label="$t('sip.sipConfig.998537-2')" prop="domain">
|
||||
<el-input v-model="form.domain" />
|
||||
</el-form-item>
|
||||
<el-form-item label="认证密码" prop="password">
|
||||
<el-input v-model="form.password" placeholder="请输入认证密码" />
|
||||
<el-form-item :label="$t('sip.sipConfig.998537-3')" prop="password">
|
||||
<el-input v-model="form.password" :placeholder="$t('sip.sipConfig.998537-4')" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="8">
|
||||
<el-form-item label="接入方式">
|
||||
<el-form-item :label="$t('sip.sipConfig.998537-5')">
|
||||
<el-input v-model="accessWay" disabled>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="服务器端口" prop="port">
|
||||
<el-form-item :label="$t('sip.sipConfig.998537-6')" prop="port">
|
||||
<el-input v-model="form.port" type="number" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="服务器ID" prop="serverSipid">
|
||||
<el-form-item :label="$t('sip.sipConfig.998537-7')" prop="serverSipid">
|
||||
<el-input v-model="form.serverSipid" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="23" :sm="23" :md="23" :lg="23" :xl="15">
|
||||
<el-form-item style="text-align:center;margin-top:20px;">
|
||||
<el-button v-show="form.id && productInfo.status != 2" v-hasPermi="['iot:video:edit']" type="primary"
|
||||
@click="submitForm">修 改</el-button>
|
||||
@click="submitForm">{{ $t('edit') }}</el-button>
|
||||
<el-button v-show="!form.id && productInfo.status != 2" v-hasPermi="['iot:video:add']" type="primary"
|
||||
@click="submitForm">新 增</el-button>
|
||||
@click="submitForm">{{ $t('add') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -65,7 +65,7 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
// 接入方式
|
||||
accessWay: '国标GB28181',
|
||||
accessWay: this.$t('sip.sipConfig.998537-11'),
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
@@ -87,20 +87,20 @@ export default {
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
rules: {
|
||||
domain: [{
|
||||
required: true,
|
||||
message: '服务器域不能为空',
|
||||
message: this.$t('sip.sipConfig.998537-8'),
|
||||
trigger: 'blur',
|
||||
}],
|
||||
serverSipid: [{
|
||||
required: true,
|
||||
message: '服务器sipid不能为空',
|
||||
message: this.$t('sip.sipConfig.998537-9'),
|
||||
trigger: 'blur',
|
||||
}],
|
||||
password: [{
|
||||
required: true,
|
||||
message: 'sip认证密码不能为空',
|
||||
message: this.$t('sip.sipConfig.998537-10'),
|
||||
trigger: 'blur',
|
||||
}],
|
||||
},
|
||||
@@ -144,11 +144,11 @@ export default {
|
||||
}
|
||||
if (this.form.id != null) {
|
||||
updateSipconfig(this.form).then(response => {
|
||||
this.$modal.msgSuccess('修改成功');
|
||||
this.$modal.msgSuccess(this.$t('updateSuccess'));
|
||||
});
|
||||
} else {
|
||||
addSipconfig(this.form).then(response => {
|
||||
this.$modal.msgSuccess('新增成功');
|
||||
this.$modal.msgSuccess(this.$t('addSuccess'));
|
||||
this.getSipconfig(false);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
<template>
|
||||
<el-dialog :title="title" :visible.sync="open" width="400px" append-to-body :close-on-click-modal="false">
|
||||
<el-dialog :title="$t('sip.sipidGen.998538-1')" :visible.sync="open" width="400px" append-to-body :close-on-click-modal="false">
|
||||
<el-form ref="createForm" :model="createForm" label-width="100px" :rules="rules">
|
||||
<el-form-item label="行政区划" prop="city">
|
||||
<el-form-item :label="$t('sip.sipidGen.998538-0')" prop="city">
|
||||
<el-cascader :options="cityOptions" v-model="createForm.city" @change="changeProvince" change-on-select :props="{ checkStrictly: false }"></el-cascader>
|
||||
</el-form-item>
|
||||
<el-form-item label="设备类型" prop="deviceType">
|
||||
<el-select v-model="createForm.deviceType" placeholder="请选择设备类型">
|
||||
<el-form-item :label="$t('sip.sipidGen.998538-4')" prop="deviceType">
|
||||
<el-select v-model="createForm.deviceType" :placeholder="$t('sip.sipidGen.998538-4')">
|
||||
<el-option v-for="dict in dict.type.video_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="通道类型" prop="channelType">
|
||||
<el-select v-model="createForm.channelType" placeholder="请选择设备类型">
|
||||
<el-form-item :label="$t('sip.sipidGen.998538-5')" prop="channelType">
|
||||
<el-select v-model="createForm.channelType" :placeholder="$t('sip.sipidGen.998538-4')">
|
||||
<el-option v-for="dict in dict.type.channel_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="通道数量" prop="createNum">
|
||||
<el-input-number controls-position="right" :min="1" :max="10" v-model="createForm.createNum" placeholder="请输入生成通道数量" type="number" style="width: 220px" />
|
||||
<el-form-item :label="$t('sip.sipidGen.998538-6')" prop="createNum">
|
||||
<el-input-number controls-position="right" :min="1" :max="10" v-model="createForm.createNum" :placeholder="$t('sip.index.998533-19')" type="number" style="width: 220px" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">生 成</el-button>
|
||||
<el-button @click="closeDialog">取 消</el-button>
|
||||
<el-button type="primary" @click="submitForm">{{ $t('sip.index.998533-21') }}</el-button>
|
||||
<el-button @click="closeDialog">{{ $t('cancel') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
@@ -43,7 +43,7 @@ export default {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
title: '生成设备编号和通道',
|
||||
title: this.$t('sip.sipidGen.998538-1'),
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 打开选择产品对话框
|
||||
@@ -62,10 +62,10 @@ export default {
|
||||
|
||||
// 表单校验
|
||||
rules: {
|
||||
city: [{ required: true, message: '行政区划不能为空', trigger: 'change' }],
|
||||
deviceType: [{ required: true, message: '设备类型不能为空', trigger: 'change' }],
|
||||
channelType: [{ required: true, message: '通道类型不能为空', trigger: 'change' }],
|
||||
createNum: [{ required: true, message: '请输入生成通道数量', trigger: 'change' }],
|
||||
city: [{ required: true, message: this.$t('sip.sipidGen.998538-7'), trigger: 'change' }],
|
||||
deviceType: [{ required: true, message: this.$t('sip.sipidGen.998538-8'), trigger: 'change' }],
|
||||
channelType: [{ required: true, message: this.$t('sip.sipidGen.998538-9'), trigger: 'change' }],
|
||||
createNum: [{ required: true, message: this.$t('sip.index.998533-19'), trigger: 'change' }],
|
||||
},
|
||||
};
|
||||
},
|
||||
@@ -89,7 +89,7 @@ export default {
|
||||
this.createForm.deviceSipId = this.createForm.city[2] + '0000' + this.createForm.deviceType + '0';
|
||||
this.createForm.channelSipId = this.createForm.city[2] + '0000' + this.createForm.channelType + '0';
|
||||
addChannel(this.createForm.createNum, this.createForm).then((response) => {
|
||||
this.$modal.msgSuccess('已生成设备编号和通道');
|
||||
this.$modal.msgSuccess(this.$t('sip.sipidGen.998538-2'));
|
||||
this.devsipid = response.data;
|
||||
this.confirmSelectProduct();
|
||||
});
|
||||
|
||||
@@ -1,29 +1,29 @@
|
||||
<template>
|
||||
<el-dialog title="选择用户" :visible.sync="open" width="800px">
|
||||
<el-dialog :title="$t('sip.user-list.558539-0')" :visible.sync="open" width="800px">
|
||||
<div style="margin-top:-50px;">
|
||||
<el-divider></el-divider>
|
||||
</div>
|
||||
<!--用户数据-->
|
||||
<el-form :model="queryParams" ref="queryForm" :rules="rules" :inline="true" label-width="80px">
|
||||
<el-form-item label="手机号码" prop="phonenumber">
|
||||
<el-input type="text" placeholder="请输入用户手机号码" v-model="queryParams.phonenumber" minlength="10" clearable size="small" show-word-limit style="width: 240px" @keyup.enter.native="handleQuery"></el-input>
|
||||
<el-form-item :label="$t('sip.user-list.558539-1')" prop="phonenumber">
|
||||
<el-input type="text" :placeholder="$t('sip.user-list.558539-1')" v-model="queryParams.phonenumber" minlength="10" clearable size="small" show-word-limit style="width: 240px" @keyup.enter.native="handleQuery"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">查询</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('search') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table v-loading="loading" :data="userList" highlight-current-row size="mini" @current-change="handleCurrentChange" border>
|
||||
<el-table-column label="选择" width="50" align="center">
|
||||
<el-table-column :label="$t('sip.user-list.558539-3')" width="50" align="center">
|
||||
<template slot-scope="scope">
|
||||
<input type="radio" :checked="scope.row.isSelect" name="user" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="用户编号" align="center" key="userId" prop="userId" width="120" />
|
||||
<el-table-column label="用户名称" align="center" key="userName" prop="userName" />
|
||||
<el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" />
|
||||
<el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" width="120" />
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" width="160">
|
||||
<el-table-column :label="$t('sip.user-list.558539-2')" align="center" key="userId" prop="userId" width="120" />
|
||||
<el-table-column :label="$t('sip.user-list.558539-3')" align="center" key="userName" prop="userName" />
|
||||
<el-table-column :label="$t('sip.user-list.558539-4')" align="center" key="nickName" prop="nickName" />
|
||||
<el-table-column :label="$t('sip.user-list.558539-1')" align="center" key="phonenumber" prop="phonenumber" width="120" />
|
||||
<el-table-column :label="$t('sip.user-list.558539-5')" align="center" prop="createTime" width="160">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime) }}</span>
|
||||
</template>
|
||||
@@ -31,8 +31,8 @@
|
||||
|
||||
</el-table>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="confirmSelectUser">确定</el-button>
|
||||
<el-button @click="closeSelectUser">关 闭</el-button>
|
||||
<el-button type="primary" @click="confirmSelectUser">{{ $t('confirm') }}</el-button>
|
||||
<el-button @click="closeSelectUser">{{ $t('close') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
@@ -85,12 +85,12 @@ export default {
|
||||
rules: {
|
||||
phonenumber: [{
|
||||
required: true,
|
||||
message: "手机号码不能为空",
|
||||
message: this.$t('sip.user-list.558539-6'),
|
||||
trigger: "blur"
|
||||
}, {
|
||||
min: 11,
|
||||
max: 11,
|
||||
message: '手机号码长度为11位',
|
||||
message: this.$t('sip.user-list.558539-7'),
|
||||
trigger: 'blur'
|
||||
}],
|
||||
},
|
||||
|
||||
@@ -2,81 +2,81 @@
|
||||
<div style="padding: 6px">
|
||||
<el-card v-show="showSearch" style="margin-bottom: 5px">
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px" style="margin-bottom: -20px">
|
||||
<el-form-item label="模型名称" prop="templateName">
|
||||
<el-input v-model="queryParams.templateName" placeholder="请输入模型名称" clearable size="small"
|
||||
<el-form-item :label="$t('template.index.891112-22')" prop="templateName">
|
||||
<el-input v-model="queryParams.templateName" :placeholder="$t('template.index.891112-1')" clearable size="small"
|
||||
@keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="模型类别" prop="type">
|
||||
<el-select v-model="queryParams.type" placeholder="请选择模型类别" clearable size="small">
|
||||
<el-form-item :label="$t('template.index.891112-2')" prop="type">
|
||||
<el-select v-model="queryParams.type" :placeholder="$t('template.index.891112-3')" clearable size="small">
|
||||
<el-option v-for="dict in dict.type.iot_things_type" :key="dict.value" :label="dict.label"
|
||||
:value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('common.search') }}</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('common.reset') }}</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item style="float: right">
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
|
||||
v-hasPermi="['iot:template:add']">新增</el-button>
|
||||
v-hasPermi="['iot:template:add']">{{ $t('common.add') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<el-card style="padding-bottom: 100px">
|
||||
<el-table v-loading="loading" :data="templateList" @selection-change="handleSelectionChange" border>
|
||||
<el-table-column label="模型名称" align="center" prop="templateName" />
|
||||
<el-table-column label="标识符" align="center" prop="identifier" />
|
||||
<el-table-column label="图表展示" align="center" prop="isMonitor" width="75">
|
||||
<el-table-column :label="$t('template.index.891112-22')" align="center" prop="templateName" />
|
||||
<el-table-column :label="$t('template.index.891112-7')" align="center" prop="identifier" />
|
||||
<el-table-column :label="$t('template.index.891112-8')" align="center" prop="isMonitor" width="75">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_yes_no" :value="scope.row.isChart" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="只读" align="center" prop="" width="75">
|
||||
<el-table-column :label="$t('template.index.891112-10')" align="center" prop="" width="75">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_yes_no" :value="scope.row.isReadonly" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="历史存储" align="center" prop="" width="75">
|
||||
<el-table-column :label="$t('template.index.891112-11')" align="center" prop="" width="75">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_yes_no" :value="scope.row.isHistory" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="系统定义" align="center" prop="isSys" width="80">
|
||||
<el-table-column :label="$t('template.index.891112-12')" align="center" prop="isSys" width="80">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_yes_no" :value="scope.row.isSys" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="物模型类别" align="center" prop="type" width="100">
|
||||
<el-table-column :label="$t('template.index.891112-13')" align="center" prop="type" width="100">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_things_type" :value="scope.row.type" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="数据类型" align="center" prop="datatype" width="80">
|
||||
<el-table-column :label="$t('template.index.891112-14')" align="center" prop="datatype" width="80">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_data_type" :value="scope.row.datatype" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="数据定义" align="left" header-align="center" prop="specs" min-width="150"
|
||||
<el-table-column :label="$t('template.index.891112-15')" align="left" header-align="center" prop="specs" min-width="150"
|
||||
class-name="specsColor">
|
||||
<template slot-scope="scope">
|
||||
<div v-html="formatSpecsDisplay(scope.row.specs)"></div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="排序" align="center" prop="modelOrder" width="80" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="150">
|
||||
<el-table-column :label="$t('template.index.891112-16')" align="center" prop="modelOrder" width="80" />
|
||||
<el-table-column :label="$t('common.opation')" align="center" class-name="small-padding fixed-width" width="150">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="small" type="text" style="padding: 5px" icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)" v-hasPermi="['iot:template:query']"
|
||||
v-if="scope.row.isSys == '0' ? true : !isTenant">
|
||||
修改
|
||||
{{ $t('common.edit') }}
|
||||
</el-button>
|
||||
<el-button size="small" type="text" style="padding: 5px" icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)" v-hasPermi="['iot:template:remove']"
|
||||
v-if="scope.row.isSys == '0' ? true : !isTenant">
|
||||
删除
|
||||
{{ $t('common.del') }}
|
||||
</el-button>
|
||||
<span style="font-size: 10px; color: #999" v-if="scope.row.isSys == '1' && isTenant">系统定义,不能修改</span>
|
||||
<span style="font-size: 10px; color: #999" v-if="scope.row.isSys == '1' && isTenant">{{ $t('template.index.891112-21') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -87,53 +87,53 @@
|
||||
<!-- 添加或修改通用物模型对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body :close-on-click-modal="false">
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
|
||||
<el-form-item label="模型名称" prop="templateName">
|
||||
<el-input v-model="form.templateName" placeholder="请输入模型名称,例如:温度" style="width: 385px" />
|
||||
<el-form-item :label="$t('template.index.891112-22')" prop="templateName">
|
||||
<el-input v-model="form.templateName" :placeholder="$t('template.index.891112-23')" style="width: 385px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="模型标识" prop="identifier">
|
||||
<el-input v-model="form.identifier" placeholder="请输入标识符,例如:temperature" style="width: 385px" />
|
||||
<el-form-item :label="$t('template.index.891112-24')" prop="identifier">
|
||||
<el-input v-model="form.identifier" :placeholder="$t('template.index.891112-25')" style="width: 385px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="模型排序" prop="modelOrder">
|
||||
<el-input-number controls-position="right" v-model="form.modelOrder" placeholder="请输入排序"
|
||||
<el-form-item :label="$t('template.index.891112-26')" prop="modelOrder">
|
||||
<el-input-number controls-position="right" v-model="form.modelOrder" :placeholder="$t('template.index.891112-27')"
|
||||
style="width: 386px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="模型类别" prop="type">
|
||||
<el-form-item :label="$t('template.index.891112-28')" prop="type">
|
||||
<el-radio-group v-model="form.type" @change="typeChange(form.type)">
|
||||
<el-radio-button label="1">属性</el-radio-button>
|
||||
<el-radio-button label="2">功能</el-radio-button>
|
||||
<el-radio-button label="3">事件</el-radio-button>
|
||||
<el-radio-button :label="'1'">{{ $t('template.index.891112-29') }}</el-radio-button>
|
||||
<el-radio-button :label="'2'">{{ $t('template.index.891112-30') }}</el-radio-button>
|
||||
<el-radio-button :label="'3'">{{ $t('template.index.891112-31') }}</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="模型特性" prop="property">
|
||||
<el-form-item :label="$t('template.index.891112-32')" prop="property">
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-tooltip effect="dark" content="设备详情中以图表方式展示" placement="top">
|
||||
<el-checkbox name="isChart" label="图表展示" @change="isChartChange" v-show="form.type == 1"
|
||||
<el-tooltip effect="dark" :content="$t('template.index.891112-33')" placement="top">
|
||||
<el-checkbox name="isChart" :label="$t('template.index.891112-8')" @change="isChartChange" v-show="form.type == 1"
|
||||
v-model="form.isChart" :true-label="1" :false-label="0"></el-checkbox>
|
||||
</el-tooltip>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-tooltip effect="dark" content="实时显示监测数据,但是不会存储到数据库" placement="top">
|
||||
<el-checkbox name="isMonitor" label="实时监测" @change="isMonitorChange" v-show="form.type == 1"
|
||||
<el-tooltip effect="dark" :content="$t('template.index.891112-34')" placement="top">
|
||||
<el-checkbox name="isMonitor" :label="$t('template.index.891112-9')" @change="isMonitorChange" v-show="form.type == 1"
|
||||
v-model="form.isMonitor" :true-label="1" :false-label="0"></el-checkbox>
|
||||
</el-tooltip>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-tooltip effect="dark" content="设备上报数据,但是平台不能下发指令" placement="top">
|
||||
<el-checkbox name="isReadonly" label="只读数据" @change="isReadonlyChange" :disabled="form.type == 3"
|
||||
<el-tooltip effect="dark" :content="$t('template.index.891112-35')" placement="top">
|
||||
<el-checkbox name="isReadonly" :label="$t('template.index.891112-36')" @change="isReadonlyChange" :disabled="form.type == 3"
|
||||
v-model="form.isReadonly" :true-label="1" :false-label="0"></el-checkbox>
|
||||
</el-tooltip>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-tooltip effect="dark" content="设备上报的数据会存储到数据库作为历史数据" placement="top">
|
||||
<el-checkbox name="isHistory" label="历史存储" v-model="form.isHistory" :true-label="1"
|
||||
<el-tooltip effect="dark" :content="$t('template.index.891112-37')" placement="top">
|
||||
<el-checkbox name="isHistory" :label="$t('template.index.891112-11')" v-model="form.isHistory" :true-label="1"
|
||||
:false-label="0"></el-checkbox>
|
||||
</el-tooltip>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-tooltip effect="dark" content="设备分享时需要指定是否拥有该权限" placement="top">
|
||||
<el-checkbox name="isSharePerm" label="分享权限" v-model="form.isSharePerm" :true-label="1"
|
||||
<el-tooltip effect="dark" :content="$t('template.index.891112-38')" placement="top">
|
||||
<el-checkbox name="isSharePerm" :label="$t('template.index.891112-39')" v-model="form.isSharePerm" :true-label="1"
|
||||
:false-label="0"></el-checkbox>
|
||||
</el-tooltip>
|
||||
</el-col>
|
||||
@@ -141,179 +141,179 @@
|
||||
</el-form-item>
|
||||
|
||||
<el-divider></el-divider>
|
||||
<el-form-item label="数据类型" prop="datatype">
|
||||
<el-select v-model="form.datatype" placeholder="请选择数据类型" @change="dataTypeChange" style="width: 175px">
|
||||
<el-option key="integer" label="整数" value="integer"></el-option>
|
||||
<el-option key="decimal" label="小数" value="decimal"></el-option>
|
||||
<el-option key="bool" label="布尔" value="bool" :disabled="form.isChart == 1"></el-option>
|
||||
<el-option key="enum" label="枚举" value="enum" :disabled="form.isChart == 1"></el-option>
|
||||
<el-option key="string" label="字符串" value="string" :disabled="form.isChart == 1"></el-option>
|
||||
<el-option key="array" label="数组" value="array" :disabled="form.isChart == 1"></el-option>
|
||||
<el-option key="object" label="对象" value="object" :disabled="form.isChart == 1"></el-option>
|
||||
<el-form-item :label="$t('template.index.891112-14')" prop="datatype">
|
||||
<el-select v-model="form.datatype" :placeholder="$t('template.index.891112-40')" @change="dataTypeChange" style="width: 175px">
|
||||
<el-option key="integer" :label="$t('template.index.891112-41')" value="integer"></el-option>
|
||||
<el-option key="decimal" :label="$t('template.index.891112-42')" value="decimal"></el-option>
|
||||
<el-option key="bool" :label="$t('template.index.891112-43')" value="bool" :disabled="form.isChart == 1"></el-option>
|
||||
<el-option key="enum" :label="$t('template.index.891112-44')" value="enum" :disabled="form.isChart == 1"></el-option>
|
||||
<el-option key="string" :label="$t('template.index.891112-45')" value="string" :disabled="form.isChart == 1"></el-option>
|
||||
<el-option key="array" :label="$t('template.index.891112-46')" value="array" :disabled="form.isChart == 1"></el-option>
|
||||
<el-option key="object" :label="$t('template.index.891112-47')" value="object" :disabled="form.isChart == 1"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<div>
|
||||
<el-form-item label="取值范围" v-if="form.datatype == 'integer'">
|
||||
<el-form-item :label="$t('template.index.891112-48')" v-if="form.datatype == 'integer'">
|
||||
<el-row>
|
||||
<el-col :span="9">
|
||||
<el-input v-model="form.specs.min" placeholder="最小值" controls-position="right" type="number"
|
||||
<el-input v-model="form.specs.min" :placeholder="$t('template.index.891112-49')" controls-position="right" type="number"
|
||||
style="width: 174px;" @input="handleEdit" />
|
||||
</el-col>
|
||||
<el-col :span="2" align="center">到</el-col>
|
||||
<el-col :span="2" align="center">{{ $t('template.index.891112-50') }}</el-col>
|
||||
<el-col :span="9">
|
||||
<el-input v-model="form.specs.max" placeholder="最大值" type="number" controls-position="right"
|
||||
<el-input v-model="form.specs.max" :placeholder="$t('template.index.891112-51')" type="number" controls-position="right"
|
||||
style="width: 174px;" @input="handleEditmax" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
<el-form-item label="取值范围" v-if="form.datatype == 'decimal'">
|
||||
<el-form-item :label="$t('template.index.891112-48')" v-if="form.datatype == 'decimal'">
|
||||
<el-row>
|
||||
<el-col :span="9">
|
||||
<el-input v-model="form.specs.min" placeholder="最小值" controls-position="right" type="number"
|
||||
<el-input v-model="form.specs.min" :placeholder="$t('template.index.891112-49')" controls-position="right" type="number"
|
||||
style="width: 174px;" />
|
||||
</el-col>
|
||||
<el-col :span="2" align="center">到</el-col>
|
||||
<el-col :span="2" align="center">{{ $t('template.index.891112-50') }}</el-col>
|
||||
<el-col :span="9">
|
||||
<el-input v-model="form.specs.max" placeholder="最大值" type="number" controls-position="right"
|
||||
<el-input v-model="form.specs.max" :placeholder="$t('template.index.891112-51')" type="number" controls-position="right"
|
||||
style="width: 174px;" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
<el-form-item label="单位" prop="unit" v-if="form.datatype == 'integer' || form.datatype == 'decimal'">
|
||||
<el-input v-model="form.specs.unit" placeholder="请输入单位,例如:℃" style="width: 385px" />
|
||||
<el-form-item :label="$t('template.index.891112-52')" prop="unit" v-if="form.datatype == 'integer' || form.datatype == 'decimal'">
|
||||
<el-input v-model="form.specs.unit" :placeholder="$t('template.index.891112-53')" style="width: 385px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="步长" prop="step" v-if="form.datatype == 'integer' || form.datatype == 'decimal'">
|
||||
<el-input controls-position="right" v-model="form.specs.step" placeholder="请输入步长,例如:1" type="number"
|
||||
<el-form-item :label="$t('template.index.891112-54')" prop="step" v-if="form.datatype == 'integer' || form.datatype == 'decimal'">
|
||||
<el-input controls-position="right" v-model="form.specs.step" :placeholder="$t('template.index.891112-55')" type="number"
|
||||
style="width: 386px" />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div v-if="form.datatype == 'bool'">
|
||||
<el-form-item label="布尔值" prop="">
|
||||
<el-form-item :label="$t('template.index.891112-56')" prop="">
|
||||
<el-row style="margin-bottom: 10px">
|
||||
<el-col :span="9">
|
||||
<el-input v-model="form.specs.falseText" placeholder="例如:关闭" />
|
||||
<el-input v-model="form.specs.falseText" :placeholder="$t('template.index.891112-57')" />
|
||||
</el-col>
|
||||
<el-col :span="10" :offset="1">(0 值对应文本)</el-col>
|
||||
<el-col :span="10" :offset="1">{{ $t('template.index.891112-58') }}</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="9">
|
||||
<el-input v-model="form.specs.trueText" placeholder="例如:打开" />
|
||||
<el-input v-model="form.specs.trueText" :placeholder="$t('template.index.891112-59')" />
|
||||
</el-col>
|
||||
<el-col :span="10" :offset="1">(1 值对应文本)</el-col>
|
||||
<el-col :span="10" :offset="1">{{ $t('template.index.891112-60') }}</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div v-if="form.datatype == 'enum'">
|
||||
<el-form-item label="展示方式">
|
||||
<el-select v-model="form.specs.showWay" placeholder="请选择展示方式" style="width: 175px">
|
||||
<el-option key="select" label="下拉框" value="select"></el-option>
|
||||
<el-option key="button" label="按钮" value="button"></el-option>
|
||||
<el-form-item :label="$t('template.index.891112-61')">
|
||||
<el-select v-model="form.specs.showWay" :placeholder="$t('template.index.891112-62')" style="width: 175px">
|
||||
<el-option key="select" :label="$t('template.index.891112-63')" value="select"></el-option>
|
||||
<el-option key="button" :label="$t('template.index.891112-64')" value="button"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="枚举项" prop="">
|
||||
<el-form-item :label="$t('template.index.891112-65')" prop="">
|
||||
<el-row v-for="(item, index) in form.specs.enumList" :key="'enum' + index" style="margin-bottom: 10px">
|
||||
<el-col :span="9">
|
||||
<el-input v-model="item.value" placeholder="参数值,例如:0" />
|
||||
<el-input v-model="item.value" :placeholder="$t('template.index.891112-66')" />
|
||||
</el-col>
|
||||
<el-col :span="11" :offset="1">
|
||||
<el-input v-model="item.text" placeholder="参数描述,例如:中速档位" />
|
||||
<el-input v-model="item.text" :placeholder="$t('template.index.891112-67')" />
|
||||
</el-col>
|
||||
<el-col :span="2" :offset="1" v-if="index != 0"><a style="color: #f56c6c"
|
||||
@click="removeEnumItem(index)">删除</a></el-col>
|
||||
@click="removeEnumItem(index)">{{ $t('common.del') }}</a></el-col>
|
||||
</el-row>
|
||||
<div>
|
||||
+
|
||||
<a style="color: #409eff" @click="addEnumItem()">添加枚举项</a>
|
||||
<a style="color: #409eff" @click="addEnumItem()">{{ $t('template.index.891112-68') }}</a>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div v-if="form.datatype == 'string'">
|
||||
<el-form-item label="最大长度" prop="">
|
||||
<el-form-item :label="$t('template.index.891112-69')" prop="">
|
||||
<el-row>
|
||||
<el-col :span="9">
|
||||
<el-input v-model="form.specs.maxLength" placeholder="例如:1024" type="number" />
|
||||
<el-input v-model="form.specs.maxLength" :placeholder="$t('template.index.891112-70')" type="number" />
|
||||
</el-col>
|
||||
<el-col :span="14" :offset="1">(字符串的最大长度)</el-col>
|
||||
<el-col :span="14" :offset="1">{{ $t('template.index.891112-71') }}</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div v-if="form.datatype == 'array'">
|
||||
<el-form-item label="元素个数" prop="">
|
||||
<el-form-item :label="$t('template.index.891112-72')" prop="">
|
||||
<el-row>
|
||||
<el-col :span="9">
|
||||
<el-input v-model="form.specs.arrayCount" placeholder="例如:5" type="number" />
|
||||
<el-input v-model="form.specs.arrayCount" :placeholder="$t('template.index.891112-73')" type="number" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
<el-form-item label="数组类型" prop="">
|
||||
<el-form-item :label="$t('template.index.891112-74')" prop="">
|
||||
<el-radio-group v-model="form.specs.arrayType">
|
||||
<el-radio label="integer">整数</el-radio>
|
||||
<el-radio label="decimal">小数</el-radio>
|
||||
<el-radio label="string">字符串</el-radio>
|
||||
<el-radio label="object">对象</el-radio>
|
||||
<el-radio label="integer">{{ $t('template.index.891112-41') }}</el-radio>
|
||||
<el-radio label="decimal">{{ $t('template.index.891112-42') }}</el-radio>
|
||||
<el-radio label="string">{{ $t('template.index.891112-45') }}</el-radio>
|
||||
<el-radio label="object">{{ $t('template.index.891112-47') }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="对象参数" v-if="form.specs.arrayType == 'object'">
|
||||
<el-form-item :label="$t('template.index.891112-75')" v-if="form.specs.arrayType == 'object'">
|
||||
<div style="background-color: #f8f8f8; border-radius: 5px">
|
||||
<el-row style="padding: 0 10px 5px" v-for="(item, index) in form.specs.params" :key="index">
|
||||
<div style="margin-top: 5px" v-if="index == 0"></div>
|
||||
<el-col :span="18">
|
||||
<el-input readonly v-model="item.name" size="mini" placeholder="请选择设备" style="margin-top: 3px">
|
||||
<el-input readonly v-model="item.name" size="mini" :placeholder="$t('template.index.891112-76')" style="margin-top: 3px">
|
||||
<template slot="prepend">
|
||||
<el-tag size="mini" effect="dark" style="margin-left: -21px; height: 26px; line-height: 26px">{{
|
||||
item.order }}</el-tag>
|
||||
{{ form.identifier + '_' + item.id }}
|
||||
</template>
|
||||
<el-button slot="append" @click="editParameter(item, index)" size="small">编辑</el-button>
|
||||
<el-button slot="append" @click="editParameter(item, index)" size="small">{{ $t('common.edit') }}</el-button>
|
||||
</el-input>
|
||||
</el-col>
|
||||
<el-col :span="2" :offset="2">
|
||||
<el-button size="small" plain type="danger" style="padding: 5px" icon="el-icon-delete"
|
||||
@click="removeParameter(index)">删除</el-button>
|
||||
@click="removeParameter(index)">{{ $t('common.del') }}</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
<div>
|
||||
+
|
||||
<a style="color: #409eff" @click="addParameter()">添加参数</a>
|
||||
<a style="color: #409eff" @click="addParameter()">{{ $t('template.index.891112-78') }}</a>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div v-if="form.datatype == 'object'">
|
||||
<el-form-item label="对象参数" prop="">
|
||||
<el-form-item :label="$t('template.index.891112-75')" prop="">
|
||||
<div style="background-color: #f8f8f8; border-radius: 5px">
|
||||
<el-row style="padding: 0 10px 5px" v-for="(item, index) in form.specs.params" :key="index">
|
||||
<div style="margin-top: 5px" v-if="index == 0"></div>
|
||||
<el-col :span="18">
|
||||
<el-input readonly v-model="item.name" size="mini" placeholder="请选择设备" style="margin-top: 3px">
|
||||
<el-input readonly v-model="item.name" size="mini" :placeholder="$t('template.index.891112-76')" style="margin-top: 3px">
|
||||
<template slot="prepend">
|
||||
<el-tag size="mini" effect="dark" style="margin-left: -21px; height: 26px; line-height: 26px">{{
|
||||
item.order }}</el-tag>
|
||||
{{ form.identifier + '_' + item.id }}
|
||||
</template>
|
||||
<el-button slot="append" @click="editParameter(item, index)">编辑</el-button>
|
||||
<el-button slot="append" @click="editParameter(item, index)">{{ $t('common.edit') }}</el-button>
|
||||
</el-input>
|
||||
</el-col>
|
||||
<el-col :span="2" :offset="2">
|
||||
<el-button size="small" plain type="danger" style="padding: 5px" icon="el-icon-delete"
|
||||
@click="removeParameter(index)">删除</el-button>
|
||||
@click="removeParameter(index)">{{ $t('common.del') }}</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
<div>
|
||||
+
|
||||
<a style="color: #409eff" @click="addParameter()">添加参数</a>
|
||||
<a style="color: #409eff" @click="addParameter()">{{ $t('template.index.891112-78') }}</a>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm" v-hasPermi="['iot:template:edit']" v-show="form.templateId">修
|
||||
改</el-button>
|
||||
<el-button type="primary" @click="submitForm" v-hasPermi="['iot:template:add']" v-show="!form.templateId">新
|
||||
增</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
<el-button type="primary" @click="submitForm" v-hasPermi="['iot:template:edit']" v-show="form.templateId">{{ $t('common.edit') }}
|
||||
</el-button>
|
||||
<el-button type="primary" @click="submitForm" v-hasPermi="['iot:template:add']" v-show="!form.templateId">{{ $t('common.add') }}
|
||||
</el-button>
|
||||
<el-button @click="cancel">{{ $t('common.cancel') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
@@ -382,54 +382,54 @@ export default {
|
||||
templateName: [
|
||||
{
|
||||
required: true,
|
||||
message: '模型名称不能为空',
|
||||
message: this.$i18n.t('template.index.891112-84'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
{
|
||||
min: 1,
|
||||
max: 64,
|
||||
message: '模型名称不能少于1个字符和超过64字符',
|
||||
message: this.$i18n.t('template.index.891112-84'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
identifier: [
|
||||
{
|
||||
required: true,
|
||||
message: '标识符,产品下唯一不能为空',
|
||||
message: this.$i18n.t('template.index.891112-85'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
{
|
||||
min: 1,
|
||||
max: 32,
|
||||
message: '标识符不能少于1个字符和超过32字符',
|
||||
message: this.$i18n.t('template.index.891112-85'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
modelOrder: [
|
||||
{
|
||||
required: true,
|
||||
message: '模型排序不能为空',
|
||||
message: this.$i18n.t('template.index.891112-86'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
{
|
||||
type: 'number',
|
||||
min: -2147483648,
|
||||
max: 2147483647,
|
||||
message: '排序不能超过int型的范围值( -2^31——2^31-1)',
|
||||
message: '',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
type: [
|
||||
{
|
||||
required: true,
|
||||
message: '模型类别不能为空',
|
||||
message: this.$i18n.t('template.index.891112-87'),
|
||||
trigger: 'change',
|
||||
},
|
||||
],
|
||||
datatype: [
|
||||
{
|
||||
required: true,
|
||||
message: '数据类型不能为空',
|
||||
message: this.$i18n.t('template.index.891112-88'),
|
||||
trigger: 'change',
|
||||
},
|
||||
],
|
||||
@@ -521,7 +521,7 @@ export default {
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = '添加通用物模型';
|
||||
this.title = this.$i18n.t('template.index.891112-89');
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
@@ -530,7 +530,7 @@ export default {
|
||||
getTemplate(templateId).then((response) => {
|
||||
let tempForm = response.data;
|
||||
this.open = true;
|
||||
this.title = '修改通用物模型';
|
||||
this.title = this.$i18n.t('template.index.891112-90');
|
||||
// Json转对象
|
||||
tempForm.specs = JSON.parse(tempForm.specs);
|
||||
if (!tempForm.specs.enumList) {
|
||||
@@ -567,14 +567,14 @@ export default {
|
||||
// 验证对象或对象数组中的参数不能为空
|
||||
if (this.form.datatype == 'object' || (this.form.datatype == 'array' && this.form.specs.arrayType == 'object')) {
|
||||
if (!this.form.specs.params || this.form.specs.params == 0) {
|
||||
this.$modal.msgError('对象的参数不能为空');
|
||||
this.$modal.msgError(this.$i18n.t('template.index.891112-91'));
|
||||
return;
|
||||
}
|
||||
}
|
||||
//验证输入的取值范围最大值不能小于最小值
|
||||
if (this.form.datatype == 'integer' || this.form.datatype == 'decimal') {
|
||||
if (parseFloat(this.form.specs.min) > parseFloat(this.form.specs.max)) {
|
||||
this.$modal.msgError('请重新输入取值范围,最大值不能比最小值小!');
|
||||
this.$modal.msgError(this.$i18n.t('template.index.891112-125'));
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -582,7 +582,7 @@ export default {
|
||||
this.hasDecimalPoint();
|
||||
this.hasDecimalPointMax();
|
||||
if (this.isDecimal === false || this.isDecimalMax === false) {
|
||||
this.$modal.msgError('取值范围必须输入小数,请重新输入!');
|
||||
this.$modal.msgError(this.$i18n.t('template.index.891112-126'));
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -591,14 +591,14 @@ export default {
|
||||
let arr = this.form.specs.params.map((item) => item.id).sort();
|
||||
for (let i = 0; i < arr.length; i++) {
|
||||
if (arr[i] == arr[i + 1]) {
|
||||
this.$modal.msgError('参数标识 ' + arr[i] + ' 重复');
|
||||
this.$modal.msgError(this.$i18n.t('template.index.891112-127', [arr[i]]));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
//验证模型特性为图表展示时,数据类型是否为整数或者小数
|
||||
if ((this.form.isChart == 1 && this.form.datatype != 'integer') && (this.form.isChart == 1 && this.form.datatype != 'decimal')) {
|
||||
this.$modal.msgError('请重新选择数据类型!');
|
||||
this.$modal.msgError(this.$i18n.t('template.index.891112-95'));
|
||||
}
|
||||
else if (this.form.templateId != null) {
|
||||
// 格式化specs
|
||||
@@ -614,7 +614,7 @@ export default {
|
||||
// 添加通用物模型的修改者
|
||||
tempForm.updateBy = this.$store.state.user.name;
|
||||
updateTemplate(tempForm).then((response) => {
|
||||
this.$modal.msgSuccess('修改成功');
|
||||
this.$modal.msgSuccess(this.$i18n.t('template.index.891112-128'));
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
@@ -631,7 +631,7 @@ export default {
|
||||
// 添加通用物模型的创造者
|
||||
tempForm.createBy = this.$store.state.user.name;
|
||||
addTemplate(tempForm).then((response) => {
|
||||
this.$modal.msgSuccess('新增成功');
|
||||
this.$modal.msgSuccess(this.$i18n.t('template.index.891112-129'));
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
@@ -643,13 +643,13 @@ export default {
|
||||
handleDelete(row) {
|
||||
const templateIds = row.templateId || this.ids;
|
||||
this.$modal
|
||||
.confirm('是否确认删除通用物模型编号为"' + templateIds + '"的数据项?')
|
||||
.confirm(this.$i18n.t('template.index.891112-98', [templateIds]))
|
||||
.then(function () {
|
||||
return delTemplate(templateIds);
|
||||
})
|
||||
.then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess('删除成功');
|
||||
this.$modal.msgSuccess(this.$i18n.t('template.index.891112-130'));
|
||||
})
|
||||
.catch(() => { });
|
||||
},
|
||||
@@ -781,19 +781,19 @@ export default {
|
||||
let specs = JSON.parse(json);
|
||||
if (specs.type === 'integer' || specs.type === 'decimal') {
|
||||
return (
|
||||
'<span style=\'width:50%;display:inline-block;\'>最大值:<span style="color:#F56C6C">' +
|
||||
'<span style=\'width:50%;display:inline-block;\>' + this.$i18n.t('template.index.891112-105') + '<span style="color:#F56C6C">' +
|
||||
specs.max +
|
||||
'</span></span>最小值:<span style="color:#F56C6C">' +
|
||||
'</span></span>' + this.$i18n.t('template.index.891112-106') + '<span style="color:#F56C6C">' +
|
||||
specs.min +
|
||||
'</span><br /><span style=\'width:50%;display:inline-block;\'>步长:<span style="color:#F56C6C">' +
|
||||
'</span><br /><span style=\'width:50%;display:inline-block;\>' + this.$i18n.t('template.index.891112-107') + '<span style="color:#F56C6C">' +
|
||||
specs.step +
|
||||
'</span></span>单位:<span style="color:#F56C6C">' +
|
||||
'</span></span>' + this.$i18n.t('template.index.891112-108') + '<span style="color:#F56C6C">' +
|
||||
specs.unit
|
||||
);
|
||||
} else if (specs.type === 'string') {
|
||||
return '最大长度:<span style="color:#F56C6C">' + specs.maxLength + '</span>';
|
||||
return this.$i18n.t('template.index.891112-109') + '<span style="color:#F56C6C">' + specs.maxLength + '</span>';
|
||||
} else if (specs.type === 'array') {
|
||||
return '<span style=\'width:50%;display:inline-block;\'>数组类型:<span style="color:#F56C6C">' + specs.arrayType + '</span></span>元素个数:<span style="color:#F56C6C">' + specs.arrayCount;
|
||||
return '<span style=\'width:50%;display:inline-block;\>' + this.$i18n.t('template.index.891112-110') + '<span style="color:#F56C6C">' + specs.arrayType + '</span></span>' + this.$i18n.t('template.index.891112-111') + '<span style="color:#F56C6C">' + specs.arrayCount;
|
||||
} else if (specs.type === 'enum') {
|
||||
let items = '';
|
||||
for (let i = 0; i < specs.enumList.length; i++) {
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
<template>
|
||||
<div style="padding: 6px">
|
||||
<!-- 添加或修改通用物模型对话框 -->
|
||||
<el-dialog title="编辑参数" :visible.sync="openEdit" width="900px" append-to-body>
|
||||
<el-dialog :title="$t('template.paramter.038405-0')" :visible.sync="openEdit" width="900px" append-to-body>
|
||||
<div style="margin: -30px 0 30px; background-color: #ddd; height: 1px"></div>
|
||||
<el-row>
|
||||
<el-col :span="12" style="border: 1px solid #ddd; border-radius: 5px; padding: 10px; background-color: #eee">
|
||||
<el-form :model="queryParams" :inline="true" label-width="48px" size="small">
|
||||
<el-form-item label="" prop="templateName">
|
||||
<el-input v-model="queryParams.templateName" placeholder="请输入物模型名称" style="width: 160px" clearable size="mini" @keyup.enter.native="handleQuery" />
|
||||
<el-input v-model="queryParams.templateName" :placeholder="$t('template.paramter.038405-1')" style="width: 160px" clearable size="mini" @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="info" icon="el-icon-search" size="mini" @click="handleQuery" style="padding: 5px">搜索</el-button>
|
||||
<el-button type="info" icon="el-icon-search" size="mini" @click="handleQuery" style="padding: 5px">{{ $t('template.paramter.038405-2') }}</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-link :underline="false" icon="el-icon-info" type="primary" style="margin-left: 20px">单击应用模板</el-link>
|
||||
<el-link :underline="false" icon="el-icon-info" type="primary" style="margin-left: 20px">{{ $t('template.paramter.038405-3') }}</el-link>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table v-loading="loading" :data="templateList" size="mini" @row-click="rowClick" highlight-current-row :border="false" :show-header="false" :row-style="{ backgroundColor: '#eee' }">
|
||||
<el-table-column label="选择" width="30" align="center">
|
||||
<el-table-column :label="$t('template.paramter.038405-4')" width="30" align="center">
|
||||
<template slot-scope="scope">
|
||||
<input type="radio" :checked="scope.row.isSelect" :disabled="scope.row.datatype == 'array' || scope.row.datatype == 'object'" name="template" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="名称" align="left" prop="templateName" />
|
||||
<el-table-column label="标识符" align="left" prop="identifier" />
|
||||
<el-table-column label="数据类型" align="center" prop="datatype" width="60">
|
||||
<el-table-column :label="$t('template.paramter.038405-5')" align="left" prop="templateName" />
|
||||
<el-table-column :label="$t('template.paramter.038405-6')" align="left" prop="identifier" />
|
||||
<el-table-column :label="$t('template.paramter.038405-7')" align="center" prop="datatype" width="60">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.iot_data_type" :value="scope.row.datatype" />
|
||||
</template>
|
||||
@@ -46,97 +46,97 @@
|
||||
|
||||
<el-col :span="11" :offset="1">
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="参数名称" prop="name">
|
||||
<el-input v-model="form.name" placeholder="例如:温度" style="width: 270px" size="small" />
|
||||
<el-form-item :label="$t('template.paramter.038405-8')" prop="name">
|
||||
<el-input v-model="form.name" :placeholder="$t('template.paramter.038405-9')" style="width: 270px" size="small" />
|
||||
</el-form-item>
|
||||
<el-form-item label="参数标识" prop="id">
|
||||
<el-input v-model="form.id" placeholder="例如:temperature" style="width: 270px" size="small"></el-input>
|
||||
<el-form-item :label="$t('template.paramter.038405-10')" prop="id">
|
||||
<el-input v-model="form.id" :placeholder="$t('template.paramter.038405-11')" style="width: 270px" size="small"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="参数排序" prop="order">
|
||||
<el-input-number controls-position="right" v-model="form.order" placeholder="请输入排序" type="number" style="width: 270px" size="small" />
|
||||
<el-form-item :label="$t('template.paramter.038405-12')" prop="order">
|
||||
<el-input-number controls-position="right" v-model="form.order" :placeholder="$t('template.paramter.038405-13')" type="number" style="width: 270px" size="small" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="参数特性" prop="property">
|
||||
<el-checkbox name="isChart" label="图表展示" @change="isChartChange" v-model="form.isChart" :true-label="1" :false-label="0"></el-checkbox>
|
||||
<el-checkbox name="isMonitor" label="实时监测" @change="isMonitorChange" v-model="form.isMonitor" :true-label="1" :false-label="0"></el-checkbox>
|
||||
<el-checkbox name="isReadonly" label="只读数据" @change="isReadonlyChange" v-model="form.isReadonly" :true-label="1" :false-label="0"></el-checkbox>
|
||||
<el-checkbox name="isHistory" label="历史存储" v-model="form.isHistory" :true-label="1" :false-label="0"></el-checkbox>
|
||||
<el-checkbox name="isSharePerm" label="分享权限" v-model="form.isSharePerm" :true-label="1" :false-label="0"></el-checkbox>
|
||||
<el-form-item :label="$t('template.paramter.038405-14')" prop="property">
|
||||
<el-checkbox name="isChart" :label="$t('template.paramter.038405-15')" @change="isChartChange" v-model="form.isChart" :true-label="1" :false-label="0"></el-checkbox>
|
||||
<el-checkbox name="isMonitor" :label="$t('template.paramter.038405-16')" @change="isMonitorChange" v-model="form.isMonitor" :true-label="1" :false-label="0"></el-checkbox>
|
||||
<el-checkbox name="isReadonly" :label="$t('template.paramter.038405-17')" @change="isReadonlyChange" v-model="form.isReadonly" :true-label="1" :false-label="0"></el-checkbox>
|
||||
<el-checkbox name="isHistory" :label="$t('template.paramter.038405-18')" v-model="form.isHistory" :true-label="1" :false-label="0"></el-checkbox>
|
||||
<el-checkbox name="isSharePerm" :label="$t('template.paramter.038405-19')" v-model="form.isSharePerm" :true-label="1" :false-label="0"></el-checkbox>
|
||||
</el-form-item>
|
||||
|
||||
<div style="margin-bottom: 20px; background-color: #ddd; height: 1px"></div>
|
||||
<el-form-item label="数据类型" prop="datatype">
|
||||
<el-select v-model="form.datatype" placeholder="请选择数据类型" style="width: 125px" size="small">
|
||||
<el-option key="integer" label="整数" value="integer"></el-option>
|
||||
<el-option key="decimal" label="小数" value="decimal"></el-option>
|
||||
<el-option key="bool" label="布尔" value="bool" :disabled="form.isChart == 1"></el-option>
|
||||
<el-option key="enum" label="枚举" value="enum" :disabled="form.isChart == 1"></el-option>
|
||||
<el-option key="string" label="字符串" value="string" :disabled="form.isChart == 1"></el-option>
|
||||
<el-form-item :label="$t('template.paramter.038405-20')" prop="datatype">
|
||||
<el-select v-model="form.datatype" :placeholder="$t('template.paramter.038405-21')" style="width: 125px" size="small">
|
||||
<el-option key="integer" :label="$t('template.paramter.038405-22')" value="integer"></el-option>
|
||||
<el-option key="decimal" :label="$t('template.paramter.038405-23')" value="decimal"></el-option>
|
||||
<el-option key="bool" :label="$t('template.paramter.038405-24')" value="bool" :disabled="form.isChart == 1"></el-option>
|
||||
<el-option key="enum" :label="$t('template.paramter.038405-25')" value="enum" :disabled="form.isChart == 1"></el-option>
|
||||
<el-option key="string" :label="$t('template.paramter.038405-26')" value="string" :disabled="form.isChart == 1"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<div v-if="form.datatype == 'integer' || form.datatype == 'decimal'">
|
||||
<el-form-item label="取值范围">
|
||||
<el-form-item :label="$t('template.paramter.038405-27')">
|
||||
<el-row>
|
||||
<el-col :span="10">
|
||||
<el-input v-model="form.specs.min" placeholder="最小值" type="number" size="small" />
|
||||
<el-input v-model="form.specs.min" :placeholder="$t('template.paramter.038405-28')" type="number" size="small" />
|
||||
</el-col>
|
||||
<el-col :span="4" align="center">到</el-col>
|
||||
<el-col :span="4" align="center">{{ $t('template.paramter.038405-29') }}</el-col>
|
||||
<el-col :span="10">
|
||||
<el-input v-model="form.specs.max" placeholder="最大值" type="number" size="small" />
|
||||
<el-input v-model="form.specs.max" :placeholder="$t('template.paramter.038405-30')" type="number" size="small" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
<el-form-item label="单位">
|
||||
<el-input v-model="form.specs.unit" placeholder="例如:℃" style="width: 308px" size="small" />
|
||||
<el-form-item :label="$t('template.paramter.038405-31')">
|
||||
<el-input v-model="form.specs.unit" :placeholder="$t('template.paramter.038405-32')" style="width: 308px" size="small" />
|
||||
</el-form-item>
|
||||
<el-form-item label="步长">
|
||||
<el-input-number controls-position="right" v-model="form.specs.step" placeholder="例如:1" type="number" style="width: 308px" size="small" />
|
||||
<el-form-item :label="$t('template.paramter.038405-33')">
|
||||
<el-input-number controls-position="right" v-model="form.specs.step" :placeholder="$t('template.paramter.038405-34')" type="number" style="width: 308px" size="small" />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div v-if="form.datatype == 'bool'">
|
||||
<el-form-item label="布尔值" prop="">
|
||||
<el-form-item :label="$t('template.paramter.038405-35')" prop="">
|
||||
<el-row style="margin-bottom: 10px">
|
||||
<el-col :span="10">
|
||||
<el-input v-model="form.specs.falseText" placeholder="例如:关闭" size="small" />
|
||||
<el-input v-model="form.specs.falseText" :placeholder="$t('template.paramter.038405-36')" size="small" />
|
||||
</el-col>
|
||||
<el-col :span="10" :offset="1">(0 值对应文本)</el-col>
|
||||
<el-col :span="10" :offset="1">{{ $t('template.paramter.038405-37') }}</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="10">
|
||||
<el-input v-model="form.specs.trueText" placeholder="例如:打开" size="small" />
|
||||
<el-input v-model="form.specs.trueText" :placeholder="$t('template.paramter.038405-38')" size="small" />
|
||||
</el-col>
|
||||
<el-col :span="10" :offset="1">(1 值对应文本)</el-col>
|
||||
<el-col :span="10" :offset="1">{{ $t('template.paramter.038405-39') }}</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div v-if="form.datatype == 'enum'">
|
||||
<el-form-item label="展示方式">
|
||||
<el-select v-model="form.specs.showWay" placeholder="请选择展示方式" style="width: 175px">
|
||||
<el-option key="select" label="下拉框" value="select"></el-option>
|
||||
<el-option key="button" label="按钮" value="button"></el-option>
|
||||
<el-form-item :label="$t('template.paramter.038405-40')">
|
||||
<el-select v-model="form.specs.showWay" :placeholder="$t('template.paramter.038405-41')" style="width: 175px">
|
||||
<el-option key="select" :label="$t('template.paramter.038405-42')" value="select"></el-option>
|
||||
<el-option key="button" :label="$t('template.paramter.038405-43')" value="button"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="枚举项" prop="">
|
||||
<el-form-item :label="$t('template.paramter.038405-44')" prop="">
|
||||
<el-row v-for="(item, index) in form.specs.enumList" :key="'enum' + index" style="margin-bottom: 10px">
|
||||
<el-col :span="8">
|
||||
<el-input v-model="item.value" placeholder="例如:0" size="small" />
|
||||
<el-input v-model="item.value" :placeholder="$t('template.paramter.038405-45')" size="small" />
|
||||
</el-col>
|
||||
<el-col :span="11" :offset="1">
|
||||
<el-input v-model="item.text" placeholder="例如:中速挡位" size="small" />
|
||||
<el-input v-model="item.text" :placeholder="$t('template.paramter.038405-46')" size="small" />
|
||||
</el-col>
|
||||
<el-col :span="3" :offset="1" v-if="index != 0"><a style="color: #f56c6c" @click="removeEnumItem(index)">删除</a></el-col>
|
||||
<el-col :span="3" :offset="1" v-if="index != 0"><a style="color: #f56c6c" @click="removeEnumItem(index)">{{ $t('template.paramter.038405-47') }}</a></el-col>
|
||||
</el-row>
|
||||
<div>
|
||||
+
|
||||
<a style="color: #409eff" @click="addEnumItem()">添加枚举项</a>
|
||||
<a style="color: #409eff" @click="addEnumItem()">{{ $t('template.paramter.038405-48') }}</a>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div v-if="form.datatype == 'string'">
|
||||
<el-form-item label="最大长度" prop="">
|
||||
<el-form-item :label="$t('template.paramter.038405-49')" prop="">
|
||||
<el-row>
|
||||
<el-col :span="10">
|
||||
<el-input v-model="form.specs.maxLength" placeholder="例如:1024" type="number" size="small" />
|
||||
<el-input v-model="form.specs.maxLength" :placeholder="$t('template.paramter.038405-50')" type="number" size="small" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
@@ -146,8 +146,8 @@
|
||||
</el-row>
|
||||
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
<el-button type="primary" @click="submitForm">{{ $t('template.paramter.038405-51') }}</el-button>
|
||||
<el-button @click="cancel">{{ $t('template.paramter.038405-52') }}</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
@@ -226,28 +226,28 @@ export default {
|
||||
name: [
|
||||
{
|
||||
required: true,
|
||||
message: '参数名称不能为空',
|
||||
message: this.$t('template.paramter.038405-53'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
id: [
|
||||
{
|
||||
required: true,
|
||||
message: '参数标识符不能为空',
|
||||
message: this.$t('template.paramter.038405-54'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
order: [
|
||||
{
|
||||
required: true,
|
||||
message: '模型排序不能为空',
|
||||
message: this.$t('template.paramter.038405-55'),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
datatype: [
|
||||
{
|
||||
required: true,
|
||||
message: '数据类型不能为空',
|
||||
message: this.$t('template.paramter.038405-56'),
|
||||
trigger: 'change',
|
||||
},
|
||||
],
|
||||
@@ -400,8 +400,8 @@ export default {
|
||||
} else if (this.form.datatype == 'string') {
|
||||
data.maxLength = Number(this.form.specs.maxLength ? this.form.specs.maxLength : 1024);
|
||||
} else if (this.form.datatype == 'bool') {
|
||||
data.falseText = this.form.specs.falseText ? this.form.specs.falseText : '关闭';
|
||||
data.trueText = this.form.specs.trueText ? this.form.specs.trueText : '打开';
|
||||
data.falseText = this.form.specs.falseText ? this.form.specs.falseText : this.$t('template.paramter.038405-57');
|
||||
data.trueText = this.form.specs.trueText ? this.form.specs.trueText : this.$t('template.paramter.038405-58');
|
||||
} else if (this.form.datatype == 'array') {
|
||||
data.arrayType = this.form.specs.arrayType;
|
||||
} else if (this.form.datatype == 'enum') {
|
||||
@@ -413,11 +413,11 @@ export default {
|
||||
data.enumList = [
|
||||
{
|
||||
value: '0',
|
||||
text: '低',
|
||||
text: this.$t('template.paramter.038405-59'),
|
||||
},
|
||||
{
|
||||
value: '1',
|
||||
text: '高',
|
||||
text: this.$t('template.paramter.038405-60'),
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user