parent
80b159d3c0
commit
8ccdce6ad6
@ -0,0 +1,25 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
export function index (params) {
|
||||
return request({
|
||||
url: "/api/backend/department",
|
||||
method: "get",
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
export function save (data) {
|
||||
return request({
|
||||
url: "/api/backend/department/save",
|
||||
method: "post",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function destroy (data) {
|
||||
return request({
|
||||
url: "/api/backend/department/delete",
|
||||
method: "post",
|
||||
data
|
||||
})
|
||||
}
|
||||
@ -0,0 +1,134 @@
|
||||
<template>
|
||||
<el-select :size="size"
|
||||
clearable
|
||||
:popper-append-to-body="popperAppendToBody"
|
||||
:style="{ width: width }"
|
||||
value-key="id"
|
||||
filterable
|
||||
:multiple="multiple"
|
||||
:loading="loading"
|
||||
v-model="myValue"
|
||||
@change="e => $emit('input',e)">
|
||||
<el-option v-for="(item, index) in list"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
let listData = [];
|
||||
import { index } from "@/api/user"
|
||||
export default {
|
||||
props: {
|
||||
popperAppendToBody: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
width: String,
|
||||
multiple: Boolean,
|
||||
size: String,
|
||||
value: {
|
||||
type: [String,Number],
|
||||
default: "",
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
total: 0,
|
||||
loading: false,
|
||||
myValue: "",
|
||||
list: [],
|
||||
// select: {
|
||||
// rows: 20,
|
||||
// page: 1,
|
||||
// keyword: ""
|
||||
// },
|
||||
select: {
|
||||
rows: 9999,
|
||||
page: 1,
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
remoteMethod (query) {
|
||||
if (query !== "") {
|
||||
this.select.keyword = query
|
||||
this.select.page = 1
|
||||
this.list = []
|
||||
this.getList()
|
||||
} else {
|
||||
this.list = []
|
||||
this.select.page = 1
|
||||
this.getList()
|
||||
}
|
||||
},
|
||||
async getList () {
|
||||
if (listData instanceof Array && listData.length > 0) {
|
||||
this.list = listData;
|
||||
} else {
|
||||
this.loading = true;
|
||||
try {
|
||||
const res = await index(this.select);
|
||||
listData = res.data;
|
||||
this.list = res.data;
|
||||
this.total = res.total;
|
||||
|
||||
this.loading = false;
|
||||
} catch (err) {
|
||||
this.loading = false;
|
||||
}
|
||||
}
|
||||
},
|
||||
// async getList () {
|
||||
// if ((this.list.length >= this.total) && this.list.length !== 0) return;
|
||||
//
|
||||
// this.loading = true;
|
||||
// try {
|
||||
// const res = await index(this.select);
|
||||
// this.list = this.list.concat(res.data);
|
||||
// this.total = res.total;
|
||||
// console.log(this.list)
|
||||
//
|
||||
// this.loading = false;
|
||||
// } catch (err) {
|
||||
// this.loading = false;
|
||||
// }
|
||||
// },
|
||||
|
||||
initLoadMore() {
|
||||
this.$nextTick(() => {
|
||||
this.$el.querySelector(".el-scrollbar__wrap").addEventListener("scroll",this.loadListener)
|
||||
})
|
||||
},
|
||||
loadListener(e) {
|
||||
let sign = 0
|
||||
const scrollDistance = e.scrollHeight - e.scrollTop - e.clientHeight
|
||||
if (scrollDistance <= sign) {
|
||||
this.getList()
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {
|
||||
value: {
|
||||
handler: function(newVal) {
|
||||
this.myValue = newVal
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList();
|
||||
//this.initLoadMore();
|
||||
},
|
||||
beforeDestroy() {
|
||||
//this.$el?.querySelector(".el-scrollbar__wrap")?.removeEventListener("scroll",this.loadListener)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
</style>
|
||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 978 B |
|
After Width: | Height: | Size: 493 B |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
@ -0,0 +1,16 @@
|
||||
<template>
|
||||
<router-view />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
methods: {},
|
||||
computed: {}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
</style>
|
||||
@ -1,4 +1,4 @@
|
||||
export function init (store) {
|
||||
store.dispatch('data/getAdmins')
|
||||
store.dispatch('data/getDepartments')
|
||||
//store.dispatch('data/getUsers')
|
||||
//store.dispatch('data/getDepartments')
|
||||
}
|
||||
|
||||
@ -0,0 +1,21 @@
|
||||
const state = {
|
||||
moduleUri: ""
|
||||
}
|
||||
const mutations = {
|
||||
SET_MODULE_URI: (state, uri) => {
|
||||
state.moduleUri = uri
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
const actions = {
|
||||
|
||||
}
|
||||
|
||||
export default {
|
||||
namespaced: true,
|
||||
state,
|
||||
mutations,
|
||||
actions
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,113 @@
|
||||
<template>
|
||||
<div>
|
||||
<vxe-modal :value="isShow"
|
||||
show-footer
|
||||
title="部门"
|
||||
show-confirm-button
|
||||
:width="600"
|
||||
:height="400"
|
||||
esc-closable
|
||||
@input="e => $emit('update:isShow',e)">
|
||||
<el-form ref="elForm" :model="form" :rules="rules" label-position="top" label-width="100">
|
||||
<el-form-item label="部门名称" prop="name" required>
|
||||
<el-input v-model="form.name" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="父级部门" prop="pid">
|
||||
<Treeselect v-model="form.pid"
|
||||
:options="formatList"
|
||||
noChildrenText="无子部门"
|
||||
:normalizer="node => ({
|
||||
id: node.id,
|
||||
label: node.name,
|
||||
children: node.children,
|
||||
isDefaultExpanded: true
|
||||
})"></Treeselect>
|
||||
</el-form-item>
|
||||
<el-form-item label="分管领导" prop="manager_id">
|
||||
<user-picker width="100%" v-model="form.manager_id"></user-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="主要领导" prop="leader_id">
|
||||
<user-picker width="100%" v-model="form.leader_id"></user-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sortnumber">
|
||||
<el-input-number controls-position="right" :precision="0" v-model="form.sortnumber"></el-input-number>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<template #footer>
|
||||
<el-button type="primary" :loading="loading" @click="submit">确认</el-button>
|
||||
</template>
|
||||
</vxe-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import UserPicker from '@/components/UserPicker/index.vue'
|
||||
import { save } from "@/api/department"
|
||||
export default {
|
||||
components: {
|
||||
UserPicker
|
||||
},
|
||||
props: {
|
||||
list: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
isShow: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
form: {
|
||||
name: "",
|
||||
pid: 0,
|
||||
manager_id: "",
|
||||
leader_id: "",
|
||||
sortnumber: 0
|
||||
},
|
||||
rules: {
|
||||
name: [
|
||||
{ required: true, message: "请输入模块名称" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
submit () {
|
||||
this.$refs["elForm"].validate(async valid => {
|
||||
if (valid) {
|
||||
this.loading = true
|
||||
try {
|
||||
await save(this.form)
|
||||
this.$message.success("新增成功")
|
||||
this.$emit('refresh')
|
||||
this.$emit('update:isShow',false)
|
||||
this.loading = false
|
||||
this.$refs["elForm"].resetFields()
|
||||
} catch (err) {
|
||||
this.loading = false
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
formatList() {
|
||||
return [
|
||||
{
|
||||
name: "#根部门",
|
||||
id: 0
|
||||
},
|
||||
...this.list
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
</style>
|
||||
@ -0,0 +1,82 @@
|
||||
<template>
|
||||
<div>
|
||||
<vxe-modal :value="isShow"
|
||||
show-footer
|
||||
title="模块"
|
||||
show-confirm-button
|
||||
:width="600"
|
||||
:height="400"
|
||||
esc-closable
|
||||
@input="e => $emit('update:isShow',e)">
|
||||
<el-form ref="elForm" :model="form" :rules="rules" label-position="top" label-width="100">
|
||||
<el-form-item label="名称" prop="name" required>
|
||||
<el-input v-model="form.title" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="模块" prop="name" required>
|
||||
<el-input v-model="form.name" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sortnumber">
|
||||
<el-input-number controls-position="right" :precision="0" v-model="form.sortnumber"></el-input-number>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<template #footer>
|
||||
<el-button type="primary" :loading="loading" @click="submit">确认</el-button>
|
||||
</template>
|
||||
</vxe-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { save } from "@/api/module"
|
||||
export default {
|
||||
props: {
|
||||
isShow: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
form: {
|
||||
title: "",
|
||||
name: "",
|
||||
sortnumber: 0
|
||||
},
|
||||
rules: {
|
||||
name: [
|
||||
{ required: true, message: "请输入模块" }
|
||||
],
|
||||
title: [
|
||||
{ required: true, message: "请输入名称" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
submit () {
|
||||
this.$refs["elForm"].validate(async valid => {
|
||||
if (valid) {
|
||||
this.loading = true
|
||||
try {
|
||||
await save(this.form)
|
||||
this.$message.success("新增成功")
|
||||
this.$emit('refresh')
|
||||
this.$emit('update:isShow',false)
|
||||
this.loading = false
|
||||
this.$refs["elForm"].resetFields()
|
||||
} catch (err) {
|
||||
this.loading = false
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
computed: {}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
</style>
|
||||
@ -0,0 +1,185 @@
|
||||
<template>
|
||||
<div>
|
||||
<card-container>
|
||||
<vxe-toolbar>
|
||||
<template #buttons>
|
||||
<el-button icon="el-icon-plus" type="primary" size="small" @click="isShowAdd = true">新增</el-button>
|
||||
<el-button icon="el-icon-search" type="primary" plain size="small" @click="getList">搜索</el-button>
|
||||
</template>
|
||||
</vxe-toolbar>
|
||||
<vxe-table
|
||||
stripe
|
||||
style="margin-top: 10px;"
|
||||
ref="table"
|
||||
:loading="loading"
|
||||
keep-source
|
||||
show-overflow
|
||||
:column-config="{ resizable: true }"
|
||||
:edit-rules="validRules"
|
||||
:edit-config="{ trigger: 'manual', mode: 'row', showStatus: true, isHover: true, autoClear: false }"
|
||||
:align="allAlign"
|
||||
:data="tableData">
|
||||
<vxe-column type="seq" width="58" align="center"></vxe-column>
|
||||
<vxe-column field="name" width="160" title="部门名称" :edit-render="{ name: 'input', attrs: { type: 'text'} }"></vxe-column>
|
||||
<vxe-column field="manager_id" width="180" title="分管领导" :edit-render="{}">
|
||||
<template #edit="{ row }">
|
||||
<UserPicker size="small" v-model="row.manager_id"></UserPicker>
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column field="leader_id" width="180" title="主要领导" :edit-render="{}">
|
||||
<template #edit="{ row }">
|
||||
<UserPicker size="small" v-model="row.leader_id"></UserPicker>
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column field="sortnumber" width="80" title="排序" align="center" :edit-render="{ name: 'input', attrs: { type: 'number' } }"></vxe-column>
|
||||
<vxe-column field="operate" title="操作" min-width="220">
|
||||
<template #default="{ row }">
|
||||
<template v-if="isActiveStatus(row)">
|
||||
<el-button size="small" type="primary" @click="saveRowEvent(row)">保存</el-button>
|
||||
<el-button size="small" type="primary" plain @click="cancelRowEvent(row)">取消</el-button>
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-button size="small" type="warning" @click="editRowEvent(row)">编辑</el-button>
|
||||
<el-button size="small" type="danger" @click="destroyRowEvent(row)">删除</el-button>
|
||||
</template>
|
||||
</template>
|
||||
</vxe-column>
|
||||
</vxe-table>
|
||||
|
||||
<p class="total" type="primary">共 {{ total }} 条数据</p>
|
||||
</card-container>
|
||||
|
||||
<AddDepartment ref="AddDepartment" :list="tableData" :is-show.sync="isShowAdd" @refresh="getList"></AddDepartment>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import UserPicker from '@/components/UserPicker/index.vue'
|
||||
import AddDepartment from './components/AddDepartment.vue'
|
||||
import { deepCopy } from "@/utils"
|
||||
import { index, save, destroy } from "@/api/department"
|
||||
export default {
|
||||
components: {
|
||||
AddDepartment,
|
||||
UserPicker
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isShowAdd: false,
|
||||
|
||||
loading: false,
|
||||
total: 0,
|
||||
allAlign: null,
|
||||
tableData: [],
|
||||
validRules: {
|
||||
name: [
|
||||
{ required: true, message: "请输入模块名称" }
|
||||
]
|
||||
},
|
||||
form: {
|
||||
id: "",
|
||||
name: "",
|
||||
manager_id: "",
|
||||
leader_id: "",
|
||||
sortnumber: 0
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
editRowEvent (row) {
|
||||
if (this.$refs['table']) {
|
||||
this.$refs['table'].setEditRow(row)
|
||||
}
|
||||
},
|
||||
cancelRowEvent (row) {
|
||||
if (this.$refs['table']) {
|
||||
this.$refs['table'].clearEdit().then(() => {
|
||||
// 还原行数据
|
||||
this.$refs['table'].revertData(row)
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
async getList () {
|
||||
this.loading = true;
|
||||
try {
|
||||
const res = await index()
|
||||
this.tableData = res;
|
||||
this.total = res.length;
|
||||
this.loading = false;
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
this.loading = false;
|
||||
}
|
||||
},
|
||||
|
||||
async saveRowEvent (row) {
|
||||
try {
|
||||
await this.$confirm("确认保存?","提示",{
|
||||
confirmButtonText: "确认",
|
||||
cancelButtonText: "取消"
|
||||
})
|
||||
await this.$refs['table'].clearEdit()
|
||||
let form = deepCopy(this.form)
|
||||
for (let key in form) {
|
||||
form[key] = row[key]
|
||||
}
|
||||
if (!form.password) {
|
||||
delete form.password
|
||||
}
|
||||
this.loading = true;
|
||||
await save(form)
|
||||
await this.getList();
|
||||
this.loading = false;
|
||||
} catch (err) {
|
||||
this.loading = false;
|
||||
}
|
||||
},
|
||||
async destroyRowEvent (row) {
|
||||
try {
|
||||
await this.$confirm("确认删除?","提示",{
|
||||
confirmButtonText: "确认",
|
||||
cancelButtonText: "取消"
|
||||
})
|
||||
this.loading = true;
|
||||
if (row.id) {
|
||||
await destroy({
|
||||
id: row.id
|
||||
})
|
||||
await this.getList();
|
||||
} else {
|
||||
console.log(row)
|
||||
this.tableData.splice(this.tableData.findIndex(i => i._X_ROW_KEY === row._X_ROW_KEY),1)
|
||||
}
|
||||
this.loading = false;
|
||||
} catch (err) {
|
||||
this.loading = false;
|
||||
}
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
isActiveStatus () {
|
||||
return function (row) {
|
||||
if (this.$refs['table']) {
|
||||
return this.$refs['table'].isEditByRow(row)
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getList()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.total {
|
||||
color: #666;
|
||||
text-align: right;
|
||||
line-height: 3;
|
||||
}
|
||||
::v-deep .el-tag + .el-tag {
|
||||
margin-left: 4px;
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,176 @@
|
||||
<template>
|
||||
<div>
|
||||
<card-container>
|
||||
<vxe-toolbar>
|
||||
<template #buttons>
|
||||
<el-button icon="el-icon-plus" type="primary" size="small" @click="isShowAdd = true">新增</el-button>
|
||||
<el-button icon="el-icon-search" type="primary" plain size="small" @click="getList">搜索</el-button>
|
||||
</template>
|
||||
</vxe-toolbar>
|
||||
<vxe-table
|
||||
stripe
|
||||
style="margin-top: 10px;"
|
||||
ref="table"
|
||||
:loading="loading"
|
||||
keep-source
|
||||
show-overflow
|
||||
:column-config="{ resizable: true }"
|
||||
:edit-rules="validRules"
|
||||
:edit-config="{ trigger: 'manual', mode: 'row', showStatus: true, isHover: true, autoClear: false }"
|
||||
:align="allAlign"
|
||||
:data="tableData">
|
||||
<vxe-column type="seq" width="58" align="center"></vxe-column>
|
||||
<vxe-column field="title" width="160" title="名称" :edit-render="{ name: 'input', attrs: { type: 'text'} }"></vxe-column>
|
||||
<vxe-column field="name" width="160" title="模块" :edit-render="{ name: 'input', attrs: { type: 'text'} }"></vxe-column>
|
||||
<vxe-column field="sortnumber" width="80" title="排序" align="center" :edit-render="{ name: 'input', attrs: { type: 'number' } }"></vxe-column>
|
||||
<vxe-column field="operate" title="操作" min-width="220">
|
||||
<template #default="{ row }">
|
||||
<template v-if="isActiveStatus(row)">
|
||||
<el-button size="small" type="primary" @click="saveRowEvent(row)">保存</el-button>
|
||||
<el-button size="small" type="primary" plain @click="cancelRowEvent(row)">取消</el-button>
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-button size="small" type="warning" @click="editRowEvent(row)">编辑</el-button>
|
||||
<el-button size="small" type="danger" @click="destroyRowEvent(row)">删除</el-button>
|
||||
</template>
|
||||
</template>
|
||||
</vxe-column>
|
||||
</vxe-table>
|
||||
|
||||
<p class="total" type="primary">共 {{ total }} 条数据</p>
|
||||
</card-container>
|
||||
|
||||
<AddModule ref="AddModule" :is-show.sync="isShowAdd" @refresh="getList"></AddModule>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import AddModule from './components/AddModule.vue'
|
||||
import { deepCopy } from "@/utils"
|
||||
import { index, save, destroy } from "@/api/module"
|
||||
export default {
|
||||
components: {
|
||||
AddModule
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isShowAdd: false,
|
||||
|
||||
loading: false,
|
||||
total: 0,
|
||||
allAlign: null,
|
||||
tableData: [],
|
||||
validRules: {
|
||||
name: [
|
||||
{ required: true, message: "请输入模块" }
|
||||
],
|
||||
title: [
|
||||
{ required: true, message: "请输入名称" }
|
||||
]
|
||||
},
|
||||
form: {
|
||||
id: "",
|
||||
title: "",
|
||||
name: "",
|
||||
sortnumber: 0
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
editRowEvent (row) {
|
||||
if (this.$refs['table']) {
|
||||
this.$refs['table'].setEditRow(row)
|
||||
}
|
||||
},
|
||||
cancelRowEvent (row) {
|
||||
if (this.$refs['table']) {
|
||||
this.$refs['table'].clearEdit().then(() => {
|
||||
// 还原行数据
|
||||
this.$refs['table'].revertData(row)
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
async getList () {
|
||||
this.loading = true;
|
||||
try {
|
||||
const res = await index()
|
||||
this.tableData = res.rows;
|
||||
this.total = res.total;
|
||||
this.loading = false;
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
this.loading = false;
|
||||
}
|
||||
},
|
||||
|
||||
async saveRowEvent (row) {
|
||||
try {
|
||||
await this.$confirm("确认保存?","提示",{
|
||||
confirmButtonText: "确认",
|
||||
cancelButtonText: "取消"
|
||||
})
|
||||
await this.$refs['table'].clearEdit()
|
||||
let form = deepCopy(this.form)
|
||||
for (let key in form) {
|
||||
form[key] = row[key]
|
||||
}
|
||||
if (!form.password) {
|
||||
delete form.password
|
||||
}
|
||||
this.loading = true;
|
||||
await save(form)
|
||||
await this.getList();
|
||||
this.loading = false;
|
||||
} catch (err) {
|
||||
this.loading = false;
|
||||
}
|
||||
},
|
||||
async destroyRowEvent (row) {
|
||||
try {
|
||||
await this.$confirm("确认删除?","提示",{
|
||||
confirmButtonText: "确认",
|
||||
cancelButtonText: "取消"
|
||||
})
|
||||
this.loading = true;
|
||||
if (row.id) {
|
||||
await destroy({
|
||||
id: row.id
|
||||
})
|
||||
await this.getList();
|
||||
} else {
|
||||
console.log(row)
|
||||
this.tableData.splice(this.tableData.findIndex(i => i._X_ROW_KEY === row._X_ROW_KEY),1)
|
||||
}
|
||||
this.loading = false;
|
||||
} catch (err) {
|
||||
this.loading = false;
|
||||
}
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
isActiveStatus () {
|
||||
return function (row) {
|
||||
if (this.$refs['table']) {
|
||||
return this.$refs['table'].isEditByRow(row)
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getList()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.total {
|
||||
color: #666;
|
||||
text-align: right;
|
||||
line-height: 3;
|
||||
}
|
||||
::v-deep .el-tag + .el-tag {
|
||||
margin-left: 4px;
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,60 @@
|
||||
<template>
|
||||
<Wujie id="wujie-app"
|
||||
width="100%"
|
||||
height="100%"
|
||||
name="modules"
|
||||
sync
|
||||
:url="module_uri"
|
||||
:props="props">
|
||||
</Wujie>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getToken } from "@/utils/auth"
|
||||
import Wujie from 'wujie-vue2'
|
||||
import { mapGetters } from 'vuex'
|
||||
export default {
|
||||
components: {
|
||||
Wujie
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
props: {
|
||||
auth_token: ""
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {},
|
||||
computed: {
|
||||
...mapGetters(['module_uri'])
|
||||
},
|
||||
watch: {
|
||||
module_uri: {
|
||||
handler:function(newVal) {
|
||||
this.props.auth_token = getToken()
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
||||
},
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
#wujie-app {
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
.app-main:has(#wujie-app) {
|
||||
padding: 0!important;
|
||||
}
|
||||
</style>
|
||||
Loading…
Reference in new issue