Browse Source

仓库管理修改

wengyuwen 4 years ago
parent
commit
32ed69d79c
3 changed files with 470 additions and 10 deletions
  1. 68 0
      src/api/basicdata/dept.js
  2. 363 0
      src/views/basicdata/dept/index.vue
  3. 39 10
      src/views/finance/contrast/index.vue

+ 68 - 0
src/api/basicdata/dept.js

@@ -0,0 +1,68 @@
+import request from '@/utils/request'
+
+// 查询部门列表
+export function listDept(query) {
+  return request({
+    url: '/system/dept/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询部门列表(排除节点)
+export function listDeptExcludeChild(deptId) {
+  return request({
+    url: '/system/dept/list/exclude/' + deptId,
+    method: 'get'
+  })
+}
+
+// 查询部门详细
+export function getDept(deptId) {
+  return request({
+    url: '/system/dept/' + deptId,
+    method: 'get'
+  })
+}
+
+// 查询部门下拉树结构
+export function treeselect() {
+  return request({
+    url: '/system/dept/treeselect',
+    method: 'get'
+  })
+}
+
+// 根据角色ID查询部门树结构
+export function roleDeptTreeselect(roleId) {
+  return request({
+    url: '/system/dept/roleDeptTreeselect/' + roleId,
+    method: 'get'
+  })
+}
+
+// 新增部门
+export function addDept(data) {
+  return request({
+    url: '/system/dept',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改部门
+export function updateDept(data) {
+  return request({
+    url: '/system/dept',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除部门
+export function delDept(deptId) {
+  return request({
+    url: '/system/dept/' + deptId,
+    method: 'delete'
+  })
+}

+ 363 - 0
src/views/basicdata/dept/index.vue

@@ -0,0 +1,363 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch">
+      <el-form-item label="部门名称" prop="deptName">
+        <el-input
+          v-model="queryParams.deptName"
+          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="cyan" 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
+          type="primary"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:dept:add']"
+        >新增</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table
+      v-loading="loading"
+      :data="deptList"
+      row-key="deptId"
+      default-expand-all
+      :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
+    >
+      <el-table-column prop="deptName" label="部门名称" width="260"></el-table-column>
+      <el-table-column prop="orderNum" label="排序" width="200"></el-table-column>
+      <el-table-column prop="status" label="状态" :formatter="statusFormat" width="100"></el-table-column>
+      <el-table-column label="创建时间" align="center" prop="createTime" width="200">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.createTime) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:dept:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-plus"
+            @click="handleAdd(scope.row)"
+            v-hasPermi="['system:dept:add']"
+          >新增</el-button>
+          <el-button
+            v-if="scope.row.parentId != 0"
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:dept:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <!-- 添加或修改部门对话框 -->
+    <el-dialog :title="title" :visible.sync="open" :close-on-click-modal="false" width="70%" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-row>
+          <el-col :span="8" v-if="form.parentId !== 0">
+            <el-form-item label="上级部门" prop="parentId">
+              <treeselect v-model="form.parentId" :options="deptOptions" :normalizer="normalizer" placeholder="选择上级部门" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="部门名称" prop="deptName">
+              <el-input v-model="form.deptName" placeholder="请输入部门名称" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="显示排序" prop="orderNum">
+              <el-input-number v-model="form.orderNum" controls-position="right" :min="0" />
+            </el-form-item>
+          </el-col>
+<!--        </el-row>-->
+<!--        <el-row>-->
+          <el-col :span="8">
+            <el-form-item label="编号" prop="fNo">
+              <el-input v-model="form.fNo"  placeholder="请输入编号" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="名称" prop="fName">
+              <el-input v-model="form.fName" placeholder="请输入名称" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="地址" prop="fAddr">
+              <el-input v-model="form.fAddr" placeholder="请输入地址" />
+            </el-form-item>
+          </el-col>
+<!--        </el-row>-->
+<!--        <el-row>-->
+          <el-col :span="8">
+            <el-form-item label="联系人" prop="fContacts">
+              <el-input v-model="form.fContacts" placeholder="请输入联系人" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="电话" prop="fTel">
+              <el-input v-model="form.fTel"
+                        placeholder="请输入电话"
+                        oninput='this.value=this.value.replace(/[^\-?\d]/g,"")'
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="是否计费" prop="fCharg">
+              <el-select
+                v-model="form.fCharg"
+                style="width: 100%"
+              >
+                <el-option label="是" value="1" />
+                <el-option label="否" value="0" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="状态">
+              <el-radio-group v-model="form.fStatus">
+                <el-radio
+                  v-for="dict in statusOptions"
+                  :key="dict.dictValue"
+                  :label="dict.dictValue"
+                >{{dict.dictLabel}}</el-radio>
+              </el-radio-group>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+          <el-form-item label="库容(吨)" prop="fTotalgross" >
+            <el-input v-model="form.fTotalgross" placeholder="请输入库容(吨位)"/>
+          </el-form-item>
+          </el-col>
+        </el-row>
+
+        <!--<el-form-item label="状态,默认 T ,正常T 停用F 下拉选择">
+          <el-radio-group v-model="form.fStatus">
+            <el-radio label="1">请选择字典生成</el-radio>
+          </el-radio-group>
+        </el-form-item>-->
+        <!--<el-form-item label="删除状态" prop="delFlag">
+          <el-input v-model="form.delFlag" placeholder="请输入删除状态" />
+        </el-form-item>-->
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" 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>
+  </div>
+</template>
+
+<script>
+import { listDept, getDept, delDept, addDept, updateDept, listDeptExcludeChild } from "@/api/basicdata/dept";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+export default {
+  name: "Dept",
+  components: { Treeselect },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 表格树数据
+      deptList: [],
+      // 部门树选项
+      deptOptions: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 状态数据字典
+      statusOptions: [],
+      // 查询参数
+      queryParams: {
+        deptName: undefined,
+        status: undefined
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        parentId: [
+          { required: true, message: "上级部门不能为空", trigger: "blur" }
+        ],
+        deptName: [
+          { required: true, message: "部门名称不能为空", trigger: "blur" }
+        ],
+        orderNum: [
+          { required: true, message: "显示排序不能为空", trigger: "blur" }
+        ],
+        email: [
+          {
+            type: "email",
+            message: "'请输入正确的邮箱地址",
+            trigger: ["blur", "change"]
+          }
+        ],
+        phone: [
+          {
+            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+            message: "请输入正确的手机号码",
+            trigger: "blur"
+          }
+        ]
+      }
+    };
+  },
+  created() {
+    this.getList();
+    this.getDicts("sys_normal_disable").then(response => {
+      this.statusOptions = response.data;
+    });
+  },
+  methods: {
+    /** 查询部门列表 */
+    getList() {
+      this.loading = true;
+      listDept(this.queryParams).then(response => {
+        this.deptList = this.handleTree(response.data, "deptId");
+        this.loading = false;
+      });
+    },
+    /** 转换部门数据结构 */
+    normalizer(node) {
+      if (node.children && !node.children.length) {
+        delete node.children;
+      }
+      return {
+        id: node.deptId,
+        label: node.deptName,
+        children: node.children
+      };
+    },
+    // 字典状态字典翻译
+    statusFormat(row, column) {
+      return this.selectDictLabel(this.statusOptions, row.status);
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        deptId: undefined,
+        parentId: undefined,
+        deptName: undefined,
+        orderNum: undefined,
+        leader: undefined,
+        phone: undefined,
+        email: undefined,
+        status: "0"
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    /** 新增按钮操作 */
+    handleAdd(row) {
+      this.reset();
+      if (row != undefined) {
+        this.form.parentId = row.deptId;
+      }
+      this.open = true;
+      this.title = "添加部门";
+      listDept().then(response => {
+	        this.deptOptions = this.handleTree(response.data, "deptId");
+      });
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      getDept(row.deptId).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改部门";
+      });
+      listDeptExcludeChild(row.deptId).then(response => {
+	        this.deptOptions = this.handleTree(response.data, "deptId");
+      });
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.deptId != undefined) {
+            updateDept(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addDept(this.form).then(response => {
+              this.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      this.$confirm('是否确认删除名称为"' + row.deptName + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delDept(row.deptId);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        })
+    }
+  }
+};
+</script>

+ 39 - 10
src/views/finance/contrast/index.vue

@@ -242,7 +242,7 @@
             filterable
             remote
             clearable
-            :disabled="notChange"
+            :disabled="doNot"
             style="width: 200px"
             size="small"
             @keyup.enter.native="handleQuery"
@@ -428,6 +428,7 @@
             <el-select
               v-model="TWareHouseFees.fToCorpid"
               placeholder="请选择结算单位"
+              :disabled="doNot"
               filterable
               remote
               clearable
@@ -672,6 +673,8 @@ export default {
 
   data() {
     return {
+      //控制结算单位是否可操作
+      doNot:false,
       jFeetunitOptions:[],
       // 总条数
       total: 0,
@@ -731,6 +734,7 @@ export default {
       contrastList: [],
       empty:[],
       nothing:[],
+      Fee:[],
       //导入从表传主表
       pass:{
         fAmtdr:'',    //应收合计
@@ -871,6 +875,7 @@ export default {
         this.colseButton = false
         this.approval = JSON.parse(this.approval)
         this.hide = false
+        this.doNot = true
         this.notChange = true
         this.approve = true
         this.disappear = true
@@ -1074,6 +1079,9 @@ export default {
         timeReconci: '',
         fDc:'D'
       }
+      if(this.queryParams.fCorpid){
+        this.doNot = true
+      }
     },
     // 默认录入人
     register() {
@@ -1141,17 +1149,15 @@ export default {
 
     /* 添加财务数据主 导入*/
     confirmImport(){
+      this.doNot = true
       this.hide = true
       this.pass.fAmtdr = 0
       this.pass.fAmtcr = 0
       for (let item in this.selection) {
-
         this.pass.fAmtcr = Number(this.pass.fAmtcr)
         this.pass.fAmtdr = Number(this.pass.fAmtdr)
         this.pass.fAmtcr += Number(this.selection[item].fAmt)
         this.pass.fAmtdr += Number(this.selection[item].fAmtdr.toFixed(2))
-
-
       }
       this.pass.fAmtcr.toFixed(2)
       if(this.state_s == true) {
@@ -1161,6 +1167,26 @@ export default {
           for (let item in this.selection){
             this.empty.push(this.selection[item].fMblno)
             this.nothing.push(this.selection[item].fName)
+            if(this.DzfeeList.length === 0) {
+                this.DzfeeList = this.DzfeeList.concat(this.selection)
+            }else{
+              for(let li in this.DzfeeList){
+                if(this.selection[item].fSrcid !== this.DzfeeList[li].fSrcid){
+                  this.Fee = this.DzfeeList.concat(this.selection)
+                  let result = [];
+                  let obj = {};
+                  for(let lis in this.Fee){
+                    if(!obj[this.Fee[lis].fSrcid]){
+                      result.push(this.Fee[lis]);
+                      obj[this.Fee[lis].fSrcid] = true;
+                    }
+                  }
+                  this.DzfeeList = result
+                }else{
+                  this.$message.error("从表已存在无法导入")
+                }
+              }
+            }
           }
           //去重提单号
           this.empty = new Set(this.empty)
@@ -1168,7 +1194,6 @@ export default {
           //去重货权方
           this.nothing = new Set(this.nothing)
           this.nothing = Array.from(this.nothing)
-          console.log(this.nothing)
           if(this.empty.length <= 1){
             this.pass.fMblno = this.empty[0]
           }else {
@@ -1179,7 +1204,7 @@ export default {
           }else {
             this.pass.fName = this.nothing[0] + "..."
           }
-          this.DzfeeList = this.DzfeeList.concat(this.selection)
+          // this.DzfeeList = this.DzfeeList.concat(this.Fee)
           this.queryParams.tMblno = this.pass.fMblno //提单号
           this.queryParams.fCorpid = this.TWareHouseFees.fToCorpid
           this.queryParams.fCtrlcorpid = this.pass.fName
@@ -1372,6 +1397,7 @@ export default {
       queryUserVal().then((response) => {
         this.queryParams.createBy = response.user.userName
       })
+      this.doNot = false
       this.notChange = false
       this.hide = true
       this.reset()
@@ -1407,6 +1433,7 @@ export default {
     },
     // 查看按钮
     check(row, res) {
+      this.doNot = true
       this.notChange = true
       getFee(row.fId).then(response => {
         this.Operator = response.data.tFee.createBy
@@ -1488,6 +1515,11 @@ export default {
         this.fMblnoOptions = response.data.corps
         this.open = true;
         this.title = "修改财务数据主";
+        if(this.queryParams.fCorpid === null){
+          this.doNot = false
+        }else{
+          this.doNot = true
+        }
       });
     },
     /** 远程模糊查询用户 */
@@ -1520,13 +1552,10 @@ export default {
           } else {
             this.pass.fAmtcr = 0
             this.pass.fAmtdr = 0
+
             for (let item in this.DzfeeList) {
               this.pass.fAmtcr += Number(this.DzfeeList[item].fAmt)
               this.pass.fAmtdr += Number(this.DzfeeList[item].fAmtdr)
-              console.log(this.DzfeeList)
-              // if(){
-              //
-              // }
             }
             this.queryParams.fAmtcr = Number(this.pass.fAmtcr.toFixed(2))
             this.queryParams.fAmtdr = Number(this.pass.fAmtdr.toFixed(2))