浏览代码

Merge pull request #121 from go-admin-team/dev

merge dev
wenjianzhang 4 年之前
父节点
当前提交
0962756aef

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "go-admin",
-  "version": "2.0.0-beta.5",
+  "version": "2.0.0-beta.6",
   "description": "A magical vue admin. An out-of-box UI solution for enterprise applications. Newest development stack of vue. Lots of awesome features",
   "author": "https://github.com/wenjianzhang",
   "license": "MIT",

+ 3 - 2
src/api/admin/dict/data.js

@@ -46,8 +46,9 @@ export function updateData(data) {
 // 删除字典数据
 export function delData(dictCode) {
   return request({
-    url: '/api/v1/dict/data/' + dictCode,
-    method: 'delete'
+    url: '/api/v1/dict/data',
+    method: 'delete',
+    data: dictCode
   })
 }
 

+ 3 - 2
src/api/admin/sys-post.js

@@ -38,8 +38,9 @@ export function updatePost(data, id) {
 // 删除岗位
 export function delPost(postId) {
   return request({
-    url: '/api/v1/post/' + postId,
-    method: 'delete'
+    url: '/api/v1/post',
+    method: 'delete',
+    data: postId
   })
 }
 

+ 0 - 46
src/api/cms/sys-category.js

@@ -1,46 +0,0 @@
-import request from '@/utils/request'
-
-// 查询SysCategory列表
-export function listSysCategory(query) {
-  return request({
-    url: '/api/v1/syscategory',
-    method: 'get',
-    params: query
-  })
-}
-
-// 查询SysCategory详细
-export function getSysCategory(ID) {
-  return request({
-    url: '/api/v1/syscategory/' + ID,
-    method: 'get'
-  })
-}
-
-// 新增SysCategory
-export function addSysCategory(data) {
-  return request({
-    url: '/api/v1/syscategory',
-    method: 'post',
-    data: data
-  })
-}
-
-// 修改SysCategory
-export function updateSysCategory(data) {
-  return request({
-    url: '/api/v1/syscategory/' + data.id,
-    method: 'put',
-    data: data
-  })
-}
-
-// 删除SysCategory
-export function delSysCategory(data) {
-  return request({
-    url: '/api/v1/syscategory',
-    method: 'delete',
-    data: data
-  })
-}
-

+ 0 - 46
src/api/cms/sys-content.js

@@ -1,46 +0,0 @@
-import request from '@/utils/request'
-
-// 查询SysContent列表
-export function listSysContent(query) {
-  return request({
-    url: '/api/v1/syscontent',
-    method: 'get',
-    params: query
-  })
-}
-
-// 查询SysContent详细
-export function getSysContent(id) {
-  return request({
-    url: '/api/v1/syscontent/' + id,
-    method: 'get'
-  })
-}
-
-// 新增SysContent
-export function addSysContent(data) {
-  return request({
-    url: '/api/v1/syscontent',
-    method: 'post',
-    data: data
-  })
-}
-
-// 修改SysContent
-export function updateSysContent(data) {
-  return request({
-    url: '/api/v1/syscontent/' + data.id,
-    method: 'put',
-    data: data
-  })
-}
-
-// 删除SysContent
-export function delSysContent(data) {
-  return request({
-    url: '/api/v1/syscontent',
-    method: 'delete',
-    data: data
-  })
-}
-

+ 0 - 54
src/api/file.js

@@ -1,54 +0,0 @@
-import request from '@/utils/request'
-import { data } from 'autoprefixer'
-
-export const sysfiledirList = data => request({
-  url: '/api/v1/file-dir',
-  method: 'GET',
-  data
-})
-
-export const sysfiledirAcionAdd = data => request({
-  url: '/api/v1/file-dir',
-  method: 'POST',
-  data
-})
-
-export const sysfiledirAcionEdit = data => request({
-  url: '/api/v1/file-dir/' + data.id,
-  method: 'PUT',
-  data
-})
-
-export const sysfiledirAcionDel = data => request({
-  url: '/api/v1/file-dir/' + data,
-  method: 'DELETE'
-})
-
-export const sysfileinfoList = data => request({
-  url: `/api/v1/file-info?pId=${data.pId}&pageSize=${data.pageSize}&pageIndex=${data.pageIndex}`,
-  method: 'GET',
-  data
-})
-
-export const sysfileinfo = id => request({
-  url: '/api/v1/file-info/' + id,
-  method: 'GET'
-})
-
-export const sysfileinfoAdd = data => request({
-  url: '/api/v1/file-info',
-  method: 'POST',
-  data
-})
-
-export const sysfileinfoEdit = data => request({
-  url: '/api/v1/file-info/' + data.id,
-  method: 'put',
-  data
-})
-
-export const sysfileinfoDelete = id => request({
-  url: '/api/v1/file-info/' + id,
-  method: 'DELETE',
-  data
-})

+ 0 - 46
src/api/syschinaareadata.js

@@ -1,46 +0,0 @@
-import request from '@/utils/request'
-
-// 查询SysChinaAreaData列表
-export function listSysChinaAreaData(query) {
-  return request({
-    url: '/api/v1/sys-area-data',
-    method: 'get',
-    params: query
-  })
-}
-
-// 查询SysChinaAreaData详细
-export function getSysChinaAreaData(id) {
-  return request({
-    url: '/api/v1/sys-area-data/' + id,
-    method: 'get'
-  })
-}
-
-// 新增SysChinaAreaData
-export function addSysChinaAreaData(data) {
-  return request({
-    url: '/api/v1/sys-area-data',
-    method: 'post',
-    data: data
-  })
-}
-
-// 修改SysChinaAreaData
-export function updateSysChinaAreaData(data) {
-  return request({
-    url: '/api/v1/sys-area-data/' + data.id,
-    method: 'put',
-    data: data
-  })
-}
-
-// 删除SysChinaAreaData
-export function delSysChinaAreaData(data) {
-  return request({
-    url: '/api/v1/sys-area-data',
-    method: 'delete',
-    data: data
-  })
-}
-

+ 0 - 403
src/components/FileChoose/index.vue

@@ -1,403 +0,0 @@
-<template>
-  <div>
-    <el-dialog
-      :visible.sync="dialog"
-      width="500px"
-      append-to-body
-      :before-close="handleClose"
-    >
-      <div slot="title" class="file-title">
-        系统资源选择器(<small>已选择:{{ resultList.length }}个</small>)
-      </div>
-      <div class="file-header">
-        <el-cascader
-          v-model="value"
-          :options="options"
-          clearable
-          :props="{ expandTrigger: 'hover', checkStrictly: true, value: 'id' }"
-          @change="handleChange"
-        />
-      </div>
-      <div class="file-footer">
-        <el-card>
-          <el-scrollbar>
-            <div class="file-footer-inner">
-              <div
-                v-for="(item,index) in fileList"
-                :key="item.id"
-                class="file-footer-item"
-                :class=" item.open ? 'file-active' : '' "
-                @click="handleChoose(item,index)"
-              >
-                <div class="file-footer-item-inner">
-                  <div class="file-footer-item-icon">
-                    <img :src="item.fullUrl | formatFile" alt="">
-                  </div>
-                  <div class="file-footer-item-title">
-                    {{ item.name }}
-                  </div>
-                  <div class="file-footer-item-mask">
-                    <i class="el-icon-check" />
-                  </div>
-                </div>
-              </div>
-            </div>
-          </el-scrollbar>
-          <div class="page">
-            <el-pagination
-              layout="prev, pager, next, jumper, total"
-              prev-text="上一页"
-              next-text="下一页"
-              :current-page="pageNo"
-              :page-size="pageSize"
-              :total="total"
-              @current-change="handlePage"
-            />
-          </div>
-        </el-card>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="handleCancel">取 消</el-button>
-        <el-button type="primary" @click="handleConfirm">确 定</el-button>
-      </span>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import {
-  sysfiledirList,
-  sysfileinfoList
-} from '@/api/file'
-// import { filter } from 'jszip'
-export default {
-  filters: {
-    formatFile(pic) {
-      const type = pic.substring(pic.lastIndexOf('.') + 1, pic.length)
-      const FileIcons = [
-        {
-          icon: '',
-          matchList: ['bmp', 'jpg', 'png', 'jpeg', 'gif', 'webp']
-        },
-        {
-          icon: require('../../assets/icons/txtbeifen.png'),
-          matchList: ['text', 'txt']
-        },
-        {
-          icon: require('../../assets/icons/Zip.png'),
-          matchList: ['zip', 'tar', '7z']
-        },
-        {
-          icon: require('../../assets/icons/rar.png'),
-          matchList: ['rar']
-        },
-        {
-          icon: require('../../assets/icons/Word.png'),
-          matchList: ['doc', 'docx']
-        },
-        {
-          icon: require('../../assets/icons/pptbeifen.png'),
-          matchList: ['ppt', 'pptx']
-        },
-        {
-          icon: require('../../assets/icons/Excel.png'),
-          matchList: ['xlsx', 'xls']
-        },
-        {
-          icon: require('../../assets/icons/PDFbeifen.png'),
-          matchList: ['pdf', 'pdfx']
-        },
-        {
-          icon: require('../../assets/icons/Idea.png'),
-          matchList: ['java', 'class', 'jar', 'kt']
-        },
-        {
-          icon: require('../../assets/icons/tubiaozhizuomoban-01.png'),
-          matchList: ['psd']
-        },
-        {
-          icon: require('../../assets/icons/tubiaozhizuomoban2-01-01.png'),
-          matchList: ['ai']
-        },
-        {
-          icon: require('../../assets/icons/Web.png'),
-          matchList: ['ts', 'html', 'css', 'js']
-        },
-        {
-          icon: require('../../assets/icons/video2.png'),
-          matchList: ['mp4']
-        },
-        {
-          icon: require('../../assets/icons/voice.png'),
-          matchList: ['mp3']
-        },
-        {
-          icon: require('../../assets/icons/AwesomeVue.png'),
-          matchList: ['vue']
-        },
-        {
-          icon: require('../../assets/icons/Pycharm.png'),
-          matchList: ['py']
-        },
-        {
-          icon: require('../../assets/icons/Phpstorm-01.png'),
-          matchList: ['php']
-        }
-      ]
-      const UnknowIcon = require('../../assets/icons/Unknow.png')
-      if (FileIcons[0].matchList.includes(type)) {
-        return pic
-      } else {
-        const file = FileIcons.filter(item => item.matchList.includes(type))
-        if (file.length > 0) {
-          return file[0].icon
-        } else {
-          return UnknowIcon
-        }
-      }
-    }
-  },
-  props: {
-    multiple: {
-      type: Boolean,
-      default: true
-    },
-    dialogFormVisible: {
-      type: Boolean,
-      default: false
-    }
-  },
-  data() {
-    return {
-      value: [],
-      options: [],
-      fileList: [],
-      total: 0,
-      pageNo: 1,
-      pageSize: 12,
-      resultList: [],
-      dialog: this.dialogFormVisible
-    }
-  },
-  watch: {
-    dialogFormVisible(val) {
-      this.dialog = val
-    }
-  },
-  created() {
-    this.getFileDir()
-  },
-  methods: {
-    handleCancel() {
-      this.dialog = false
-      this.$emit('close')
-    },
-    handleConfirm() {
-      this.dialog = false
-      this.$emit('confirm', this.resultList)
-      this.$emit('close')
-    },
-    getFileDir() {
-      sysfiledirList().then(ret => {
-        if (ret.code === 200) {
-          this.options = ret.data
-        }
-      })
-    },
-    getFileInfo(id) {
-      sysfileinfoList({
-        pId: id,
-        pageIndex: this.pageNo,
-        pageSize: this.pageSize
-      }).then(ret => {
-        if (ret.code === 200) {
-          this.total = ret.data.count
-          this.fileList = ret.data.list.map(item => {
-            return {
-              ...item,
-              open: false
-            }
-          })
-          this.updateStatus()
-        }
-      })
-    },
-    handleClose() {
-      this.handleCancel()
-    },
-    handleChange() {
-      const id = this.value[this.value.length - 1]
-      this.total = 0
-      this.pageNo = 1
-      this.fileList.length = 0
-      if (id) {
-        this.getFileInfo(id)
-      }
-    },
-    handlePage(e) {
-      this.pageNo = e
-      const id = this.value[this.value.length - 1]
-      if (id) {
-        this.getFileInfo(id)
-      }
-    },
-    handleChoose(e, index) {
-      if (this.multiple) {
-        const fileIndex = this.resultList.findIndex(item => item.id === e.id)
-        if (e.open) {
-          if (fileIndex < 0) {
-            return false
-          }
-          this.resultList.splice(fileIndex, 1)
-        } else {
-          if (fileIndex > 0) {
-            return false
-          }
-          this.resultList.push(e)
-          this.resultList = Array.from(new Set(this.resultList))
-        }
-      } else {
-        if (e.open) {
-          this.resultList.length = 0
-        } else {
-          this.resultList.length = 0
-          this.resultList.push(e)
-        }
-      }
-      this.updateStatus()
-    },
-    updateStatus() {
-      if (this.multiple) {
-        for (let i = 0; i < this.fileList.length; i++) {
-          this.fileList[i].open = false
-          for (let j = 0; j < this.resultList.length; j++) {
-            if (this.resultList[j].id === this.fileList[i].id) {
-              this.fileList[i].open = true
-            }
-            continue
-          }
-        }
-      } else {
-        for (let i = 0; i < this.fileList.length; i++) {
-          if (this.resultList.every(e => e.id === this.fileList[i].id)) {
-            this.fileList[i].open = true
-          } else {
-            this.fileList[i].open = false
-          }
-        }
-      }
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-.file-header {
-  .el-cascader {
-    width: 100%;
-  }
-}
-.file-footer /deep/ {
-  margin-top: 20px;
-  height: 440px;
-  .el-card {
-    height: 100%;
-  }
-  .el-scrollbar {
-    height: 385px;
-  }
-  .page{
-      width: 100%;
-      display: flex;
-      justify-content: center;
-      align-items: center;
-      height: 35px;
-  }
-  .file-footer-inner {
-    display: flex;
-    justify-content: flex-start;
-    align-items: center;
-    flex-wrap: wrap;
-    .file-footer-item {
-      width: 25%;
-      margin-bottom: 17px;
-      cursor: pointer;
-      display: flex;
-      justify-content: center;
-      align-items: center;
-      .file-footer-item-inner {
-        position: relative;
-        display: flex;
-        flex-direction: column;
-        justify-content: center;
-        align-items: center;
-        width: 100px;
-        height: 110px;
-        border: 2px solid #f0f1f5;
-        padding: 5px 10px;
-        border-radius: 5px;
-        overflow: hidden;
-        transition: all 0.8ms;
-        .file-footer-item-icon {
-          width: 70px;
-          height: 70px;
-          img {
-            width: 100%;
-            height: 100%;
-          }
-        }
-        .file-footer-item-title {
-          font-size: #737373;
-          width: 100%;
-          text-align: center;
-          height: 20px;
-          line-height: 20px;
-          overflow: hidden;
-      text-overflow: ellipsis;
-      white-space: nowrap;
-        }
-        .file-footer-item-mask {
-          position: absolute;
-          top: 0;
-          left: 0;
-          right: 0;
-          bottom: 0;
-          background: rgba($color: #0f82ff, $alpha: 0.3);
-          display: flex;
-          justify-content: center;
-          align-items: center;
-          opacity: 0;
-          i {
-            color: #fff;
-            font-weight: bolder;
-            font-size: 35px;
-          }
-        }
-      }
-    }
-  }
-  .el-card__body {
-    height: 100%;
-    padding: 20px 10px 0 10px !important;
-  }
-  .el-scrollbar__wrap::-webkit-scrollbar {
-    display: none;
-  }
-  .el-scrollbar__wrap {
-    margin-right: 0 !important;
-  }
-  .file-active {
-    .file-footer-item-inner {
-      border-color: #0f82ff !important;
-    }
-    .file-footer-item-mask{
-        opacity: 1!important;
-    }
-  }
-}
-.file-title{
-    small{
-        color: #0f82ff !important;;
-    }
-}
-</style>

+ 0 - 350
src/components/FileManage/Left.vue

@@ -1,350 +0,0 @@
-<template>
-  <div class="left">
-    <el-card>
-      <el-scrollbar>
-        <el-tree
-          ref="tree"
-          :data="data"
-          :props="defaultProps"
-          node-key="id"
-          :draggable="drag"
-          default-expand-all
-          :expand-on-click-node="false"
-          :indent="22"
-          @node-contextmenu="rightKeyClick"
-          @node-click="handleNodeClick"
-        >
-
-          <!-- /* eslint-disable */ -->
-          <span slot-scope="{ node, data }" class="custom-tree-node">
-            <span>
-              <i
-                v-show="node.childNodes.length > 0"
-                :class="node.expanded ? 'el-icon-folder-opened icon' : 'el-icon-folder icon'"
-              />
-              <span v-if="rename.status && rename.node.id === data.id">
-                <input
-                  ref="nodeInput"
-                  v-focus="rename.status"
-                  :value="node.label"
-                  placeholder="请输入目录名称"
-                  type="text"
-                  @blur.stop="handleBlur(node, data)"
-                  @keyup.enter="handleBlur(node, data)"
-                >
-              </span>
-              <span v-else class="file-name">
-                {{ node.label }}
-              </span>
-            </span>
-          </span>
-        </el-tree>
-      </el-scrollbar>
-    </el-card>
-    <div
-      v-show="visible"
-      id="perTreeMenu"
-      :style="{ ...rightMenu }"
-      class="contextmenu"
-    >
-      <div v-for="(item, index) in rightOptions" :key="index">
-        <div
-          class="contextMenu-item left-contextMenu-item"
-          @click="handleAction(index)"
-          @mouseover="handleTagsOver(index)"
-          @mouseleave="handleTagsLeave(index)"
-        >
-          <i :class="item.icon" />
-          <span>{{ item.label }}</span>
-        </div>
-        <el-divider />
-      </div>
-    </div>
-    <upload-dialog
-      :show="uploadShow"
-      @confirm="handleUploadConfirm"
-      @cancel="handleUploadCancel"
-    />
-  </div>
-</template>
-
-<script>
-// eslint-disable-next-line no-unused-vars
-import { v1 as uuidv1 } from 'uuid'
-import UploadDialog from '@/components/UploadDialog/index'
-import {
-  sysfiledirList,
-  sysfiledirAcionAdd,
-  sysfiledirAcionEdit,
-  sysfiledirAcionDel
-} from '@/api/file'
-import eventBus from '@/utils/eventbus'
-export default {
-  name: 'Left',
-  components: {
-    UploadDialog
-  },
-  directives: {
-    focus: {
-      inserted: function(el, { value }) {
-        if (value) {
-          el.focus()
-          el.select()
-        }
-      }
-    }
-  },
-  data() {
-    return {
-      rightOptions: [
-        {
-          label: '创建目录',
-          icon: 'el-icon-folder-add',
-          f: () => {
-            sysfiledirAcionAdd({
-              label: '新建文件夹',
-              pId: this.rightData.currentData.id
-            }).then(ret => {
-              if (ret.code === 200) {
-                this.$refs.tree.append(ret.data, this.rightData.currentData.id)
-                this.getDirList()
-              }
-            })
-          }
-        },
-        // {
-        //   label: '上传',
-        //   icon: 'el-icon-upload2',
-        //   f: () => {
-        //     this.uploadShow = true
-        //   }
-        // },
-        {
-          label: '重命名',
-          icon: 'el-icon-edit',
-          f: () => {
-            this.rename = {
-              status: true,
-              node: this.rightData.currentData
-            }
-          }
-        },
-        {
-          label: '删除',
-          icon: 'el-icon-folder-delete',
-          f: () => {
-            sysfiledirAcionDel(this.rightData.currentData.id).then(ret => {
-              if (ret.code === 200) {
-                this.$refs.tree.remove(this.rightData.currentNode)
-              }
-            })
-          }
-        }
-      ],
-      rename: {
-        status: false,
-        node: ''
-      },
-      uploadShow: false,
-      drag: false,
-      data: [],
-      defaultProps: {
-        children: 'children',
-        label: 'label'
-      },
-      rightMenu: {},
-      visible: false
-    }
-  },
-  mounted() {
-    this.getDirList()
-  },
-  methods: {
-    handleNodeClick(e) {
-      const result = this.treeFindPath(this.data, node => node.id === e.id)
-      eventBus.$emit('treeNodeClick', {
-        treeNodePath: result,
-        currentNode: e
-      })
-    },
-    treeFindPath(tree, func, path = []) {
-      if (!tree) return []
-      for (const data of tree) {
-        path.push(data)
-        if (func(data)) return path
-        if (data.children) {
-          const findChildren = this.treeFindPath(data.children, func, path)
-          if (findChildren.length) return findChildren
-        }
-        path.pop()
-      }
-      return []
-    },
-    getDirList() {
-      sysfiledirList().then(ret => {
-        if (ret.code === 200) {
-          this.data = ret.data
-          eventBus.$emit('treeNodeClick', {
-            treeNodePath: ret.data,
-            currentNode: ret.data[0]
-          })
-        }
-      })
-    },
-    handleUploadConfirm() {
-      this.uploadShow = false
-    },
-    handleUploadCancel() {
-      this.uploadShow = false
-    },
-    handleTagsOver(index) {
-      const tags = document.querySelectorAll('.left-contextMenu-item')
-      const item = tags[index]
-      item.style.cssText = `color:${
-        this.$store.state.settings.theme
-      };background:${this.$store.state.settings.theme.colorRgb()}`
-    },
-    handleTagsLeave(index) {
-      const tags = document.querySelectorAll('.left-contextMenu-item')
-      const item = tags[index]
-      item.style.cssText = `color:#606266`
-    },
-    handleBlur(n, d) {
-      this.rename = {
-        status: false,
-        node: ''
-      }
-      d.label = this.$refs.nodeInput.value
-      sysfiledirAcionEdit({
-        id: d.id,
-        label: d.label,
-        pId: d.pId
-      }).then(ret => {
-        if (ret.code === 200) {
-          this.$refs.tree.updateKeyChildren(n.id, d)
-        }
-      })
-    },
-    rightKeyClick(e, a, c) {
-      this.rightMenu = { top: e.pageY + 'px', left: e.pageX + 'px' }
-      this.visible = true
-      this.rightData = {
-        currentNode: c,
-        currentData: a
-      }
-      document.onclick = ev => {
-        if (ev.target !== document.getElementById('perTreeMenu')) {
-          this.visible = false
-        }
-      }
-    },
-    handleAction(e) {
-      this.rightOptions[e].f()
-    }
-  }
-}
-
-// eslint-disable-next-line no-extend-native
-String.prototype.colorRgb = function() {
-  let sColor = this.toLowerCase()
-  const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/
-  if (sColor && reg.test(sColor)) {
-    if (sColor.length === 4) {
-      let sColorNew = '#'
-      for (let i = 1; i < 4; i += 1) {
-        sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1))
-      }
-      sColor = sColorNew
-    }
-    const sColorChange = []
-    for (let i = 1; i < 7; i += 2) {
-      sColorChange.push(parseInt('0x' + sColor.slice(i, i + 2)))
-    }
-    return 'rgba(' + sColorChange.join(',') + ',0.2)'
-  } else {
-    return sColor
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-.left /deep/ {
-  height: 100%;
-  .el-card {
-    height: 100%;
-    overflow: hidden;
-  }
-    .el-tree-node:focus>.el-tree-node__content{
-          background-color: rgba(24, 144, 255,0.9);
-        .icon{
-          color: #fff!important;
-        }
-        .file-name{
-          color: #fff!important;
-        }
-    }
-  .el-card__body {
-    padding: 10px !important;
-  }
-  .el-scrollbar {
-    height: calc(100vh - 133px);
-  }
-  .file-name {
-    color: rgb(71, 84, 102);
-    font-size: 14px;
-  }
-  .el-tree-node__content {
-    height: 35px;
-  }
-  .custom-tree-node {
-    .icon {
-      font-size: 16px;
-      color: #709fbe;
-    }
-  }
-  .el-tree-node :nth-child(2) {
-    padding: 1px;
-    overflow: visible;
-  }
-  .el-scrollbar__wrap::-webkit-scrollbar {
-    display: none;
-  }
-  input {
-    padding: 3px 8px;
-    box-sizing: border-box;
-    &:focus {
-      outline: none;
-      border-color: rgb(24, 144, 255);
-      box-shadow: 0 0 10px rgb(24, 144, 255);
-    }
-  }
-}
-.contextmenu {
-  background: #fff;
-  z-index: 3000;
-  position: fixed;
-  list-style-type: none;
-  border-radius: 4px;
-  box-shadow: 0 3px 10px 0 rgba(0, 0, 0, 0.1), 0 1px 7px 0 rgba(0, 0, 0, 0.1);
-  -moz-user-select: none;
-  -webkit-user-select: none;
-  user-select: none;
-  .el-divider--horizontal {
-    margin: 0;
-  }
-  .contextMenu-item {
-    height: 46px;
-    cursor: pointer;
-    line-height: 46px;
-    width: 180px;
-    padding: 0 0 0 20px;
-    display: flex;
-    justify-content: flex-start;
-    align-items: center;
-    span {
-      margin-left: 6px;
-      font-size: 14.3px;
-    }
-  }
-}
-</style>

+ 0 - 660
src/components/FileManage/Right.vue

@@ -1,660 +0,0 @@
-<template>
-  <div class="right">
-    <el-card class="box-card">
-      <div slot="header" class="clearfix">
-        <el-row>
-          <el-col :span="18">
-            <el-breadcrumb separator-class="el-icon-arrow-right" class="dir">
-              <el-breadcrumb-item
-                v-for="item in treePath.treeNodePath"
-                :key="item.id"
-              >{{ item.label }}</el-breadcrumb-item>
-            </el-breadcrumb>
-          </el-col>
-          <el-col :span="6">
-            <div class="file-action">
-              <!-- <el-input
-                v-model="searchFile"
-                placeholder="请输入内容"
-                class="input-with-select"
-              >
-                <el-button slot="append" type="primary">搜索</el-button>
-              </el-input> -->
-              <div class="file-btn">
-                <div
-                  v-for="(item, index) in rightBtn"
-                  :key="index"
-                  class="file-btn-item"
-                  :class="index === rightIndex ? 'file-btn-item-active' : ''"
-                  @click="handleRightBtn(index)"
-                >
-                  <i :class="item.icon" />
-                </div>
-              </div>
-            </div>
-          </el-col>
-        </el-row>
-      </div>
-      <div
-        class="file-container"
-        @contextmenu.prevent="rightClick('', '', $event, 1)"
-      >
-        <el-scrollbar v-if="rightIndex === 0">
-          <div class="file-container-inner">
-            <div
-              v-for="(item, index) in tableData"
-              :key="index"
-              v-dragging="{ item: item, list: tableData, group: 'item' }"
-              class="file-item-inner"
-            >
-              <div
-                class="file-item"
-                @contextmenu.prevent.stop="rightClick(item, '', $event, 2)"
-              >
-                <div class="file-item-icon">
-                  <img :src="item.fullUrl | formatFile" alt="">
-                </div>
-                <div v-if="!item.open" class="file-item-title">
-                  {{ item.name }}
-                </div>
-                <div v-else class="file-item-title">
-                  <el-input
-                    v-model="item.name"
-                    placeholder="请输入内容"
-                    @blur="handleBlur($event, item)"
-                  />
-                </div>
-              </div>
-            </div>
-          </div>
-        </el-scrollbar>
-        <el-scrollbar v-else>
-          <el-table
-            :data="tableData"
-            highlight-current-row
-            border
-            style="width: 100%"
-          >
-            <el-table-column prop="name" align="center" label="文件名">
-              <template slot-scope="scope">
-                <span v-if="!scope.row.open" v-text="scope.row.name" />
-                <el-input
-                  v-else
-                  v-model="scope.row.name"
-                  placeholder="请输入内容"
-                  @blur="handleBlur($event, scope.row)"
-                />
-              </template>
-            </el-table-column>
-            <el-table-column prop="createdAt" align="center" label="上传日期">
-              <template slot-scope="scope">
-                <span
-                  v-if="!scope.row.open"
-                  v-text="parseTime(scope.row.CreatedAt)"
-                />
-              </template>
-            </el-table-column>
-            <el-table-column prop="type" align="center" label="文件类型">
-              <template slot-scope="scope">
-                <div class="type">
-                  <img :src="scope.row.fullUrl | formatFile" alt="">
-                  <span v-text="scope.row.type" />
-                </div>
-              </template>
-            </el-table-column>
-            <el-table-column prop="size" align="center" label="文件大小">
-              <template slot-scope="scope">
-                <span v-text="renderSize(scope.row.size)" />
-              </template>
-            </el-table-column>
-            <el-table-column prop="action" align="center" label="操作">
-              <template slot-scope="scope">
-                <el-dropdown trigger="click">
-                  <span class="el-dropdown-link">
-                    操作<i class="el-icon-arrow-down el-icon--right" />
-                  </span>
-                  <el-dropdown-menu slot="dropdown">
-                    <el-dropdown-item icon="el-icon-folder-add" @click.native.stop="handleTableAction(scope.row,1)">上传</el-dropdown-item>
-                    <el-dropdown-item icon="el-icon-edit" @click.native.stop="handleTableAction(scope.row,2)">重命名</el-dropdown-item>
-                    <el-dropdown-item icon="el-icon-folder-delete" @click.native.stop="handleTableAction(scope.row,3)">删除</el-dropdown-item>
-                    <el-dropdown-item icon="el-icon-download" @click.native.stop="handleTableAction(scope.row,4)">下载</el-dropdown-item>
-                  </el-dropdown-menu>
-                </el-dropdown>
-              </template>
-            </el-table-column>
-          </el-table>
-        </el-scrollbar>
-        <div class="page">
-          <el-pagination
-            layout="prev, pager, next, jumper, total"
-            prev-text="上一页"
-            next-text="下一页"
-            :current-page="pageNo"
-            :page-size="pageSize"
-            :total="total"
-            @current-change="handlePage"
-          />
-        </div>
-      </div>
-    </el-card>
-    <div
-      v-show="visible"
-      id="perTreeMenu"
-      :style="{ ...rightMenu }"
-      class="contextmenu"
-    >
-      <div
-        class="right-contextMenu-item contextMenu-item"
-        @click="handleAction(1)"
-        @mouseover="handleTagsOver(0)"
-        @mouseleave="handleTagsLeave(0)"
-      >
-        <i class="el-icon-folder-add" />
-        <span> 上传</span>
-      </div>
-      <el-divider />
-      <div
-        v-show="!isBlank"
-        class="right-contextMenu-item contextMenu-item"
-        @click="handleAction(2)"
-        @mouseover="handleTagsOver(1)"
-        @mouseleave="handleTagsLeave(1)"
-      >
-        <i class="el-icon-edit" />
-        <span> 重命名</span>
-      </div>
-      <el-divider />
-      <div
-        v-show="!isBlank"
-        class="right-contextMenu-item contextMenu-item"
-        @click="handleAction(3)"
-        @mouseover="handleTagsOver(2)"
-        @mouseleave="handleTagsLeave(2)"
-      >
-        <i class="el-icon-folder-delete" />
-        <span> 删除</span>
-      </div>
-      <el-divider />
-      <div
-        v-show="!isBlank"
-        class="right-contextMenu-item contextMenu-item"
-        @click="handleAction(4)"
-        @mouseover="handleTagsOver(3)"
-        @mouseleave="handleTagsLeave(3)"
-      >
-        <i class="el-icon-download" />
-        <span> 下载</span>
-      </div>
-    </div>
-    <upload-dialog
-      :show="uploadShow"
-      @confirm="handleUploadConfirm"
-      @cancel="handleUploadCancel"
-    />
-  </div>
-</template>
-
-<script>
-import Sortable from 'sortablejs'
-import UploadDialog from '@/components/UploadDialog/index'
-import eventBus from '@/utils/eventbus'
-// import { parseTime } from '@/utils'
-import {
-  // sysfileinfo,
-  sysfileinfoList,
-  sysfileinfoAdd,
-  sysfileinfoEdit,
-  sysfileinfoDelete
-} from '@/api/file'
-export default {
-  name: 'Right',
-  components: {
-    UploadDialog
-  },
-  filters: {
-    formatFile(pic) {
-      const type = pic.substring(pic.lastIndexOf('.') + 1, pic.length)
-      const FileIcons = [
-        {
-          icon: '',
-          matchList: ['bmp', 'jpg', 'png', 'jpeg', 'gif', 'webp']
-        },
-        {
-          icon: require('../../assets/icons/txtbeifen.png'),
-          matchList: ['text', 'txt']
-        },
-        {
-          icon: require('../../assets/icons/Zip.png'),
-          matchList: ['zip', 'tar', '7z']
-        },
-        {
-          icon: require('../../assets/icons/rar.png'),
-          matchList: ['rar']
-        },
-        {
-          icon: require('../../assets/icons/Word.png'),
-          matchList: ['doc', 'docx']
-        },
-        {
-          icon: require('../../assets/icons/pptbeifen.png'),
-          matchList: ['ppt', 'pptx']
-        },
-        {
-          icon: require('../../assets/icons/Excel.png'),
-          matchList: ['xlsx', 'xls']
-        },
-        {
-          icon: require('../../assets/icons/PDFbeifen.png'),
-          matchList: ['pdf', 'pdfx']
-        },
-        {
-          icon: require('../../assets/icons/Idea.png'),
-          matchList: ['java', 'class', 'jar', 'kt']
-        },
-        {
-          icon: require('../../assets/icons/tubiaozhizuomoban-01.png'),
-          matchList: ['psd']
-        },
-        {
-          icon: require('../../assets/icons/tubiaozhizuomoban2-01-01.png'),
-          matchList: ['ai']
-        },
-        {
-          icon: require('../../assets/icons/Web.png'),
-          matchList: ['ts', 'html', 'css', 'js']
-        },
-        {
-          icon: require('../../assets/icons/video2.png'),
-          matchList: ['mp4']
-        },
-        {
-          icon: require('../../assets/icons/voice.png'),
-          matchList: ['mp3']
-        },
-        {
-          icon: require('../../assets/icons/AwesomeVue.png'),
-          matchList: ['vue']
-        },
-        {
-          icon: require('../../assets/icons/Pycharm.png'),
-          matchList: ['py']
-        },
-        {
-          icon: require('../../assets/icons/Phpstorm-01.png'),
-          matchList: ['php']
-        }
-      ]
-      const UnknowIcon = require('../../assets/icons/Unknow.png')
-      if (FileIcons[0].matchList.includes(type)) {
-        return pic
-      } else {
-        const file = FileIcons.filter(item => item.matchList.includes(type))
-        if (file.length > 0) {
-          return file[0].icon
-        } else {
-          return UnknowIcon
-        }
-      }
-    }
-  },
-  data() {
-    return {
-      uploadShow: false,
-      pageNo: 1,
-      pageSize: 50,
-      total: 0,
-      rightBtn: [
-        {
-          icon: 'el-icon-s-grid'
-        },
-        {
-          icon: 'ri-table-fill'
-        }
-      ],
-      rightIndex: 0,
-      rightData: {},
-      tableData: [],
-      searchFile: '',
-      height: 0,
-      visible: false,
-      rightMenu: {},
-      treePath: {},
-      isBlank: false
-    }
-  },
-  mounted() {
-    eventBus.$on('treeNodeClick', e => {
-      this.treePath = e
-      this.getList()
-    })
-    this.rowDrop()
-    this.height = document.querySelector('.layout-right').clientHeight - 107
-  },
-  destroyed() {
-    eventBus.$off('treeNodeClick')
-  },
-  methods: {
-    handlePage(e) {
-      this.pageNo = e
-      this.getList()
-    },
-    getList() {
-      const pId = this.treePath.currentNode.id
-      if (pId) {
-        sysfileinfoList({
-          pId,
-          pageIndex: this.pageNo,
-          pageSize: this.pageSize
-        }).then(ret => {
-          if (ret.code === 200) {
-            this.total = ret.data.count
-            this.tableData = ret.data.list.map(item => {
-              return {
-                ...item,
-                open: false
-              }
-            })
-          }
-        })
-      }
-    },
-    handleUploadConfirm(e) {
-      this.uploadMultiple(e).then(ret => {
-        if (ret) {
-          this.getList()
-        }
-      })
-      this.uploadShow = false
-    },
-    uploadMultiple(e) {
-      const path = e.map(item => {
-        return sysfileinfoAdd({
-          type: item.type,
-          name: item.name,
-          size: `${item.size}`,
-          url: item.path,
-          fullUrl: item.full_path,
-          pId: this.treePath.currentNode.id
-        })
-      })
-      return Promise.all(path)
-    },
-    handleUploadCancel() {
-      this.uploadShow = false
-    },
-    handleTableAction(a, b) {
-      this.rightData.currentData = a
-      this.handleAction(b)
-    },
-    handleAction(e) {
-      switch (e) {
-        case 1:
-          this.uploadShow = true
-          break
-        case 2:
-          this.tableData.forEach((item, index) => {
-            if (item.id === this.rightData.currentData.id) {
-              this.tableData[index].open = true
-            }
-          })
-          break
-        case 3:
-          sysfileinfoDelete(this.rightData.currentData.id).then(ret => {
-            if (ret.code === 200) {
-              this.getList()
-            }
-          })
-          break
-        case 4:
-          window.open(this.rightData.currentData.fullUrl)
-          break
-      }
-    },
-    handleTagsOver(index) {
-      const tags = document.querySelectorAll('.right-contextMenu-item')
-      const item = tags[index]
-      item.style.cssText = `color:${
-        this.$store.state.settings.theme
-      };background:${this.$store.state.settings.theme.colorRgb()}`
-    },
-    handleTagsLeave(index) {
-      const tags = document.querySelectorAll('.right-contextMenu-item')
-      const item = tags[index]
-      item.style.cssText = `color:#606266`
-    },
-    rightClick(a, b, c, d) {
-      c.preventDefault()
-      this.rightMenu = { top: c.pageY + 'px', left: c.pageX + 'px' }
-      this.visible = true
-      if (!a) {
-        this.isBlank = true
-      } else {
-        this.isBlank = false
-      }
-      this.rightData = {
-        currentNode: b,
-        currentData: a
-      }
-      document.onclick = ev => {
-        if (ev.target !== document.getElementById('perTreeMenu')) {
-          this.visible = false
-        }
-      }
-    },
-    handleBlur(a, b) {
-      if (this.tableData.length > 0) {
-        this.tableData.forEach(item => {
-          item.open = false
-        })
-        sysfileinfoEdit({
-          ...b
-        })
-      }
-    },
-    rowDrop() {
-      const tbody = document.querySelector('.el-table__body-wrapper tbody')
-      if (tbody) {
-        const _this = this
-        Sortable.create(tbody, {
-          onEnd({ newIndex, oldIndex }) {
-            const currRow = _this.tableData.splice(oldIndex, 1)[0]
-            _this.tableData.splice(newIndex, 0, currRow)
-          }
-        })
-      }
-    },
-    handleRightBtn(e) {
-      this.rightIndex = e
-    },
-    renderSize(value) {
-      if (value === null || value === '') {
-        return '0 Bytes'
-      }
-      const unitArr = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
-      let index = 0
-      const srcsize = parseFloat(value)
-      index = Math.floor(Math.log(srcsize) / Math.log(1024))
-      let size = srcsize / Math.pow(1024, index)
-      size = size.toFixed(2)
-      return size + unitArr[index]
-    }
-  }
-}
-
-// eslint-disable-next-line no-extend-native
-String.prototype.colorRgb = function() {
-  let sColor = this.toLowerCase()
-  const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/
-  if (sColor && reg.test(sColor)) {
-    if (sColor.length === 4) {
-      let sColorNew = '#'
-      for (let i = 1; i < 4; i += 1) {
-        sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1))
-      }
-      sColor = sColorNew
-    }
-    const sColorChange = []
-    for (let i = 1; i < 7; i += 2) {
-      sColorChange.push(parseInt('0x' + sColor.slice(i, i + 2)))
-    }
-    return 'rgba(' + sColorChange.join(',') + ',0.2)'
-  } else {
-    return sColor
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-.file-btn {
-  display: flex;
-  justify-content: flex-end;
-  align-items: center;
-  margin-left: 8px;
-  .file-btn-item {
-    width: 35px;
-    height: 35px;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    cursor: pointer;
-    border-radius: 3px;
-    i {
-      font-size: 20px;
-      border-color: #ccc;
-      color: #8a8a8a;
-    }
-  }
-}
-.file-btn-item-active {
-  background-color: #e6e6e6;
-}
-.file-action {
-  display: flex;
-  justify-content: flex-end;
-  align-items: center;
-}
-.dir {
-  height: 36px;
-  line-height: 36px;
-}
-.file-container /deep/ {
-  .el-scrollbar__wrap::-webkit-scrollbar {
-    display: none;
-  }
-  .el-table .cell {
-    line-height: 35px;
-  }
-  .el-table thead {
-    tr {
-      background-color: #d8e5f0 !important;
-    }
-  }
-  .el-table .el-table__header-wrapper th {
-    background-color: transparent;
-  }
-  .file-item-inner {
-    width: 12%;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    cursor: move;
-  }
-  .file-container-inner {
-    display: flex;
-    justify-content: flex-start;
-    align-items: center;
-    flex-wrap: wrap;
-  }
-  .file-item {
-    width: 130px;
-    height: 130px;
-    display: flex;
-    flex-direction: column;
-    justify-content: center;
-    align-items: center;
-    .file-item-icon {
-      margin-bottom: 5px;
-      img {
-        width: 50px;
-        height: 50px;
-      }
-    }
-    .file-item-title {
-      word-break: break-all;
-      font-size: 14px;
-      line-height: 20px;
-      text-align: center;
-      overflow: hidden;
-      text-overflow: ellipsis;
-      white-space: nowrap;
-      width: 60%;
-    }
-    &:active {
-      background-color: #f0f1f5;
-    }
-  }
-  .el-scrollbar {
-    height: calc(100vh - 280px);
-  }
-  .page {
-    height: 60rpx;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-  }
-}
-.right {
-  height: 100%;
-  .el-card {
-    height: 100%;
-  }
-}
-.file {
-  position: relative;
-}
-
-.contextmenu {
-  background: #fff;
-  z-index: 3000;
-  position: fixed;
-  list-style-type: none;
-  border-radius: 4px;
-  box-shadow: 0 3px 10px 0 rgba(0, 0, 0, 0.1), 0 1px 7px 0 rgba(0, 0, 0, 0.1);
-  -moz-user-select: none;
-  -webkit-user-select: none;
-  user-select: none;
-  .el-divider--horizontal {
-    margin: 0;
-  }
-  .contextMenu-item {
-    height: 46px;
-    cursor: pointer;
-    line-height: 46px;
-    width: 180px;
-    padding: 0 0 0 20px;
-    display: flex;
-    justify-content: flex-start;
-    align-items: center;
-    color: #333;
-    span {
-      margin-left: 6px;
-      font-size: 14.3px;
-    }
-    //&:hover {
-    //  color: currentColor;
-    //  background: currentColor;
-    //}
-  }
-}
-
-.type {
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  img {
-    width: 20px;
-    height: 20px;
-    margin-right: 5px;
-  }
-}
-</style>

+ 0 - 118
src/components/UploadDialog/form.vue

@@ -1,118 +0,0 @@
-<template>
-  <div class="form">
-    <el-form ref="form" :model="form" label-width="100px" label-position="left">
-      <el-form-item label="上传数据源">
-        <el-radio-group v-model="form.dataSource">
-          <el-radio-button label="1">本地</el-radio-button>
-          <el-radio-button label="2">阿里云OSS</el-radio-button>
-          <!-- <el-radio-button label="3">七牛云</el-radio-button>
-          <el-radio-button label="4">腾讯云COS</el-radio-button> -->
-        </el-radio-group>
-      </el-form-item>
-    </el-form>
-    <el-tabs v-model="activeTab">
-      <el-tab-pane label="文件" name="1">
-        <el-upload
-          ref="upload"
-          class="upload-demo"
-          drag
-          :action="url"
-          :auto-upload="false"
-          :limit="limit"
-          :on-exceed="handleLimit"
-          :http-request="uploadFile"
-          multiple
-        >
-          <i class="el-icon-upload" />
-          <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
-        </el-upload>
-      </el-tab-pane>
-      <el-tab-pane label="Base64文件" name="2">
-        <el-input
-          v-model="form.base64"
-          type="textarea"
-          :autosize="{ minRows: 7, maxRows: 8 }"
-        />
-      </el-tab-pane>
-    </el-tabs>
-    <div class="dialog-footer">
-      <el-button @click="cancel">关 闭</el-button>
-      <el-button type="primary" @click="confirm">提 交</el-button>
-    </div>
-  </div>
-</template>
-
-<script>
-import request from '@/utils/request'
-export default {
-  name: 'UploadForm',
-  data() {
-    return {
-      url: process.env.VUE_APP_BASE_API + '/api/v1/public/uploadFile',
-      activeTab: '1',
-      form: {
-        dataSource: '1',
-        base64: ''
-      },
-      formData: '',
-      limit: 10
-    }
-  },
-  mounted() {},
-  methods: {
-    handleLimit(e) {
-      if (e.length > this.limit) {
-        this.$message({
-          message: `最大单次只可上传${this.limit}条`,
-          type: 'warning'
-        })
-      }
-    },
-    uploadFile(file) {
-      this.formData.append('file', file.file)
-    },
-    confirm() {
-      if (this.activeTab === '2') {
-        this.formData = new FormData()
-        this.formData.append('file', this.form.base64)
-        this.formData.append('source', this.form.dataSource)
-        this.formData.append('type', '3')
-      } else {
-        this.formData = new FormData()
-        this.$refs.upload.submit()
-        this.formData.append('source', this.form.dataSource)
-        this.formData.append('type', '2')
-      }
-      request.post(this.url, this.formData, {
-        'Content-Type': 'multipart/form-data'
-      }).then(ret => {
-        if (ret.code === 200) {
-          this.form.base64 = ''
-          this.$refs.upload.clearFiles()
-          this.$emit('confirm', Array.isArray(ret.data) ? ret.data : [ret.data])
-        }
-      })
-    },
-    cancel() {
-      this.$emit('cancel')
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-.form /deep/ {
-  .el-upload {
-    width: 100%;
-  }
-  .el-upload-dragger {
-    width: 100%;
-  }
-}
-.dialog-footer {
-  padding: 30px 0;
-  display: flex;
-  justify-content: flex-end;
-  align-items: center;
-}
-</style>

+ 0 - 53
src/components/UploadDialog/index.vue

@@ -1,53 +0,0 @@
-<template>
-  <div class="upload-dialog">
-    <el-dialog
-      v-dialogDrag
-      title="上传文件"
-      :visible.sync="show"
-      width="550px"
-      @close="cancel"
-    >
-      <upload-form @confirm="confirm" @cancel="cancel" />
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import UploadForm from './form'
-export default {
-  name: 'UploadDialog',
-  components: {
-    UploadForm
-  },
-  props: {
-    show: {
-      type: Boolean,
-      default: false
-    }
-  },
-  data() {
-    return {
-
-    }
-  },
-  mounted() {
-
-  },
-  methods: {
-    confirm(e) {
-      this.$emit('confirm', e)
-    },
-    cancel() {
-      this.$emit('cancel')
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-  .upload-dialog /deep/ {
-    .el-dialog__body{
-      padding: 30px 20px 0 20px;
-    }
-  }
-</style>

+ 4 - 2
src/views/admin/dict/data.vue

@@ -252,7 +252,7 @@ export default {
         dictLabel: undefined,
         dictValue: undefined,
         dictSort: 0,
-        status: '0',
+        status: '2',
         remark: undefined
       }
       this.resetForm('form')
@@ -288,6 +288,7 @@ export default {
       const dictCode = row.dictCode || this.ids
       getData(dictCode).then(response => {
         this.form = response.data
+        this.form.status = String(this.form.status)
         this.open = true
         this.title = '修改字典数据'
         this.isEdit = true
@@ -297,6 +298,7 @@ export default {
     submitForm: function() {
       this.$refs['form'].validate(valid => {
         if (valid) {
+          this.form.status = parseInt(this.form.status)
           if (this.form.dictCode !== undefined) {
             updateData(this.form).then(response => {
               if (response.code === 200) {
@@ -329,7 +331,7 @@ export default {
         cancelButtonText: '取消',
         type: 'warning'
       }).then(function() {
-        return delData(dictCodes)
+        return delData({ 'ids': dictCodes })
       }).then((response) => {
         if (response.code === 200) {
           this.msgSuccess(response.msg)

+ 4 - 2
src/views/admin/dict/index.vue

@@ -246,7 +246,7 @@ export default {
         id: undefined,
         dictName: undefined,
         dictType: undefined,
-        status: '0',
+        status: '2',
         remark: undefined
       }
       this.resetForm('form')
@@ -281,6 +281,7 @@ export default {
       const dictId = row.id || this.ids
       getType(dictId).then(response => {
         this.form = response.data
+        this.form.status = String(this.form.status)
         this.open = true
         this.title = '修改字典类型'
         this.isEdit = true
@@ -290,6 +291,7 @@ export default {
     submitForm: function() {
       this.$refs['form'].validate(valid => {
         if (valid) {
+          this.form.status = parseInt(this.form.status)
           if (this.form.id !== undefined) {
             updateType(this.form).then(response => {
               if (response.code === 200) {
@@ -322,7 +324,7 @@ export default {
         cancelButtonText: '取消',
         type: 'warning'
       }).then(function() {
-        return delType(dictIds)
+        return delType({ 'ids': dictIds })
       }).then(() => {
         this.getList()
         this.msgSuccess('删除成功')

+ 2 - 2
src/views/admin/sys-config/index.vue

@@ -197,7 +197,7 @@
                 >{{ dict.dictLabel }}</el-radio>
               </el-radio-group>
             </el-form-item>
-            <el-form-item label="是否前台显示" prop="isFrontend">
+            <el-form-item label="前台显示" prop="isFrontend">
               <el-select v-model="form.isFrontend" placeholder="是否前台显示" clearable size="small">
                 <el-option label="是" value="1" />
                 <el-option label="否" value="2" />
@@ -302,7 +302,7 @@ export default {
         configKey: undefined,
         configValue: undefined,
         configType: 'Y',
-        isFrontend: 1,
+        isFrontend: '1',
         remark: undefined
       }
       this.resetForm('form')

+ 9 - 4
src/views/admin/sys-dept/index.vue

@@ -54,7 +54,7 @@
           <el-table-column prop="status" label="状态" :formatter="statusFormat" width="100">
             <template slot-scope="scope">
               <el-tag
-                :type="scope.row.status === '1' ? 'danger' : 'success'"
+                :type="scope.row.status === 1 ? 'danger' : 'success'"
                 disable-transitions
               >{{ statusFormat(scope.row) }}</el-tag>
             </template>
@@ -185,7 +185,8 @@ export default {
         status: undefined
       },
       // 表单参数
-      form: {},
+      form: {
+      },
       // 表单校验
       rules: {
         parentId: [
@@ -271,11 +272,11 @@ export default {
         deptId: undefined,
         parentId: undefined,
         deptName: undefined,
-        sorc: undefined,
+        sort: 10,
         leader: undefined,
         phone: undefined,
         email: undefined,
-        status: '0'
+        status: '2'
       }
     },
     /** 搜索按钮操作 */
@@ -300,6 +301,8 @@ export default {
 
       getDept(row.deptId).then(response => {
         this.form = response.data
+        this.form.status = String(this.form.status)
+        this.form.sort = String(this.form.sort)
         this.open = true
         this.title = '修改部门'
         this.isEdit = true
@@ -309,6 +312,8 @@ export default {
     submitForm: function() {
       this.$refs['form'].validate(valid => {
         if (valid) {
+          this.form.status = parseInt(this.form.status)
+          this.form.sort = parseInt(this.form.sort)
           if (this.form.deptId !== undefined) {
             updateDept(this.form, this.form.deptId).then(response => {
               if (response.code === 200) {

+ 8 - 5
src/views/admin/sys-post/index.vue

@@ -87,7 +87,7 @@
           <el-table-column label="状态" align="center" prop="status" :formatter="statusFormat">
             <template slot-scope="scope">
               <el-tag
-                :type="scope.row.status === '1' ? 'danger' : 'success'"
+                :type="scope.row.status === 1 ? 'danger' : 'success'"
                 disable-transitions
               >{{ statusFormat(scope.row) }}</el-tag>
             </template>
@@ -242,7 +242,7 @@ export default {
         postCode: undefined,
         postName: undefined,
         sort: 0,
-        status: '0',
+        status: '1',
         remark: undefined
       }
       this.resetForm('form')
@@ -276,6 +276,7 @@ export default {
       const postId = row.postId || this.ids
       getPost(postId).then(response => {
         this.form = response.data
+        this.form.status = String(this.form.status)
         this.open = true
         this.title = '修改岗位'
       })
@@ -284,6 +285,7 @@ export default {
     submitForm: function() {
       this.$refs['form'].validate(valid => {
         if (valid) {
+          this.form.status = parseInt(this.form.status)
           if (this.form.postId !== undefined) {
             updatePost(this.form, this.form.postId).then(response => {
               if (response.code === 200) {
@@ -310,13 +312,14 @@ export default {
     },
     /** 删除按钮操作 */
     handleDelete(row) {
-      const postIds = row.postId || this.ids
-      this.$confirm('是否确认删除岗位编号为"' + postIds + '"的数据项?', '警告', {
+      // const postIds = row.postId || this.ids
+      const Ids = (row.postId && [row.postId]) || this.ids
+      this.$confirm('是否确认删除岗位编号为"' + Ids + '"的数据项?', '警告', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'
       }).then(function() {
-        return delPost(postIds)
+        return delPost({ 'ids': Ids })
       }).then((response) => {
         if (response.code === 200) {
           this.msgSuccess(response.msg)

+ 0 - 370
src/views/cms/sys-category/index.vue

@@ -1,370 +0,0 @@
-
-<template>
-  <BasicLayout>
-    <template #wrapper>
-      <el-card class="box-card">
-        <el-form ref="queryForm" :model="queryParams" :inline="true" label-width="68px">
-          <el-form-item label="名称" prop="name"><el-input
-            v-model="queryParams.name"
-            placeholder="请输入名称"
-            clearable
-            size="small"
-            @keyup.enter.native="handleQuery"
-          />
-          </el-form-item>
-          <el-form-item label="状态" prop="status">
-            <el-select
-              v-model="queryParams.status"
-              placeholder="分类管理状态"
-              clearable
-              size="small"
-            >
-              <el-option
-                v-for="dict in statusOptions"
-                :key="dict.dictValue"
-                :label="dict.dictLabel"
-                :value="dict.dictValue"
-              />
-            </el-select>
-          </el-form-item>
-
-          <el-form-item>
-            <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-          </el-form-item>
-        </el-form>
-
-        <el-row :gutter="10" class="mb8">
-          <el-col :span="1.5">
-            <el-button
-              v-permisaction="['cms:sysCategory:add']"
-              type="primary"
-              icon="el-icon-plus"
-              size="mini"
-              @click="handleAdd"
-            >新增
-            </el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button
-              v-permisaction="['cms:sysCategory:edit']"
-              type="success"
-              icon="el-icon-edit"
-              size="mini"
-              :disabled="single"
-              @click="handleUpdate"
-            >修改
-            </el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button
-              v-permisaction="['cms:sysCategory:remove']"
-              type="danger"
-              icon="el-icon-delete"
-              size="mini"
-              :disabled="multiple"
-              @click="handleDelete"
-            >删除
-            </el-button>
-          </el-col>
-        </el-row>
-
-        <el-table v-loading="loading" :data="cmsList" @selection-change="handleSelectionChange">
-          <el-table-column type="selection" width="55" align="center" /><el-table-column
-            label="名称"
-            align="center"
-            prop="name"
-            :show-overflow-tooltip="true"
-          /><el-table-column
-            label="排序"
-            align="center"
-            prop="sort"
-            :show-overflow-tooltip="true"
-          /><el-table-column
-            label="状态"
-            align="center"
-            prop="status"
-            :formatter="statusFormat"
-            width="100"
-          >
-            <template slot-scope="scope">
-              {{ statusFormat(scope.row) }}
-            </template>
-          </el-table-column>
-          <el-table-column
-            label="创建时间"
-            align="center"
-            prop="createdAt"
-          >
-            <template slot-scope="scope">
-              <span>{{ parseTime(scope.row.createdAt) }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-            <template slot-scope="scope">
-              <el-button
-                v-permisaction="['cms:sysCategory:edit']"
-                size="mini"
-                type="text"
-                icon="el-icon-edit"
-                @click="handleUpdate(scope.row)"
-              >修改
-              </el-button>
-              <el-button
-                v-permisaction="['cms:sysCategory:remove']"
-                size="mini"
-                type="text"
-                icon="el-icon-delete"
-                @click="handleDelete(scope.row)"
-              >删除
-              </el-button>
-            </template>
-          </el-table-column>
-        </el-table>
-
-        <pagination
-          v-show="total>0"
-          :total="total"
-          :page.sync="queryParams.pageIndex"
-          :limit.sync="queryParams.pageSize"
-          @pagination="getList"
-        />
-
-        <!-- 添加或修改对话框 -->
-        <el-dialog :title="title" :visible.sync="open" width="500px">
-          <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-
-            <el-form-item label="名称" prop="name">
-              <el-input
-                v-model="form.name"
-                placeholder="名称"
-              />
-            </el-form-item>
-            <el-form-item label="图标" prop="img">
-              <el-input
-                v-model="form.img"
-                placeholder="图标"
-              />
-            </el-form-item>
-            <el-form-item label="排序" prop="sort">
-              <el-input
-                v-model="form.sort"
-                placeholder="排序"
-                type="number"
-              />
-            </el-form-item>
-            <el-form-item label="状态" prop="status">
-              <el-radio-group v-model="form.status">
-                <el-radio
-                  v-for="dict in statusOptions"
-                  :key="dict.dictValue"
-                  :label="dict.dictValue"
-                >{{ dict.dictLabel }}</el-radio>
-              </el-radio-group>
-            </el-form-item>
-            <el-form-item label="备注" prop="remark">
-              <el-input
-                v-model="form.remark"
-                placeholder="备注"
-              />
-            </el-form-item>
-          </el-form>
-          <div slot="footer" class="dialog-footer">
-            <el-button type="primary" @click="submitForm">确 定</el-button>
-            <el-button @click="cancel">取 消</el-button>
-          </div>
-        </el-dialog>
-        <FileChoose ref="fileChoose" :dialog-form-visible="fileOpen" @confirm="getImgList" @close="fileClose" />
-      </el-card>
-    </template>
-  </BasicLayout>
-</template>
-
-<script>
-import { addSysCategory, delSysCategory, getSysCategory, listSysCategory, updateSysCategory } from '@/api/cms/sys-category'
-import FileChoose from '@/components/FileChoose'
-
-export default {
-  name: 'SysCategoryManage',
-  components: {
-    FileChoose
-  },
-  data() {
-    return {
-      // 遮罩层
-      loading: true,
-      // 选中数组
-      ids: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 总条数
-      total: 0,
-      // 弹出层标题
-      title: '',
-      // 是否显示弹出层
-      open: false,
-      isEdit: false,
-      fileOpen: false,
-      fileIndex: undefined,
-      // 类型数据字典
-      typeOptions: [],
-      cmsList: [],
-      statusOptions: [],
-      // 关系表类型
-
-      // 查询参数
-      queryParams: {
-        pageIndex: 1,
-        pageSize: 10,
-        name: undefined,
-        status: undefined
-
-      },
-      // 表单参数
-      form: {
-      },
-      // 表单校验
-      rules: {
-        name: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
-        status: [{ required: true, message: '状态不能为空', trigger: 'blur' }],
-        sort: [{ required: true, message: '排序不能为空', trigger: 'blur' }]
-      }
-    }
-  },
-  created() {
-    this.getList()
-    this.getDicts('sys_common_status').then(response => {
-      this.statusOptions = response.data
-    })
-  },
-  methods: {
-    /** 查询参数列表 */
-    getList() {
-      this.loading = true
-      listSysCategory(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
-        this.cmsList = response.data.list
-        this.total = response.data.count
-        this.loading = false
-      }
-      )
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false
-      this.reset()
-    },
-    // 表单重置
-    reset() {
-      this.form = {
-
-        ID: undefined,
-        name: undefined,
-        img: undefined,
-        sort: 999,
-        status: undefined,
-        remark: undefined
-      }
-      this.resetForm('form')
-    },
-    getImgList: function() {
-      this.form[this.fileIndex] = this.$refs['fileChoose'].resultList[0].fullUrl
-    },
-    fileClose: function() {
-      this.fileOpen = false
-    },
-    statusFormat(row) {
-      return this.selectDictLabel(this.statusOptions, row.status)
-    },
-    // 关系
-    // 文件
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageIndex = 1
-      this.getList()
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.dateRange = []
-      this.resetForm('queryForm')
-      this.handleQuery()
-    },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset()
-      this.open = true
-      this.title = '添加分类管理'
-      this.isEdit = false
-    },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
-      this.single = selection.length !== 1
-      this.multiple = !selection.length
-    },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.reset()
-      const ID = row.id || this.ids
-      getSysCategory(ID).then(response => {
-        this.form = response.data
-        this.form.status = String(this.form.status)
-        this.open = true
-        this.title = '修改分类管理'
-        this.isEdit = true
-      })
-    },
-    /** 提交按钮 */
-    submitForm: function() {
-      this.$refs['form'].validate(valid => {
-        if (valid) {
-          this.form.sort = parseInt(this.form.sort)
-          this.form.status = parseInt(this.form.status)
-          if (this.form.id !== undefined) {
-            updateSysCategory(this.form).then(response => {
-              if (response.code === 200) {
-                this.msgSuccess(response.msg)
-                this.open = false
-                this.getList()
-              } else {
-                this.msgError(response.msg)
-              }
-            })
-          } else {
-            addSysCategory(this.form).then(response => {
-              if (response.code === 200) {
-                this.msgSuccess(response.msg)
-                this.open = false
-                this.getList()
-              } else {
-                this.msgError(response.msg)
-              }
-            })
-          }
-        }
-      })
-    },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const ids = (row.id && [row.id]) || this.ids
-
-      this.$confirm('是否确认删除编号为"' + ids + '"的数据项?', '警告', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(function() {
-        return delSysCategory(ids)
-      }).then((response) => {
-        if (response.code === 200) {
-          this.msgSuccess(response.msg)
-          this.open = false
-          this.getList()
-        } else {
-          this.msgError(response.msg)
-        }
-      }).catch(function() {})
-    }
-  }
-}
-</script>

+ 0 - 277
src/views/cms/sys-content/components/ArticleDetail.vue

@@ -1,277 +0,0 @@
-<template>
-  <div class="createPost-container">
-    <el-form ref="postForm" :model="postForm" :rules="rules" class="form-container">
-
-      <sticky :z-index="10" :class-name="'sub-navbar '+postForm.status">
-        <CommentDropdown v-model="postForm.comment_disabled" />
-        <PlatformDropdown v-model="postForm.platforms" />
-        <SourceUrlDropdown v-model="postForm.source_uri" />
-        <el-button v-loading="loading" style="margin-left: 10px;" type="success" @click="submitForm">
-          Publish
-        </el-button>
-        <el-button v-loading="loading" type="warning" @click="draftForm">
-          Draft
-        </el-button>
-      </sticky>
-
-      <div class="createPost-main-container">
-        <el-row>
-          <Warning />
-
-          <el-col :span="24">
-            <el-form-item style="margin-bottom: 40px;" prop="title">
-              <MDinput v-model="postForm.title" :maxlength="100" name="name" required>
-                Title
-              </MDinput>
-            </el-form-item>
-
-            <div class="postInfo-container">
-              <el-row>
-                <el-col :span="8">
-                  <el-form-item label-width="60px" label="Author:" class="postInfo-container-item">
-                    <el-select v-model="postForm.author" :remote-method="getRemoteUserList" filterable default-first-option remote placeholder="Search user">
-                      <el-option v-for="(item,index) in userListOptions" :key="item+index" :label="item" :value="item" />
-                    </el-select>
-                  </el-form-item>
-                </el-col>
-
-                <el-col :span="10">
-                  <el-form-item label-width="120px" label="Publish Time:" class="postInfo-container-item">
-                    <el-date-picker v-model="displayTime" type="datetime" format="yyyy-MM-dd HH:mm:ss" placeholder="Select date and time" />
-                  </el-form-item>
-                </el-col>
-
-                <el-col :span="6">
-                  <el-form-item label-width="90px" label="Importance:" class="postInfo-container-item">
-                    <el-rate
-                      v-model="postForm.importance"
-                      :max="3"
-                      :colors="['#99A9BF', '#F7BA2A', '#FF9900']"
-                      :low-threshold="1"
-                      :high-threshold="3"
-                      style="display:inline-block"
-                    />
-                  </el-form-item>
-                </el-col>
-              </el-row>
-            </div>
-          </el-col>
-        </el-row>
-
-        <el-form-item style="margin-bottom: 40px;" label-width="70px" label="Summary:">
-          <el-input v-model="postForm.content_short" :rows="1" type="textarea" class="article-textarea" autosize placeholder="Please enter the content" />
-          <span v-show="contentShortLength" class="word-counter">{{ contentShortLength }}words</span>
-        </el-form-item>
-
-        <el-form-item prop="content" style="margin-bottom: 30px;">
-          <Tinymce ref="editor" v-model="postForm.content" :height="400" />
-        </el-form-item>
-
-        <el-form-item prop="image_uri" style="margin-bottom: 30px;">
-          <Upload v-model="postForm.image_uri" />
-        </el-form-item>
-      </div>
-    </el-form>
-  </div>
-</template>
-
-<script>
-import Tinymce from '@/components/Tinymce'
-import Upload from '@/components/Upload/SingleImage3'
-import MDinput from '@/components/MDinput'
-import Sticky from '@/components/Sticky' // 粘性header组件
-import { validURL } from '@/utils/validate'
-// import { fetchArticle } from '@/api/article'
-import { searchUser } from '@/api/remote-search'
-import Warning from './Warning'
-import { CommentDropdown, PlatformDropdown, SourceUrlDropdown } from './Dropdown'
-const defaultForm = {
-  status: 'draft',
-  title: '', // 文章题目
-  content: '', // 文章内容
-  content_short: '', // 文章摘要
-  source_uri: '', // 文章外链
-  image_uri: '', // 文章图片
-  display_time: undefined, // 前台展示时间
-  id: undefined,
-  platforms: ['a-platform'],
-  comment_disabled: false,
-  importance: 0
-}
-export default {
-  name: 'ArticleDetail',
-  components: { Tinymce, MDinput, Upload, Sticky, Warning, CommentDropdown, PlatformDropdown, SourceUrlDropdown },
-  props: {
-    isEdit: {
-      type: Boolean,
-      default: false
-    }
-  },
-  data() {
-    const validateRequire = (rule, value, callback) => {
-      if (value === '') {
-        this.$message({
-          message: rule.field + '为必传项',
-          type: 'error'
-        })
-        callback(new Error(rule.field + '为必传项'))
-      } else {
-        callback()
-      }
-    }
-    const validateSourceUri = (rule, value, callback) => {
-      if (value) {
-        if (validURL(value)) {
-          callback()
-        } else {
-          this.$message({
-            message: '外链url填写不正确',
-            type: 'error'
-          })
-          callback(new Error('外链url填写不正确'))
-        }
-      } else {
-        callback()
-      }
-    }
-    return {
-      postForm: Object.assign({}, defaultForm),
-      loading: false,
-      userListOptions: [],
-      rules: {
-        image_uri: [{ validator: validateRequire }],
-        title: [{ validator: validateRequire }],
-        content: [{ validator: validateRequire }],
-        source_uri: [{ validator: validateSourceUri, trigger: 'blur' }]
-      },
-      tempRoute: {}
-    }
-  },
-  computed: {
-    contentShortLength() {
-      return this.postForm.content_short.length
-    },
-    displayTime: {
-      // set and get is useful when the data
-      // returned by the back end api is different from the front end
-      // back end return => "2013-06-25 06:59:25"
-      // front end need timestamp => 1372114765000
-      get() {
-        return (+new Date(this.postForm.display_time))
-      },
-      set(val) {
-        this.postForm.display_time = new Date(val)
-      }
-    }
-  },
-  created() {
-    if (this.isEdit) {
-      const id = this.$route.params && this.$route.params.id
-      this.fetchData(id)
-    }
-    // Why need to make a copy of this.$route here?
-    // Because if you enter this page and quickly switch tag, may be in the execution of the setTagsViewTitle function, this.$route is no longer pointing to the current page
-    // https://github.com/PanJiaChen/vue-element-admin/issues/1221
-    this.tempRoute = Object.assign({}, this.$route)
-  },
-  methods: {
-    fetchData(id) {
-    //   fetchArticle(id).then(response => {
-    //     this.postForm = response.data
-    //     // just for test
-    //     this.postForm.title += `   Article Id:${this.postForm.id}`
-    //     this.postForm.content_short += `   Article Id:${this.postForm.id}`
-    //     // set tagsview title
-    //     this.setTagsViewTitle()
-    //     // set page title
-    //     this.setPageTitle()
-    //   }).catch(err => {
-    //     console.log(err)
-    //   })
-    },
-    setTagsViewTitle() {
-      const title = 'Edit Article'
-      const route = Object.assign({}, this.tempRoute, { title: `${title}-${this.postForm.id}` })
-      this.$store.dispatch('tagsView/updateVisitedView', route)
-    },
-    setPageTitle() {
-      const title = 'Edit Article'
-      document.title = `${title} - ${this.postForm.id}`
-    },
-    submitForm() {
-      console.log(this.postForm)
-      this.$refs.postForm.validate(valid => {
-        if (valid) {
-          this.loading = true
-          this.$notify({
-            title: '成功',
-            message: '发布文章成功',
-            type: 'success',
-            duration: 2000
-          })
-          this.postForm.status = 'published'
-          this.loading = false
-        } else {
-          console.log('error submit!!')
-          return false
-        }
-      })
-    },
-    draftForm() {
-      if (this.postForm.content.length === 0 || this.postForm.title.length === 0) {
-        this.$message({
-          message: '请填写必要的标题和内容',
-          type: 'warning'
-        })
-        return
-      }
-      this.$message({
-        message: '保存成功',
-        type: 'success',
-        showClose: true,
-        duration: 1000
-      })
-      this.postForm.status = 'draft'
-    },
-    getRemoteUserList(query) {
-      searchUser(query).then(response => {
-        if (!response.data.items) return
-        this.userListOptions = response.data.items.map(v => v.name)
-      })
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-@import "~@/styles/mixin.scss";
-.createPost-container {
-  position: relative;
-  .createPost-main-container {
-    padding: 40px 45px 20px 50px;
-    .postInfo-container {
-      position: relative;
-      @include clearfix;
-      margin-bottom: 10px;
-      .postInfo-container-item {
-        float: left;
-      }
-    }
-  }
-  .word-counter {
-    width: 40px;
-    position: absolute;
-    right: 10px;
-    top: 0px;
-  }
-}
-.article-textarea ::v-deep {
-  textarea {
-    padding-right: 40px;
-    resize: none;
-    border: none;
-    border-radius: 0px;
-    border-bottom: 1px solid #bfcbd9;
-  }
-}
-</style>

+ 0 - 41
src/views/cms/sys-content/components/Dropdown/Comment.vue

@@ -1,41 +0,0 @@
-<template>
-  <el-dropdown :show-timeout="100" trigger="click">
-    <el-button plain>
-      {{ !comment_disabled?'Comment: opened':'Comment: closed' }}
-      <i class="el-icon-caret-bottom el-icon--right" />
-    </el-button>
-    <el-dropdown-menu slot="dropdown" class="no-padding">
-      <el-dropdown-item>
-        <el-radio-group v-model="comment_disabled" style="padding: 10px;">
-          <el-radio :label="true">
-            Close comment
-          </el-radio>
-          <el-radio :label="false">
-            Open comment
-          </el-radio>
-        </el-radio-group>
-      </el-dropdown-item>
-    </el-dropdown-menu>
-  </el-dropdown>
-</template>
-
-<script>
-export default {
-  props: {
-    value: {
-      type: Boolean,
-      default: false
-    }
-  },
-  computed: {
-    comment_disabled: {
-      get() {
-        return this.value
-      },
-      set(val) {
-        this.$emit('input', val)
-      }
-    }
-  }
-}
-</script>

+ 0 - 46
src/views/cms/sys-content/components/Dropdown/Platform.vue

@@ -1,46 +0,0 @@
-<template>
-  <el-dropdown :hide-on-click="false" :show-timeout="100" trigger="click">
-    <el-button plain>
-      Platfroms({{ platforms.length }})
-      <i class="el-icon-caret-bottom el-icon--right" />
-    </el-button>
-    <el-dropdown-menu slot="dropdown" class="no-border">
-      <el-checkbox-group v-model="platforms" style="padding: 5px 15px;">
-        <el-checkbox v-for="item in platformsOptions" :key="item.key" :label="item.key">
-          {{ item.name }}
-        </el-checkbox>
-      </el-checkbox-group>
-    </el-dropdown-menu>
-  </el-dropdown>
-</template>
-
-<script>
-export default {
-  props: {
-    value: {
-      required: true,
-      default: () => [],
-      type: Array
-    }
-  },
-  data() {
-    return {
-      platformsOptions: [
-        { key: 'a-platform', name: 'a-platform' },
-        { key: 'b-platform', name: 'b-platform' },
-        { key: 'c-platform', name: 'c-platform' }
-      ]
-    }
-  },
-  computed: {
-    platforms: {
-      get() {
-        return this.value
-      },
-      set(val) {
-        this.$emit('input', val)
-      }
-    }
-  }
-}
-</script>

+ 0 - 38
src/views/cms/sys-content/components/Dropdown/SourceUrl.vue

@@ -1,38 +0,0 @@
-<template>
-  <el-dropdown :show-timeout="100" trigger="click">
-    <el-button plain>
-      Link
-      <i class="el-icon-caret-bottom el-icon--right" />
-    </el-button>
-    <el-dropdown-menu slot="dropdown" class="no-padding no-border" style="width:400px">
-      <el-form-item label-width="0px" style="margin-bottom: 0px" prop="source_uri">
-        <el-input v-model="source_uri" placeholder="Please enter the content">
-          <template slot="prepend">
-            URL
-          </template>
-        </el-input>
-      </el-form-item>
-    </el-dropdown-menu>
-  </el-dropdown>
-</template>
-
-<script>
-export default {
-  props: {
-    value: {
-      type: String,
-      default: ''
-    }
-  },
-  computed: {
-    source_uri: {
-      get() {
-        return this.value
-      },
-      set(val) {
-        this.$emit('input', val)
-      }
-    }
-  }
-}
-</script>

+ 0 - 3
src/views/cms/sys-content/components/Dropdown/index.js

@@ -1,3 +0,0 @@
-export { default as CommentDropdown } from './Comment'
-export { default as PlatformDropdown } from './Platform'
-export { default as SourceUrlDropdown } from './SourceUrl'

+ 0 - 12
src/views/cms/sys-content/components/Warning.vue

@@ -1,12 +0,0 @@
-<template>
-  <aside>
-    Creating and editing pages cannot be cached by keep-alive because keep-alive include does not currently support
-    caching based on routes, so it is currently cached based on component name. If you want to achieve a similar caching
-    effect, you can use a browser caching scheme such as localStorage. Or do not use keep-alive include to cache all
-    pages directly. See details
-    <a
-      href="https://panjiachen.github.io/vue-element-admin-site/guide/essentials/tags-view.html"
-      target="_blank"
-    >Document</a>
-  </aside>
-</template>

+ 0 - 141
src/views/cms/sys-content/create.vue

@@ -1,141 +0,0 @@
-<template>
-  <BasicLayout>
-    <template #wrapper>
-      <el-card class="box-card">
-        <el-form ref="form" :model="form" :rules="rules" label-width="80px" class="form-container">
-          <el-form-item label="分类" prop="cateId">
-            <el-select
-              v-model="form.cateId"
-              placeholder="请选择"
-            >
-              <el-option
-                v-for="dict in cateIdOptions"
-                :key="dict.key"
-                :label="dict.value"
-                :value="dict.key"
-              />
-            </el-select>
-          </el-form-item>
-          <el-form-item label="名称" prop="name">
-            <el-input
-              v-model="form.name"
-              placeholder="名称"
-            />
-          </el-form-item>
-          <el-form-item label="状态" prop="status">
-            <el-select
-              v-model="form.status"
-              placeholder="请选择"
-            >
-              <el-option
-                v-for="dict in statusOptions"
-                :key="dict.dictValue"
-                :label="dict.dictLabel"
-                :value="dict.dictValue"
-              />
-            </el-select>
-          </el-form-item>
-          <el-form-item label="内容" prop="content">
-            <Tinymce ref="editor" v-model="form.content" :height="400" />
-          </el-form-item>
-          <el-form-item label="备注" prop="remark">
-            <el-input
-              v-model="form.remark"
-              placeholder="备注"
-            />
-          </el-form-item>
-          <el-form-item label="排序" prop="sort">
-            <el-input
-              v-model="form.sort"
-              placeholder="排序"
-              type="number"
-            />
-          </el-form-item>
-          <el-form-item>
-            <el-button v-loading="loading" style="margin-left: 10px;" type="success" @click="submitForm">
-              提交
-            </el-button>
-            <el-button v-loading="loading" type="warning" @click="draftForm">
-              取消
-            </el-button>
-          </el-form-item>
-        </el-form>
-      </el-card>
-    </template>
-  </BasicLayout>
-</template>
-
-<script>
-import { addSysContent } from '@/api/cms/sys-content'
-import { listSysCategory } from '@/api/cms/sys-category'
-
-// import FileChoose from '@/components/FileChoose'
-import Tinymce from '@/components/Tinymce'
-// import RictText from '@/components/richtext'
-const defaultForm = {
-  status: 'draft'
-}
-export default {
-  name: 'SysContentCreate',
-  components: {
-    // FileChoose,
-    Tinymce
-  },
-  data() {
-    return {
-      loading: false,
-      postForm: Object.assign({}, defaultForm),
-      // 表单参数
-      form: {
-        sort: 999
-      },
-      statusOptions: [],
-      // 关系表类型
-      cateIdOptions: [],
-      // 表单校验
-      rules: {
-        cateId: [{ required: true, message: '分类id不能为空', trigger: 'blur' }],
-        name: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
-        status: [{ required: true, message: '状态不能为空', trigger: 'blur' }],
-        sort: [{ required: true, message: '排序不能为空', trigger: 'blur' }]
-      }
-    }
-  },
-  created() {
-    this.getSysCategoryItems()
-    this.getDicts('sys_content_status').then(response => {
-      this.statusOptions = response.data
-    })
-  },
-  methods: {
-    // 关系
-    getSysCategoryItems() {
-      this.getItems(listSysCategory, undefined).then(res => {
-        this.cateIdOptions = this.setItems(res, 'id', 'name')
-      })
-    },
-    draftForm() {
-
-    },
-    submitForm: function() {
-      console.log(this.form)
-      this.$refs['form'].validate(valid => {
-        if (valid) {
-          this.form.cateId = parseInt(this.form.cateId)
-          this.form.status = parseInt(this.form.status)
-          this.form.sort = parseInt(this.form.sort)
-          addSysContent(this.form).then(response => {
-            if (response.code === 200) {
-              this.msgSuccess(response.msg)
-              this.$store.dispatch('tagsView/delView', this.$route)
-              this.$router.go(-1)
-            } else {
-              this.msgError(response.msg)
-            }
-          })
-        }
-      })
-    }
-  }
-}
-</script>

+ 0 - 142
src/views/cms/sys-content/edit.vue

@@ -1,142 +0,0 @@
-<template>
-  <BasicLayout>
-    <template #wrapper>
-      <el-card class="box-card">
-        <el-form ref="form" :model="form" :rules="rules" label-width="80px" class="form-container">
-          <el-form-item label="分类" prop="cateId">
-            <el-select
-              v-model="form.cateId"
-              placeholder="请选择"
-            >
-              <el-option
-                v-for="dict in cateIdOptions"
-                :key="dict.key"
-                :label="dict.value"
-                :value="dict.key"
-              />
-            </el-select>
-          </el-form-item>
-          <el-form-item label="名称" prop="name">
-            <el-input
-              v-model="form.name"
-              placeholder="名称"
-            />
-          </el-form-item>
-          <el-form-item label="状态" prop="status">
-            <el-select
-              v-model="form.status"
-              placeholder="请选择"
-            >
-              <el-option
-                v-for="dict in statusOptions"
-                :key="dict.dictValue"
-                :label="dict.dictLabel"
-                :value="dict.dictValue"
-              />
-            </el-select>
-          </el-form-item>
-          <el-form-item label="内容" prop="content">
-            <Tinymce ref="editor" v-model="form.content" :height="400" />
-          </el-form-item>
-          <el-form-item label="备注" prop="remark">
-            <el-input
-              v-model="form.remark"
-              placeholder="备注"
-            />
-          </el-form-item>
-          <el-form-item label="排序" prop="sort">
-            <el-input
-              v-model="form.sort"
-              placeholder="排序"
-            />
-          </el-form-item>
-          <el-form-item>
-            <el-button v-loading="loading" style="margin-left: 10px;" type="success" @click="submitForm">
-              保 存
-            </el-button>
-            <el-button v-loading="loading" type="warning" @click="draftForm">
-              取 消
-            </el-button>
-          </el-form-item>
-        </el-form>
-      </el-card>
-    </template>
-  </BasicLayout>
-</template>
-
-<script>
-import { getSysContent, updateSysContent } from '@/api/cms/sys-content'
-import { listSysCategory } from '@/api/cms/sys-category'
-
-import Tinymce from '@/components/Tinymce'
-const defaultForm = {
-  status: 'draft'
-}
-export default {
-  name: 'SysContentEdit',
-  components: {
-    Tinymce
-  },
-  data() {
-    return {
-      loading: false,
-      postForm: Object.assign({}, defaultForm),
-      // 表单参数
-      form: {},
-      statusOptions: [],
-      // 关系表类型
-      cateIdOptions: [],
-      // 表单校验
-      rules: {
-        cateId: [{ required: true, message: '分类必选', trigger: 'blur' }],
-        name: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
-        status: [{ required: true, message: '状态不能为空', trigger: 'blur' }],
-        sort: [{ required: true, message: '排序不能为空', trigger: 'blur' }]
-      }
-    }
-  },
-  created() {
-    const id = this.$route.params && this.$route.params.id
-    getSysContent(id).then(response => {
-      this.form = response.data
-      this.form.cateId = String(this.form.cateId)
-      this.form.status = String(this.form.status)
-      this.form.sort = String(this.form.sort)
-    })
-    this.getSysCategoryItems()
-    this.getDicts('sys_content_status').then(response => {
-      this.statusOptions = response.data
-    })
-  },
-  methods: {
-    // 关系
-    getSysCategoryItems() {
-      this.getItems(listSysCategory, undefined).then(res => {
-        this.cateIdOptions = this.setItems(res, 'id', 'name')
-      })
-    },
-    draftForm() {
-
-    },
-    submitForm() {
-      console.log(this.form)
-      this.$refs['form'].validate(valid => {
-        if (valid) {
-          this.form.cateId = parseInt(this.form.cateId)
-          this.form.status = parseInt(this.form.status)
-          this.form.sort = parseInt(this.form.sort)
-          updateSysContent(this.form).then(response => {
-            if (response.code === 200) {
-              this.msgSuccess(response.msg)
-              this.$store.dispatch('tagsView/delView', this.$route)
-              this.$router.go(-1)
-            } else {
-              this.msgError(response.msg)
-            }
-          })
-        }
-      })
-    }
-  }
-}
-</script>

+ 0 - 270
src/views/cms/sys-content/index.vue

@@ -1,270 +0,0 @@
-<template>
-  <BasicLayout>
-    <template #wrapper>
-      <el-card class="box-card">
-        <el-form ref="queryForm" :model="queryParams" :inline="true" label-width="68px">
-          <el-form-item label="分类" prop="cateId"><el-select
-            v-model="queryParams.cateId"
-            placeholder="请选择"
-          >
-            <el-option
-              v-for="dict in cateIdOptions"
-              :key="dict.key"
-              :label="dict.value"
-              :value="dict.key"
-            />
-          </el-select>
-          </el-form-item>
-          <el-form-item label="名称" prop="name"><el-input
-            v-model="queryParams.name"
-            placeholder="请输入名称"
-            clearable
-            size="small"
-            @keyup.enter.native="handleQuery"
-          />
-          </el-form-item>
-          <el-form-item label="状态" prop="status"><el-select
-            v-model="queryParams.status"
-            placeholder="内容管理状态"
-            clearable
-            size="small"
-          >
-            <el-option
-              v-for="dict in statusOptions"
-              :key="dict.dictValue"
-              :label="dict.dictLabel"
-              :value="dict.dictValue"
-            />
-          </el-select>
-          </el-form-item>
-
-          <el-form-item>
-            <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-          </el-form-item>
-        </el-form>
-
-        <el-row :gutter="10" class="mb8">
-          <el-col :span="1.5">
-            <el-button
-              v-permisaction="['cms:sysContent:add']"
-              type="primary"
-              icon="el-icon-plus"
-              size="mini"
-              @click="handleAdd"
-            >新增
-            </el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button
-              v-permisaction="['cms:sysContent:edit']"
-              type="success"
-              icon="el-icon-edit"
-              size="mini"
-              :disabled="single"
-              @click="handleUpdate"
-            >修改
-            </el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button
-              v-permisaction="['cms:sysContent:remove']"
-              type="danger"
-              icon="el-icon-delete"
-              size="mini"
-              :disabled="multiple"
-              @click="handleDelete"
-            >删除
-            </el-button>
-          </el-col>
-        </el-row>
-
-        <el-table v-loading="loading" :data="syscontentList" @selection-change="handleSelectionChange">
-          <el-table-column type="selection" width="55" align="center" />
-          <el-table-column label="分类" align="center" prop="cateId" :formatter="cateIdFormat" width="100">
-            <template slot-scope="scope">
-              {{ cateIdFormat(scope.row) }}
-            </template>
-          </el-table-column>
-          <el-table-column
-            label="名称"
-            align="center"
-            prop="name"
-            :show-overflow-tooltip="true"
-          /><el-table-column
-            label="状态"
-            align="center"
-            prop="status"
-            :formatter="statusFormat"
-            width="100"
-          >
-            <template slot-scope="scope">
-              {{ statusFormat(scope.row) }}
-            </template>
-          </el-table-column><el-table-column
-            label="创建时间"
-            align="center"
-            prop="createdAt"
-            :show-overflow-tooltip="true"
-          />
-          <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-            <template slot-scope="scope">
-              <el-button
-                v-permisaction="['cms:sysContent:edit']"
-                size="mini"
-                type="text"
-                icon="el-icon-edit"
-                @click="handleUpdate(scope.row)"
-              >修改
-              </el-button>
-              <el-button
-                v-permisaction="['cms:sysContent:remove']"
-                size="mini"
-                type="text"
-                icon="el-icon-delete"
-                @click="handleDelete(scope.row)"
-              >删除
-              </el-button>
-            </template>
-          </el-table-column>
-        </el-table>
-
-        <pagination
-          v-show="total>0"
-          :total="total"
-          :page.sync="queryParams.pageIndex"
-          :limit.sync="queryParams.pageSize"
-          @pagination="getList"
-        />
-      </el-card>
-    </template>
-
-  </BasicLayout>
-</template>
-
-<script>
-import { delSysContent, listSysContent } from '@/api/cms/sys-content'
-import { listSysCategory } from '@/api/cms/sys-category'
-
-export default {
-  name: 'SysContentManage',
-  components: {
-  },
-  data() {
-    return {
-      // 遮罩层
-      loading: true,
-      // 选中数组
-      ids: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 总条数
-      total: 0,
-      // 弹出层标题
-      title: '',
-      // 是否显示弹出层
-      open: false,
-      fileOpen: false,
-      fileIndex: undefined,
-      isEdit: false,
-      // 类型数据字典
-      typeOptions: [],
-      syscontentList: [],
-      statusOptions: [],
-      // 关系表类型
-      cateIdOptions: [],
-      // 查询参数
-      queryParams: {
-        pageIndex: 1,
-        pageSize: 10,
-        cateId: undefined,
-        name: undefined,
-        status: undefined
-      }
-    }
-  },
-  created() {
-    this.getList()
-    this.getSysCategoryItems()
-    this.getDicts('sys_content_status').then(response => {
-      this.statusOptions = response.data
-    })
-  },
-  methods: {
-    /** 查询参数列表 */
-    getList() {
-      this.loading = true
-      listSysContent(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
-        this.syscontentList = response.data.list
-        this.total = response.data.count
-        this.loading = false
-      }
-      )
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false
-      this.reset()
-    },
-    cateIdFormat(row) {
-      return this.selectItemsLabel(this.cateIdOptions, row.cateId)
-    },
-    statusFormat(row) {
-      return this.selectDictLabel(this.statusOptions, row.status)
-    },
-    // 关系
-    getSysCategoryItems() {
-      this.getItems(listSysCategory, undefined).then(res => {
-        this.cateIdOptions = this.setItems(res, 'id', 'name')
-      })
-    },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageIndex = 1
-      this.getList()
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.dateRange = []
-      this.resetForm('queryForm')
-      this.handleQuery()
-    },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.$router.push({ name: 'SysContentCreate' })
-    },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
-      this.single = selection.length !== 1
-      this.multiple = !selection.length
-    },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.$router.push({ name: 'SysContentEdit', params: { id: row.id }})
-    },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      // const Ids = row.id || this.ids
-      const Ids = (row.id && [row.id]) || this.ids
-      this.$confirm('是否确认删除编号为"' + Ids + '"的数据项?', '警告', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(function() {
-        return delSysContent(Ids)
-      }).then((response) => {
-        if (response.code === 200) {
-          this.msgSuccess(response.msg)
-          this.open = false
-          this.getList()
-        } else {
-          this.msgError(response.msg)
-        }
-      }).catch(function() {})
-    }
-  }
-}
-</script>

+ 0 - 45
src/views/other/fileManage/index.vue

@@ -1,45 +0,0 @@
-<template>
-  <div class="file">
-    <BasicLayout>
-      <template #wrapper>
-        <DragColumn>
-          <div slot="left" class="left">
-            <Left />
-          </div>
-          <div slot="right" class="right">
-            <Right />
-          </div>
-        </DragColumn>
-      </template>
-    </BasicLayout>
-  </div>
-</template>
-
-<script>
-
-import DragColumn from '@/components/DragColumn/index'
-import Left from '@/components/FileManage/Left'
-import Right from '@/components/FileManage/Right'
-export default {
-  name: 'FileManage',
-  components: {
-    DragColumn,
-    Left,
-    Right
-  },
-  data() {
-    return {
-
-    }
-  },
-  mounted() {
-  },
-  methods: {
-
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-
-</style>

+ 0 - 336
src/views/sys-tools/sys-china-area-data/index.vue

@@ -1,336 +0,0 @@
-
-<template>
-  <BasicLayout>
-    <template #wrapper>
-      <el-card class="box-card">
-        <el-form ref="queryForm" :model="queryParams" :inline="true" label-width="68px">
-          <el-form-item label="上级编码" prop="pId">
-            <el-cascader
-              v-model="queryParams.pId"
-              :options="syschinaareadataList"
-              :props="defaultProps"
-              style="width:260px;"
-              size="small"
-              @change="handleChange"
-            />
-          </el-form-item>
-          <el-form-item label="名称" prop="name"><el-input
-            v-model="queryParams.name"
-            placeholder="请输入名称"
-            clearable
-            size="small"
-            @keyup.enter.native="handleQuery"
-          />
-          </el-form-item>
-
-          <el-form-item>
-            <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-          </el-form-item>
-        </el-form>
-
-        <el-row :gutter="10" class="mb8">
-          <el-col :span="1.5">
-            <el-button
-              v-permisaction="['admin:syschinaareadata:add']"
-              type="primary"
-              icon="el-icon-plus"
-              size="mini"
-              @click="handleAdd"
-            >新增
-            </el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button
-              v-permisaction="['admin:syschinaareadata:edit']"
-              type="success"
-              icon="el-icon-edit"
-              size="mini"
-              :disabled="single"
-              @click="handleUpdate"
-            >修改
-            </el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button
-              v-permisaction="['admin:syschinaareadata:remove']"
-              type="danger"
-              icon="el-icon-delete"
-              size="mini"
-              :disabled="multiple"
-              @click="handleDelete"
-            >删除
-            </el-button>
-          </el-col>
-        </el-row>
-
-        <el-table
-          v-loading="loading"
-          :data="syschinaareadataList"
-          border
-          row-key="id"
-          :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
-        >
-          <el-table-column
-            label="编码"
-            align="center"
-            prop="id"
-            :show-overflow-tooltip="true"
-          />
-          <el-table-column
-            label="名称"
-            align="center"
-            prop="name"
-            :show-overflow-tooltip="true"
-          />
-          <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-            <template slot-scope="scope">
-              <el-button
-                v-permisaction="['admin:syschinaareadata:edit']"
-                size="mini"
-                type="text"
-                icon="el-icon-edit"
-                @click="handleUpdate(scope.row)"
-              >修改
-              </el-button>
-              <el-button
-                v-permisaction="['admin:syschinaareadata:remove']"
-                size="mini"
-                type="text"
-                icon="el-icon-delete"
-                @click="handleDelete(scope.row)"
-              >删除
-              </el-button>
-            </template>
-          </el-table-column>
-        </el-table>
-
-        <!-- 添加或修改对话框 -->
-        <el-dialog :title="title" :visible.sync="open" width="500px">
-          <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-
-            <el-form-item label="上级编码" prop="pId">
-              <el-input
-                v-model="form.pId"
-                placeholder="上级编码"
-              />
-            </el-form-item>
-            <el-form-item label="名称" prop="name">
-              <el-input
-                v-model="form.name"
-                placeholder="名称"
-              />
-            </el-form-item>
-            <el-form-item label="" prop="createBy">
-              <el-input
-                v-model="form.createBy"
-                placeholder=""
-              />
-            </el-form-item>
-            <el-form-item label="" prop="updateBy">
-              <el-input
-                v-model="form.updateBy"
-                placeholder=""
-              />
-            </el-form-item>
-            <el-form-item label="" prop="createTime">
-              <el-date-picker
-                v-model="form.createTime"
-                type="datetime"
-                placeholder="选择日期"
-              />
-            </el-form-item>
-            <el-form-item label="" prop="updateTime">
-              <el-date-picker
-                v-model="form.updateTime"
-                type="datetime"
-                placeholder="选择日期"
-              />
-            </el-form-item>
-            <el-form-item label="" prop="deleteTime">
-              <el-date-picker
-                v-model="form.deleteTime"
-                type="datetime"
-                placeholder="选择日期"
-              />
-            </el-form-item>
-          </el-form>
-          <div slot="footer" class="dialog-footer">
-            <el-button type="primary" @click="submitForm">确 定</el-button>
-            <el-button @click="cancel">取 消</el-button>
-          </div>
-        </el-dialog>
-      </el-card>
-    </template>
-  </BasicLayout>
-</template>
-
-<script>
-import { addSysChinaAreaData, delSysChinaAreaData, getSysChinaAreaData, listSysChinaAreaData, updateSysChinaAreaData } from '@/api/syschinaareadata'
-
-export default {
-  name: 'SysChinaAreaData',
-  components: {
-  },
-  data() {
-    return {
-      // 遮罩层
-      loading: true,
-      // 选中数组
-      ids: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 弹出层标题
-      title: '',
-      // 是否显示弹出层
-      open: false,
-      isEdit: false,
-      fileOpen: false,
-      fileIndex: undefined,
-      defaultProps: {
-        children: 'children',
-        label: 'name',
-        value: 'id'
-      },
-      // 类型数据字典
-      typeOptions: [],
-      syschinaareadataList: [],
-      // 查询参数
-      queryParams: {
-        pageIndex: 1,
-        pageSize: 10,
-        pId: undefined,
-        name: undefined
-      },
-      // 表单参数
-      form: {
-      },
-      // 表单校验
-      rules: {
-        pId: [{ required: true, message: '上级编码不能为空', trigger: 'blur' }],
-        name: [{ required: true, message: '名称不能为空', trigger: 'blur' }]
-      }
-    }
-  },
-  created() {
-    this.getList()
-  },
-  methods: {
-    /** 查询参数列表 */
-    getList() {
-      this.loading = true
-      listSysChinaAreaData(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
-        this.syschinaareadataList = response.data
-        this.loading = false
-      }
-      )
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false
-      this.reset()
-    },
-    // 表单重置
-    reset() {
-      this.form = {
-
-        id: undefined,
-        pId: undefined,
-        name: undefined,
-        createTime: undefined,
-        updateTime: undefined,
-        deleteTime: undefined
-      }
-      this.resetForm('form')
-    },
-    // 关系
-    // 文件
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageIndex = 1
-      this.getList()
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.dateRange = []
-      this.resetForm('queryForm')
-      this.handleQuery()
-    },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset()
-      this.open = true
-      this.title = '添加行政区域'
-      this.isEdit = false
-    },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
-      this.single = selection.length !== 1
-      this.multiple = !selection.length
-    },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.reset()
-      const id =
-                row.id || this.ids
-      getSysChinaAreaData(id).then(response => {
-        this.form = response.data
-        this.open = true
-        this.title = '修改行政区域'
-        this.isEdit = true
-      })
-    },
-    /** 提交按钮 */
-    submitForm: function() {
-      this.$refs['form'].validate(valid => {
-        if (valid) {
-          if (this.form.id !== undefined) {
-            updateSysChinaAreaData(this.form).then(response => {
-              if (response.code === 200) {
-                this.msgSuccess(response.msg)
-                this.open = false
-                this.getList()
-              } else {
-                this.msgError(response.msg)
-              }
-            })
-          } else {
-            addSysChinaAreaData(this.form).then(response => {
-              if (response.code === 200) {
-                this.msgSuccess(response.msg)
-                this.open = false
-                this.getList()
-              } else {
-                this.msgError(response.msg)
-              }
-            })
-          }
-        }
-      })
-    },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      var Ids = (row.id && [row.id]) || this.ids
-
-      this.$confirm('是否确认删除编号为"' + Ids + '"的数据项?', '警告', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(function() {
-        return delSysChinaAreaData({ 'ids': Ids })
-      }).then((response) => {
-        if (response.code === 200) {
-          this.msgSuccess(response.msg)
-          this.open = false
-          this.getList()
-        } else {
-          this.msgError(response.msg)
-        }
-      }).catch(function() {})
-    }
-  }
-}
-</script>