lion 1 year ago
parent c0148efc7a
commit 1905d1f4c8

@ -0,0 +1,60 @@
import request from "@/utils/request";
function customParamsSerializer(params) {
let result = '';
for (let key in params) {
if (params.hasOwnProperty(key)) {
if (Array.isArray(params[key])) {
params[key].forEach((item,index) => {
if(item.key){
result += `${key}[${index}][key]=${item.key}&${key}[${index}][op]=${item.op}&${key}[${index}][value]=${item.value}&`;
}else{
result +=`${key}[${index}]=${item}&`
}
});
} else {
result += `${key}=${params[key]}&`;
}
}
}
return result.slice(0, -1);
}
export function index(params,isLoading = false) {
return request({
method: "get",
url: "/api/admin/config/index",
params,
paramsSerializer: customParamsSerializer,
isLoading
})
}
export function show(params, isLoading = true) {
return request({
method: "get",
url: "/api/admin/config/show",
params,
isLoading
})
}
export function save(data) {
return request({
method: "post",
url: "/api/admin/config/save",
data
})
}
export function destroy(params) {
return request({
method: "get",
url: "/api/admin/config/destroy",
params
})
}

@ -62,6 +62,18 @@
</div>
</div>
</template> -->
<template v-slot:time>
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;">*</span>Release Time
</div>
<div class="xy-table-item-content">
<el-date-picker v-model="form.time" style="width:100%" format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="Please Select">
</el-date-picker>
</div>
</div>
</template>
<template v-slot:keywords>
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
@ -244,6 +256,7 @@
number: '',
title: "",
// is_top:0,
time:'',
keywords:'',
separation: [],
branch: [],
@ -354,7 +367,8 @@
this.form.separation = res.separation?res.separation:[]
this.form.branch = res.branch?res.branch:[]
this.form.topic = res.topic?res.topic:[]
this.form.equipment = res.equipment?res.equipment:[]
this.form.equipment = res.equipment?res.equipment:[],
this.form.time = res.time ? res.time : this.$moment().format('YYYY-MM-DD HH:mm:ss')
if (res.files && res.files.length > 0) {
this.filesList = []
res.files.map(item => {
@ -373,6 +387,8 @@
if (newVal) {
if (this.type === 'editor') {
this.getDetail()
}else{
this.form.time = this.$moment().format('YYYY-MM-DD HH:mm:ss')
}
} else {
this.id = ''

@ -81,6 +81,11 @@
prop: 'title',
label: 'Title',
align: 'left',
},{
prop: 'time',
label: 'Release Time',
align: 'center',
width: 180,
}
]
@ -117,6 +122,8 @@
async getList() {
const res = await index({
...this.select,
sort_name:'time',
sort_type:'desc',
filter:[{
key:'title',
op:'like',

@ -0,0 +1,154 @@
<template>
<div>
<xy-dialog ref="dialog" :width="60" :is-show.sync="isShow" :type="'form'" :title="$route.meta.title" :form="form"
:rules='rules' @submit="submit">
<template v-slot:name>
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;"></span>Sending message type{{form.name}}
</div>
<div class="xy-table-item-content">
</div>
</div>
</template>
<template v-slot:email>
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;"></span>Email
</div>
<div class="xy-table-item-content">
<el-button type="primary" style="margin-bottom:10px" size="small" @click="addEmail">Add</el-button>
<xy-table key="1" style="width:850px" :list="form.email" :isPage="false" :height="350"
:table-item="email_item">
<template v-slot:title>
<el-table-column align='left' label="title" width="340">
<template slot-scope="scope">
<el-input placeholder="Please Input" style="width:100%" v-model="scope.row.title"></el-input>
</template>
</el-table-column>
</template>
<template v-slot:value>
<el-table-column align='left' label="email" width="340">
<template slot-scope="scope">
<el-input placeholder="Please Input" style="width:100%" v-model="scope.row.value"></el-input>
</template>
</el-table-column>
</template>
<template v-slot:btns>
<el-table-column align='center' label="operate" width="170" header-align="center">
<template slot-scope="scope">
<el-popconfirm confirm-button-text="confirm" cancel-button-text="cancel" style="margin:0 10px"
@confirm="delEmail(scope.$index)" title="Are you sure to delete it?">
<el-button type="danger" size="small" slot="reference">delete</el-button>
</el-popconfirm>
</template>
</el-table-column>
</template>
</xy-table>
</div>
</div>
</template>
</xy-dialog>
</div>
</template>
<script>
import {
save,
show
} from "@/api/config/index.js"
export default {
data() {
return {
isShow: false,
id: '',
type: 'add',
email_item: [{
prop: 'title',
lable: 'Title',
}, {
prop: 'value',
lable: 'Value',
}],
form: {
name: '',
email: []
},
rules: {
}
}
},
created() {
},
methods: {
addEmail() {
this.form.email.push({
value: '',
title: ''
})
},
delEmail(index) {
this.form.email.splice(index, 1)
},
submit() {
if (this.id) {
this.form.id = this.id
} else {
this.form.id = ''
}
console.log("this.form", this.form)
// return
save({
...this.form
}).then(res => {
this.$message({
type: 'success',
message: 'Success'
})
this.isShow = false
this.$emit('refresh')
})
},
getDetail() {
show({
id: this.id,
}).then(res => {
this.form = this.base.requestToForm(res, this.form)
this.form.email = res.email ? res.email : []
})
}
},
watch: {
isShow(newVal) {
if (newVal) {
if (this.type === 'editor') {
this.getDetail()
}
} else {
this.id = ''
this.form = {
name: '',
email: []
}
this.$refs['dialog'].reset()
}
},
}
}
</script>
<style scoped lang="scss">
::v-deep .name,
::v-deep .email {
flex-basis: 100%;
}
</style>

@ -0,0 +1,131 @@
<template>
<div>
<div>
<div ref="lxHeader">
<lx-header icon="md-apps" :text="$route.meta.title" style="margin-bottom: 10px; border: 0px; margin-top: 15px">
<div slot="content">
<div class="searchwrap" style="display: flex;align-items: center;">
<!-- <div>
<el-input v-model="select.question" placeholder="Question"></el-input>
</div> -->
<div>
<el-button type="primary" size="small" @click="select.page=1,getList()">search</el-button>
</div>
<div>
<el-button type="primary" size="small" @click="resetSearch">reset</el-button>
</div>
<!-- <div>
<el-button type="primary" size="small" @click="editNote('add')">add</el-button>
</div> -->
</div>
</div>
</lx-header>
</div>
</div>
<xy-table :list="list" :total="total" @pageIndexChange="pageIndexChange"
@pageSizeChange="pageSizeChange" :table-item="table_item">
<template v-slot:btns>
<el-table-column align='center' fixed="right" label="Operate" width="180" header-align="center">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="editNote('editor',scope.row.id)">edit</el-button>
<!-- <el-popconfirm confirm-button-text="confirm" cancel-button-text="cancel" style="margin:0 10px" @confirm="deleteList(scope.row.id)" title="Are you sure to delete it?">
<el-button type="danger" size="small" slot="reference">delete</el-button>
</el-popconfirm> -->
</template>
</el-table-column>
</template>
</xy-table>
<addEmail ref="addEmail" @refresh="getList"></addEmail>
</div>
</template>
<script>
import addEmail from './components/addEmail.vue';
import {
index,
destroy
} from "@/api/config/index.js"
export default {
components: {
addEmail
},
data() {
return {
select: {
question: '',
page: 1,
page_size: 10,
},
total: 0,
list: [],
table_item: [{
type: 'index',
width: 50,
fixed: 'left'
},{
prop: 'name',
label: 'Sending message type',
align: 'left',
}
]
}
},
created() {
this.getList()
},
methods: {
editNote(type, id) {
if (type == 'editor') {
this.$refs.addEmail.id = id
}
this.$refs.addEmail.type = type
this.$refs.addEmail.isShow = true
},
pageIndexChange(e) {
this.select.page = e
this.getList()
},
pageSizeChange(e) {
this.select.page_size = e
this.select.page = 1
this.getList()
},
resetSearch() {
this.select.page = 1
this.select.question = ''
this.getList()
},
async getList() {
const res = await index({
...this.select,
filter:[{
key:'question',
op:'like',
value:this.select.question
}]
})
this.list = res.data
this.total = res.total
},
deleteList(id) {
var that = this;
destroy({
id:id
}).then(response => {
this.$Message.success('Success');
this.getList()
}).catch(error => {
console.log(error)
reject(error)
})
},
}
}
</script>
<style lang="scss" scoped>
</style>

@ -15,9 +15,9 @@
<div>
<el-button type="primary" size="small" @click="resetSearch">reset</el-button>
</div>
<div>
<!-- <div>
<el-button type="primary" size="small" @click="editNote('add')">add</el-button>
</div>
</div> -->
</div>
</div>

@ -9,15 +9,21 @@
<div>
<el-input v-model="select.number" placeholder="Order Number"></el-input>
</div>
<div>
<el-input v-model="select.mobile" placeholder="Mobile"></el-input>
</div>
<div>
<el-input v-model="select.email" placeholder="Email"></el-input>
</div>
<div>
<el-button type="primary" size="small" @click="select.page=1,getList()">search</el-button>
</div>
<div>
<el-button type="primary" size="small" @click="resetSearch">reset</el-button>
</div>
<div>
<el-button type="primary" size="small" @click="exportExcel">export</el-button>
</div>
</div>
<div>
<el-button type="primary" size="small" @click="exportExcel">export</el-button>
</div>
<!-- <div>
<el-button type="primary" size="small" @click="editNote('add')">add</el-button>
@ -82,9 +88,9 @@
import {
index,
destroy
} from "@/api/order/index.js"
import {
download
} from "@/api/order/index.js"
import {
download
} from "@/utils/downloadRequest";
export default {
components: {},
@ -92,13 +98,15 @@
return {
select: {
number: '',
mobile: '',
email: '',
page: 1,
page_size: 10,
},
total: 0,
list: [],
table_item: [{
prop:'index',
table_item: [{
prop: 'index',
type: 'index',
width: 50,
fixed: 'left'
@ -127,6 +135,12 @@
align: 'left',
width: 180
}, {
prop: 'mobile',
label: 'Mobile',
align: 'left',
width: 180
}, {
prop: 'user.country',
label: 'Country',
align: 'left',
@ -160,41 +174,53 @@
resetSearch() {
this.select.page = 1
this.select.number = ''
this.select.mobile = ''
this.select.email = ''
this.getList()
},
exportExcel() {
let _export = {}
this.table_item.map(item => {
if (item.prop === 'index') {
}else {
_export[item.prop] = item.label
}
})
download(
'/api/admin/order/index',
'get', {
export_fields: _export,
show_relation: ['orderProducts.product', 'user'],
filter: [{
key: 'number',
op: 'like',
value: this.select.number
}],
is_export: 1,
page: 1,
page_size: 99999
},
`Orders.xlsx`)
},
exportExcel() {
let _export = {}
this.table_item.map(item => {
if (item.prop === 'index') {
} else {
_export[item.prop] = item.label
}
})
download(
'/api/admin/order/index',
'get', {
export_fields: _export,
show_relation: ['orderProducts.product', 'user'],
email: this.select.email,
filter: [{
key: 'number',
op: 'like',
value: this.select.number
}, {
key: 'mobile',
op: 'like',
value: this.select.mobile
}],
is_export: 1,
page: 1,
page_size: 99999
},
`Orders.xlsx`)
},
async getList() {
const res = await index({
...this.select,
show_relation: ['orderProducts.product', 'user'],
email: this.select.email,
filter: [{
key: 'number',
op: 'like',
value: this.select.number
}, {
key: 'mobile',
op: 'like',
value: this.select.mobile
}]
})
this.list = res.data
@ -224,8 +250,9 @@
height: 50px;
display: flex;
align-items: center;
}
::v-deep .el-table td.el-table__cell div .product-item:last-child{
border-bottom:none;
}
::v-deep .el-table td.el-table__cell div .product-item:last-child {
border-bottom: none;
}
</style>

@ -26,8 +26,8 @@
</div>
<div>
<xy-table :list="list" :total="total" @pageIndexChange="pageIndexChange"
@pageSizeChange="pageSizeChange" :table-item="table_item">
<xy-table :list="list" :total="total" @pageIndexChange="pageIndexChange" @pageSizeChange="pageSizeChange"
:table-item="table_item">
<template v-slot:btns>
<el-table-column align='center' label="Operate" width="180" header-align="center">
<template slot-scope="scope">
@ -59,8 +59,8 @@
data() {
return {
select: {
name: '',
type:1,
name: '',
type: 1,
page: 1,
page_size: 10,
},
@ -75,10 +75,10 @@
label: 'Name',
align: 'left',
}, {
prop: 'sort',
label: 'Sort',
align: 'left',
width: 100
prop: 'time',
label: 'Release Time',
align: 'center',
width: 180,
}]
}
@ -94,31 +94,31 @@
}
this.$refs.addCategory.type = type
this.$refs.addCategory.isShow = true
},
pageIndexChange(e) {
this.select.page = e
this.getList()
},
pageSizeChange(e) {
this.select.page_size = e
this.select.page = 1
this.getList()
},
pageIndexChange(e) {
this.select.page = e
this.getList()
},
pageSizeChange(e) {
this.select.page_size = e
this.select.page = 1
this.getList()
},
async getList() {
const res = await index({
page_size: this.select.page_size,
page: this.select.page,
type:this.select.type,
sort_type: 'ASC',
sort_name: 'sort',
name:this.select.name
page: this.select.page,
type: this.select.type,
sort_name:'time',
sort_type:'desc',
name: this.select.name
})
this.list = res.data
this.total = res.total
},
resetSearch() {
this.select.page = 1
this.select.name = ''
this.select.name = ''
this.select.type = 1
this.getList()
},

@ -12,7 +12,7 @@
</div>
</div>
</template>
<template v-slot:sort>
<!-- <template v-slot:sort>
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;"></span>Sort
@ -22,6 +22,18 @@
style="width: 100%;"></el-input>
</div>
</div>
</template> -->
<template v-slot:time>
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;">*</span>Release Time
</div>
<div class="xy-table-item-content">
<el-date-picker v-model="form.time" style="width:100%" format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="Please Select">
</el-date-picker>
</div>
</div>
</template>
<template v-slot:description>
<div class="xy-table-item">
@ -29,8 +41,8 @@
<span style="color: red;font-weight: bold;padding-right: 4px;"></span>Description
</div>
<div class="xy-table-item-content">
<el-input type="textarea" :rows="5" v-model="form.description"></el-input>
<!-- <my-tinymce v-if="showWang" :height="200" :id="'description'" @input="(e)=>{changeEditor(e,'description')}"
<el-input type="textarea" :rows="5" v-model="form.description"></el-input>
<!-- <my-tinymce v-if="showWang" :height="200" :id="'description'" @input="(e)=>{changeEditor(e,'description')}"
:value="form.description"></my-tinymce> -->
</div>
</div>
@ -125,11 +137,11 @@
id: '',
uploadOther: {
token: ""
},
showWang:false,
},
showWang: false,
action: `${process.env.VUE_APP_UPLOAD_API}`,
pictureList: [],
selectList:[],
pictureList: [],
selectList: [],
detail_item: [{
type: 'index',
width: 50,
@ -147,6 +159,7 @@
form: {
name: '',
sort: 0,
time: '',
description: '',
picture_id: '',
product_category_details: [],
@ -174,24 +187,24 @@
return
}
this.pictureList = fileList
},
// changeEditor(e,type){
// this.form[type] = e
},
// changeEditor(e,type){
// this.form[type] = e
// },
addRow() {
this.form.product_category_details.push({
key: '',
type:'select',
key: '',
type: 'select',
value: []
})
},
delRow(index) {
this.form.product_category_details.splice(index, 1)
},
changeKey(e,row) {
changeKey(e, row) {
row.type = this.productDetailsKeyList[e].type
row.list = this.productDetailsKeyList[e].list
row.value = row.type=='select'?[]:''
row.value = row.type == 'select' ? [] : ''
},
submit() {
if (this.id) {
@ -212,29 +225,29 @@
this.form.picture_id = p_files[0]
} else {
this.form.picture_id = ''
}
if(this.form.product_category_details.length>0){
//
for(var p of this.form.product_category_details){
if(p.value.length<1){
this.$message({
type: 'warning',
message: `${p.key} cannot be empty in the property`
})
return
}
}
//
let filterArr = this.base.findDuplicateKeys(this.form.product_category_details,'key')
if(filterArr.length>0){
this.$message({
type: 'warning',
message: `${filterArr.join("、")} cannot be repeated in the property`
})
return
}
}
}
if (this.form.product_category_details.length > 0) {
//
for (var p of this.form.product_category_details) {
if (p.value.length < 1) {
this.$message({
type: 'warning',
message: `${p.key} cannot be empty in the property`
})
return
}
}
//
let filterArr = this.base.findDuplicateKeys(this.form.product_category_details, 'key')
if (filterArr.length > 0) {
this.$message({
type: 'warning',
message: `${filterArr.join("、")} cannot be repeated in the property`
})
return
}
}
console.log("this.form", this.form)
// return
save({
@ -256,13 +269,14 @@
}).then(res => {
this.form = this.base.requestToForm(res, this.form)
this.description = res.description ? res.description : ''
this.form.type = 1
res.product_category_details.map(item=>{
item.type = this.productDetailsKeyList[item.key]['type']
if(this.productDetailsKeyList[item.key].type==='select'){
item.list = this.productDetailsKeyList[item.key]['list']
}
})
this.form.type = 1
this.form.time = res.time ? res.time : this.$moment().format('YYYY-MM-DD HH:mm:ss')
res.product_category_details.map(item => {
item.type = this.productDetailsKeyList[item.key]['type']
if (this.productDetailsKeyList[item.key].type === 'select') {
item.list = this.productDetailsKeyList[item.key]['list']
}
})
this.form.product_category_details = res.product_category_details
if (res.picture) {
this.pictureList.push({
@ -279,29 +293,32 @@
if (newVal) {
if (this.type === 'editor') {
this.getDetail()
}
for(var k in this.productDetailsKeyList){
if(this.productDetailsKeyList[k]["type"]==='select'){
this.selectList.push(this.productDetailsKeyList[k])
if (this.type === 'add') {
this.form.product_category_details.push({
key:this.productDetailsKeyList[k]["key"],
type:this.productDetailsKeyList[k]["type"],
value:[],
list:this.productDetailsKeyList[k]["list"]
})
}
}
} else {
this.form.time = this.$moment().format('YYYY-MM-DD HH:mm:ss')
}
for (var k in this.productDetailsKeyList) {
if (this.productDetailsKeyList[k]["type"] === 'select') {
this.selectList.push(this.productDetailsKeyList[k])
if (this.type === 'add') {
this.form.product_category_details.push({
key: this.productDetailsKeyList[k]["key"],
type: this.productDetailsKeyList[k]["type"],
value: [],
list: this.productDetailsKeyList[k]["list"]
})
}
}
}
} else {
this.id = ''
this.type = "add"
this.pictureList = []
this.pictureList = []
this.selectList = []
this.form = {
name: '',
sort: 0,
sort: 0,
time:'',
description: '',
picture_id: '',
product_category_details: [],

@ -25,7 +25,7 @@
</div>
</div>
</template>
<template v-slot:sort>
<!-- <template v-slot:sort>
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;"></span>Sort
@ -35,6 +35,18 @@
style="width: 100%;"></el-input>
</div>
</div>
</template> -->
<template v-slot:time>
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;">*</span>Release Time
</div>
<div class="xy-table-item-content">
<el-date-picker v-model="form.time" style="width:100%" format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="Please Select">
</el-date-picker>
</div>
</div>
</template>
<template v-slot:is_recommend>
<div class="xy-table-item">
@ -337,7 +349,8 @@
}],
form: {
product_category_links_by_sub: [],
name: '',
name: '',
time:'',
sort: 0,
is_recommend: 0,
is_sample: 0,
@ -358,7 +371,11 @@
name: [{
required: true,
message: 'Please Input'
}]
}],
time: [{
required: true,
message: 'Please Select'
}],
}
}
},
@ -655,7 +672,7 @@
// this.applicationsList = res.product_category_applications
this.form.is_recommend = res.is_recommend ? res.is_recommend : 0
this.form.is_sample = res.is_sample ? res.is_sample : 0
this.form.time = res.time ? res.time : this.$moment().format('YYYY-MM-DD HH:mm:ss')
this.showWang = true
this.showPacking = true
@ -705,6 +722,8 @@
if (this.type === 'editor') {
this.getDetail()
this.getApplicationList(this.id)
}else{
this.form.time = this.$moment().format('YYYY-MM-DD HH:mm:ss')
}
for (var k in this.productDetailsKeyList) {
if (this.productDetailsKeyList[k]["type"] === 'select') {
@ -734,7 +753,8 @@
this.pcSubList = []
this.form = {
product_category_links_by_sub: [],
name: '',
name: '',
time:'',
sort: 0,
is_recommend: 0,
is_sample: 0,
@ -771,7 +791,8 @@
flex-basis: 100%;
}
::v-deep .sort,
::v-deep .sort,
::v-deep .time,
::v-deep .is_recommend,
::v-deep .is_sample {
flex-basis: 33%;

@ -47,6 +47,18 @@
</el-select>
</div>
</div>
</template>
<template v-slot:time>
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;">*</span>Release Time
</div>
<div class="xy-table-item-content">
<el-date-picker v-model="form.time" style="width:100%" format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="Please Select">
</el-date-picker>
</div>
</div>
</template>
<template v-slot:list_price>
<div class="xy-table-item">
@ -57,6 +69,19 @@
<el-input placeholder="Please Input" style="width:100%" v-model="form.list_price"></el-input>
</div>
</div>
</template>
<template v-slot:is_top>
<div class="xy-table-item">
<div class="xy-table-item-label" style="font-weight: bold">
<span style="color: red;font-weight: bold;padding-right: 4px;"></span>Top
</div>
<div class="xy-table-item-content">
<el-radio-group v-model="form.is_top">
<el-radio :label="1">Yes</el-radio>
<el-radio :label="0">No</el-radio>
</el-radio-group>
</div>
</div>
</template>
<template v-slot:is_visible>
<div class="xy-table-item">
@ -215,8 +240,10 @@
name: "",
number: '',
category_id: [],
phase:[],
list_price: '',
phase:[],
time:'',
list_price: '',
is_top:0,
is_visible: 1,
is_sell: 1,
show_price: 0,
@ -370,7 +397,9 @@
this.form.is_visible = res.is_visible?res.is_visible:0
this.form.is_sell = res.is_sell?res.is_sell:0
this.form.show_price = res.show_price?res.show_price:0
this.form.show_price = res.show_price?res.show_price:0
this.form.is_top = res.is_top?res.is_top:0
this.form.time = res.time ? res.time : this.$moment().format('YYYY-MM-DD HH:mm:ss')
res.product_details.map(item => {
item.type = this.productDetailsKeyList[item.key]['type']
if (this.productDetailsKeyList[item.key].type === 'select') {
@ -399,7 +428,8 @@
if (newVal) {
if (this.type === 'editor') {
this.getDetail()
} else {
} else {
this.form.time = this.$moment().format('YYYY-MM-DD HH:mm:ss')
for (var k in this.productDetailsKeyList) {
if (this.productDetailsKeyList[k]["type"] === 'select') {
this.form.product_details.push({
@ -422,8 +452,10 @@
name: "",
number: '',
category_id: [],
phase:[],
list_price: '',
phase:[],
time:'',
list_price: '',
is_top:0,
is_visible: 1,
is_sell: 1,
show_price: 0,
@ -446,11 +478,11 @@
flex-basis: 100%;
}
::v-deep .is_sell,
::v-deep .is_visible,
::v-deep .show_price {
flex-basis: 50%;
}
// ::v-deep .is_sell,
// ::v-deep .is_visible,
// ::v-deep .show_price {
// flex-basis: 50%;
// }
::v-deep .el-checkbox__input .el-checkbox__inner {
border-radius: 50%;

@ -12,7 +12,7 @@
<div>
<el-input v-model="select.number" placeholder="Part Number"></el-input>
</div>
<div>
<div style="width:300px">
<el-select multiple collapse-tags clearable style="width:100%" filterable v-model="select.category_id" placeholder="Product Phase">
<el-option v-for="(item,index) in categoryList" :key="index" :label="item.name" :value="item.id">
</el-option>
@ -35,6 +35,12 @@
<el-option v-for="(item,index) in webList" :key="index" :label="item.value" :value="item.id">
</el-option>
</el-select>
</div>
<div>
<el-select style="width:100%" clearable v-model="select.is_top" placeholder="Top">
<el-option v-for="(item,index) in valueList" :key="index" :label="item.value" :value="item.id">
</el-option>
</el-select>
</div>
<div>
<el-button type="primary" size="small" @click="select.page=1,getList()">search</el-button>
@ -100,6 +106,7 @@
number:'',
category_id:[],
is_sell:'',
is_top:'',
show_price:'',
is_visible:'',
page: 1,
@ -183,6 +190,12 @@
return 'Need to log in'
}
}
},
{
prop: 'time',
label: 'Release Time',
align: 'center',
width: 180,
}
]
@ -215,6 +228,7 @@
this.select.name = ''
this.select.number = ''
this.select.is_sell = ''
this.select.is_top = ''
this.select.show_price = ''
this.select.is_visible = ''
this.select.category_id = []
@ -223,7 +237,9 @@
async getList() {
const res = await index({
...this.select,
category_id:this.select.category_id,
category_id:this.select.category_id,
sort_name:'time',
sort_type:'desc',
filter: [{
key: 'name',
op: 'like',
@ -236,6 +252,10 @@
key: 'is_sell',
op: 'like',
value: this.select.is_sell
},{
key: 'is_top',
op: 'like',
value: this.select.is_top
},{
key: 'show_price',
op: 'like',
@ -254,8 +274,8 @@
page: 1,
page_size: 999,
type: 2,
sort_name: 'sort',
sort_type: 'ASC'
sort_name: 'time',
sort_type: 'desc'
})
this.categoryList = res.data
},

@ -99,10 +99,10 @@
label: 'Name',
align: 'left',
}, {
prop: 'sort',
label: 'Sort',
align: 'left',
width: 100
prop: 'time',
label: 'Release Time',
align: 'center',
width: 180
}]
}
@ -133,8 +133,8 @@
page_size: this.select.page_size,
page: this.select.page,
type:this.select.type,
sort_type: 'ASC',
sort_name: 'sort',
sort_type: 'desc',
sort_name: 'time',
name:this.select.name,
is_recommend:this.select.is_recommend

@ -78,7 +78,7 @@
align: 'left',
},{
prop: 'date',
label: 'Relase Time',
label: 'Release Time',
align: 'left',
width:180
},{

@ -73,7 +73,7 @@
align: 'left',
},{
prop: 'date',
label: 'Relase Time',
label: 'Release Time',
align: 'left',
width:180
},{

@ -27,7 +27,7 @@
<xy-table :list="list" :total="total" @pageIndexChange="pageIndexChange"
@pageSizeChange="pageSizeChange" :table-item="table_item">
<!-- <template v-slot:created_at>
<el-table-column align='left' label="Relase Time" width="180" header-align="center">
<el-table-column align='left' label="Release Time" width="180" header-align="center">
<template slot-scope="scope">
<div v-if="select.table_name==='technical_newsletters'">
{{scope.row.date?scope.row.date:''}}
@ -92,7 +92,7 @@
align: 'left',
},{
prop: 'date',
label: 'Relase Time',
label: 'Release Time',
align: 'left',
width:180
},{

@ -58,7 +58,7 @@
table_name:'literature_references',
page: 1,
page_size: 10,
sort_name:"date",
sort_name:"year",
sort_type:"DESC",
},
total: 0,
@ -81,12 +81,14 @@
prop: 'link',
label: 'Link',
align: 'left'
},{
prop: 'date',
label: 'Relase Time',
align: 'left',
width:180
},{
},
// {
// prop: 'date',
// label: 'Release Time',
// align: 'left',
// width:180
// },
{
prop: 'admin.name',
label: 'Creator',
align: 'left',

@ -73,7 +73,7 @@
align: 'left',
},{
prop: 'date',
label: 'Relase Time',
label: 'Release Time',
align: 'left',
width:180
},{

@ -73,7 +73,7 @@
align: 'left',
},{
prop: 'date',
label: 'Relase Time',
label: 'Release Time',
align: 'left',
width:180
},{

@ -3,12 +3,12 @@
<!-- 查询配置 -->
<div >
<div ref="lxHeader">
<LxHeader icon="md-apps" text="部门管理" style="margin-bottom: 10px; border: 0px; margin-top: 15px">
<LxHeader icon="md-apps" :text="$route.meta.title" style="margin-bottom: 10px; border: 0px; margin-top: 15px">
<div slot="content"></div>
<slot>
<div>
<Button type="primary" @click="load" style="margin-left: 10px">查询</Button>
<Button type="primary" @click="edit()" style="margin-left: 10px">新增部门</Button>
<!-- <Button type="primary" @click="load" style="margin-left: 10px">查询</Button> -->
<Button type="primary" @click="edit()" style="margin-left: 10px">add department</Button>
</div>
</slot>
</LxHeader>
@ -18,57 +18,57 @@
row-key="id" border default-expand-all :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
<el-table-column type="index" align="center">
</el-table-column>
<el-table-column prop="name" label="部门名称" sortable>
<el-table-column prop="name" label="Name" sortable>
</el-table-column>
<el-table-column prop="manger" label="部门负责人" sortable width="180">
<el-table-column prop="manger" label="Manger" sortable width="180">
<template slot-scope="scope">
<el-tag type="primary" disable-transitions>{{scope.row.manager?scope.row.manager.name:""}}
<el-tag type="primary" disable-transitions>{{scope.row.manager?scope.row.manager.name:""}}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="leader" label="部门分管人" sortable width="180">
<el-table-column prop="leader" label="The Head Of Each Division" sortable width="180">
<template slot-scope="scope">
<el-tag type="success" disable-transitions>{{scope.row.leader?scope.row.leader.name:""}}
<el-tag type="success" disable-transitions>{{scope.row.leader?scope.row.leader.name:""}}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="sortnumber" align="center" label="排序" sortable width="80">
<el-table-column prop="sortnumber" align="center" label="Sort" sortable width="80">
</el-table-column>
<el-table-column fixed="right" label="操作" width="300">
<el-table-column fixed="right" label="Operate" width="300">
<template slot-scope="scope">
<Button type="primary" @click="addchildren(scope.row)" size="small" style="margin-left: 10px;"
ghost>下级部门</Button>
<Button type="error" @click="del(scope.row)" size="small" style="margin-left: 10px;" ghost>删除</Button>
<Button type="primary" @click="edit(scope.row)" size="small" style="margin-left: 10px;" ghost>编辑</Button>
ghost>sub department</Button>
<Button type="error" @click="del(scope.row)" size="small" style="margin-left: 10px;" ghost>delete</Button>
<Button type="primary" @click="edit(scope.row)" size="small" style="margin-left: 10px;" ghost>edit</Button>
</template>
</el-table-column>
</el-table>
</div>
</div>
<el-dialog title="部门编辑" :visible.sync="dialogFormVisible" width="30%">
<el-dialog title="Edit Department" :visible.sync="dialogFormVisible" width="30%">
<el-form :model="form" :rules="rules" ref="form" label-position="right" :label-width="formLabelWidth">
<el-form-item label="上级部门">
<el-form-item label="Parent Department">
<el-input v-model="form.pname" disabled autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="部门名称" prop="name">
<el-form-item label="Name" prop="name">
<el-input v-model="form.name" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="部门负责人" prop="manager">
<el-form-item label="Manager" prop="manager">
<el-autocomplete class="inline-input" v-model="form.manager" :fetch-suggestions="querySearch"
placeholder="请输入部门负责人" :trigger-on-focus="false" @select="handleSelectManager"></el-autocomplete>
placeholder="Please Input" :trigger-on-focus="false" @select="handleSelectManager"></el-autocomplete>
</el-form-item>
<el-form-item label="部门分管人" prop="leader">
<el-form-item label="The Head Of Each Division" prop="leader">
<el-autocomplete class="inline-input" v-model="form.leader" :fetch-suggestions="querySearch"
placeholder="请输入部门分管人" :trigger-on-focus="false" @select="handleSelectLeader"></el-autocomplete>
placeholder="Please Input" :trigger-on-focus="false" @select="handleSelectLeader"></el-autocomplete>
</el-form-item>
<el-form-item label="排序">
<el-form-item label="Sort">
<el-input v-model="form.sortnumber" autocomplete="off"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="resetForm('form')"> </el-button>
<el-button type="primary" @click="submitForm('form')"> </el-button>
<el-button @click="resetForm('form')">cancel</el-button>
<el-button type="primary" @click="submitForm('form')">confirm</el-button>
</div>
</el-dialog>
@ -108,12 +108,12 @@
leader: "",
sortnumber: 0,
icon: "",
pname: "上级部门"
pname: "Parent Department"
},
rules: {
name: [{
required: true,
message: '请输入部门名称',
message: 'Please Input',
trigger: 'blur'
}]
},
@ -187,14 +187,14 @@
if (valid) {
save(that.form).then(response => {
console.log(response)
this.$Message.success('操作成功');
this.$Message.success('Success');
that.dialogFormVisible = false;
that.load();
}).catch(error => {
reject(error)
})
} else {
this.$Message.error('数据校验失败');
this.$Message.error('Error');
return false;
}
});
@ -208,12 +208,12 @@
var that = this;
if (obj) {
this.$Modal.confirm({
title: '确认要删除数据',
title: 'Are you sure to delete it',
onOk: () => {
del({
id: obj.id
}).then(response => {
this.$Message.success('操作成功');
this.$Message.success('Success');
that.load();
}).catch(error => {
console.log(error)

@ -3,12 +3,12 @@
<!-- 查询配置 -->
<div>
<div ref="lxHeader">
<LxHeader icon="md-apps" text="字典数据" style="margin-bottom: 10px; border: 0px; margin-top: 15px">
<LxHeader icon="md-apps" :text="$route.meta.title" style="margin-bottom: 10px; border: 0px; margin-top: 15px">
<div slot="content"></div>
<slot>
<div>
<Button type="primary" @click="load"></Button>
<Button type="primary" @click="edit()" style="margin-left: 10px">新增字典</Button>
<!-- <Button type="primary" @click="load"></Button> -->
<Button type="primary" @click="edit()" style="margin-left: 10px">add parameter</Button>
</div>
</slot>
</LxHeader>
@ -18,105 +18,105 @@
row-key="id" border default-expand-all :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
<el-table-column type="index" align="center">
</el-table-column>
<el-table-column prop="number" label="字典编码" sortable width="180">
<el-table-column prop="number" label="Parameter Encoding" sortable width="180">
</el-table-column>
<el-table-column prop="name" label="字典名称" sortable width="220">
<el-table-column prop="name" label="Parameter Name" sortable width="220">
</el-table-column>
<el-table-column prop="remark" label="备注" sortable>
<el-table-column prop="remark" label="Remark" sortable>
</el-table-column>
<el-table-column prop="sort" align="center" label="排序" sortable width="80">
<el-table-column prop="sort" align="center" label="Sort" sortable width="80">
</el-table-column>
<el-table-column fixed="right" label="操作" width="300">
<el-table-column fixed="right" label="Operate" width="300">
<template slot-scope="scope">
<Button type="primary" @click="addchildren(scope.row)" size="small" style="margin-left: 10px;"
ghost>下一级</Button>
<Button type="error" @click="del(scope.row)" size="small" style="margin-left: 10px;" ghost>删除</Button>
<Button type="primary" @click="edit(scope.row)" size="small" style="margin-left: 10px;" ghost>编辑</Button>
<!-- <Button type="primary" @click="addchildren(scope.row)" size="small" style="margin-left: 10px;"
ghost>next level</Button> -->
<Button type="primary" @click="edit(scope.row)" size="small" style="margin-left: 10px;" ghost>edit</Button>
<Button type="error" @click="del(scope.row)" size="small" style="margin-left: 10px;" ghost>delete</Button>
</template>
</el-table-column>
</el-table>
</div>
</div>
<el-dialog title="字典编辑" :visible.sync="dialogFormVisible" width="80%">
<el-dialog title="Edit Parameter" :visible.sync="dialogFormVisible" width="80%">
<el-form :model="form" :rules="rules" ref="form" label-position="right" :label-width="formLabelWidth">
<el-row :gutter="20">
<el-col :span="6">
<el-form-item label="上级id">
<el-form-item label="Parent Id">
<el-input v-model="form.pid" autocomplete="off"></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="上级">
<el-form-item label="Parent Name">
<el-input v-model="form.pname" disabled autocomplete="off"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="字典编码" prop="number">
<el-form-item label="Parameter Encoding" prop="number">
<el-input v-model="form.number" autocomplete="off"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="字典名称" prop="name">
<el-form-item label="Parameter Name" prop="name">
<el-input v-model="form.name" autocomplete="off"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="是否启用" prop="status">
<el-form-item label="Visible" prop="status">
<el-select v-model="form.status">
<el-option label="启用" value="1"></el-option>
<el-option label="不启用" value="0"></el-option>
<el-option label="Yse" value="1"></el-option>
<el-option label="No" value="0"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="排序">
<el-form-item label="Sort">
<el-input v-model="form.sort" autocomplete="off"></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注">
<el-form-item label="Remark">
<el-input v-model="form.remark" type="textarea" autocomplete="off"></el-input>
</el-form-item>
</el-col>
</el-row>
<div class="table-tree">
<div style="display: flex;justify-content: flex-end;margin-right: 20px;margin-bottom: 10px;">
<Button type="primary" @click="addRow()" size="small" style="margin-left: 10px;" ghost>新增参数</Button>
<Button type="primary" @click="addRow()" size="small" style="margin-left: 10px;" ghost>Add Row</Button>
</div>
<el-table :data="this.form.detail_list" height="400" class="v-table" style="width: 100%;margin-bottom: 20px;">
<el-table-column type="index" align="center">
</el-table-column>
<el-table-column prop="id" align="center" label="主健ID" width="120">
<el-table-column prop="id" align="center" label="ID" width="120">
</el-table-column>
<el-table-column prop="value" label="数据值Text" width="320">
<el-table-column prop="value" label="Value" width="320">
<template slot-scope="scope">
<el-input v-model="scope.row.value" >
</el-input>
</template>
</el-table-column>
<el-table-column prop="sort" align="center" label="排序" width="80">
<el-table-column prop="sort" align="center" label="sort" width="80">
<template slot-scope="scope">
<el-input v-model="scope.row.sort" >
</el-input>
</template>
</el-table-column>
<el-table-column prop="status" align="center" label="状态" width="180">
<el-table-column prop="status" align="center" label="Available" width="180">
<template slot-scope="scope">
<el-switch v-model="scope.row.status" >
</el-switch>
</template>
</el-table-column>
<el-table-column prop="remark" label="备注">
<el-table-column prop="remark" label="Remark">
<template slot-scope="scope">
<el-input v-model="scope.row.remark" >
</el-input>
</template>
</el-table-column>
<el-table-column label="操作" width="100" align="center">
<el-table-column label="Operate" width="100" align="center">
<template slot-scope="scope">
<Button type="error" @click="delRow(scope.row,scope.$index)" size="small" style="margin-left: 10px;"
ghost>删除</Button>
ghost>delete</Button>
</template>
</el-table-column>
</el-table>
@ -124,8 +124,8 @@
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="resetForm('form')"> </el-button>
<el-button type="primary" @click="submitForm('form')"> </el-button>
<el-button @click="resetForm('form')">cancel</el-button>
<el-button type="primary" @click="submitForm('form')">confirm</el-button>
</div>
</el-dialog>
@ -155,7 +155,7 @@
dialogFormVisible: false,
formLabelWidth: "120px",
form: {
pname: "根级别",
pname: "Root Level",
number: "",
id: "",
pid: "0",
@ -174,17 +174,17 @@
rules: {
name: [{
required: true,
message: '请输入菜单名称',
message: 'Please Input',
trigger: 'blur'
}],
url: [{
required: true,
message: '请输入菜单路径',
message: 'Please Input',
trigger: 'blur'
}],
visible: [{
required: true,
message: '请选择是否显示',
message: 'Please Select',
trigger: 'blur'
}],
},
@ -210,11 +210,11 @@
if (obj.id) {
delDetail(obj.id).then(response => {
this.$message.success("操作成功");
this.$message.success("Success");
this.form.detail_list.splice(index, 1);
}).catch(error => {
//reject(error)
this.$message.error("操作失败");
this.$message.error("Error");
})
} else {
this.form.detail_list.splice(index, 1);
@ -284,21 +284,21 @@
if (that.form.id) {
save(that.form).then(response => {
console.log(response)
this.$Message.success('操作成功');
this.$Message.success('Success');
that.dialogFormVisible = false;
that.load();
}).catch(error => {})
} else {
store(that.form).then(response => {
console.log(response)
this.$Message.success('操作成功');
this.$Message.success('Success');
that.dialogFormVisible = false;
that.load();
}).catch(error => {})
}
} else {
this.$Message.error('数据校验失败');
this.$Message.error('Error');
return false;
}
});
@ -312,10 +312,10 @@
var that = this;
if (obj) {
this.$Modal.confirm({
title: '确认要删除数据',
title: 'Are you sure to delete it',
onOk: () => {
del(obj.id).then(response => {
this.$Message.success('操作成功');
this.$Message.success('Success');
that.load();
}).catch(error => {
console.log(error)

@ -5,7 +5,7 @@
<div ref="lxHeader">
<LxHeader
icon="md-apps"
text="菜单管理"
:text="$route.meta.title"
style="margin-bottom: 10px; border: 0px; margin-top: 15px"
>
<div slot="content"></div>
@ -14,13 +14,13 @@
<Input
style="width: 200px; margin-right: 10px"
v-model.number="searchFields.Name"
placeholder="关键字搜索"
placeholder="Keyword"
/>
<Button type="primary" @click="load" style="margin-left: 10px"
>查询</Button
>search</Button
>
<Button type="primary" @click="edit()" style="margin-left: 10px"
>新增菜单</Button
>add menu</Button
>
</div>
</slot>
@ -38,17 +38,17 @@
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
>
<el-table-column type="index" align="center"> </el-table-column>
<el-table-column prop="name" label="菜单" sortable width="180">
<el-table-column prop="name" label="Menu" sortable width="180">
</el-table-column>
<el-table-column prop="url" label="菜单路径" sortable>
<el-table-column prop="url" label="Route" sortable>
</el-table-column>
<el-table-column prop="path" label="路由" sortable> </el-table-column>
<el-table-column prop="icon" label="图标" sortable> </el-table-column>
<el-table-column prop="api_prefix" label="API前缀" sortable>
<el-table-column prop="path" label="Path" sortable> </el-table-column>
<el-table-column prop="icon" label="Icon" sortable> </el-table-column>
<el-table-column prop="api_prefix" label="Api" sortable>
</el-table-column>
<el-table-column prop="sortnumber" label="排序" sortable>
<el-table-column prop="sortnumber" label="Sort" sortable>
</el-table-column>
<el-table-column fixed="right" label="操作" width="300">
<el-table-column fixed="right" label="Operate" width="300">
<template slot-scope="scope">
<Button
type="primary"
@ -56,31 +56,32 @@
size="small"
style="margin-left: 10px"
ghost
>子菜单</Button
>sub menu</Button
>
<Button
type="error"
@click="del(scope.row)"
type="primary"
@click="edit(scope.row)"
size="small"
style="margin-left: 10px"
ghost
>删除</Button
>edit</Button
>
<Button
type="primary"
@click="edit(scope.row)"
type="error"
@click="del(scope.row)"
size="small"
style="margin-left: 10px"
ghost
>编辑</Button
>delete</Button
>
</template>
</el-table-column>
</el-table>
</div>
</div>
<el-dialog title="菜单编辑" :visible.sync="dialogFormVisible" width="60%">
<el-dialog title="Edit Menu" :visible.sync="dialogFormVisible" width="60%">
<el-form
:model="form"
:rules="rules"
@ -90,7 +91,7 @@
>
<el-row>
<el-col :span="12">
<el-form-item label="父菜单">
<el-form-item label="Parent Menu">
<el-input
v-model="form.pname"
disabled
@ -101,7 +102,7 @@
</el-row>
<el-row>
<el-col :span="18">
<el-form-item label="名称" prop="name">
<el-form-item label="Name" prop="name">
<el-input v-model="form.name" autocomplete="off"></el-input>
</el-form-item>
</el-col>
@ -109,21 +110,21 @@
<el-row>
<el-col :span="18">
<el-form-item label="菜单路径" prop="url">
<el-form-item label="Route" prop="url">
<el-input v-model="form.url" autocomplete="off"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="18">
<el-form-item label="路由" prop="path">
<el-form-item label="Path" prop="path">
<el-input v-model="form.path" autocomplete="off"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="18">
<el-form-item label="表单">
<el-form-item label="Customform">
<el-select clearable value-key="id" v-model="selectCustomForm">
<el-option
v-for="item in customForms"
@ -138,13 +139,13 @@
<el-row>
<el-col :span="12">
<el-form-item label="API前缀" prop="api_prefix">
<el-form-item label="Api" prop="api_prefix">
<el-input v-model="form.api_prefix" autocomplete="off"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="排序">
<el-form-item label="Sort">
<el-input v-model="form.sortnumber" autocomplete="off"></el-input>
</el-form-item>
</el-col>
@ -152,15 +153,15 @@
<el-row>
<el-col :span="12">
<el-form-item label="是否显示" prop="visible">
<el-form-item label="Visible" prop="visible">
<el-select v-model="form.visible">
<el-option label="显示" value="1"></el-option>
<el-option label="不显示" value="0"></el-option>
<el-option label="Yes" value="1"></el-option>
<el-option label="No" value="0"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="图标" prop="icon">
<el-form-item label="Icon" prop="icon">
<el-input v-model="form.icon" autocomplete="off"></el-input>
</el-form-item>
</el-col>
@ -174,7 +175,7 @@
justify-content: space-between;
"
>
<el-form-item label="操作权限" prop="auth_node_tags">
<el-form-item label="Operating Authorization" prop="auth_node_tags">
<el-checkbox-group v-model="form.auth_node_tagsArr">
<el-checkbox
:label="item.tag"
@ -186,20 +187,20 @@
</el-checkbox-group>
</el-form-item>
<el-button size="small" @click="dialogOptFormVisible = true" round
>新增</el-button
>add</el-button
>
</div>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="resetForm('form')"> </el-button>
<el-button type="primary" @click="submitForm('form')"> </el-button>
<el-button @click="resetForm('form')">cancel</el-button>
<el-button type="primary" @click="submitForm('form')">confirm</el-button>
</div>
</el-dialog>
<el-dialog
title="操作新增"
title="Add Operate"
:visible.sync="dialogOptFormVisible"
width="30%"
>
@ -210,18 +211,18 @@
label-position="right"
:label-width="formLabelWidth"
>
<el-form-item label="标识" prop="tag">
<el-form-item label="Tag" prop="tag">
<el-input v-model="actionForm.tag" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="名称" prop="name">
<el-form-item label="Name" prop="name">
<el-input v-model="actionForm.name" autocomplete="off"> </el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="resetForm('actionForm')"> </el-button>
<el-button @click="resetForm('actionForm')">cancel</el-button>
<el-button type="primary" @click="saveAuthForm('actionForm')"
></el-button
>confirm</el-button
>
</div>
</el-dialog>
@ -258,7 +259,7 @@ export default {
visible: "1",
sortnumber: 0,
icon: "",
pname: "根菜单",
pname: "Root Menu",
api_prefix: "",
auth_node_tagsArr: [],
auth_node_tags: "",
@ -268,14 +269,14 @@ export default {
tag: [
{
required: true,
message: "请输入标识",
message: "Please Input",
trigger: "blur",
},
],
name: [
{
required: true,
message: "请输入名称",
message: "Please Input",
trigger: "blur",
},
],
@ -284,35 +285,35 @@ export default {
name: [
{
required: true,
message: "请输入菜单名称",
message: "Please Input",
trigger: "blur",
},
],
url: [
{
required: true,
message: "请输入菜单路径",
message: "Please Input",
trigger: "blur",
},
],
path: [
{
required: true,
message: "请输入路由",
message: "Please Input",
trigger: "blur",
},
],
icon: [
{
required: true,
message: "请输入图标",
message: "Please Input",
trigger: "blur",
},
],
visible: [
{
required: true,
message: "请选择是否显示",
message: "Please Select",
trigger: "blur",
},
],
@ -342,7 +343,7 @@ export default {
storeAuth(that.actionForm)
.then((response) => {
console.log(response);
this.$Message.success("操作成功");
this.$Message.success("Success");
that.dialogOptFormVisible = false;
that.loadAuth();
})
@ -350,7 +351,7 @@ export default {
reject(error);
});
} else {
this.$Message.error("数据校验失败");
this.$Message.error("Error");
return false;
}
});
@ -469,7 +470,7 @@ export default {
save(that.form)
.then((response) => {
console.log(response);
this.$Message.success("操作成功");
this.$Message.success("Success");
that.dialogFormVisible = false;
that.load();
})
@ -477,7 +478,7 @@ export default {
reject(error);
});
} else {
this.$Message.error("数据校验失败");
this.$Message.error("Error");
return false;
}
});
@ -492,13 +493,13 @@ export default {
var that = this;
if (obj) {
this.$Modal.confirm({
title: "确认要删除数据?",
title: "Are you sure to delete it?",
onOk: () => {
del({
id: obj.id,
})
.then((response) => {
this.$Message.success("操作成功");
this.$Message.success("Success");
that.load();
})
.catch((error) => {

@ -3,7 +3,7 @@
<!-- 查询配置 -->
<div style="padding: 0px 20px">
<div ref="lxHeader">
<LxHeader icon="md-apps" style="margin-bottom: 10px; border: 0px; margin-top: 15px" text="权限管理">
<LxHeader icon="md-apps" style="margin-bottom: 10px; border: 0px; margin-top: 15px" :text="$route.meta.title">
<div slot="content"></div>
<slot>
</slot>
@ -15,7 +15,7 @@
<el-col :span="3">
<Card class="box-card">
<div slot="title" class="clearfix" style="height: 32px;line-height: 32px;">
<span>角色列表</span>
<span>Role List</span>
</div>
<div :style="{height:height+'px'}" style="overflow: auto;">
<el-scrollbar style="flex: 1">
@ -30,8 +30,8 @@
<el-col :span="21">
<Card class="box-card">
<div slot="title" class="clearfix" style="height: 32px;line-height: 32px;">
<span>菜单列表</span>
<Button style="float: right;" type="primary" @click="savepermission"></Button>
<span>Menu List</span>
<Button style="float: right;" type="primary" @click="savepermission">Save</Button>
</div>
<div :style="{height:height+'px'}" style="overflow: auto;">
@ -234,7 +234,7 @@ export default {
var checkedList = this.$refs.tree.getCheckedNodes()
console.log(checkedList)
if (checkedList.length == 0) {
this.$message.error('请选择菜单')
this.$message.error('Please Select')
return false
}
let data = {}
@ -256,7 +256,7 @@ export default {
data.permission_list = permission
setPermissions(data).then(response => {
console.log(response)
this.$Message.success('操作成功')
this.$Message.success('Success')
that.dialogFormVisible = false
that.load()
}).catch(error => {

@ -3,13 +3,13 @@
<!-- 查询配置 -->
<div style="padding: 0px 20px">
<div ref="lxHeader">
<LxHeader icon="md-apps" text="角色权限" style="margin-bottom: 10px; border: 0px; margin-top: 15px">
<LxHeader icon="md-apps" :text="$route.meta.title" style="margin-bottom: 10px; border: 0px; margin-top: 15px">
<div slot="content"></div>
<slot>
<div>
<Input style="width: 200px; margin-right: 10px" v-model.number="searchFields.Name" placeholder="关键字搜索" />
<Button type="primary" @click="load" style="margin-left: 10px">查询</Button>
<Button type="primary" @click="edit()" style="margin-left: 10px">新增角色</Button>
<Input style="width: 200px; margin-right: 10px" v-model.number="searchFields.Name" placeholder="Keyword" />
<Button type="primary" @click="load" style="margin-left: 10px">search</Button>
<Button type="primary" @click="edit()" style="margin-left: 10px">add role</Button>
</div>
</slot>
</LxHeader>
@ -19,66 +19,66 @@
<el-table :data="tableData" class="v-table" border style="width: 100%">
<el-table-column type="index" align="center">
</el-table-column>
<el-table-column prop="name" label="角色名称" width="180">
<el-table-column prop="name" label="name" width="180">
</el-table-column>
<el-table-column prop="allow_level" align="center" label="数据权限" width="180">
<el-table-column prop="allow_level" align="center" label="Data Authorization" width="180">
<template slot-scope="scope">
<el-tag v-if="scope.row.allow_level==0"></el-tag>
<el-tag v-else-if="scope.row.allow_level==1">部门</el-tag>
<el-tag v-else-if="scope.row.allow_level==2">私有</el-tag>
<el-tag v-if="scope.row.allow_level==0">All</el-tag>
<el-tag v-else-if="scope.row.allow_level==1">Department</el-tag>
<el-tag v-else-if="scope.row.allow_level==2">Private</el-tag>
</template>
</el-table-column>
<el-table-column prop="address" label="说明">
<el-table-column prop="address" label="Explain">
</el-table-column>
<el-table-column fixed="right" label="操作" width="300">
<el-table-column fixed="right" label="Operate" width="300">
<template slot-scope="scope">
<Button ghost size="small" @click="edit(scope.row)" type="primary">编辑</Button>
<Button ghost size="small" style="margin-left: 10px;" @click="set(scope.row)" type="primary">设置权限</Button>
<Button @click="del(scope.row)" type="error" ghost size="small" style="margin-left: 10px;">删除</Button>
<Button ghost size="small" @click="edit(scope.row)" type="primary">edit</Button>
<Button ghost size="small" style="margin-left: 10px;" @click="set(scope.row)" type="primary">set authorization</Button>
<Button @click="del(scope.row)" type="error" ghost size="small" style="margin-left: 10px;">delete</Button>
</template>
</el-table-column>
</el-table>
</div>
<el-dialog title="角色编辑" :visible.sync="dialogFormVisible" width="30%">
<el-dialog title="Edit Role" :visible.sync="dialogFormVisible" width="30%">
<el-form :model="form" ref="form" :rules="rules" label-position="right" :label-width="formLabelWidth">
<el-form-item label="角色名称" prop="name">
<el-form-item label="Name" prop="name">
<el-input v-model="form.name" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="数据权限" prop="allow_level">
<el-form-item label="Data Authorization" prop="allow_level">
<el-radio-group v-model="form.allow_level">
<el-radio :label="0">所有</el-radio>
<el-radio :label="1">部门</el-radio>
<el-radio :label="2">私有</el-radio>
<el-radio :label="0">All</el-radio>
<el-radio :label="1">Department</el-radio>
<el-radio :label="2">Private</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="排序">
<el-form-item label="Sort">
<el-input v-model="form.sortnumber" autocomplete="off"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="resetForm('form')"> </el-button>
<el-button type="primary" @click="submitForm('form')"> </el-button>
<el-button @click="resetForm('form')">cancel</el-button>
<el-button type="primary" @click="submitForm('form')">confirm</el-button>
</div>
</el-dialog>
<el-dialog title="权限设置" :visible.sync="dialogSetVisible" width="60%">
<el-dialog title="Set Authorization" :visible.sync="dialogSetVisible" width="60%">
<el-form label-position="right" :label-width="formLabelWidth">
<el-form-item label="角色名称" prop="name">
<el-form-item label="Name" prop="name">
{{setForm.name}}
</el-form-item>
<el-form-item label="角色人员">
<el-transfer filterable :titles="['待选择', '已选择']" :props="{key: 'id',label: 'name'}"
<el-form-item label="Personal Role">
<el-transfer filterable :titles="['select', 'selected']" :props="{key: 'id',label: 'name'}"
:filter-method="filterMethod" :format="{ noChecked: '${total}',hasChecked: '${checked}/${total}' }"
filter-placeholder="请选择人员" v-model="setForm.ids" :data="userdata">
filter-placeholder="please select" v-model="setForm.ids" :data="userdata">
</el-transfer>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogSetVisible=false"> </el-button>
<el-button type="primary" @click="submitSet()"> </el-button>
<el-button @click="dialogSetVisible=false">cancel</el-button>
<el-button type="primary" @click="submitSet()">confirm</el-button>
</div>
</el-dialog>
@ -127,7 +127,7 @@
rules: {
name: [{
required: true,
message: '请输入角色名称',
message: 'Please Input',
trigger: 'blur'
}],
},
@ -187,12 +187,12 @@
submitSet() {
let that = this;
if (that.setForm.ids.length == 0) {
this.$Message.error("请选择人员");
this.$Message.error("Please Select People");
return false;
}
set(that.setForm).then(response => {
this.$Message.success('操作成功');
this.$Message.success('Success');
that.load();
that.dialogSetVisible = false;
}).catch(error => {
@ -203,12 +203,12 @@
var that = this;
if (obj) {
this.$Modal.confirm({
title: '确认要删除数据',
title: 'Are you sure to delete it',
onOk: () => {
del({
id: obj.id
}).then(response => {
this.$Message.success('操作成功');
this.$Message.success('Success');
that.load();
}).catch(error => {
console.log(error)
@ -227,14 +227,14 @@
if (valid) {
save(that.form).then(response => {
console.log(response)
this.$Message.success('操作成功');
this.$Message.success('Success');
that.load();
that.dialogFormVisible = false;
}).catch(error => {
reject(error)
})
} else {
this.$Message.error('数据校验失败');
this.$Message.error('error');
return false;
}
});

@ -3,13 +3,13 @@
<!-- 查询配置 -->
<div>
<div ref="lxHeader">
<LxHeader icon="md-apps" text="用户管理" style="margin-bottom: 10px; border: 0px; margin-top: 15px">
<LxHeader icon="md-apps" :text="$route.meta.title" style="margin-bottom: 10px; border: 0px; margin-top: 15px">
<div slot="content"></div>
<slot>
<div>
<Input style="width: 200px; margin-right: 10px" v-model.number="searchFields.Name" placeholder="关键字搜索" />
<Button type="primary" @click="load" style="margin-left: 10px">查询</Button>
<Button type="primary" @click="edit()" style="margin-left: 10px">新增用户</Button>
<Input style="width: 200px; margin-right: 10px" v-model.number="searchFields.Name" placeholder="Keyword" />
<Button type="primary" @click="load" style="margin-left: 10px">search</Button>
<Button type="primary" @click="edit()" style="margin-left: 10px">add user</Button>
</div>
</slot>
</LxHeader>
@ -19,57 +19,57 @@
<el-table :data="tableData" class="v-table" :height="tableHeight" border style="width: 100%">
<el-table-column type="index" align="center">
</el-table-column>
<el-table-column prop="name" label="用户" width="180">
<el-table-column prop="name" label="Name" width="180">
</el-table-column>
<el-table-column prop="username" label="用户名">
<el-table-column prop="username" label="Account">
</el-table-column>
<el-table-column prop="address" label="角色">
<el-table-column prop="address" label="Role">
<template slot-scope="scope">
<el-tag size="medium" v-for="(item,index) in scope.row.roles" style="margin-right: 10px;">{{ item.name }}
</el-tag>
</template>
</el-table-column>
<el-table-column fixed="right" label="操作" width="300">
<el-table-column fixed="right" label="Operate" width="300">
<template slot-scope="scope">
<el-popover ref="popoverBox" placement="left" width="400" trigger="click">
<div style="margin-bottom: 15px;">选择角色</div>
<div style="margin-bottom: 15px;">select role</div>
<el-checkbox v-model="role.checked" v-for="(role,index) in scope.row.rolelist" :label="role.name"
:key="role.id">
{{role.name}}
</el-checkbox>
<div style="margin-top:15px; display: flex;justify-content: flex-end;">
<Button @click="setrole(scope.row)" type="primary" ghost size="small">确认</Button>
<Button @click="setrole(scope.row)" type="primary" ghost size="small">confirm</Button>
</div>
<Button slot="reference" type="primary" ghost size="small">用户授权</Button>
<Button slot="reference" type="primary" ghost size="small">authorization</Button>
</el-popover>
<Button ghost size="small" @click="edit(scope.row)" type="primary" style="margin-left: 10px;">编辑</Button>
<Button ghost size="small" @click="del(scope.row)" type="error" style="margin-left: 10px;">删除</Button>
<Button ghost size="small" @click="edit(scope.row)" type="primary" style="margin-left: 10px;">edit</Button>
<Button ghost size="small" @click="del(scope.row)" type="error" style="margin-left: 10px;">delete</Button>
</template>
</el-table-column>
</el-table>
</div>
<el-dialog title="用户编辑" :visible.sync="dialogFormVisible" width="30%">
<el-dialog title="Edit User" :visible.sync="dialogFormVisible" width="30%">
<el-form :model="form" :rules="rules" ref="form" label-position="right" :label-width="formLabelWidth">
<el-form-item label="姓名" prop="name">
<el-form-item label="Name" prop="name">
<el-input v-model="form.name" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="用户名" prop="username">
<el-form-item label="Account" prop="username">
<el-input v-model="form.username" :readonly="userNameStatus ? false : 'readonly'" autocomplete="off">
</el-input>
</el-form-item>
<el-form-item label="密码" prop="password">
<el-form-item label="Password" prop="password">
<el-input v-model="form.password" type="password" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="部门" prop="department_id">
<el-form-item label="Department" prop="department_id">
<el-select v-model="form.department_id">
<el-option v-for="item in departmentList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="resetForm('form')"> </el-button>
<el-button type="primary" @click="submitForm('form')"> </el-button>
<el-button @click="resetForm('form')">cancel</el-button>
<el-button type="primary" @click="submitForm('form')">confirm</el-button>
</div>
</el-dialog>
</div>
@ -120,19 +120,19 @@
rules: {
name: [{
required: true,
message: '请输入姓名',
message: 'Please Input',
trigger: 'blur'
}
],
username: [{
required: true,
message: '请输入用户名',
message: 'Please Input',
trigger: 'blur'
}
],
password: [{
required: true,
message: '请输入密码',
message: 'Please Input',
trigger: 'blur',
}]
},
@ -204,12 +204,12 @@
var that = this;
if (obj) {
this.$Modal.confirm({
title: '确认要删除数据',
title: 'Are you sure to delete it',
onOk: () => {
del({
id: obj.id
}).then(response => {
this.$Message.success('操作成功');
this.$Message.success('Success');
that.load();
}).catch(error => {
console.log(error)
@ -239,14 +239,14 @@
if (valid) {
save(that.form).then(response => {
//console.log(response)
this.$Message.success('操作成功');
this.$Message.success('Success');
that.load();
that.dialogFormVisible = false;
}).catch(error => {
//reject(error)
})
} else {
this.$Message.error('数据校验失败');
this.$Message.error('Error');
console.log('error submit!!');
return false;
}
@ -265,7 +265,7 @@
return p.checked;
}).length;
if (len == 0) {
this.$message.error("请选择角色");
this.$message.error("Please select role");
return false;
}
var arr = [];
@ -278,7 +278,7 @@
role_id: arr,
id: id
}).then(response => {
this.$Message.success('操作成功');
this.$Message.success('Success');
that.load();
document.body.click();
}).catch(error => {

@ -25,7 +25,7 @@ module.exports = {
* Detail: https://cli.vuejs.org/config/#publicpath
*/
publicPath: process.env.ENV === 'staging' ? '/admin_test' : '/admin',
outputDir: '/Users/mac/Documents/朗业/2024/s-美国赛分/saifen/public/admin',
outputDir: '/Users/mac/Documents/朗业/2024/s-美国赛分/saifen/public/admin_test',
assetsDir: 'static',
css: {
loaderOptions: { // 向 CSS 相关的 loader 传递选项

Loading…
Cancel
Save