Commit 4e4a68c8 authored by 邓学云's avatar 邓学云

123

parent 4259ed83
This diff is collapsed.
......@@ -2276,9 +2276,9 @@
"dev": true
},
"serialize-javascript": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.0.tgz",
"integrity": "sha512-a/mxFfU00QT88umAJQsNWOnUKckhNCqOl028N48e7wFmo2/EHpTo9Wso+iJJCMrQnmFvcjto5RJdAHEvVhcyUQ==",
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz",
"integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==",
"dev": true
},
"slash": {
......@@ -4873,9 +4873,9 @@
"dev": true
},
"serialize-javascript": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.0.tgz",
"integrity": "sha512-a/mxFfU00QT88umAJQsNWOnUKckhNCqOl028N48e7wFmo2/EHpTo9Wso+iJJCMrQnmFvcjto5RJdAHEvVhcyUQ==",
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz",
"integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==",
"dev": true
},
"slash": {
......@@ -8049,9 +8049,9 @@
"dev": true
},
"handlebars": {
"version": "4.5.1",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.1.tgz",
"integrity": "sha512-C29UoFzHe9yM61lOsIlCE5/mQVGrnIOrOq7maQl76L7tYPCgC1og0Ajt6uWnX4ZTxBPnjw+CUvawphwCfJgUnA==",
"version": "4.5.3",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz",
"integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==",
"dev": true,
"requires": {
"neo-async": "^2.6.0",
......@@ -8067,9 +8067,9 @@
"dev": true
},
"uglify-js": {
"version": "3.6.8",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.8.tgz",
"integrity": "sha512-XhHJ3S3ZyMwP8kY1Gkugqx3CJh2C3O0y8NPiSxtm1tyD/pktLAkFZsFGpuNfTZddKDQ/bbDBLAd2YyA1pbi8HQ==",
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.2.tgz",
"integrity": "sha512-uhRwZcANNWVLrxLfNFEdltoPNhECUR3lc+UdJoG9CBpMcSnKyWA94tc3eAujB1GcMY5Uwq8ZMp4qWpxWYDQmaA==",
"dev": true,
"optional": true,
"requires": {
......
import api from './index'
import { axios } from '@/utils/request'
import loginToken from './token'
import homeUrl from './homeURL'
/**
* login func
* parameter: {
* username: '',
* password: '',
* remember_me: true,
* captcha: '12345'
* }
* @param parameter
* @returns {*}
*/
// 获取角色列表
export function getRoleList(parameter) {
return axios({
url: 'authority/authority-roles/authority-role-list',
method: 'get',
params: parameter
})
}
// 添加角色
export function addRole (parameter) {
return axios({
url: 'authority/authority-roles/add-authority-role',
method: 'post',
data: parameter
})
}
// 获取角色详情
export function getRoleDetails (parameter) {
return axios({
url: 'authority/authority-roles/authority-role-detail',
method: 'get',
params: {
'ID':parameter
}
})
}
// 修改角色详情
export function modifyRoleDetails (parameter) {
return axios({
url: 'authority/authority-roles/revise-authority-role',
method: 'put',
data: parameter
})
}
// 获取权限节点
export function getTreeDetails (parameter) {
return axios({
url: 'authority/authority-nodes/role-authorities',
method: 'get',
params: parameter
})
}
// 修改权限节点
export function modifyAuthority (parameter) {
return axios({
url: 'authority/authority-roles/assign-authority-role',
method: 'post',
data: parameter
})
}
/**
* get user 2step code open?
* @param parameter {*}
*/
export function get2step (parameter) {
return axios({
url: api.twoStepCode,
method: 'post',
data: parameter
})
}
\ No newline at end of file
import api from './index'
import { axios } from '@/utils/request'
import loginToken from './token'
import homeUrl from './homeURL'
/**
* login func
* parameter: {
* username: '',
* password: '',
* remember_me: true,
* captcha: '12345'
* }
* @param parameter
* @returns {*}
*/
// 获取配送价格列表
export function getDeliveryList(parameter) {
return axios({
url: 'transport/transport-settings/transport-templates',
method: 'get',
params: parameter
})
}
// 获取配送方式列表
export function getTransportList(parameter) {
return axios({
url: 'transport/transport-methods/get-transport-method',
method: 'get',
params: parameter
})
}
// 获取指定省级列表
export function getProvincialList(parameter) {
return axios({
url: 'transport/transport-settings/get-branches-packaging',
method: 'get',
params: parameter
})
}
// 新增运费模板
export function addDelivery (parameter) {
return axios({
url: 'transport/transport-settings/transport-fee-add',
method: 'post',
data: parameter
})
}
// 获取编辑详情
export function getEditDetails (parameter) {
return axios({
url: 'transport/transport-settings/transport-fee-details',
method: 'get',
params: parameter
})
}
// 获取全部省市
export function getAllCity (parameter) {
return axios({
url: 'common/shop-transport-areas/provinces-city',
method: 'get',
params: parameter
})
}
/**
* get user 2step code open?
* @param parameter {*}
*/
export function get2step (parameter) {
return axios({
url: api.twoStepCode,
method: 'post',
data: parameter
})
}
\ No newline at end of file
......@@ -180,6 +180,14 @@ export function getElecfence(parameter) {
method: 'get',
params: parameter
})
}
// 获取dc列表branch/branches/dc-branch-list
export function getDCList (parameter) {
return axios({
url: 'branch/branches/dc-branch-list',
method: 'get',
params: parameter
})
}
// 获取门店电子围栏详情
export function getElecfenceDetails (parameter) {
......@@ -199,6 +207,40 @@ export function deleteElecfence(id) {
})
}
// 获取门店服务类目列表
// dc仓导出
export function exportDCList (parameter) {
return axios({
url: 'branch/branches/dc-branch-export',
method: 'get',
params: parameter,
responseType: 'arraybuffer'
})
}
// dc仓详情
export function getDCDetails (parameter) {
return axios({
url: 'branch/branches/dc-branch-detail',
method: 'get',
params: parameter
})
}
// DC新增
export function addDCManage (parameter) {
return axios({
url: 'branch/branches/add-branch',
method: 'post',
data: parameter
})
}
// DC编辑
export function modifyDCManage (parameter) {
return axios({
url: 'branch/branches/dc-branch-revise',
method: 'put',
data: parameter
})
}
// 获取门店服务类目管理
export function getScategorymg(parameter) {
console.log(parameter)
// let newParameter = {
......
import { Menu, Icon, Input } from 'ant-design-vue'
const { Item, ItemGroup, SubMenu } = Menu
const { Search } = Input
function TreeProps() {
return {
showLine: PropTypes.bool,
/** 是否支持多选 */
multiple: PropTypes.bool,
/** 是否自动展开父节点 */
autoExpandParent: PropTypes.bool,
/** checkable状态下节点选择完全受控(父子节点选中状态不再关联)*/
checkStrictly: PropTypes.bool,
/** 是否支持选中 */
checkable: PropTypes.bool,
/** 是否禁用树 */
disabled: PropTypes.bool,
/** 默认展开所有树节点 */
defaultExpandAll: PropTypes.bool,
/** 默认展开对应树节点 */
defaultExpandParent: PropTypes.bool,
/** 默认展开指定的树节点 */
defaultExpandedKeys: PropTypes.array,
/** (受控)展开指定的树节点 */
expandedKeys: PropTypes.array,
/** (受控)选中复选框的树节点 */
checkedKeys: PropTypes.oneOfType([
PropTypes.array,
PropTypes.shape({
checked: PropTypes.array,
halfChecked: PropTypes.array,
}).loose,
]),
/** 默认选中复选框的树节点 */
defaultCheckedKeys: PropTypes.array,
/** (受控)设置选中的树节点 */
selectedKeys: PropTypes.array,
/** 默认选中的树节点 */
defaultSelectedKeys: PropTypes.array,
selectable: PropTypes.bool,
/** 展开/收起节点时触发 */
// onExpand: (expandedKeys: string[], info: AntTreeNodeExpandedEvent) => void | PromiseLike<any>,
/** 点击复选框触发 */
// onCheck: (checkedKeys: string[] | { checked: string[]; halfChecked: string[] }, e: AntTreeNodeCheckedEvent) => void,
/** 点击树节点触发 */
// onSelect: (selectedKeys: string[], e: AntTreeNodeSelectedEvent) => void,
/** 单击树节点触发 */
// onClick: (e: React.MouseEvent<HTMLElement>, node: AntTreeNode) => void,
/** 双击树节点触发 */
// onDoubleClick: (e: React.MouseEvent<HTMLElement>, node: AntTreeNode) => void,
/** filter some AntTreeNodes as you need. it should return true */
filterAntTreeNode: PropTypes.func,
/** 异步加载数据 */
loadData: PropTypes.func,
loadedKeys: PropTypes.array,
// onLoaded: (loadedKeys: string[], info: { event: 'load', node: AntTreeNode; }) => void,
/** 响应右键点击 */
// onRightClick: (options: AntTreeNodeMouseEvent) => void,
/** 设置节点可拖拽(IE>8)*/
draggable: PropTypes.bool,
// /** 开始拖拽时调用 */
// onDragStart: (options: AntTreeNodeMouseEvent) => void,
// /** dragenter 触发时调用 */
// onDragEnter: (options: AntTreeNodeMouseEvent) => void,
// /** dragover 触发时调用 */
// onDragOver: (options: AntTreeNodeMouseEvent) => void,
// /** dragleave 触发时调用 */
// onDragLeave: (options: AntTreeNodeMouseEvent) => void,
// /** drop 触发时调用 */
// onDrop: (options: AntTreeNodeMouseEvent) => void,
showIcon: PropTypes.bool,
icon: PropTypes.func,
switcherIcon: PropTypes.any,
prefixCls: PropTypes.string,
filterTreeNode: PropTypes.func,
openAnimation: PropTypes.any,
treeNodes: PropTypes.array,
treeData: PropTypes.array,
/**
* @default{title,key,children}
* 替换treeNode中 title,key,children字段为treeData中对应的字段
*/
replaceFields: PropTypes.object,
};
}
export { TreeProps };
export default {
name: 'Tree',
model: {
prop: 'checkedKeys',
event: 'check',
},
props: initDefaultProps(TreeProps(), {
checkable: false,
showIcon: false,
openAnimation: {
on: animation,
props: { appear: null },
},
}),
inject: {
configProvider: { default: () => ConfigConsumerProps },
},
created() {
warning(
!('treeNodes' in getOptionProps(this)),
'`treeNodes` is deprecated. please use treeData instead.',
);
},
TreeNode,
methods: {
renderSwitcherIcon(prefixCls, switcherIcon, { isLeaf, expanded, loading }) {
const { showLine } = this.$props;
if (loading) {
return <Icon type="loading" class={`${prefixCls}-switcher-loading-icon`} />;
}
if (showLine) {
if (isLeaf) {
return <Icon type="file" class={`${prefixCls}-switcher-line-icon`} />;
}
return (
<Icon
type={expanded ? 'minus-square' : 'plus-square'}
class={`${prefixCls}-switcher-line-icon`}
theme="outlined"
/>
);
} else {
const switcherCls = `${prefixCls}-switcher-icon`;
if (isLeaf) {
return null;
} else if (switcherIcon) {
const switcherOriginCls = getClass(switcherIcon[0]);
return cloneElement(switcherIcon, {
class: {
[switcherCls]: true,
},
});
} else {
return <Icon type="caret-down" class={`${prefixCls}-switcher-icon`} theme="filled" />;
}
}
},
updateTreeData(treeData) {
const { $slots, $scopedSlots } = this;
const defaultFields = { children: 'children', title: 'title', key: 'key' };
const replaceFields = { ...defaultFields, ...this.$props.replaceFields };
return treeData.map(item => {
const key = item[replaceFields.key];
const children = item[replaceFields.children];
const {
on = {},
slots = {},
scopedSlots = {},
class: cls,
style,
...restProps
} = item;
const treeNodeProps = {
...restProps,
icon:
$slots[slots.icon] ||
($scopedSlots[scopedSlots.icon] && $scopedSlots[scopedSlots.icon]) ||
restProps.icon,
title:
$slots[slots.title] ||
($scopedSlots[scopedSlots.title] && $scopedSlots[scopedSlots.title](item)) ||
restProps[replaceFields.title],
dataRef: item,
on,
key,
class: cls,
style,
};
if (children) {
return { ...treeNodeProps, children: this.updateTreeData(children) };
}
return treeNodeProps;
});
},
},
render() {
const props = getOptionProps(this);
const { prefixCls: customizePrefixCls, showIcon, treeNodes } = props;
const getPrefixCls = this.configProvider.getPrefixCls;
const prefixCls = getPrefixCls('tree', customizePrefixCls);
const switcherIcon = getComponentFromProp(this, 'switcherIcon');
const checkable = props.checkable;
let treeData = props.treeData || treeNodes;
if (treeData) {
treeData = this.updateTreeData(treeData);
}
const vcTreeProps = {
props: {
...props,
prefixCls,
checkable: checkable ? <span class={`${prefixCls}-checkbox-inner`} /> : checkable,
children: filterEmpty(this.$slots.default || []),
__propsSymbol__: Symbol(),
switcherIcon: nodeProps => this.renderSwitcherIcon(prefixCls, switcherIcon, nodeProps),
},
on: this.$listeners,
ref: 'tree',
class: !showIcon && `${prefixCls}-icon-hide`,
};
if (treeData) {
vcTreeProps.props.treeData = treeData;
}
return <VcTree {...vcTreeProps} />;
},
};
\ No newline at end of file
......@@ -256,7 +256,7 @@ export default {
return (
<a-alert showIcon={true} style="margin-bottom: 16px">
<template slot="message">
<span style="margin-right: 12px">已选择: <a style="font-weight: 600">{this.selectedRows.length}</a></span>
<span style="margin-right: 12px">已选择: <a style="font-weight: 600">{this.rowSelection.selectedRowKeys.length}</a></span>
{needTotalItems}
{clearItem}
</template>
......
......@@ -18,7 +18,8 @@ import Ellipsis from '@/components/Ellipsis'
import FooterToolbar from '@/components/FooterToolbar'
import NumberInfo from '@/components/NumberInfo'
import DescriptionList from '@/components/DescriptionList'
import Tree from '@/components/Tree/Tree'
// import Tree from '@/components/Tree/Tree'
import Tree from '@/components/ATree/atree'
import Trend from '@/components/Trend'
import STable from '@/components/Table'
import MultiTab from '@/components/MultiTab'
......
......@@ -9,13 +9,14 @@ export const asyncRouterMap = [
name: 'index',
component: BasicLayout,
meta: { title: '首页' },
redirect: '/dashboard/workplace',
redirect: '/storedc/storeManage',
children: [
// 用户员工
{
path: '/userstaff',
redirect: '/userstaff/employeeim',
component: PageView,
meta: { title: '用户&员工', icon: 'table', permission: [ 'table' ] },
meta: { title: '用户&员工', icon: 'user', permission: [ 'table' ] },
children: [
{
path: '/userstaff/eminforman',
......@@ -76,7 +77,7 @@ export const asyncRouterMap = [
name: 'storedc',
redirect: '/storedc/Electronicfence',
component: PageView,
meta: { title: '门店&DC', keepAlive: true, icon: bxAnaalyse, permission: ['table'] },
meta: { title: '门店&DC', keepAlive: true, icon: 'shop', permission: ['table'] },
children: [
{
path: '/storedc/storeManage',
......@@ -97,6 +98,13 @@ export const asyncRouterMap = [
component: () => import('@/views/storedc/dcManage'),
meta: { title: 'DC仓管理', keepAlive: false, permission: ['table'] }
},
{
path: '/storedc/dcManage_details',
name: 'dcManage_details',
hidden: true,
component: () => import('@/views/storedc/details/dcManage_details'),
meta: { title: 'DC仓管理编辑', keepAlive: false, permission: ['table'] }
},
{
path: '/storedc/storeEvaluateManage',
name: 'storeEvaluateManage',
......@@ -152,13 +160,52 @@ export const asyncRouterMap = [
}
]
},
// 权限管理
{
path: '/authority',
name: 'authority',
redirect: '/authority/rolelist',
component: PageView,
meta: { title: '权限管理', keepAlive: true, icon: 'safety', permission: ['table'] },
children: [
{
path: '/authority/rolelist',
name: 'rolelist',
component: () => import('@/views/authority/roleList'),
meta: { title: '角色列表', keepAlive: false, permission: ['table'] }
}
]
},
// 配送管理
{
path: '/delivery',
name: 'delivery',
redirect: '/delivery/distributionPrice',
component: PageView,
meta: { title: '配送管理', keepAlive: true, icon: 'dollar', permission: ['table'] },
children: [
{
path: '/delivery/distributionPrice',
name: 'distributionPrice',
component: () => import('@/views/delivery/distributionPrice'),
meta: { title: '配送价格', keepAlive: false, permission: ['table'] }
},
{
path: '/delivery/deliveryDetails',
name: 'deliveryDetails',
hidden:true,
component: () => import('@/views/delivery/details/deliveryDetails'),
meta: { title: '运费模板信息', keepAlive: false, permission: ['table'] }
}
]
},
// dashboard
{
path: '/dashboard',
name: 'dashboard',
redirect: '/dashboard/workplace',
component: RouteView,
hidden:true,
meta: { title: '仪表盘', keepAlive: true, icon: bxAnaalyse, permission: [ 'dashboard' ] },
children: [
{
......@@ -193,6 +240,7 @@ export const asyncRouterMap = [
path: '/form',
redirect: '/form/base-form',
component: PageView,
hidden:true,
meta: { title: '表单页', icon: 'form', permission: [ 'form' ] },
children: [
{
......@@ -221,6 +269,7 @@ export const asyncRouterMap = [
path: '/list',
name: 'list',
component: PageView,
hidden:true,
redirect: '/list/table-list',
meta: { title: '列表页', icon: 'table', permission: [ 'table' ] },
children: [
......@@ -278,6 +327,7 @@ export const asyncRouterMap = [
path: '/profile',
name: 'profile',
component: RouteView,
hidden:true,
redirect: '/profile/basic',
meta: { title: '详情页', icon: 'profile', permission: [ 'profile' ] },
children: [
......@@ -301,6 +351,7 @@ export const asyncRouterMap = [
path: '/result',
name: 'result',
component: PageView,
hidden:true,
redirect: '/result/success',
meta: { title: '结果页', icon: 'check-circle-o', permission: [ 'result' ] },
children: [
......@@ -324,6 +375,7 @@ export const asyncRouterMap = [
path: '/exception',
name: 'exception',
component: RouteView,
hidden:true,
redirect: '/exception/403',
meta: { title: '异常页', icon: 'warning', permission: [ 'exception' ] },
children: [
......@@ -354,6 +406,7 @@ export const asyncRouterMap = [
component: RouteView,
redirect: '/account/center',
name: 'account',
hidden:true,
meta: { title: '个人页', icon: 'user', keepAlive: true, permission: [ 'user' ] },
children: [
{
......@@ -410,6 +463,7 @@ export const asyncRouterMap = [
path: '/other',
name: 'otherPage',
component: PageView,
hidden:true,
meta: { title: '其他组件', icon: 'slack', permission: [ 'dashboard' ] },
redirect: '/other/icon-selector',
children: [
......
......@@ -48,7 +48,8 @@ import {
message,
notification,
Cascader,
Collapse
Collapse,
Tree
} from 'ant-design-vue'
// import VueCropper from 'vue-cropper'
......@@ -93,6 +94,7 @@ Vue.use(Popconfirm)
Vue.use(notification)
Vue.use(Cascader)
Vue.use(Collapse)
Vue.use(Tree)
Vue.prototype.$confirm = Modal.confirm
Vue.prototype.$message = message
......
......@@ -2,8 +2,8 @@ export default {
// 处理下载blob数据
saveFile (data,fname,ftype) {
console.log(ftype)
let blob=new Blob([data],{
type:ftype+';;charset=utf-8'
var blob=new Blob([data],{
type:ftype+';charset=utf-8'
})
let objectUrl=URL.createObjectURL(blob)
let link=document.createElement("a")
......@@ -16,4 +16,4 @@ export default {
}
//xlsx格式 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
// xls格式 application/vnd.ms-excel
//csv格式 text/csv
\ No newline at end of file
//csv格式 text/csv csv时文件名要加上后缀.csv
\ No newline at end of file
<template>
<a-card :bordered="false">
<div class="table-operator">
<a-button-group>
<a-button type='primary' icon='plus' @click="getModal(1)">添加角色</a-button>
</a-button-group>
</div>
<s-table
ref="table"
size="default"
:columns="columns"
:data="loadData"
rowKey="ID"
>
<span slot="action" slot-scope="text, record">
<a type="primary" @click="getModal(record)">编辑</a>
<a-divider type="vertical" />
<a @click="getAuthority(record)">权限分配</a>
</span>
</s-table>
<a-modal :title="modalTitle" :width="800" :destroyOnClose="destroyOnClose" v-model="visible" @ok="handleOk()">
<a-form :form="modalForm">
<a-form-item
:labelCol='labelCol'
:wrapperCol='wrapperCol'
hidden
>
<a-input
hidden
v-decorator="['ID']"
name="ID"
placeholder="请输入ID" />
</a-form-item>
<a-form-item
label="角色组名称"
required
:labelCol="labelCol"
:wrapperCol="wrapperCol"
extra="角色组具体名称"
>
<a-input
placeholder="请输入角色组名称"
v-decorator="[
'NAME',
{rules: [{ required: true,message:'请输入角色组名称'}]}
]"
name="NAME" />
</a-form-item>
<a-form-item
label="状态"
required
:labelCol='labelCol'
:wrapperCol='wrapperCol'
>
<a-select
v-decorator="[
'STATUS',
{rules:[{required:true,message:'请选择状态'}]}
]"
placeholder="请选择状态">
<a-select-option value="0">禁用</a-select-option>
<a-select-option value="1">启用</a-select-option>
</a-select>
</a-form-item>
<a-form-item
label="显示排序"
required
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-input-number
style="width:100%"
v-decorator="[
'SORT',
{rules:[{required:true,message:'请输入显示排序'}]}
]"
placeholder="请输入显示排序" />
</a-form-item>
<a-form-item
label="描述"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-textarea
v-decorator="[
'REMARK'
]"
name="REMARK"
placeholder="请输入描述"
>
</a-textarea>
</a-form-item>
</a-form>
</a-modal>
<a-modal title="权限分配" :width="800" :destroyOnClose="destroyOnClose" v-model="visible1" @ok="handleSub()">
<a-form :form="authorityForm">
<a-tree
checkable
:replaceFields="modalTree.replaceFields"
:treeData="modalTree.treeData"
v-model="modalTree.checkedKeys"
>
</a-tree>
</a-form>
</a-modal>
</a-card>
</template>
<script>
import moment from 'moment'
import { STable } from '@/components'
import { getRoleList,addRole,getRoleDetails,modifyRoleDetails,getTreeDetails,modifyAuthority } from '@/api/authority'
export default {
name: 'RoleList',
components: {
STable
},
data () {
return {
labelCol: {
xs: { span: 24 },
sm: { span: 7 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 12 }
},
visible:false,
visible1:false,
destroyOnClose:true,
modalForm:this.$form.createForm(this),
authorityForm:this.$form.createForm(this),
modalTitle:'添加角色',//modal标题
handok:1,//添加1or编辑0
authorityID:null,
// 树
modalTree:{
replaceFields:{
key:'ID',
title:'TITLE',
children:'children'
},
treeData:[
],
checkedKeys:[]
},
// 查询参数
queryParam: {},
columns: [
{
title: '角色ID',
dataIndex: 'ID'
},
{
title: '角色名称',
dataIndex: 'NAME'
},
{
title: '排序',
dataIndex: 'SORT'
},
{
title: '描述',
dataIndex: 'REMARK'
},
{
title: '状态',
dataIndex: 'STATUS',
customRender: (text) => {
if(Number(text)==1){
return '启用'
}else{
return '未启用'
}
}
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' }
}
],
loadData: parameter => {
return getRoleList(Object.assign(parameter, this.queryParam))
.then(res => {
res.pageSize=res._meta.perPage;
res.page=res._meta.currentPage;
res.totalPage=res._meta.pageCount;
res.totalCount=res._meta.totalCount;
return res
})
}
}
},
methods:{
getModal(value){
this.visible=true;
if(value==1){
this.handok=1;
this.modalTitle='添加角色';
}else{
this.handok=0;
this.modalTitle='编辑角色';
this.getRoleDetails(value.ID)
}
},
// 获取权限分配
getAuthority(value){
this.visible1=true;
this.modalTree.treeData=[];
this.modalTree.checkedKeys=[];
this.authorityID=value.ID;
let treeParameters={
"ID":value.ID,
"NAME":value.NAME
}
getTreeDetails(treeParameters).then(res => {
// res:cur_role_nodes=>树节点
// every_role_name:该权限节点的name
// every_role_node_ids:该节点包括的节点的id
const resTree=res.cur_role_nodes;
var parentTree;
resTree.forEach(one => {
one.key=one.ID;
one.title=one.TITLE;
if(one.LEVEL==0){
one.children=[];
resTree.forEach(item => {
if(item.LEVEL==1 && item.PID===one.ID){
item.children=[];
resTree.forEach(child => {
if(child.LEVEL==2 && child.PID==item.ID){
item.children.push(child)
}
})
one.children.push(item);
}
})
parentTree=one
}
})
this.modalTree.treeData.push(parentTree)
if(res.every_role_node_ids){
this.modalTree.checkedKeys=res.every_role_node_ids.split(',')
}
}).catch(err => {
})
},
// 修改权限分配
handleSub(){
let authorityData={
"ROLE_ID":this.authorityID,
"NODE_ID":this.modalTree.checkedKeys.join(',')
}
modifyAuthority(authorityData).then(res => {
this.visible1=false;
}).catch(err => {
})
// this.visible1=false;
},
// 获取角色详情
getRoleDetails(value){
getRoleDetails(value).then(res => {
this.$nextTick(() => {
this.modalForm.setFieldsValue(res.data[0])
})
}).catch(err => {
})
},
// 提交
handleOk(){
if(this.handok==1){
const { modalForm: { validateFields } } = this;
validateFields({ force: true }, (err, values) => {
if (!err) {
const roleAdd = Object.assign({ ...values });
addRole(roleAdd).then(res => {
this.visible=false;
this.$refs.table.refresh(true)
}).catch(err => {
})
}
})
}else{
const { modalForm: { validateFields } } = this;
validateFields({ force: true }, (err, values) => {
if (!err) {
const roleAdd = Object.assign({ ...values });
modifyRoleDetails(roleAdd).then(res => {
this.visible=false;
this.$refs.table.refresh(true)
}).catch(err => {
})
}
})
}
}
}
}
</script>
\ No newline at end of file
This diff is collapsed.
<template>
<a-card :bordered="false">
<div class="table-operator">
<a-button-group>
<a-button type='primary' icon='plus' @click="goEdit(1)">添加运费模板</a-button>
</a-button-group>
</div>
<s-table
ref="table"
size="default"
:columns="columns"
:data="loadData"
rowKey="GUID"
>
<div
slot="expandedRowRender"
slot-scope="record"
style="margin: 0">
<a-row
:gutter="24">
<a-col :span="12">
<a-col :span="4">
<span>配送省份:</span>
</a-col>
<a-col :span="20" v-if="record.SELECT_AREA">
<a-tag color="cyan" v-for="(item,index) in record.SELECT_AREA.split(',')" :key="index">{{item}}</a-tag>
</a-col>
<a-col :span="20" v-else>
<span>---</span>
</a-col>
</a-col>
</a-row>
</div>
<span slot="action" slot-scope="text, record">
<a type="primary" @click="goEdit(record)">编辑</a>
<a-divider type="vertical" />
<a-popconfirm title="是否要删除此行?" @confirm="remove(record.GUID)">
<a>删除</a>
</a-popconfirm>
</span>
</s-table>
</a-card>
</template>
<script>
import moment from 'moment'
import { STable } from '@/components'
import { getDeliveryList,getTransportList } from '@/api/delivery'
export default {
name:"delivery",
components: {
STable
},
data(){
return {
labelCol: {
xs: { span: 24 },
sm: { span: 7 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 12 }
},
// 查询参数
queryParam: {},
PLATFORM_TYPE: 'shop',
columns: [
{
title: '配送方式',
dataIndex: 'TRANSPORT_NAME'
},
{
title: '统一费用',
dataIndex: 'BASE_FEE'
},
{
title: '首重',
dataIndex: 'BASE_WEIGHT'
},
{
title: '首重费用',
dataIndex: 'BASE_WEIGHT_FEE'
},
{
title: '是否启用',
dataIndex: 'IS_USED',
customRender: (text) => {
if(Number(text)==1){
return '是'
}else{
return '否'
}
}
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' }
}
],
loadData: parameter => {
return getDeliveryList(Object.assign(parameter, this.queryParam,{'PLATFORM_TYPE':this.PLATFORM_TYPE}))
.then(res => {
res.pageSize=res._meta.perPage;
res.page=res._meta.currentPage;
res.totalPage=res._meta.pageCount;
res.totalCount=res._meta.totalCount;
return res
})
}
}
},
methods:{
goEdit(value){
if(value==1){
this.$router.push({path:'/delivery/deliveryDetails',query:{goid:1}})
}else{
this.$router.push({path:'/delivery/deliveryDetails',query:{goid:0,GUID:value.GUID}})
}
},
}
}
</script>
\ No newline at end of file
......@@ -26,7 +26,7 @@
</span>
</s-table>
<!-- <a-modal title="操作" :width="800" v-model="visible" @ok="handleOk">
<!-- <a-modal :destroyOnClose="destroyOnClose" title="操作" :width="800" v-model="visible" @ok="handleOk">
<a-form :form="modalForm">
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="服务类目名称">
<a-input v-decorator="['NAME']" name="NAME" placeholder="请输入服务类目名称" />
......@@ -68,7 +68,7 @@ export default {
data() {
return {
visible: false,
destroyOnClose:true,
labelCol: {
xs: { span: 24 },
sm: { span: 5 }
......@@ -120,21 +120,19 @@ export default {
],
// 加载数据方法 必须为 Promise 对象
loadData: parameter => {
console.log('loadData.parameter', parameter)
return getScategorymg(Object.assign(parameter, this.queryParam)).then(res => {
console.log(res)
res.pageSize = res._meta.perPage
res.page = res._meta.currentPage
res.totalPage = res._meta.pageCount
res.totalCount = res._meta.totalCount
// res.data = []
// res.data = res.userdepartment
console.log(res.data)
return res
})
},
selectedRowKeys: [],
selectedRows: []
selectedRows: [],
modalNow:1
}
},
// filters: {
......@@ -151,33 +149,51 @@ export default {
methods: {
//time
DateCheck(value) {
if (value || value != null || value != '') {
console.log(value)
if (value && value!=null && value!="" && value!='undefined') {
return moment(value, 'YYYY-MM-DD HH:mm:ss')
}
},
// handleEdit(record) {
// this.visible = true
// var that = this
// getScategorymgDetails(record.CODE)
// .then(res => {
// // this.radioVal = res.data[0]
// console.log(res.data[0])
// // this.modalForm.initialValue(res)
// this.$nextTick(() => {
// this.GUID = res.data[0].GUID
// this.modalForm.setFieldsValue(res.data[0])
// })
// })
// .catch(err => {})
// },
handleEdit(value) {
this.visible = true
var that = this
if(value==1){
this.$router.push({path: '/storedc/details/branchService_editor',query:{goid:1} })
// 新建
this.modalNow=1;
}else{
this.$router.push({path: '/storedc/details/branchService_editor',query:{goid:0,GUID:value.GUID} })
// 编辑
this.modalNow=0;
getScategorymgDetails(value.CODE)
.then(res => {
// this.radioVal = res.data[0]
console.log(res.data[0])
// this.modalForm.initialValue(res)
this.$nextTick(() => {
this.GUID = res.data[0].GUID
this.modalForm.setFieldsValue(res.data[0])
})
})
.catch(err => {})
}
},
handleadd() {
this.$router.push({ path: '/storedc/branchservice_add' })
},
handleOk() {
if(this.modalNow==1){
const {
modalForm: { validateFields }
} = this
validateFields({ force: true }, (err, values) => {
if (!err) {
this.visible = false
const ScategorymgParams = { ...values }
ScategorymgParams.CREATE_TIME=ScategorymgParams.CREATE_TIME.format('YYYY-MM-DD HH:mm:ss')
addScategorymg(ScategorymgParams)
this.$refs.table.refresh(true)
}
})
}else{
let GUID = this.GUID
const {
modalForm: { validateFields }
......@@ -185,6 +201,7 @@ export default {
validateFields({ force: true }, (err, values) => {
if (!err) {
const ScategorymgDetails = Object.assign({ ...values }, { GUID: GUID })
ScategorymgDetails.CREATE_TIME=ScategorymgDetails.CREATE_TIME.format('YYYY-MM-DD HH:mm:ss')
modifyScategorymgDetails(ScategorymgDetails)
.then(res => {
this.visible = false
......@@ -194,6 +211,7 @@ export default {
.catch(err => {})
}
})
}
},
remove(key) {
console.log(key)
......
This diff is collapsed.
This diff is collapsed.
......@@ -110,7 +110,7 @@
label="是否积分兑换门店"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-checkbox v-decorator="['IS_POINTS_SHOP',{initialValue:true,valuePropName:'checked',normalize:checkCheckbox}]"></a-checkbox>
<a-checkbox v-decorator="['IS_POINTS_SHOP',{initialValue:false,valuePropName:'checked',normalize:checkCheckbox}]"></a-checkbox>
</a-form-item>
<a-form-item
label="描述"
......@@ -218,25 +218,25 @@
label="是否医保"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-checkbox v-decorator="['IS_CARE',{initialValue:true,valuePropName:'checked',normalize:checkCheckbox}]"></a-checkbox>
<a-checkbox v-decorator="['IS_CARE',{initialValue:false,valuePropName:'checked',normalize:checkCheckbox}]"></a-checkbox>
</a-form-item>
<a-form-item
label="是否O2O门店"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-checkbox v-decorator="['IS_O2O',{initialValue:true,valuePropName:'checked',normalize:checkCheckbox}]"></a-checkbox>
<a-checkbox v-decorator="['IS_O2O',{initialValue:false,valuePropName:'checked',normalize:checkCheckbox}]"></a-checkbox>
</a-form-item>
<a-form-item
label="是否支持冷链配送"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-checkbox v-decorator="['IS_DELIVERY_CODECHAIN_GOODS',{initialValue:true,valuePropName:'checked',normalize:checkCheckbox}]"></a-checkbox>
<a-checkbox v-decorator="['IS_DELIVERY_CODECHAIN_GOODS',{initialValue:false,valuePropName:'checked',normalize:checkCheckbox}]"></a-checkbox>
</a-form-item>
<a-form-item
label="是否营业"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-checkbox v-decorator="['IS_SHELVE',{initialValue:true,valuePropName:'checked',normalize:checkCheckbox}]"></a-checkbox>
<a-checkbox v-decorator="['IS_SHELVE',{initialValue:false,valuePropName:'checked',normalize:checkCheckbox}]"></a-checkbox>
</a-form-item>
<a-form-item
label="营业时间"
......@@ -324,6 +324,10 @@
xs: { span: 24 },
sm: { span: 12 }
},
labelColNew:{
xs: { span: 24 },
sm: { span: 7 }
},
size: 'default',
details_serviceGroup:[],//服务类目
details_develiyGroup:[],//配送类型
......
......@@ -412,8 +412,8 @@ export default {
// 导出门店评价列表 csv类型
exportFile(){
exportFile(this.queryParam).then(res => {
let fname='门店打分记录'+moment(new Date()).format("YYYY-MM-DD")
let ftype='application/vnd.ms-excel'
let fname='门店打分记录'+moment(new Date()).format("YYYY-MM-DD")+'.csv'
let ftype='text/csv'
this.common.saveFile(res,fname,ftype)
})
},
......
......@@ -286,9 +286,9 @@ export default {
},
// 导出门店
exportStore(){
let ftype='application/vnd.ms-excel'
let ftype='text/csv'
exportStore(this.queryParam).then(res => {
let fname='门店列表'+moment(new Date()).format("YYYY-MM-DD")
let fname='门店列表'+moment(new Date()).format("YYYY-MM-DD")+'.csv'
this.common.saveFile(res,fname,ftype)
})
},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment