zhongzewei 6 سال پیش
والد
کامیت
dd9e0151b0
3فایلهای تغییر یافته به همراه136 افزوده شده و 0 حذف شده
  1. 50 0
      modules/sys_tools/controllers/sys_controller.js
  2. 2 0
      modules/sys_tools/routes/routes.js
  3. 84 0
      web/users/views/tool/index.html

+ 50 - 0
modules/sys_tools/controllers/sys_controller.js

@@ -8,12 +8,17 @@
  * @version
  */
 
+import fs from 'fs';
+import path from 'path';
+import multiparty from 'multiparty';
 import BaseController from "../../common/base/base_controller";
+
 //import sysSchedule from '../models/sys_model';
 let sysSchedule = require('../models/sys_model');
 let callback = function(req, res, err, message, data){
     res.json({error: err, message: message, data: data});
 };
+const shareDir = 'public/share/';
 class SysTools extends BaseController{
     clearJunkData(req, res){
         sysSchedule.clearJunkData(function (err) {
@@ -38,6 +43,51 @@ class SysTools extends BaseController{
             callback(req, res, errCode, msg, null);
         });
     }
+    //上传文件:用户手册、升级说明pdf文件
+    /*
+     * 这两个文件在前台帮助下拉中使用,与产品绑定,即一个养护产品(重庆养护、浙江xx...)只有一份文件
+     * 所以保存到的文件夹直接分为两个:userGuide和upgradeGuide,前台到对应文件夹直接获取文件
+     * */
+    async uploadFile(req, res) {
+        const validTrigger = {
+            userGuide: 'userGuide', //用户手册
+            upgradeGuide: 'upgradeGuide' //升级说明
+        };
+        let uploadDir = path.join(req.app.locals.rootDir, shareDir);
+        let form = new multiparty.Form({uploadDir: uploadDir});
+        form.parse(req, async function(err, fields, files){
+            try {
+                const file = typeof files.file !== 'undefined' ? files.file[0] : null;
+                if(err || !file) {
+                    throw '上传失败';
+                }
+                //文件类型
+                const trigger = typeof fields.trigger !== 'undefined' && fields.trigger.length > 0 ? fields.trigger[0] : null;
+                if (!trigger || !trigger in validTrigger) {
+                    throw '该操作没有上传权限'
+                }
+                if (!fs.existsSync(uploadDir)) {
+                    fs.mkdirSync(uploadDir);
+                }
+                //根据触发源放置文件到相关文件夹
+                let triggerPath = path.join(uploadDir, trigger);
+                if (!fs.existsSync(triggerPath)) {
+                    fs.mkdirSync(triggerPath);
+                }
+                //文件后缀
+                let px = file.originalFilename.split('.').pop();
+                //重命名
+                let newFileName = trigger + '.' + px;
+                let newPath = path.join(triggerPath, newFileName);
+                fs.renameSync(file.path, newPath);
+                //返回图片域名后的url
+                res.json({error: 0, data: `${shareDir}/${trigger}/${newFileName}`, message: 'success'});
+            } catch (err) {
+                console.log(err);
+                res.json({error: 1, data: null, message: err});
+            }
+        });
+    }
 }
 
 export {SysTools as default};

+ 2 - 0
modules/sys_tools/routes/routes.js

@@ -17,6 +17,8 @@ module.exports = function (app) {
     router.post('/clearJunkData', sysToolsController.auth, sysToolsController.init, sysToolsController.clearJunkData);
     router.post('/clearFakeData', sysToolsController.auth, sysToolsController.init, sysToolsController.clearFakeData);
 
+    router.post('/uploadUserGuide', sysToolsController.auth, sysToolsController.init, sysToolsController.uploadFile);
+
     app.use("/sysTools/api", router);
 
 };

+ 84 - 0
web/users/views/tool/index.html

@@ -14,6 +14,10 @@
                         <a id="clearJunkBtn" href="javascript:void(0);" class="btn btn-primary pull-right">清除</a>
                         <% } else if (tool.url === '/sysTools/api/clearFakeData' ) { %>
                         <a id="clearFakeBtn" href="javascript:void(0);" class="btn btn-primary pull-right">清除</a>
+                        <% } else if (tool.url === '/sysTools/api/uploadUserGuide' ) { %>
+                        <a id="uploadUserGuide" href="javascript:void(0);" class="btn btn-primary pull-right">上传</a>
+                        <% } else if (tool.url === '/sysTools/api/uploadUpgradeGuide' ) { %>
+                        <a id="uploadUpgradeGuide" href="javascript:void(0);" class="btn btn-primary pull-right">上传</a>
                         <% } else { %>
                         <a id="<%= tool.controller %>" href="<%= tool.url %>" target="_blank" class="btn btn-primary pull-right">进入</a>
                         <% } %>
@@ -156,6 +160,31 @@
         </div>
     </div>
 </div>
+<!--上传pdf-->
+<div class="modal fade" id="upload" data-backdrop="static">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title">上传</h5>
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                    <span aria-hidden="true">×</span>
+                </button>
+            </div>
+            <div class="modal-body">
+                <form>
+                    <div class="form-group">
+                        <label>请选择pdf格式文件</label>
+                        <input id="upload-file" class="form-control-file" type="file" accept="application/pdf">
+                    </div>
+                </form>
+            </div>
+            <div class="modal-footer">
+                <a href="javascript:void(0);" class="btn btn-primary" id="uploadConfirm">确定</a>
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
+            </div>
+        </div>
+    </div>
+</div>
 
 <script type="text/javascript" src="/public/web/common_ajax.js"></script>
 <script type="text/javascript" src="/public/web/PerfectLoad.js"></script>
@@ -223,5 +252,60 @@
                 $.bootstrapLoading.end();
             })
         });
+        let uploadType = {
+            userGuide: 'userGuide',
+            upgradeGuide: 'upgradeGuide'
+        },
+            curTrigger = null;
+        //用户手册
+        $('#uploadUserGuide').click(function () {
+            curTrigger = uploadType.userGuide;
+           $('#upload .modal-title').text('上传用户手册');
+           $('#upload').modal('show');
+        });
+        //升级说明
+        $('#uploadUpgradeGuide').click(function () {
+            curTrigger = uploadType.upgradeGuide;
+            $('#upload .modal-title').text('上传升级说明');
+            $('#upload').modal('show');
+        })
+        $('#upload').on('hide.bs.modal', function () {
+            $('#upload-file').val('');
+        });
+        $('#uploadConfirm').click(function () {
+            let file = $('#upload-file')[0],
+                pdf = file.files[0],
+                trigger = curTrigger;
+            if (!trigger) {
+                alert('无效的操作!(触发器为空)');
+                return;
+            }
+            if (!pdf) {
+                alert('请选择pdf文件!');
+                return;
+            }
+            let formData = new FormData();
+            formData.append('file', pdf);
+            formData.append('trigger', trigger);
+            $.ajax({
+                url: '/sysTools/api/uploadUserGuide',
+                type: 'POST',
+                data: formData,
+                cache: false,
+                contentType: false,
+                processData: false,
+                beforeSend: function() {
+                    $.bootstrapLoading.start();
+                },
+                success: function(response){
+                    $.bootstrapLoading.end();
+                    $('#upload').modal('hide');
+                },
+                error: function(){
+                    alert('上传失败');
+                    $.bootstrapLoading.end();
+                }
+            });
+        });
     });
 </script>