Selaa lähdekoodia

前后:部分列表加序号;文档加文件夹

dubch 4 vuotta sitten
vanhempi
commit
0b242ad1dd

+ 5 - 0
src/dashoo.cn/backend/api/business/documentmanage/documentmanage.go

@@ -19,10 +19,15 @@ type DocumentInfo struct {
 	CreateBy     string    `xorm:"VARCHAR(50)"`
 	ModifiedOn   time.Time `xorm:"DATETIME updated"`
 	ModifiedBy   string    `xorm:"VARCHAR(50)"`
+	ParentId     int       `xorm:"int(11)"`
+	Type   	     int   	   `xorm:"comment('0文件,1文件夹')int(2)"`
 }
 
 //文档名与创建时间
 type DocumentNameTimeInfo struct {
+	Id           int       `xorm:"<- not null pk autoincr INT(10)"`
+	ParentId     int       `xorm:"int(11)"`
+	Type   	     int   	   `xorm:"comment('0文件,1文件夹')int(2)"`
 	Name     string    `xorm:"VARCHAR(50)"`
 	CreateOn time.Time `xorm:"DATETIME"`
 	FileURL  string    `xorm:"VARCHAR(500)"`

+ 1 - 1
src/dashoo.cn/backend/api/business/documentmanage/documentmanageService.go

@@ -27,7 +27,7 @@ func (s *DocumentmanageService) GetDocumentNameAndTime(table string, colName, ra
 	//sql = "select Name, CreateOn, FileURL from " + table + " WHERE " + colName + " = 1 " + "and ValidityTime >= '" + nowTimeStr + "'
 	//and RangeType in (" + rangeType + ")  ORDER BY CreateOn DESC "
 	List := make([]DocumentNameTimeInfo, 0)
-	s.DBE.Table(table).Select("Name, CreateOn, FileURL").
+	s.DBE.Table(table).Select("Id, ParentId, Type, Name, CreateOn, FileURL").
 		Where(colName+"=?", 1).
 		Where("ValidityTime>=?", nowTimeStr).
 		In("RangeType", rangeType).

+ 50 - 2
src/dashoo.cn/backend/api/controllers/document/document.go

@@ -28,6 +28,7 @@ func (this *DocumentController) GetDocumentList() {
 	Name := this.GetString("Name")
 	NoticeTab := this.GetString("NoticeTab")
 	DocTab := this.GetString("DocTab")
+	Type := this.GetString("Type")
 
 	where := " 1=1 "
 
@@ -43,6 +44,53 @@ func (this *DocumentController) GetDocumentList() {
 	if DocTab != "" {
 		where = where + " and DocTab = 1 "
 	}
+	if Type != "" {
+		where = where + " and Type = 1 "
+	}
+
+	svc := documentmanage.GetDocumentmanageService(utils.DBE)
+	var list []documentmanage.DocumentInfo
+	total, list := svc.GetDocumentInfoByWhere(page.CurrentPage, page.Size, "Id desc", DocumentInfoName, where)
+
+	var datainfo DataInfo
+	datainfo.Items = list
+	datainfo.CurrentItemCount = total
+	datainfo.PageIndex = page.CurrentPage
+	datainfo.ItemsPerPage = page.Size
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+}
+
+// @Title 获取文件夹列表  DocumentInfo
+// @Description get user by token
+// @Success 200 {object} models.Userblood
+// @router /getFolderList [get]
+func (this *DocumentController) GetFolderList() {
+	page := this.GetPageInfoForm()
+	DirectoryId := this.GetString("DirectoryId")
+	Name := this.GetString("Name")
+	NoticeTab := this.GetString("NoticeTab")
+	DocTab := this.GetString("DocTab")
+	Type := this.GetString("Type")
+
+	where := " 1=1 "
+	nowTimeStr := time.Now().Format("2006-01-02 15:04:05")
+	where += " and ValidityTime >= " + nowTimeStr
+	if DirectoryId != "" {
+		where = where + " and DirectoryId = " + DirectoryId
+	}
+	if Name != "" {
+		where = where + " and Name like '%" + Name + "%' "
+	}
+	if NoticeTab != "" {
+		where = where + " and NoticeTab = 1 "
+	}
+	if DocTab != "" {
+		where = where + " and DocTab = 1 "
+	}
+	if Type != "" {
+		where = where + " and Type = 1 "
+	}
 
 	svc := documentmanage.GetDocumentmanageService(utils.DBE)
 	var list []documentmanage.DocumentInfo
@@ -57,7 +105,7 @@ func (this *DocumentController) GetDocumentList() {
 	this.ServeJSON()
 }
 
-// @Title 获取文件名和创建时间
+// @Title 获取文件
 // @Description get Name,CreateOn
 // @Success 200 {object} models.Userblood
 // @router /getdocumentnameandtime [get]
@@ -150,7 +198,7 @@ func (this *DocumentController) EditDocumentInfo() {
 	model.ModifiedBy = this.User.Realname
 	opdesc := "编辑文档-" + model.Name
 	var cols []string = []string{"DirectoryId", "Name", "VersionInfo", "NoticeTab", "DocTab", "FileURL", "RangeType",
-		"ValidityTime", "Remark", "CreateBy", "ModifiedOn", "ModifiedBy"}
+		"ValidityTime", "Remark", "CreateBy", "ModifiedOn", "ModifiedBy", "ParentId", "Type"}
 
 	err := svc.UpdateOperationAndWriteLogBytbl(DocumentInfoName, BaseOperationLogName, id, &model, &entityempty, cols, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "文档管理")
 	if err == nil {

+ 56 - 27
src/dashoo.cn/frontend_web/src/pages/documentdown.vue

@@ -15,32 +15,45 @@
       </div>
     </sticky>
 
-    <div style="background-color: white; width: 60%; margin: 0 auto; ">
-      <el-table :data="fileList"
-                stripe
-                highlight-current-row
-                size="mini">
-        <el-table-column prop="Name"
-                         align="center"
-                         label="资料下载">
-          <template slot-scope="scope">
-            <el-link :href="getDownloadFile(scope.row.FileURL)"
-                     target="_blank"
-                     type="primary">{{ scope.row.Name }}</el-link>
-          </template>
-        </el-table-column>
-        <el-table-column prop="CreateOn"
-                         label="发布时间"
-                         align="center"
-                         width="141">
-          <template slot-scope="scope">{{ jsTImeHandle(scope.row.CreateOn+'') }}</template>
-        </el-table-column>
-        <el-table-column width="80">
-          <template slot-scope="scope"><span style="font-size: 15px; color: #f13f40">{{strNew(scope.row.CreateOn+'') }}</span></template>
-        </el-table-column>
-      </el-table>
-    </div>
-
+<!--    <div style="background-color: white; width: 60%; margin: 0 auto; ">-->
+<!--      <el-table :data="fileList"-->
+<!--                stripe-->
+<!--                highlight-current-row-->
+<!--                size="mini">-->
+<!--        <el-table-column prop="Name"-->
+<!--                         align="center"-->
+<!--                         label="资料下载">-->
+<!--          <template slot-scope="scope">-->
+<!--            <el-link :href="getDownloadFile(scope.row.FileURL)"-->
+<!--                     target="_blank"-->
+<!--                     type="primary">{{ scope.row.Name }}</el-link>-->
+<!--          </template>-->
+<!--        </el-table-column>-->
+<!--        <el-table-column prop="CreateOn"-->
+<!--                         label="发布时间"-->
+<!--                         align="center"-->
+<!--                         width="141">-->
+<!--          <template slot-scope="scope">{{ jsTImeHandle(scope.row.CreateOn+'') }}</template>-->
+<!--        </el-table-column>-->
+<!--        <el-table-column width="80">-->
+<!--          <template slot-scope="scope"><span style="font-size: 15px; color: #f13f40">{{strNew(scope.row.CreateOn+'') }}</span></template>-->
+<!--        </el-table-column>-->
+<!--      </el-table>-->
+<!--    </div>-->
+    <el-card style="min-height: calc(100vh - 92px); width: 100%">
+      <div style="background-color: white; width: 60%; margin: 0 auto; ">
+        <el-tree highlight-current :expand-on-click-node="true" accordion node-key="id" :data="folderList" :props="orgtreeprops" ref="orgmanagetree">
+          <span class="custom-tree-node" slot-scope="{ node, data }">
+            <span v-if="data.Type == 1"><i class="el-icon-folder"></i> {{ node.label }}</span>
+            <el-link :href="getDownloadFile(data.FileURL)" v-else target="_blank" type="primary">{{ node.label }}</el-link>
+            <span v-if="data.Type == 0" style="float: right;padding-right: 20px">{{ jsTImeHandle(data.CreateOn) }}
+              <span style="font-size: 15px; color: #f13f40;float: right;padding-left: 100px" v-if="strNew(data.CreateOn+'')">{{ strNew(data.CreateOn+'')}}</span>
+              <span style="font-size: 15px; color: #f13f40;float: right;padding-left: 100px" v-else>&nbsp;&nbsp;&nbsp;&nbsp;</span>
+            </span>
+          </span>
+        </el-tree>
+      </div>
+    </el-card>
 
   </div>
 </template>
@@ -60,6 +73,12 @@
         }
       }
       return {
+        folderList: [],
+        orgtreeprops: {
+          value: 'id',
+          label: 'Name',
+          children: 'children'
+        },
         activeIndex: '1',
         isVisual: false,
         isCodePass: true,
@@ -114,7 +133,8 @@
         _this.$axios
           .get('/document/getdocumentnameandtime', { params })
           .then(function (response) {
-            _this.fileList = response.data
+            _this.folderList = window.toolfun_gettreejson(response.data, 'Id', 'ParentId', 'Id,Name,CreateOn,FileURL,Type')
+            // _this.fileList = response.data
           })
           .catch(function (error) {
             console.log(error)
@@ -235,6 +255,15 @@
     color: #999;
   }
 
+  .custom-tree-node {
+    flex: 1;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    font-size: 14px;
+    padding-right: 8px;
+  }
+
   .bottom {
     margin-top: 13px;
     line-height: 12px;

+ 54 - 29
src/dashoo.cn/frontend_web/src/pages/documentmanage/_opera/edit.vue

@@ -18,30 +18,22 @@
         </span>
       </div>
       <el-form :model="uploadform" :rules="rules" ref="uploadform" label-width="110px">
-        <div class="el-row">
-          <!-- <el-col :span="12">
-            <el-form-item label="文档结构" prop="JLDirectoryIds">
-              <el-cascader :options="orgtreelist" style="width:100%" :props="orgtreeprops" change-on-select :show-all-levels="false" v-model="JLDirectoryIds"
-                placeholder="请选择文档结构"></el-cascader>
-            </el-form-item>
-          </el-col> -->
+        <el-row>
           <el-col :span="8">
-            <el-form-item label="名称" prop="Name">
-              <el-input v-model="uploadform.Name" placeholder="请输入名称" ></el-input>
+            <el-form-item label="文件夹" prop="ParentId">
+              <el-select ref="SpecType" v-model="uploadform.ParentId" placeholder="请选择" style="width: 100%">
+                <el-option :key="0" label="请选择文件夹" :value="0"></el-option>
+                <el-option v-for="item in floderList" :key="item.Id" :label="item.Name" :value="item.Id"></el-option>
+              </el-select>
             </el-form-item>
           </el-col>
-         <!-- <el-col :span="12">
-            <el-form-item label="有效期至" prop="ValidityTime">
-              <el-date-picker type="datetime" placeholder="请选择有效期" v-model="uploadform.ValidityTime" style="width: 100%;"></el-date-picker>
+          <el-col :span="8">
+            <el-form-item label="文档名称" prop="Name">
+              <el-input v-model="uploadform.Name" placeholder="请输入文档名称"></el-input>
             </el-form-item>
-          </el-col> -->
-          <!--<el-col :span="8">-->
-          <!--  <el-form-item label="版本信息" prop="VersionInfo">-->
-          <!--    <el-input v-model="uploadform.VersionInfo" placeholder="请输入版本信息"></el-input>-->
-          <!--  </el-form-item>-->
-          <!--</el-col>-->
+          </el-col>
           <el-col :span="8">
-            <el-form-item label="类型" prop="DocTab">
+            <el-form-item label="类型" prop="RangeType">
               <el-select v-model="uploadform.RangeType" placeholder="请选择">
                 <el-option
                   v-for="item in DocTaboptions"
@@ -52,27 +44,25 @@
               </el-select>
             </el-form-item>
           </el-col>
-          <!-- <el-col :span="12">
-            <el-form-item label="文档类别">
-              <el-checkbox-group v-model="typeList">
-                <el-checkbox label="通知公告" border></el-checkbox>
-                <el-checkbox label="文件资料" border></el-checkbox>
-              </el-checkbox-group>
-            </el-form-item>
-          </el-col> -->
+        </el-row>
+        <el-row>
           <el-col :span="24">
             <el-form-item label="备注">
               <el-input type="textarea" :rows="2" v-model="uploadform.Remark" placeholder="请输入备注信息" ></el-input>
             </el-form-item>
           </el-col>
+        </el-row>
+        <el-row>
           <el-col :span="8">
             <el-form-item label="文档上传" prop="Diseaseinfo">
               <el-upload style="margin-top: 10px;" multiple action="" :limit="1" ref="refuploadattach" :http-request="uploadrequest"
-                class="attach-uploader" :show-file-list="true" :before-upload="beforeAvatarUpload" >
+                         class="attach-uploader" :show-file-list="true" :before-upload="beforeAvatarUpload" >
                 <i class="el-icon-plus attach-uploader-icon"></i>
               </el-upload>
             </el-form-item>
           </el-col>
+        </el-row>
+        <el-row>
           <el-col :span="24">
             <el-form-item class="maintainlog" label="已有文档" label-width="120px">
               <div style="overflow: auto;">
@@ -89,7 +79,8 @@
               </div>
             </el-form-item>
           </el-col>
-        </div>
+
+        </el-row>
       </el-form>
     </el-card>
 
@@ -140,6 +131,13 @@
           callback()
         }
       }
+      var CheckParentId = (rule, value, callback) => {
+        if (this.uploadform.ParentId == 0) {
+          callback(new Error('请选择文件夹'))
+        } else {
+          callback()
+        }
+      }
       return {
         documentId: 0,
         waituploads: [], // 等待上传的附件列表
@@ -153,6 +151,7 @@
         orgtreelist: [], // 文档结构
         JLDirectoryIds: [], // 文档结构Id
         list: [],
+        floderList: [],
         // typeList: [], //文档类别列表
         uploadform: {
           DirectoryId: '', // 目录结构Id
@@ -161,6 +160,8 @@
           NoticeTab: '', // 通知公告标签
           DocTab: '', // 文件资料标签
           RangeType: '',
+          ParentId: 0,
+          Type: 0,
           FileURL: '', // 文档地址
           ValidityTime: '', // 有效期至
           Remark: '' // 备注
@@ -178,6 +179,11 @@
             validator: CheckDirectoryId,
             trigger: 'blur'
           }],
+          ParentId: [{
+            required: true,
+            validator: CheckParentId,
+            trigger: 'blur'
+          }],
           Name: [{
             required: true,
             message: '请填写文档名称',
@@ -216,9 +222,28 @@
     },
     created () {
       this.documentId = this.$route.params.opera
+      this.initData()
       this.initinfo()
     },
     methods: {
+      initData() {
+        let _this = this
+        const params = {
+          _currentPage: 1,
+          _size: 100,
+          DocTab: 1,
+          Type: 1
+        }
+        this.$axios.get("/document/getdocumentlist", {
+          params
+        })
+          .then(function (response) {
+            _this.floderList = response.data.items
+          })
+          .catch(function (error) {
+            console.log(error);
+          });
+      },
       initinfo () {
         let _this = this
         this.$axios.get('/document/geteditinitinfo/' + this.documentId, {})

+ 370 - 0
src/dashoo.cn/frontend_web/src/pages/documentmanage/_opera/editfolder.vue

@@ -0,0 +1,370 @@
+<template>
+  <div>
+    <el-breadcrumb class="heading">
+      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
+      <el-breadcrumb-item :to="{ path: this.path }">{{this.pathName}}</el-breadcrumb-item>
+      <el-breadcrumb-item>{{this.pathName2}}</el-breadcrumb-item>
+    </el-breadcrumb>
+    <el-card class="box-card">
+      <div slot="header">
+        <span>
+          <i class="icon icon-file-text"> 编辑信息</i>
+        </span>
+        <span style="float: right;">
+          <el-button type="primary" class="el-button--small" @click="save()" style="margin-left:5px" >保存</el-button>
+          <router-link :to="this.path">
+            <el-button type="primary" class="el-button--small" style="margin-left:5px">返回</el-button>
+          </router-link>
+        </span>
+      </div>
+      <el-form :model="uploadform" :rules="rules" ref="uploadform" label-width="110px">
+        <div class="el-row">
+          <el-col :span="8">
+            <el-form-item label="文件夹名称" prop="Name">
+              <el-input v-model="uploadform.Name" placeholder="请输入文件夹名称" ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="类型" prop="DocTab">
+              <el-select v-model="uploadform.RangeType" placeholder="请选择">
+                <el-option
+                  v-for="item in DocTaboptions"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value">
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="备注">
+              <el-input type="textarea" :rows="2" v-model="uploadform.Remark" placeholder="请输入备注信息" ></el-input>
+            </el-form-item>
+          </el-col>
+        </div>
+      </el-form>
+    </el-card>
+
+    <el-dialog title="登录验证" width="80%" :visible.sync="loginDialogVisible" top="5vh" center @close="cancelLogin">
+      <el-form class="login-form" auto-complete="off" ref="user" label-position="top">
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="用户" prop="username">
+              <el-input type="text" v-model="AuthorUserName" disabled="true" placeholder="请输入用户名" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="密码" prop="password">
+              <el-input type="password" v-model="password" placeholder="请输入密码" @keyup.enter.native="confirmLogin" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div style="text-align:center;">
+        <el-button size="small" @click="cancelLogin">取 消</el-button>
+        <el-button size="small" type="primary" @click="confirmLogin">登录</el-button>
+      </div>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+  import axios from 'axios'
+  import uploadajax from '../../../assets/js/uploadajax.js'
+  import {
+    mapGetters
+  } from 'vuex'
+  export default {
+    name: 'editDocument',
+    computed: {
+      ...mapGetters({
+        authUser: 'authUser'
+      })
+    },
+    data () {
+      var CheckDirectoryId = (rule, value, callback) => {
+        if (this.JLDirectoryIds && this.JLDirectoryIds.length < 1) {
+          callback(new Error('请选择文档结构'))
+        } else {
+          callback()
+        }
+      }
+      return {
+        documentId: 0,
+        waituploads: [], // 等待上传的附件列表
+        maintainlogattrlist: [],
+        selfVisible: this.visible, // 避免vue双向绑定警告
+        orgtreeprops: {
+          value: 'id',
+          label: 'ItemName',
+          children: 'children'
+        },
+        orgtreelist: [], // 文档结构
+        JLDirectoryIds: [], // 文档结构Id
+        list: [],
+        // typeList: [], //文档类别列表
+        uploadform: {
+          DirectoryId: '', // 目录结构Id
+          Name: '', // 文档名称
+          VersionInfo: '', // 文档版本
+          NoticeTab: '', // 通知公告标签
+          DocTab: '', // 文件资料标签
+          RangeType: '',
+          ParentId: 0,
+          Type: 1,
+          FileURL: '', // 文档地址
+          ValidityTime: '', // 有效期至
+          Remark: '' // 备注
+        },
+        AuthorUser: '',
+        AuthorUserName: '',
+        loginDialogVisible: false, // 登陆验证弹窗
+        isLoginSucceed: false,
+        acceptUsers: [],
+        username: '',
+        password: '',
+        rules: {
+          JLDirectoryIds: [{
+            required: true,
+            validator: CheckDirectoryId,
+            trigger: 'blur'
+          }],
+          Name: [{
+            required: true,
+            message: '请填写文档名称',
+            trigger: 'blur'
+          }],
+          ValidityTime: [{
+            required: true,
+            message: '请选择有效期至',
+            trigger: 'blur'
+          }],
+          VersionInfo: [{
+            required: false,
+            message: '请填写版本信息',
+            trigger: 'blur'
+          }]
+        },
+        DocTaboptions: [
+          {
+            value: 1,
+            label: '通用'
+          },
+          {
+            value: 2,
+            label: '内部'
+          },
+          {
+            value: 3,
+            label: '外部'
+          }
+        ],
+        // 标题设置
+        path: '',
+        pathName: '',
+        pathName2: ''
+      }
+    },
+    created () {
+      this.documentId = this.$route.params.opera
+      this.initinfo()
+    },
+    methods: {
+      initinfo () {
+        let _this = this
+        this.$axios.get('/document/geteditinitinfo/' + this.documentId, {})
+          .then(res => {
+            _this.uploadform = res.data.items
+            let list = new Array()
+            if (_this.uploadform.NoticeTab) {
+              _this.path = '/documentmanage/notice'
+              _this.pathName = '通知管理'
+              _this.pathName2 = '编辑通知'
+            }
+            if (_this.uploadform.DocTab) {
+              _this.path = '/documentmanage/files'
+              _this.pathName = '文件管理'
+              _this.pathName2 = '编辑文件'
+            }
+            // 设置文档类别的对应标签值
+            // if (_this.uploadform.NoticeTab) {
+            //   list.push("通知公告")
+            // }
+            // if (_this.uploadform.DocTab) {
+            //   list.push("文件资料")
+            // }
+            // _this.typeList = list
+            _this.gettreelist(218)
+            _this.getwendanginfo(res.data.items.FileURL)
+          })
+      },
+      // 文档列表
+      getwendanginfo (iUrl) {
+        let _this = this
+        _this.maintainlogattrlist = []
+        let exArr = iUrl.split('|')
+        let params = {
+          name: exArr[1],
+          url: exArr[0]
+        }
+        _this.maintainlogattrlist.push(params)
+      },
+      // 获取文档结构树
+      gettreelist (pid) {
+        let _this = this
+        let params = {
+          pid: pid + ''
+        }
+        _this.$axios.get('/items/gettreeitemsdetail', {
+          params
+        })
+          .then(res => {
+            _this.orgtreelist = window.toolfun_gettreejson(res.data.items, 'Id', 'ParentId', 'Id,ItemName')
+            // 显示原来文档结构
+            let arr = []
+            arr.push(_this.orgtreelist[0].id)
+            arr.push(_this.orgtreelist[0].children[0].id)
+            _this.JLDirectoryIds = arr
+          })
+          .catch(err => {
+            // handle error
+            console.error(err)
+          })
+      },
+      clickachment (url, uid) {
+        window.open(`http://${url}`)
+      },
+      // 保存编辑信息
+      save () {
+        let _this = this
+        this.$refs['uploadform'].validate((valid) => {
+          if (valid) {
+            _this.editdocumentinfo() // 保存编辑信息
+          } else {
+            console.log('error submit!!')
+            return false
+          }
+        })
+      },
+      // 执行保存操作
+      editdocumentinfo () {
+        let _this = this
+        _this.uploadform.DirectoryId = parseInt(_this.JLDirectoryIds[_this.JLDirectoryIds.length - 1])
+        // 设置文档类别的对应标签值
+        // for (let i = 0; i < _this.typeList.length; i++) {
+        //   //首先清0
+        //   _this.uploadform.NoticeTab = 0
+        //   _this.uploadform.DocTab = 0
+        //   //再设置
+        //   let v = _this.typeList[i]
+        //   switch (v) {
+        //     case "通知公告": _this.uploadform.NoticeTab = 1
+        //     break;
+        //     case "文件资料": _this.uploadform.DocTab = 1
+        //     break;
+        //     default: _this.uploadform.DocTab = 1
+        //   }
+        // }
+        this.$axios.put('/document/editdocumentinfo/' + _this.documentId, _this.uploadform)
+          .then(function (response) {
+            if (response.data.code === 0) {
+              _this.$message({
+                type: 'success',
+                message: response.data.message
+              })
+            } else {
+              _this.$message({
+                type: 'warning',
+                message: response.data.message
+              })
+            }
+          })
+          .catch(function (error) {
+            console.log(error)
+          })
+      },
+      beforeAvatarUpload (file) {
+        let isLt50m = file.size / 1024 / 1024 / 100 < 1
+        if (!isLt50m) {
+          this.$message.error('上传文件大小不能超过 100MB!')
+          return false
+        }
+        return true
+      },
+      // 取消验证
+      cancelLogin () {
+        if (this.isLoginSucceed) {
+          this.isLoginSucceed = false
+        } else {
+          this.AuthorUser = ''
+        }
+        this.loginDialogVisible = false
+      },
+      // 密码验证
+      confirmLogin () {
+        let _this = this
+        let fields = {
+          username: this.username,
+          password: this.password
+        }
+        this.$axios.post('/users/checkUserPwd?RealName=' + this.AuthorUserName, fields)
+          .then(res => {
+            if (res.data.code == 0) {
+              _this.loginDialogVisible = false
+              this.isLoginSucceed = true
+            } else {
+              _this.$message({
+                type: 'warning',
+                message: res.data.message
+              })
+            }
+            _this.password = ''
+          })
+          .catch(err => {
+            // handle error
+            console.error(err)
+          })
+      },
+    }
+  }
+</script>
+<style lang="scss">
+  .samplesinputmaincard .el-card__header {
+    padding: 5px 10px;
+    font-size: 10px;
+  }
+
+  .samplerecoveope .el-radio {
+    padding: 8px 15px 0 0;
+    margin-left: -2px;
+  }
+
+  .attach-uploader .el-upload {
+    border: 1px dashed #63B8FF;
+    cursor: pointer;
+    position: relative;
+    overflow: hidden;
+    margin-bottom: -17px;
+  }
+
+  .attach-uploader .el-upload:hover {
+    border-color: #25ff25;
+  }
+
+  .attach-uploader-icon {
+    font-size: 25px;
+    color: #63B8FF;
+    width: 50px;
+    height: 50px;
+    line-height: 50px;
+    text-align: center;
+  }
+
+  .attach-uploader-icon:hover {
+    color: #228B22;
+  }
+
+</style>

+ 73 - 23
src/dashoo.cn/frontend_web/src/pages/documentmanage/add.vue

@@ -18,28 +18,20 @@
         </span>
       </div>
       <el-form :model="uploadform" :rules="rules" ref="uploadform" label-width="110px">
-        <div class="el-row">
-          <!-- <el-col :span="12">
-            <el-form-item label="文档结构" prop="JLDirectoryId">
-              <el-cascader :options="orgtreelist" style="width:100%" :props="orgtreeprops" change-on-select :show-all-levels="false" v-model="uploadform.JLDirectoryId"
-                placeholder="请选择文档结构"></el-cascader>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="文件夹" prop="ParentId">
+              <el-select ref="SpecType" v-model="uploadform.ParentId" placeholder="请选择" style="width: 100%">
+                <el-option :key="0" label="请选择文件夹" :value="0"></el-option>
+                <el-option v-for="item in floderList" :key="item.Id" :label="item.Name" :value="item.Id"></el-option>
+              </el-select>
             </el-form-item>
-          </el-col> -->
+          </el-col>
           <el-col :span="8">
             <el-form-item label="文档名称" prop="Name">
               <el-input v-model="uploadform.Name" placeholder="请输入文档名称"></el-input>
             </el-form-item>
           </el-col>
-          <!-- <el-col :span="12">
-            <el-form-item label="有效期至" prop="ValidityTime">
-              <el-date-picker type="datetime" placeholder="请选择有效期" v-model="uploadform.ValidityTime" style="width: 100%;"></el-date-picker>
-            </el-form-item>
-          </el-col> -->
-          <!--<el-col :span="8">-->
-          <!--  <el-form-item label="版本信息" prop="VersionInfo">-->
-          <!--    <el-input v-model="uploadform.VersionInfo" placeholder="请输入版本信息"></el-input>-->
-          <!--  </el-form-item>-->
-          <!--</el-col>-->
           <el-col :span="8">
             <el-form-item label="类型" prop="RangeType">
               <el-select v-model="uploadform.RangeType" placeholder="请选择">
@@ -52,28 +44,52 @@
               </el-select>
             </el-form-item>
           </el-col>
+
+        </el-row>
           <!-- <el-col :span="12">
-            <el-form-item label="文档类别" prop="typeList">
-              <el-checkbox-group v-model="uploadform.typeList">
-                <el-checkbox label="通知公告" name="typeList" border></el-checkbox>
-                <el-checkbox label="文件资料" name="typeList" border></el-checkbox>
-              </el-checkbox-group>
+            <el-form-item label="文档结构" prop="JLDirectoryId">
+              <el-cascader :options="orgtreelist" style="width:100%" :props="orgtreeprops" change-on-select :show-all-levels="false" v-model="uploadform.JLDirectoryId"
+                placeholder="请选择文档结构"></el-cascader>
             </el-form-item>
           </el-col> -->
+
+          <!-- <el-col :span="12">
+            <el-form-item label="有效期至" prop="ValidityTime">
+              <el-date-picker type="datetime" placeholder="请选择有效期" v-model="uploadform.ValidityTime" style="width: 100%;"></el-date-picker>
+            </el-form-item>
+          </el-col> -->
+          <!--<el-col :span="8">-->
+          <!--  <el-form-item label="版本信息" prop="VersionInfo">-->
+          <!--    <el-input v-model="uploadform.VersionInfo" placeholder="请输入版本信息"></el-input>-->
+          <!--  </el-form-item>-->
+          <!--</el-col>-->
+        <el-row>
           <el-col :span="24">
             <el-form-item label="备注">
               <el-input type="textarea" :rows="2" v-model="uploadform.Remark" placeholder="请输入备注信息"></el-input>
             </el-form-item>
           </el-col>
+        </el-row>
+        <el-row>
           <el-col :span="8">
             <el-form-item label="文档上传" prop="Diseaseinfo">
               <el-upload style="margin-top: 10px;" multiple action="" :limit="1" ref="refuploadattach" :http-request="uploadrequest"
-                class="attach-uploader" :show-file-list="true" :before-upload="beforeAvatarUpload">
+                         class="attach-uploader" :show-file-list="true" :before-upload="beforeAvatarUpload">
                 <i class="el-icon-plus attach-uploader-icon"></i>
               </el-upload>
             </el-form-item>
           </el-col>
-        </div>
+
+        </el-row>
+          <!-- <el-col :span="12">
+            <el-form-item label="文档类别" prop="typeList">
+              <el-checkbox-group v-model="uploadform.typeList">
+                <el-checkbox label="通知公告" name="typeList" border></el-checkbox>
+                <el-checkbox label="文件资料" name="typeList" border></el-checkbox>
+              </el-checkbox-group>
+            </el-form-item>
+          </el-col> -->
+
       </el-form>
     </el-card>
 
@@ -139,6 +155,13 @@
           callback()
         }
       }
+      var CheckParentId = (rule, value, callback) => {
+        if (this.uploadform.ParentId == 0) {
+          callback(new Error('请选择文件夹'))
+        } else {
+          callback()
+        }
+      }
       var checkUploaddoc = (rule, value, callback) => {
         if (!this.$refs.refuploadattach.uploadFiles || this.$refs.refuploadattach.uploadFiles.length == 0) {
           callback(new Error('请上传文档'))
@@ -157,12 +180,15 @@
         AuthorUser: '',
         AuthorUserName: '',
         orgtreelist: [],
+        floderList: [],
         uploadform: {
           DirectoryId: '',
           Name: '',
           VersionInfo: '',
           NoticeTab: '',
           RangeType: 1,
+          ParentId: 0,
+          Type: 0,
           DocTab: '',
           FileURL: '',
           Remark: '',
@@ -176,6 +202,11 @@
             validator: CheckDirectoryId,
             trigger: 'blur'
           }],
+          ParentId: [{
+            required: true,
+            validator: CheckParentId,
+            trigger: 'blur'
+          }],
           Name: [{
             required: true,
             message: '请填写文档名称',
@@ -229,6 +260,7 @@
       }
     },
     created () {
+      this.initData()
       let parentId = this.$route.query.exid
       let type = this.$route.query.type
       if (type == 1) {
@@ -246,6 +278,24 @@
       // this.getfinaljiedian(parentId)
     },
     methods: {
+      initData() {
+        let _this = this
+        const params = {
+          _currentPage: 1,
+          _size: 100,
+          DocTab: 1,
+          Type: 1
+        }
+        this.$axios.get("/document/getdocumentlist", {
+          params
+        })
+          .then(function (response) {
+            _this.floderList = response.data.items
+          })
+          .catch(function (error) {
+            console.log(error);
+          });
+      },
       gettreelist (pid) {
         let _this = this
         let params = {

+ 321 - 0
src/dashoo.cn/frontend_web/src/pages/documentmanage/addfolder.vue

@@ -0,0 +1,321 @@
+<template>
+  <div>
+    <el-breadcrumb class="heading">
+      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
+      <el-breadcrumb-item :to="{ path: this.path }">{{this.pathName}}</el-breadcrumb-item>
+      <el-breadcrumb-item>{{this.pathName2}}</el-breadcrumb-item>
+    </el-breadcrumb>
+    <el-card class="box-card">
+      <div slot="header">
+        <span>
+          <i class="icon icon-file-text"> 新增信息</i>
+        </span>
+        <span style="float: right;">
+          <el-button type="primary" class="el-button--small" @click="save()">保存</el-button>
+          <router-link :to="this.path">
+            <el-button type="primary" class="el-button--small" style="margin-left:5px">返回</el-button>
+          </router-link>
+        </span>
+      </div>
+      <el-form :model="uploadform" :rules="rules" ref="uploadform" label-width="110px">
+        <div class="el-row">
+          <el-col :span="8">
+            <el-form-item label="文件夹名称" prop="Name">
+              <el-input v-model="uploadform.Name" placeholder="请输入文件夹名称"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="类型" prop="RangeType">
+              <el-select v-model="uploadform.RangeType" placeholder="请选择">
+                <el-option
+                  v-for="item in DocTaboptions"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value">
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="备注">
+              <el-input type="textarea" :rows="2" v-model="uploadform.Remark" placeholder="请输入备注信息"></el-input>
+            </el-form-item>
+          </el-col>
+        </div>
+      </el-form>
+    </el-card>
+
+    <el-dialog title="登录验证" width="80%" :visible.sync="loginDialogVisible" top="5vh" center @close="cancelLogin">
+      <el-form class="login-form" auto-complete="off" ref="user" label-position="top">
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="用户" prop="username">
+              <el-input type="text" v-model="AuthorUserName" disabled="true" placeholder="请输入用户名" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="密码" prop="password">
+              <el-input type="password" v-model="password" placeholder="请输入密码" @keyup.enter.native="confirmLogin" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div style="text-align:center;">
+        <el-button size="small" @click="cancelLogin">取 消</el-button>
+        <el-button size="small" type="primary" @click="confirmLogin">登录</el-button>
+      </div>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+  import axios from 'axios'
+  import uploadajax from '../../assets/js/uploadajax.js'
+  import {
+    mapGetters
+  } from 'vuex'
+  export default {
+    name: 'addDocument',
+    computed: {
+      ...mapGetters({
+        authUser: 'authUser'
+      })
+    },
+    watch: {
+      visible (val) {
+        this.selfVisible = val
+        if (this.visible) {
+          if (this.$refs.refuploadattach) {
+            // 清空上传数据
+            this.$refs.refuploadattach.clearFiles()
+          }
+          this.createoptions
+        }
+      },
+      selfVisible (val) {
+        this.$emit('update:visible', val)
+      }
+    },
+    data () {
+      var CheckDirectoryId = (rule, value, callback) => {
+        if (this.uploadform.JLDirectoryId && this.uploadform.JLDirectoryId.length < 1) {
+          callback(new Error('请选择文档结构'))
+        } else {
+          callback()
+        }
+      }
+      var checkUploaddoc = (rule, value, callback) => {
+        if (!this.$refs.refuploadattach.uploadFiles || this.$refs.refuploadattach.uploadFiles.length == 0) {
+          callback(new Error('请上传文档'))
+        } else {
+          callback()
+        }
+      }
+      return {
+        waituploads: [], // 等待上传的附件列表
+        selfVisible: this.visible, // 避免vue双向绑定警告
+        orgtreeprops: {
+          value: 'id',
+          label: 'ItemName',
+          children: 'children'
+        },
+        AuthorUser: '',
+        AuthorUserName: '',
+        orgtreelist: [],
+        uploadform: {
+          DirectoryId: '',
+          Name: '',
+          VersionInfo: '',
+          NoticeTab: '',
+          RangeType: 1,
+          ParentId: 0,
+          Type: 1,
+          DocTab: '',
+          FileURL: '',
+          Remark: '',
+          ValidityTime: '2122-01-01T10:00:00+08:00', // 默认有效期至2122年1月1日
+          // typeList: [], //文档类别列表
+          JLDirectoryId: [322, 323] // 默认基础文档
+        },
+        rules: {
+          JLDirectoryId: [{
+            required: true,
+            validator: CheckDirectoryId,
+            trigger: 'blur'
+          }],
+          Name: [{
+            required: true,
+            message: '请填写文档名称',
+            trigger: 'blur'
+          }],
+          ValidityTime: [{
+            required: true,
+            message: '请选择有效期',
+            trigger: 'blur'
+          }],
+          VersionInfo: [{
+            required: false,
+            message: '请填写版本信息',
+            trigger: 'blur'
+          }],
+          // typeList: [{
+          //   type: 'array',
+          //   required: true,
+          //   message: '请至少选择一个文档类别',
+          //   trigger: 'blur'
+          // }],
+          Diseaseinfo: [{
+            validator: checkUploaddoc,
+            required: true,
+            trigger: 'blur'
+          }]
+        },
+        DocTaboptions: [
+          {
+            value: 1,
+            label: '通用'
+          },
+          {
+            value: 2,
+            label: '内部'
+          },
+          {
+            value: 3,
+            label: '外部'
+          }
+        ],
+        loginDialogVisible: false, // 登陆验证弹窗
+        isLoginSucceed: false,
+        acceptUsers: [],
+        username: '',
+        password: '',
+        // 标题设置
+        path: '',
+        pathName: '',
+        pathName2: ''
+      }
+    },
+    created () {
+      let parentId = this.$route.query.exid
+      let type = this.$route.query.type
+      if (type == 1) {
+        this.path = '/documentmanage/notice'
+        this.pathName = '通知管理'
+        this.pathName2 = '新增通知'
+        this.uploadform.NoticeTab = 1
+      } else if (type == 2) {
+        this.path = '/documentmanage/files'
+        this.pathName = '文件夹管理'
+        this.pathName2 = '新增文件夹'
+        this.uploadform.DocTab = 1
+      }
+    },
+    methods: {
+      save () {
+        this.$refs['uploadform'].validate((valid) => {
+          if (valid) {
+            let _this = this
+            _this.uploadform.DirectoryId = parseInt(_this.uploadform.JLDirectoryId[_this.uploadform.JLDirectoryId
+              .length -
+            1])
+            _this.$axios.post('/document/adddocumentinfo', _this.uploadform)
+              .then(function (response) {
+                if (response.data.code === 0) {
+                  _this.$message({
+                    type: 'success',
+                    message: response.data.message
+                  })
+                  window.history.go(-1)
+                } else {
+                  _this.$message({
+                    type: 'warning',
+                    message: response.data.message
+                  })
+                }
+              })
+              .catch(function (error) {
+                console.log(error)
+              })
+          } else {
+            console.log('error submit!!')
+            return false
+          }
+        })
+      },
+      // 取消验证
+      cancelLogin () {
+        if (this.isLoginSucceed) {
+          this.isLoginSucceed = false
+        } else {
+          this.AuthorUser = ''
+        }
+        this.loginDialogVisible = false
+      },
+      // 密码验证
+      confirmLogin () {
+        let _this = this
+        let fields = {
+          username: this.username,
+          password: this.password
+        }
+        this.$axios.post('/users/checkUserPwd?RealName=' + this.AuthorUserName, fields)
+          .then(res => {
+            if (res.data.code == 0) {
+              _this.loginDialogVisible = false
+              this.isLoginSucceed = true
+            } else {
+              _this.$message({
+                type: 'warning',
+                message: res.data.message
+              })
+            }
+            _this.password = ''
+          })
+          .catch(err => {
+            // handle error
+            console.error(err)
+          })
+      }
+    }
+  }
+</script>
+<style lang="scss">
+  .samplesinputmaincard .el-card__header {
+    padding: 5px 10px;
+    font-size: 10px;
+  }
+
+  .samplerecoveope .el-radio {
+    padding: 8px 15px 0 0;
+    margin-left: -2px;
+  }
+
+  .attach-uploader .el-upload {
+    border: 1px dashed #63B8FF;
+    cursor: pointer;
+    position: relative;
+    overflow: hidden;
+    margin-bottom: -17px;
+  }
+
+  .attach-uploader .el-upload:hover {
+    border-color: #228B22;
+  }
+
+  .attach-uploader-icon {
+    font-size: 25px;
+    color: #63B8FF;
+    width: 50px;
+    height: 50px;
+    line-height: 50px;
+    text-align: center;
+  }
+
+  .attach-uploader-icon:hover {
+    color: #228B22;
+  }
+
+</style>

+ 18 - 3
src/dashoo.cn/frontend_web/src/pages/documentmanage/files.vue

@@ -10,7 +10,8 @@
           <i class="icon icon-table2"> 文件列表</i>
         </span>
         <span style="float: right">
-          <el-button size="small" type="primary" @click="toadddoc">添加</el-button>
+          <el-button type="primary" size="mini" style="margin-left: 8px" @click="toadddoc">添加文件</el-button>
+        <el-button type="primary" size="mini" style="margin-left: 8px" @click="toadddoc1">添加文件夹</el-button>
         </span>
       </div>
       <el-row :gutter="20">
@@ -43,7 +44,10 @@
           <el-table :data="list" highlight-current-row stripe size="mini" border style="width: 100%">
             <el-table-column label="操作" width="120" align="center" header-align="center" fixed="right">
               <template slot-scope="scope">
-                <router-link :to="'/documentmanage/'+scope.row.Id+'/edit'">
+                <router-link v-if="scope.row.Type" :to="'/documentmanage/'+scope.row.Id+'/editfolder'">
+                  <el-button size="medium" type="text" icon="el-icon-edit" title="编辑"></el-button>
+                </router-link>
+                <router-link v-else :to="'/documentmanage/'+scope.row.Id+'/edit'">
                   <el-button size="medium" type="text" icon="el-icon-edit" title="编辑"></el-button>
                 </router-link>
                 <el-button size="medium" style="margin-left:3px;" type="text"
@@ -51,11 +55,17 @@
                 </el-button>
               </template>
             </el-table-column>
+            <el-table-column align="center" width="70" label="序号">
+              <template slot-scope="scope">
+                <span>{{scope.$index+(currentPage - 1) * size + 1}} </span>
+              </template>
+            </el-table-column>
             <el-table-column prop="Name" label="文档名称" align="center" header-align="center" show-overflow-tooltip></el-table-column>
             <el-table-column prop="NoticeTab" label="文档类型" width="120" align="center" header-align="center" show-overflow-tooltip>
               <template slot-scope="scope">
                 <!-- <el-tag v-if="scope.row.NoticeTab">通知公告</el-tag> -->
-                <el-tag v-if="scope.row.DocTab">文件资料</el-tag>
+                <el-tag v-if="scope.row.Type">文件夹</el-tag>
+                <el-tag v-else>文件资料</el-tag>
               </template>
             </el-table-column>
             <!--<el-table-column prop="VersionInfo" label="文档版本" width="100" align="center" header-align="center" show-overflow-tooltip></el-table-column>-->
@@ -188,6 +198,11 @@
           path: `/documentmanage/add?exid=${this.exId}&type=2`
         })
       },
+      toadddoc1() {
+        this.$router.push({
+          path: `/documentmanage/addfolder?exid=${this.exId}&type=2`
+        })
+      },
       jstimehandle(val) {
         if (val === '') {
           return '----'

+ 5 - 0
src/dashoo.cn/frontend_web/src/pages/documentmanage/notice.vue

@@ -51,6 +51,11 @@
                 </el-button>
               </template>
             </el-table-column>
+            <el-table-column align="center" width="70" label="序号">
+              <template slot-scope="scope">
+                <span>{{scope.$index+(currentPage - 1) * size + 1}} </span>
+              </template>
+            </el-table-column>
             <el-table-column prop="Name" label="文档名称" align="center" header-align="center" show-overflow-tooltip></el-table-column>
             <el-table-column prop="NoticeTab" label="文档类型" width="120" align="center" header-align="center" show-overflow-tooltip>
               <template slot-scope="scope">

+ 5 - 1
src/dashoo.cn/frontend_web/src/pages/oilsupplier/basisbuild/index.vue

@@ -61,7 +61,11 @@
             </el-dropdown> -->
           </template>
         </el-table-column>
-
+        <el-table-column align="center" width="70" label="序号">
+          <template slot-scope="scope">
+            <span>{{scope.$index+(currentPage - 1) * size + 1}} </span>
+          </template>
+        </el-table-column>
         <el-table-column v-for="column in tableColumns" :prop="column.prop" sortable :min-width="column.width"
           :label="column.label" :key="column.Id" align="center" show-overflow-tooltip>
           <template slot-scope="scope">

+ 5 - 1
src/dashoo.cn/frontend_web/src/pages/oilsupplier/goodsaptitude/index.vue

@@ -64,7 +64,11 @@
             </el-dropdown>
           </template>
         </el-table-column>
-
+        <el-table-column align="center" width="70" label="序号">
+          <template slot-scope="scope">
+            <span>{{scope.$index+(currentPage - 1) * size + 1}} </span>
+          </template>
+        </el-table-column>
         <el-table-column v-for="column in tableColumns" :prop="column.prop" sortable :width="column.width"
           :key="column.Id" :label="column.label" align="center" show-overflow-tooltip>
           <template slot-scope="scope">

+ 5 - 1
src/dashoo.cn/frontend_web/src/pages/oilsupplier/technologyservice/index.vue

@@ -61,7 +61,11 @@
             </el-dropdown>
           </template>
         </el-table-column>
-
+        <el-table-column align="center" width="70" label="序号">
+          <template slot-scope="scope">
+            <span>{{scope.$index+(currentPage - 1) * size + 1}} </span>
+          </template>
+        </el-table-column>
         <el-table-column v-for="column in tableColumns" :key="column.Id" :prop="column.prop" sortable
           :width="column.width" :label="column.label" align="center" show-overflow-tooltip>
           <template slot-scope="scope">

+ 5 - 1
src/dashoo.cn/frontend_web/src/pages/setting/qcdSettings.vue

@@ -45,7 +45,11 @@
       <!--内框表格显示-->
       <el-table :data="entityList" stripe highlight-current-row size="mini" border height="calc(100vh - 243px)" style="width: 100%">
 
-
+        <el-table-column align="center" width="70" label="序号">
+          <template slot-scope="scope">
+            <span>{{scope.$index+(currentPage - 1) * size + 1}} </span>
+          </template>
+        </el-table-column>
         <!--内框表格剩余栏显示-->
         <el-table-column label="名称"  width="360" prop="Name"></el-table-column>
         <el-table-column label="编码"  width="260" prop="Code"></el-table-column>

+ 5 - 0
src/dashoo.cn/frontend_web/src/pages/system/organize.vue

@@ -49,6 +49,11 @@
                 </template>
               </template>
             </el-table-column>
+            <el-table-column align="center" width="70" label="序号">
+              <template slot-scope="scope">
+                <span>{{scope.$index+(currentPage - 1) * size + 1}} </span>
+              </template>
+            </el-table-column>
             <el-table-column prop="Fullname" align="center" label="组织名称" show-overflow-tooltip></el-table-column>
             <el-table-column prop="Parentname" align="center" label="上级组织" show-overflow-tooltip></el-table-column>
             <el-table-column prop="Description" align="center" label="备注" show-overflow-tooltip></el-table-column>

+ 188 - 0
src/dashoo.cn/frontend_web/src/pages/system/resource/documentnew.vue

@@ -0,0 +1,188 @@
+<template>
+  <el-card style="min-height: calc(100vh - 92px);">
+    <div slot="header" style="height: 20px;">
+      <span style="float: left;">
+        <i class="icon icon-table2"></i>
+      </span>
+      <el-breadcrumb class="heading" style="float: left; margin-left: 5px">
+        <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
+        <el-breadcrumb-item>资料下载</el-breadcrumb-item>
+      </el-breadcrumb>
+    </div>
+    <div style="background-color: white; width: 60%; margin: 0 auto; ">
+      <el-tree highlight-current :expand-on-click-node="true" accordion node-key="id" :data="folderList" :props="orgtreeprops" ref="orgmanagetree">
+        <span class="custom-tree-node" slot-scope="{ node, data }">
+          <span v-if="data.Type == 1"><i class="el-icon-folder"></i> {{ node.label }}</span>
+          <el-link :href="getDownloadFile(data.FileURL)" v-else target="_blank" type="primary">{{ node.label }}</el-link>
+          <span v-if="data.Type == 0" style="float: right;padding-right: 20px">{{ jsTImeHandle(data.CreateOn) }}
+              <span style="font-size: 15px; color: #f13f40;float: right;padding-left: 100px" v-if="strNew(data.CreateOn+'')">{{ strNew(data.CreateOn+'')}}</span>
+              <span style="font-size: 15px; color: #f13f40;float: right;padding-left: 100px" v-else>&nbsp;&nbsp;&nbsp;&nbsp;</span>
+            </span>
+      </span>
+      </el-tree>
+    </div>
+  </el-card>
+</template>
+
+<script>
+  export default {
+    name: 'notice',
+    data () {
+      return {
+        folderList: [],
+        orgtreeprops: {
+          value: 'id',
+          label: 'Name',
+          children: 'children'
+        },
+        fileList: [] // 文档列表
+      }
+    },
+    created () {
+      this.getFolderList()
+      // this.initFileListData()
+    },
+    methods: {
+      getFolderList () {
+        let _this = this
+        let params = {
+          _currentPage: 1,
+          _size: 100,
+          DocTab: 1
+        }
+        _this.$axios.get('/document/getdocumentlist', {
+          params
+        })
+          .then(res => {
+            _this.folderList = window.toolfun_gettreejson(res.data.items, 'Id', 'ParentId', 'Id,Name,CreateOn,FileURL,Type')
+          })
+          .catch(err => {
+            // handle error
+            console.error(err)
+          })
+      },
+      // 获取文件列表
+      initFileListData () {
+        let _this = this
+        // 传递列名
+        const params = {
+          colName: 'DocTab',
+          RangeType: '1,3'
+        }
+        _this.$axios
+          .get('/document/getdocumentnameandtime', { params })
+          .then(function (response) {
+            _this.fileList = response.data
+          })
+          .catch(function (error) {
+            console.log(error)
+          })
+      },
+      getDownloadFile (val) {
+        console.log(val, '212121')
+        let urlArr = val.split('|')
+        let retUrl = urlArr[0]
+        // 内网服务器专用
+        if (process.client && retUrl.indexOf('/upfile') === 0) {
+          const myDomain = window.location.host
+          retUrl = myDomain + '/' + retUrl
+        }
+        return 'http://' + retUrl
+      },
+      // 格式化时间
+      jsTImeHandle (val) {
+        if (val === '') {
+          return '----'
+        } else if (val === '0001-01-01T08:00:00+08:00') {
+          return '----'
+        } else if (val === '5000-01-01T23:59:59+08:00') {
+          return '永久'
+        } else {
+          val = val.replace('T', ' ')
+          return val.substring(0, 10)
+        }
+      },
+      strNew (val) {
+        try {
+          let b = this.jsTImeHandle(val).split('-')
+          let date = new Date(b[0], b[1], b[2])
+          let newDate = new Date()
+          if ((newDate - date) / (1000 * 60 * 60 * 24) < 30) {
+            return '新'
+          } else {
+            return ''
+          }
+        } catch (e) {
+          return ''
+        }
+      }
+    }
+  }
+</script>
+
+<style lang="scss">
+  .time {
+    font-size: 13px;
+    color: #999;
+  }
+
+  .bottom {
+    margin-top: 13px;
+    line-height: 12px;
+  }
+
+  .button {
+    padding: 0;
+    float: right;
+  }
+
+  .image {
+    width: 100%;
+    display: block;
+  }
+
+  .clearfix:before,
+  .clearfix:after {
+    display: table;
+    content: "";
+  }
+
+  .clearfix:after {
+    clear: both
+  }
+
+  .el-pagination {
+    margin: 1rem 0 2rem;
+    text-align: right;
+  }
+
+  .plab {
+    font-size: 13px;
+    color: #999;
+  }
+
+  .triggerone {
+    font-size: 13px;
+    margin-left: 80px;
+  }
+
+  .plab {
+    font-size: 13px;
+    color: #999;
+  }
+
+  .docdelete .el-radio {
+    padding: 8px 15px 0 0;
+    margin-left: -2px;
+  }
+
+  .custom-tree-node {
+    flex: 1;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    font-size: 14px;
+    padding-right: 8px;
+  }
+
+</style>

+ 5 - 0
src/dashoo.cn/frontend_web/src/pages/system/userrole.vue

@@ -55,6 +55,11 @@
             </el-button>
           </template>
         </el-table-column>
+        <el-table-column align="center" width="70" label="序号">
+          <template slot-scope="scope">
+            <span>{{scope.$index+(currentPage - 1) * size + 1}} </span>
+          </template>
+        </el-table-column>
         <el-table-column prop="Realname" align="center" label="角色名" show-overflow-tooltip></el-table-column>
         <el-table-column prop="Description" align="center" label="角色描述" show-overflow-tooltip></el-table-column>
         <el-table-column label="创建日期" align="center" show-overflow-tooltip>

+ 5 - 0
src/dashoo.cn/frontend_web/src/pages/system/users.vue

@@ -66,6 +66,11 @@
                    </el-button>
                  </template>
                </el-table-column>
+               <el-table-column align="center" width="70" label="序号">
+                 <template slot-scope="scope">
+                   <span>{{scope.$index+(currentPage - 1) * size + 1}} </span>
+                 </template>
+               </el-table-column>
                <el-table-column prop="Unit" align="center" label="单位"></el-table-column>
                <el-table-column prop="Departmentname" align="center" label="部门"></el-table-column>
                <el-table-column prop="Realname" align="center" label="用户名"></el-table-column>