10f57013c79fce45439f4ca612bbac4e48a6c4e9.svn-base 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492
  1. <template>
  2. <div>
  3. <el-container class="max-box">
  4. <el-aside width="40%" :height="asideHeight">
  5. <div :style="{'height': asideHeight + 'px','overflow': 'auto'}" class="left_tree">
  6. <el-card class="box-card" style="min-height: 99%">
  7. <div slot="header" class="clearfix">
  8. <span>工程信息</span>
  9. <el-button type="success" @click="addJie" style="margin-left:30px;">添加节点</el-button>
  10. <!-- <el-button style="float: right; padding: 3px 0" type="text" @click="batchImport" v-if="ownPriv('manage')">批量导入</el-button> -->
  11. <!-- 水利工程基础信息批量导入弹窗 -->
  12. <!-- <slgc-tian-bao-pl v-if="showGongChengTianBaoPl" @closePlDialog="closePlDialog"></slgc-tian-bao-pl> -->
  13. </div>
  14. <el-tree :data="treeData"
  15. class="filter-tree"
  16. lazy
  17. highlight-current="true"
  18. :load="loadAddvData"
  19. ref="tree"
  20. :props="defaultProps"
  21. @node-click="handleNodeClick"
  22. :expand-on-click-node="false">
  23. <span class="custom-tree-node" slot-scope="{ node, data }">
  24. <span>{{ node.label }}</span>
  25. <span>
  26. <el-button
  27. type="success"
  28. size="mini"
  29. @click="() => toAddJieDian(data)">
  30. 添加节点
  31. </el-button>
  32. <el-button
  33. type="primary"
  34. size="mini"
  35. @click="() => toEditJieDian(data)">
  36. 修改
  37. </el-button>
  38. <el-button
  39. type="danger"
  40. size="mini"
  41. @click="() => delete_jieDian(data,node)">
  42. 删除
  43. </el-button>
  44. </span>
  45. </span>
  46. </el-tree>
  47. </el-card>
  48. </div>
  49. </el-aside>
  50. <el-main>
  51. <el-row style="height:40px;">
  52. <el-col :span="18">
  53. <el-form :inline="true" size="mini" class="demo-form-inline" style="padding-left: 10px;">
  54. <el-form-item label="文件名称">
  55. <el-input style="width:230px;" v-model="filenameval" clearable placeholder="文件名称"></el-input>
  56. </el-form-item>
  57. <el-form-item>
  58. <el-button type="primary" @click="getFilelist(upId)">查询</el-button>
  59. </el-form-item>
  60. </el-form>
  61. </el-col>
  62. <el-col :span="6">
  63. <el-form :inline="true" size="mini" class="demo-form-inline" style="float:right;">
  64. <el-form-item label="">
  65. <el-button type="success" @click="uploadFile" v-if="ownPriv('manage')" style="margin-right:30px;"><i class="el-icon-upload el-icon--right"></i> 文件上传</el-button>
  66. </el-form-item>
  67. </el-form>
  68. </el-col>
  69. </el-row>
  70. <el-table
  71. v-loading="loading"
  72. :height="tableHeight"
  73. :data="fileList"
  74. style="width: 100%"
  75. :row-class-name="tableRowClassName">
  76. <el-table-column
  77. prop="index"
  78. label="序号"
  79. width="100">
  80. </el-table-column>
  81. <el-table-column
  82. prop="fileName"
  83. label="文件名"
  84. width="600">
  85. <template slot-scope="scope">
  86. <span @click="downloadFile(scope.row.filePath)">{{scope.row.fileName}}</span>
  87. </template>
  88. </el-table-column>
  89. <el-table-column
  90. prop="createDate"
  91. label="上传时间"
  92. width="200">
  93. </el-table-column>
  94. <el-table-column
  95. prop="filePath"
  96. label="操作">
  97. <template slot-scope="scope">
  98. <el-button type="text" @click="downloadFile(scope.row.filePath)">下载</el-button>
  99. <el-button type="text" v-if="ownPriv('manage')" @click="deleteFile(scope.row.id)">删除</el-button>
  100. <el-button v-if="scope.row.top != 1 && ownPriv('manage')" type="text" @click="makeTop(scope.row.id)">置顶</el-button>
  101. <el-button v-if="scope.row.top == 1 && ownPriv('manage')" type="text" @click="cancelTop(scope.row.id)">取消置顶</el-button>
  102. </template>
  103. </el-table-column>
  104. </el-table>
  105. <el-pagination style="margin-left: 30px;" :pager-count="5" :current-page="pageIndex" background
  106. :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"
  107. :page-sizes="[10, 20, 50, 100]"
  108. @current-change="pageIndexChange" @size-change="handleSizeChange"
  109. ></el-pagination>
  110. <el-dialog title="文件上传" :visible.sync="dialogFormVisible" :close-on-click-modal="false" width="40%">
  111. <upload
  112. ref="uploadFile"
  113. :url="`/pdcApi/file/insert?bizId=`"
  114. @uploadOver="removeNewSupervision"
  115. ></upload>
  116. <div slot="footer" class="dialog-footer">
  117. <el-button @click="dialogFormVisible = false">取 消</el-button>
  118. <el-button type="primary" @click="addFile">保 存</el-button>
  119. </div>
  120. </el-dialog>
  121. </el-main>
  122. </el-container>
  123. <el-dialog title="添加节点" :visible.sync="jiedian">
  124. <el-form label-width="120px">
  125. <el-form-item label="节点名称" required>
  126. <el-input v-model="jieDianName" clearable></el-input>
  127. </el-form-item>
  128. </el-form>
  129. <div slot="footer" class="dialog-footer">
  130. <el-button @click="jiedian = false">取 消</el-button>
  131. <el-button type="primary" @click="add_jieDian">确 定</el-button>
  132. </div>
  133. </el-dialog>
  134. <el-dialog title="修改节点" :visible.sync="xjiedian">
  135. <el-form label-width="120px">
  136. <el-form-item label="节点名称" required>
  137. <el-input v-model="jieDianName" clearable></el-input>
  138. </el-form-item>
  139. </el-form>
  140. <div slot="footer" class="dialog-footer">
  141. <el-button @click="xjiedian = false">取 消</el-button>
  142. <el-button type="primary" @click="add_jieDian1">确 定</el-button>
  143. </div>
  144. </el-dialog>
  145. </div>
  146. </template>
  147. <script>
  148. import request from '@util/gw_ajax_request.js'
  149. import {hostUrl} from '@util/global_variable.js'
  150. export default {
  151. data(){
  152. return{
  153. asideHeight: window.innerHeight - 116,
  154. treeData: [
  155. ],
  156. filenameval: '',
  157. treeData1: [
  158. // {
  159. // nm: '金水',
  160. // uptm: [{
  161. // nm: '金水1',
  162. // uptm: [{
  163. // nm: '金水1.1',
  164. // uptm: []
  165. // }]
  166. // }]
  167. // }
  168. ],
  169. defaultProps: {
  170. children: 'children',
  171. label: 'nm'
  172. },
  173. jiedian: false,
  174. xjiedian: false,
  175. tableHeight: window.innerHeight - 230,
  176. fileList: [
  177. // {
  178. // index: 1,
  179. // fileName: '附件1:福建省水利厅关于联合开展2018~2019年度中央及省级水利投资建设项目稽察的通知.pdf',
  180. // filePath: 'http://61.154.12.112:9900/upload/pdf/附件1:福建省水利厅关于联合开展2018~2019年度中央及省级水利投资建设项目稽察的通知.pdf'
  181. // },
  182. // {
  183. // index: 2,
  184. // fileName: '附件2:稽察组人员名单.pdf',
  185. // filePath: 'http://61.154.12.112:9900/upload/pdf/附件2:稽察组人员名单.pdf'
  186. // },
  187. // {
  188. // index: 3,
  189. // fileName: '关于召开2018-2019年度中央及省级水利投资建设项目稽察布置会的通知 闽水监督函〔2019〕10号.pdf',
  190. // filePath: 'http://61.154.12.112:9900/upload/pdf/关于召开2018-2019年度中央及省级水利投资建设项目稽察布置会的通知 闽水监督函〔2019〕10号.pdf'
  191. // },
  192. // {
  193. // index: 4,
  194. // fileName: '水利工程稽察人员业务指南.docx',
  195. // filePath: 'http://61.154.12.112:9900/upload/pdf/水利工程稽察人员业务指南.docx'
  196. // },
  197. // {
  198. // index: 5,
  199. // fileName: '稽察报告大纲.doc',
  200. // filePath: 'http://61.154.12.112:9900/upload/pdf/稽察报告大纲.doc'
  201. // }
  202. ],
  203. pageIndex: 1,
  204. pageSize: 20,
  205. total: 0,
  206. dialogFormVisible: false,
  207. gwComFileList: [],
  208. loading: false,
  209. add: {},
  210. jieDianName: '',
  211. jieDianId:'',
  212. upId: ''
  213. }
  214. },
  215. computed:{
  216. persId() {
  217. return localStorage.getItem("userid")
  218. ? localStorage.getItem("userid")
  219. : "1098101939614724096";
  220. },
  221. hostUrl(){
  222. return hostUrl
  223. },
  224. currentRlcode(){
  225. return localStorage.getItem("currentRlcode") ? localStorage.getItem("currentRlcode") : ''
  226. }
  227. },
  228. components:{
  229. upload: resolve => {
  230. require(["@widget/uploadFile.vue"], resolve);
  231. }
  232. },
  233. mounted(){
  234. this.getTree()
  235. // this.getFilelist()
  236. },
  237. methods:{
  238. tableRowClassName({row, rowIndex}) {
  239. if (row['top'] == 1) {
  240. return 'success-row';
  241. }
  242. return '';
  243. },
  244. cancelTop(id){
  245. request.get(`/file/cancelTop/${id}`).then(res => {
  246. if(res.success){
  247. this.$message.success('取消置顶成功')
  248. this.getFilelist(this.upId)
  249. }
  250. })
  251. },
  252. makeTop(id){
  253. request.get(`/file/top/${id}`).then(res => {
  254. if(res.success){
  255. this.$message.success('置顶成功')
  256. this.getFilelist(this.upId)
  257. }
  258. })
  259. },
  260. loadAddvData: function (node, resolve) {
  261. request.get(`/bis/insp/Folder/getNextNode?id=${node.data.id}`).then(
  262. response => {
  263. var data = response.data;
  264. let children = [];
  265. response.data.forEach((element, index) => {
  266. children.push({
  267. 'id': element.id,
  268. 'nm': element.nm
  269. })
  270. });
  271. resolve(children);
  272. }
  273. );
  274. },
  275. addJie(){
  276. this.jieDianName = ''
  277. this.add = {
  278. nm: '',
  279. orgId: "034",
  280. persId: this.persId,
  281. pid: 'root'
  282. }
  283. this.jiedian = true;
  284. },
  285. delete_jieDian(data){
  286. let parms = {
  287. id: data.id
  288. }
  289. request.post(`/bis/insp/Folder/delete/${data.id}`,parms).then(res => {
  290. if(res.success){
  291. this.$message.success('删除成功')
  292. this.getTree()
  293. }
  294. })
  295. },
  296. toEditJieDian(data){
  297. this.xjiedian = true
  298. this.jieDianId = data['id']
  299. },
  300. add_jieDian1(){
  301. let param = {
  302. id: this.jieDianId,
  303. nm: this.jieDianName
  304. }
  305. request.post(`/bis/insp/Folder/update`,param).then(res => {
  306. if(res.success){
  307. this.xjiedian = false
  308. this.getTree()
  309. }
  310. })
  311. },
  312. add_jieDian(){
  313. this.add['nm'] = this.jieDianName
  314. request.post(`/bis/insp/Folder/add`,this.add).then(res => {
  315. if(res.success){
  316. this.jiedian = false;
  317. this.getTree()
  318. }
  319. })
  320. },
  321. toAddJieDian(data){
  322. this.jieDianName = ''
  323. this.add = {
  324. nm: '',
  325. orgId: "034",
  326. persId: data.persId,
  327. pid: data.id
  328. }
  329. this.jiedian = true;
  330. },
  331. handleNodeClick(data) {
  332. this.upId = data['id']
  333. this.getFilelist(data['id'])
  334. },
  335. getTree(){
  336. request.get(`/bis/insp/Folder/getNextNode?id=`).then(res => {
  337. let children = [];
  338. res.data.forEach((element, index) => {
  339. children.push({
  340. 'id': element.id,
  341. 'nm': element.nm
  342. })
  343. });
  344. this.treeData = children;
  345. this.upId = children[0]['id']
  346. this.getFilelist(children[0]['id'])
  347. })
  348. },
  349. getTree1(){
  350. request.get(`/bis/insp/Folder/getNextNode?id=`).then(res => {
  351. if(res.success){
  352. res.data.forEach((ele, index) => {
  353. this.treeData1[index] = {
  354. nm : ele['nm'],
  355. id : ele['id'],
  356. children: []
  357. }
  358. request.get(`/bis/insp/Folder/getNextNode?id=${ele.id}`).then(response => {
  359. if(response.data.length > 0){
  360. response.data.forEach((item,ind) => {
  361. this.treeData1[index]['children'][ind] = {
  362. nm : response.data[ind]['nm'],
  363. id : response.data[ind]['id'],
  364. children: []
  365. }
  366. })
  367. }else{
  368. ele['children'] = null
  369. }
  370. })
  371. })
  372. this.treeData = this.treeData1
  373. // console.log(this.treeData,'12131211111111111113')
  374. }
  375. })
  376. },
  377. getFilelist(e){
  378. let params = {
  379. pageNum: this.pageIndex,
  380. pageSize: this.pageSize,
  381. fileName: this.filenameval,
  382. bizId: e
  383. }
  384. let _this = this
  385. this.loading = true
  386. request.post(`/file/findPageInfo`,params).then(res=>{
  387. if(res.success){
  388. this.fileList = res.data.list
  389. this.fileList.forEach((ele,index)=>{
  390. ele['index'] = _this.pageSize * (_this.pageIndex - 1) + (index + 1)
  391. })
  392. this.total = res.data.total
  393. this.loading = false
  394. }
  395. })
  396. },
  397. downloadFile(filePath){
  398. window.open(this.hostUrl + filePath)
  399. },
  400. pageIndexChange(val){
  401. this.pageIndex = val
  402. this.getFilelist(this.upId)
  403. },
  404. handleSizeChange(val){
  405. this.pageSize = val
  406. this.getFilelist(this.upId)
  407. },
  408. uploadFile(){
  409. if(!this.upId){
  410. this.$message({
  411. type: 'warning',
  412. message: '请选择左侧节点'
  413. });
  414. return false
  415. }
  416. this.dialogFormVisible = true
  417. },
  418. addFile(){
  419. this.gwComFileList = [];
  420. if (this.$refs.uploadFile.submitUpload(this.upId)) {
  421. this.removeNewSupervision();
  422. }
  423. },
  424. removeNewSupervision(arg) {
  425. if (arg) {
  426. var args = this.gwComFileList.concat(arg);
  427. }
  428. this.gwComFileList = [];
  429. this.dialogFormVisible = false
  430. this.$message.success('添加成功')
  431. this.getFilelist(this.upId)
  432. },
  433. // 文件上传
  434. submitUpload() {
  435. this.$refs.upload.submit();
  436. },
  437. // 文件删除
  438. deleteFile(id){
  439. this.$confirm('确定删除该文件吗?', '提示', {
  440. confirmButtonText: '确定',
  441. cancelButtonText: '取消',
  442. type: 'warning'
  443. }).then(() => {
  444. request.post(`/file/${id}`).then(res=>{
  445. if(res.success){
  446. this.$message({
  447. type: 'success',
  448. message: '删除成功!'
  449. });
  450. this.getFilelist(this.upId)
  451. }else{
  452. this.$message.warning(res.message)
  453. }
  454. })
  455. }).catch(() => {
  456. });
  457. }
  458. }
  459. }
  460. </script>
  461. <style lang="scss">
  462. .max-box{
  463. .el-tree-node__content{
  464. height: 33px;
  465. line-height: 33px;
  466. }
  467. }
  468. h4.mxh{
  469. margin-bottom: 20px;
  470. overflow: hidden;
  471. button{
  472. float: right;
  473. }
  474. }
  475. .el-table .warning-row {
  476. background: oldlace;
  477. }
  478. .el-table .success-row {
  479. background: #ebf9f9;
  480. }
  481. .left_tree .custom-tree-node {
  482. flex: 1;
  483. display: flex;
  484. align-items: center;
  485. justify-content: space-between;
  486. font-size: 14px;
  487. padding-right: 8px;
  488. }
  489. </style>