@@ -9952,6 +10057,62 @@
+ -
+
+
icon-xianxing-password
+ #icon-xianxing-password
+
+
+ -
+
+
icon-xianxing-link
+ #icon-xianxing-link
+
+
+ -
+
+
itsm-oneclick download
+ #a-itsm-oneclickdownload
+
+
+ -
+
+
itsm-package download
+ #a-itsm-packagedownload
+
+
+ -
+
+
weixin
+ #a-Frame4
+
+
+ -
+
+
itsm-again
+ #itsm-again
+
+
+ -
+
+
itsm-next
+ #itsm-next
+
+
-
@@ -97,6 +97,7 @@
diff --git a/cmdb-ui/src/modules/cmdb/views/ci/modules/CreateInstanceForm.vue b/cmdb-ui/src/modules/cmdb/views/ci/modules/CreateInstanceForm.vue
index bc9750d..aedfeca 100644
--- a/cmdb-ui/src/modules/cmdb/views/ci/modules/CreateInstanceForm.vue
+++ b/cmdb-ui/src/modules/cmdb/views/ci/modules/CreateInstanceForm.vue
@@ -1,359 +1,377 @@
-
-
-
-
-
-
-
-
- 模型关系
-
-
-
-
-
-
-
- {{ attr.alias || attr.name }}
-
-
-
-
-
-
-
-
-
-
-
-
- 可根据需要修改字段,当值为空时,则该字段置空
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ choice[0] }}
-
-
-
-
-
- handleFocusInput(e, list)"
- v-decorator="[list.name, { rules: [{ required: false }] }]"
- />
-
-
-
-
-
-
-
-
-
-
- 新增修改字段
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+ 模型关系
+
+
+
+
+
+
+
+ {{ attr.alias || attr.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+ 可根据需要修改字段,当值为空时,则该字段置空
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ choice[0] }}
+
+
+
+
+
+ handleFocusInput(e, list)"
+ v-decorator="[list.name, { rules: [{ required: false }] }]"
+ />
+
+
+
+
+
+
+
+
+
+
+ 新增修改字段
+
+
+
+
+
+
+
+
+
diff --git a/cmdb-ui/src/modules/cmdb/views/ci/modules/MetadataDrawer.vue b/cmdb-ui/src/modules/cmdb/views/ci/modules/MetadataDrawer.vue
index 1adc06b..4597ac1 100644
--- a/cmdb-ui/src/modules/cmdb/views/ci/modules/MetadataDrawer.vue
+++ b/cmdb-ui/src/modules/cmdb/views/ci/modules/MetadataDrawer.vue
@@ -1,215 +1,225 @@
-
- {
- visible = false
- }
- "
- title="属性说明"
- width="72%"
- :bodyStyle="{ height: '100vh' }"
- >
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ {
+ visible = false
+ }
+ "
+ title="属性说明"
+ width="72%"
+ :bodyStyle="{ height: '100vh' }"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/cmdb-ui/src/modules/cmdb/views/ci/modules/ciDetailAttrContent.vue b/cmdb-ui/src/modules/cmdb/views/ci/modules/ciDetailAttrContent.vue
index 64dc679..2efb9e1 100644
--- a/cmdb-ui/src/modules/cmdb/views/ci/modules/ciDetailAttrContent.vue
+++ b/cmdb-ui/src/modules/cmdb/views/ci/modules/ciDetailAttrContent.vue
@@ -1,234 +1,299 @@
-
-
-
- {{ JSON.stringify(ci[attr.name] || {}) }}
-
-
-
-
- {{ value }}
-
-
-
- {{ ci[attr.name] }}
-
-
- {{ getName(ci[attr.name]) }}
-
-
-
-
-
-
-
-
- {{ choice[0] }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ {{ JSON.stringify(ci[attr.name] || {}) }}
+
+
+
+
+
+ {{ value }}
+
+
+
+
+ {{ ci[attr.name] }}
+
+
+ {{ getName(ci[attr.name]) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ choice[0] }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/cmdb-ui/src/modules/cmdb/views/ci_types/attributeCard.vue b/cmdb-ui/src/modules/cmdb/views/ci_types/attributeCard.vue
index ab7144e..fb2a9b9 100644
--- a/cmdb-ui/src/modules/cmdb/views/ci_types/attributeCard.vue
+++ b/cmdb-ui/src/modules/cmdb/views/ci_types/attributeCard.vue
@@ -1,280 +1,274 @@
-
-
-
-
-
-
-
-
- {{ property.alias || property.name }}
-
-
{{ valueTypeMap[property.value_type] }}
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+ {{ property.alias || property.name }}
+
+
密码
+
链接
+
{{ valueTypeMap[property.value_type] }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/cmdb-ui/src/modules/cmdb/views/ci_types/attributeEditForm.vue b/cmdb-ui/src/modules/cmdb/views/ci_types/attributeEditForm.vue
index 38741a6..c650e91 100644
--- a/cmdb-ui/src/modules/cmdb/views/ci_types/attributeEditForm.vue
+++ b/cmdb-ui/src/modules/cmdb/views/ci_types/attributeEditForm.vue
@@ -84,7 +84,12 @@
@@ -148,13 +153,13 @@
label="必须"
>
onChange(checked, 'is_required')"
name="is_required"
v-decorator="['is_required', { rules: [], valuePropName: 'checked' }]"
/>
-
+
-
+
onChange(checked, 'is_sortable')"
name="is_sortable"
v-decorator="['is_sortable', { rules: [], valuePropName: 'checked' }]"
/>
-
+
-
-
- onChange(checked, 'is_password')"
- name="is_password"
- v-decorator="['is_password', { rules: [], valuePropName: 'checked' }]"
- />
-
-
-
-
- onChange(checked, 'is_link')"
- name="is_link"
- v-decorator="['is_link', { rules: [], valuePropName: 'checked' }]"
- />
-
-
-
高级设置
@@ -307,12 +287,17 @@
-
+
-
+
-
+
onChange(checked, 'is_computed')"
- name="is_password"
+ name="is_computed"
v-decorator="['is_computed', { rules: [], valuePropName: 'checked' }]"
/>
-
-
+
+
+
+ 表达式
+
+
+
+ 代码
+
+
+
+
+ 应用
+
+
+
+
+
+
+
+
+
+
+
diff --git a/cmdb-ui/src/modules/cmdb/views/ci_types/index.vue b/cmdb-ui/src/modules/cmdb/views/ci_types/index.vue
index bdca475..2d4722d 100644
--- a/cmdb-ui/src/modules/cmdb/views/ci_types/index.vue
+++ b/cmdb-ui/src/modules/cmdb/views/ci_types/index.vue
@@ -1,895 +1,895 @@
-
-
-
-
-
-
-
-
-
-
-
-
- {{ g.name || '其他' }}
- ({{ g.ci_types.length }})
-
-
-
- 在该组中新增CI模型
-
-
-
-
- 编辑组名称
-
-
-
- 删除该组
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ item.alias || item.name }}
- {{ item.name }}
-
-
-
-
-
-
-
-
- {{ item.alias || item.name }}
- {{ item.name }}
-
-
-
- 找不到想要的?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ g.name || '其他' }}
+ ({{ g.ci_types.length }})
+
+
+
+ 在该组中新增CI模型
+
+
+
+
+ 编辑组名称
+
+
+
+ 删除该组
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.alias || item.name }}
+ {{ item.name }}
+
+
+
+
+
+
+
+
+ {{ item.alias || item.name }}
+ {{ item.name }}
+
+
+
+ 找不到想要的?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/cmdb-ui/src/modules/cmdb/views/ci_types/preValueArea.vue b/cmdb-ui/src/modules/cmdb/views/ci_types/preValueArea.vue
index da7ae25..c47d19c 100644
--- a/cmdb-ui/src/modules/cmdb/views/ci_types/preValueArea.vue
+++ b/cmdb-ui/src/modules/cmdb/views/ci_types/preValueArea.vue
@@ -1,5 +1,11 @@
-
+
定义
@@ -170,6 +176,15 @@
+
+ 脚本
+
+
+
@@ -184,14 +199,22 @@ import { getCITypeGroups } from '../../api/ciTypeGroup'
import { getCITypeCommonAttributesByTypeIds } from '../../api/CITypeAttr'
import FilterComp from '@/components/CMDBFilterComp'
+import CustomCodeMirror from '@/components/CustomCodeMirror'
+import 'codemirror/lib/codemirror.css'
+import 'codemirror/theme/monokai.css'
+require('codemirror/mode/python/python.js')
export default {
name: 'PreValueArea',
- components: { draggable, PreValueTag, ColorPicker, Webhook, FilterComp },
+ components: { draggable, PreValueTag, ColorPicker, Webhook, FilterComp, CustomCodeMirror },
props: {
disabled: {
type: Boolean,
default: true,
},
+ canDefineScript: {
+ type: Boolean,
+ default: false,
+ },
},
data() {
return {
@@ -208,6 +231,17 @@ export default {
ciTypeGroup: [],
typeAttrs: [],
filterExp: '',
+ script:
+ 'class ChoiceValue(object):\n @staticmethod\n def values():\n """\n 执行入口, 返回预定义值\n :return: 返回一个列表, 值的类型同属性的类型\n 例如:\n return ["在线", "下线"]\n """\n return []',
+ cmOptions: {
+ lineNumbers: true,
+ mode: 'python',
+ height: '200px',
+ theme: 'monokai',
+ tabSize: 4,
+ lineWrapping: true,
+ readOnly: this.disabled || !this.canDefineScript,
+ },
}
},
watch: {
@@ -281,6 +315,14 @@ export default {
const choice_web_hook = this.$refs.webhook.getParams()
choice_web_hook.ret_key = this.form.ret_key
return { choice_value: [], choice_web_hook, choice_other: null }
+ } else if (this.activeKey === 'script') {
+ return {
+ choice_value: [],
+ choice_web_hook: null,
+ choice_other: {
+ script: this.script,
+ },
+ }
} else {
let choice_other = {}
if (this.choice_other.type_ids && this.choice_other.type_ids.length) {
@@ -302,14 +344,22 @@ export default {
this.form.ret_key = choice_web_hook.ret_key ?? ''
})
} else if (choice_other) {
- this.activeKey = 'choice_other'
- const { type_ids, attr_id, filter } = choice_other
- this.choice_other = { type_ids, attr_id }
- this.filterExp = filter
- if (type_ids && type_ids.length) {
+ if (choice_other.script) {
+ this.activeKey = 'script'
+ this.script = choice_other.script
this.$nextTick(() => {
- this.$refs.filterComp.visibleChange(true, false)
+ this.$refs.codemirror.initCodeMirror(choice_other.script)
})
+ } else {
+ this.activeKey = 'choice_other'
+ const { type_ids, attr_id, filter } = choice_other
+ this.choice_other = { type_ids, attr_id }
+ this.filterExp = filter
+ if (type_ids && type_ids.length) {
+ this.$nextTick(() => {
+ this.$refs.filterComp.visibleChange(true, false)
+ })
+ }
}
} else {
this.valueList = choice_value
@@ -330,6 +380,16 @@ export default {
this.filterExp = ''
}
},
+ changeCodeContent(value) {
+ this.script = value && value.replace('\t', ' ')
+ },
+ changeActiveKey(value) {
+ if (value === 'script') {
+ this.$nextTick(() => {
+ this.$refs.codemirror.initCodeMirror(this.script)
+ })
+ }
+ },
},
}
diff --git a/cmdb-ui/src/modules/cmdb/views/custom_dashboard/chartForm.vue b/cmdb-ui/src/modules/cmdb/views/custom_dashboard/chartForm.vue
index ff2c294..f96c9df 100644
--- a/cmdb-ui/src/modules/cmdb/views/custom_dashboard/chartForm.vue
+++ b/cmdb-ui/src/modules/cmdb/views/custom_dashboard/chartForm.vue
@@ -1,775 +1,778 @@
-
-
-
-
-
-
-
-
-
- {
- resetForm()
- }
- "
- :default-value="1"
- v-model="form.category"
- >
-
- {{ dashboardCategory[key].label }}
-
-
-
-
- {
- resetForm()
- }
- "
- :default-value="1"
- v-model="form.tableCategory"
- >
-
- 计算指标
-
-
- 资源数据
-
-
-
-
-
- {{
- ci_type.alias || ci_type.name
- }}
-
-
-
-
- {{
- ci_type.alias || ci_type.name
- }}
-
-
-
-
- {{
- attr.alias || attr.name
- }}
-
-
-
-
-
- clickLevel2children(e, citype, index + 1)"
- v-for="citype in level2children[key]"
- :key="citype.id"
- :value="citype.id"
- >
- {{ citype.alias || citype.name }}
-
-
-
-
-
-
预览
-
-
-
-
-
-
-
- {{ ciType.name[0].toUpperCase() }}
-
-
{{ form.name }}
-
-
-
-
-
-
-
-
-
-
-
-
图表类型
-
-
数据筛选
-
-
格式
-
-
-
-
-
-
-
-
-
-
-
-
-
- 25
-
-
- 50
-
-
- 75
-
-
- 100
-
-
-
-
-
-
- 堆积柱状图
-
-
- 多系列柱状图
-
-
-
-
-
-
- X轴
-
-
- y轴
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ {
+ resetForm()
+ }
+ "
+ :default-value="1"
+ v-model="form.category"
+ >
+
+ {{ dashboardCategory[key].label }}
+
+
+
+
+ {
+ resetForm()
+ }
+ "
+ :default-value="1"
+ v-model="form.tableCategory"
+ >
+
+ 计算指标
+
+
+ 资源数据
+
+
+
+
+
+ {{
+ ci_type.alias || ci_type.name
+ }}
+
+
+
+
+ {{
+ ci_type.alias || ci_type.name
+ }}
+
+
+
+
+ {{ attr.alias || attr.name }}
+
+
+
+
+
+ clickLevel2children(e, citype, index + 1)"
+ v-for="citype in level2children[key]"
+ :key="citype.id"
+ :value="citype.id"
+ >
+ {{ citype.alias || citype.name }}
+
+
+
+
+
+
预览
+
+
+
+
+
+
+
+ {{ ciType.name[0].toUpperCase() }}
+
+
{{ form.name }}
+
+
+
+
+
+
+
+
+
+
+
+
图表类型
+
+
数据筛选
+
+
格式
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 25
+
+
+ 50
+
+
+ 75
+
+
+ 100
+
+
+
+
+
+
+ 堆积柱状图
+
+
+ 多系列柱状图
+
+
+
+
+
+
+ X轴
+
+
+ y轴
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/cmdb-ui/src/modules/cmdb/views/discovery/editDrawer.vue b/cmdb-ui/src/modules/cmdb/views/discovery/editDrawer.vue
index 6b88a02..0aa2fc0 100644
--- a/cmdb-ui/src/modules/cmdb/views/discovery/editDrawer.vue
+++ b/cmdb-ui/src/modules/cmdb/views/discovery/editDrawer.vue
@@ -1,345 +1,344 @@
-
-
-
-
- 基础设置
-
-
-
-
-
-
-
-
- 默认
- plugin
-
-
-
- 采集设置
-
-
- 新增
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ 基础设置
+
+
+
+
+
+
+
+
+ 默认
+ plugin
+
+
+
+ 采集设置
+
+
+ 新增
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/cmdb-ui/src/modules/cmdb/views/relation_views/index.vue b/cmdb-ui/src/modules/cmdb/views/relation_views/index.vue
index b22e385..99bbb4c 100644
--- a/cmdb-ui/src/modules/cmdb/views/relation_views/index.vue
+++ b/cmdb-ui/src/modules/cmdb/views/relation_views/index.vue
@@ -25,7 +25,7 @@
:expandedKeys="expandedKeys"
>
-
+
-
+
+
{{ row[col.field] }}
- {{ row[col.field] }}
+ {{ row[col.field] }}
@@ -333,7 +344,7 @@ import {
} from '@/modules/cmdb/api/CIRelation'
import { getCITypeAttributesById } from '@/modules/cmdb/api/CITypeAttr'
-import { searchCI2, updateCI, deleteCI } from '@/modules/cmdb/api/ci'
+import { searchCI2, updateCI, deleteCI, searchCI } from '@/modules/cmdb/api/ci'
import { getCITypes } from '../../api/CIType'
import { roleHasPermissionToGrant } from '@/modules/acl/api/permission'
import { searchResourceType } from '@/modules/acl/api/resource'
@@ -347,6 +358,7 @@ import PasswordField from '../../components/passwordField/index.vue'
import PreferenceSearch from '../../components/preferenceSearch/preferenceSearch.vue'
import CMDBGrant from '../../components/cmdbGrant'
import { ops_move_icon as OpsMoveIcon } from '@/core/icons'
+import { getAttrPassword } from '../../api/CITypeAttr'
export default {
name: 'RelationViews',
@@ -407,6 +419,11 @@ export default {
tableDragClassName: [],
resource_type: {},
+
+ initialPasswordValue: {},
+ passwordValue: {},
+ lastEditCiId: null,
+ isContinueCloseEdit: true,
}
},
@@ -890,6 +907,12 @@ export default {
calcColumns() {
const width = document.getElementById('relation-views-right').clientWidth
this.columns = getCITableColumns(this.instanceList, this.preferenceAttrList, width)
+ this.columns.forEach((col) => {
+ if (col.is_password) {
+ this.initialPasswordValue[col.field] = ''
+ this.passwordValue[col.field] = ''
+ }
+ })
this.$nextTick(() => {
this.$refs.xTable.refreshColumn()
})
@@ -1076,15 +1099,47 @@ export default {
}
return _editRender
},
- handleEditActived() {},
+ handleEditActived() {
+ const passwordCol = this.columns.filter((col) => col.is_password)
+ this.$nextTick(() => {
+ const editRecord = this.$refs.xTable.getVxetableRef().getEditRecord()
+ const { row, column } = editRecord
+ if (passwordCol.length && this.lastEditCiId !== row._id) {
+ this.$nextTick(async () => {
+ for (let i = 0; i < passwordCol.length; i++) {
+ await getAttrPassword(row._id, passwordCol[i].attr_id).then((res) => {
+ this.initialPasswordValue[passwordCol[i].field] = res.value
+ this.passwordValue[passwordCol[i].field] = res.value
+ })
+ }
+ this.isContinueCloseEdit = false
+ await this.$refs.xTable.getVxetableRef().clearEdit()
+ this.isContinueCloseEdit = true
+ this.$nextTick(() => {
+ this.$refs.xTable.getVxetableRef().setEditCell(row, column.field)
+ })
+ })
+ }
+ this.lastEditCiId = row._id
+ })
+ },
handleEditClose({ row, rowIndex, column }) {
+ if (!this.isContinueCloseEdit) {
+ return
+ }
const $table = this.$refs['xTable']
const data = {}
this.columns.forEach((item) => {
if (!_.isEqual(row[item.field], this.initialInstanceList[rowIndex][item.field])) {
- data[item.field] = row[item.field] || null
+ data[item.field] = row[item.field] ?? null
}
})
+ Object.keys(this.initialPasswordValue).forEach((key) => {
+ if (this.initialPasswordValue[key] !== this.passwordValue[key]) {
+ data[key] = this.passwordValue[key]
+ }
+ })
+ this.lastEditCiId = null
if (JSON.stringify(data) !== '{}') {
updateCI(row.ci_id || row._id, data)
.then(() => {
@@ -1102,6 +1157,12 @@ export default {
$table.revertData(row)
})
}
+ this.columns.forEach((col) => {
+ if (col.is_password) {
+ this.initialPasswordValue[col.field] = ''
+ this.passwordValue[col.field] = ''
+ }
+ })
},
deleteCI(record) {
const that = this
diff --git a/cmdb-ui/src/modules/cmdb/views/resource_search/index.vue b/cmdb-ui/src/modules/cmdb/views/resource_search/index.vue
index ddcb597..0d644c6 100644
--- a/cmdb-ui/src/modules/cmdb/views/resource_search/index.vue
+++ b/cmdb-ui/src/modules/cmdb/views/resource_search/index.vue
@@ -1,516 +1,529 @@
-
-
-
-
-
-
-
-
-
-
-
- {{ colGroup.label }}
-
-
-
-
-
- {{ JSON.stringify(row[col.field]) }}
- {{ row[col.field] }}
-
-
-
- {{ value }}
-
-
-
- {{ row[col.field] }}
-
-
-
-
-
-
- 加载中...
-
-
![]()
-
暂无数据
-
-
-
-
-
{
- currentPage = page
- loadInstance(sortByTable)
- }
- "
- >
-
- {{ props.value }}条/页
- 全部
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ {{ colGroup.label }}
+
+
+
+
+
+ {{ JSON.stringify(row[col.field]) }}
+ {{ row[col.field] }}
+
+
+
+ {{ value }}
+
+
+
+ {{ row[col.field] }}
+
+
+
+
+
+
+ 加载中...
+
+
![]()
+
暂无数据
+
+
+
+
+
{
+ currentPage = page
+ loadInstance(sortByTable)
+ }
+ "
+ >
+
+ {{ props.value }}条/页
+ 全部
+
+
+
+
+
+
+
+
+
+
diff --git a/cmdb-ui/src/modules/cmdb/views/tree_views/index.vue b/cmdb-ui/src/modules/cmdb/views/tree_views/index.vue
index 592b5d4..3510561 100644
--- a/cmdb-ui/src/modules/cmdb/views/tree_views/index.vue
+++ b/cmdb-ui/src/modules/cmdb/views/tree_views/index.vue
@@ -1,1257 +1,1318 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- cancelSubscribe(e, ciType)">
-
-
-
-
- subscribeSetting(e, ciType)">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 修改
-
- 下载
-
- 删除
- 选取:{{ selectedRowKeys.length }} 项
-
-
-
-
-
-
-
-
-
- {{ col.title }}
-
-
-
-
-
-
-
-
-
- {{ choice[0] }}
-
-
-
-
-
- {{ row[col.field] }}
- {{ row[col.field] }}
-
-
-
-
-
- {{ value }}
-
-
-
- {{ row[col.field] }}
-
-
-
-
-
- 操作
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 加载中...
-
-
![]()
-
暂无数据
-
-
-
- {{ loadTip || '加载中...' }}
-
-
-
-
{
- currentPage = page
- handleLoadInstance({ sortByTable })
- }
- "
- >
-
- {{ props.value }}条/页
- 全部
-
-
-
-
-
-
-
-
{
- reload()
- }
- "
- />
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ cancelSubscribe(e, ciType)">
+
+
+
+
+ subscribeSetting(e, ciType)">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 修改
+
+ 下载
+
+ 删除
+ 选取:{{ selectedRowKeys.length }} 项
+
+
+
+
+
+
+
+
+
+ {{ col.title }}
+
+
+
+
+
+
+
+
+
+
+ {{ choice[0] }}
+
+
+
+
+
+ {{ row[col.field] }}
+ {{ row[col.field] }}
+
+
+
+
+
+ {{ value }}
+
+
+
+ {{ row[col.field] }}
+
+
+
+
+
+ 操作
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 加载中...
+
+
![]()
+
暂无数据
+
+
+
+ {{ loadTip || '加载中...' }}
+
+
+
+
{
+ currentPage = page
+ handleLoadInstance({ sortByTable })
+ }
+ "
+ >
+
+ {{ props.value }}条/页
+ 全部
+
+
+
+
+
+
+
+
{
+ reload()
+ }
+ "
+ />
+
+
+
+
+
+
+
+
+
+
+