Browse Source

Merge remote-tracking branch 'origin/master'

humingbo 1 year ago
parent
commit
621fa2582c

+ 56 - 0
src/api/material/material.js

@@ -0,0 +1,56 @@
+import request from '@/utils/request'
+import exportExcel from '@/utils/export'
+
+// 查询物料计划列表
+export function listMaterial(query) {
+  return request({
+    url: '/material/material/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询物料计划详细
+export function getMaterial(materialId) {
+  return request({
+    url: '/material/material/' + materialId,
+    method: 'get'
+  })
+}
+
+// 新增物料计划
+export function addMaterial(data) {
+  return request({
+    url: '/material/material',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改物料计划
+export function updateMaterial(data) {
+  return request({
+    url: '/material/material',
+    method: 'put',
+    data: data
+  })
+}
+
+
+// 删除物料计划
+export function delMaterial(materialId) {
+  return request({
+    url: '/material/material/' + materialId,
+    method: 'delete'
+  })
+}
+
+//导出数据
+export function exportMaterial() {
+  return exportExcel({
+    url: '/material/material/export',
+    method: 'get',
+    responseType: 'blob'
+    // params: { id: params }
+  })
+}

+ 2 - 2
src/api/system/user.js

@@ -72,9 +72,9 @@ export function deptTreeSelect() {
 }
 
 // 查询部门员工树结构
-export function getDeptUserTree() {
+export function getDeptUserTree(deptId) {
   return request({
-    url: '/system/user/getDeptUserTree/',
+    url: '/system/user/getDeptUserTree/' + deptId,
     method: 'get'
   })
 }

+ 53 - 0
src/utils/export.js

@@ -0,0 +1,53 @@
+import axios from 'axios'
+//此处忽略了部分非必要的导入
+import {MessageBox, Message} from 'element-ui'
+
+// create an axios instance
+const service = axios.create({
+//baseUrl请修改为你自己的url
+  baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
+  // withCredentials: true, // send cookies when cross-domain requests
+  timeout: 5000 // request timeout
+})
+// response interceptor
+service.interceptors.response.use(
+  /**
+   * If you want to get http information such as headers or status
+   * Please return  response => response
+   */
+
+  /**
+   * Determine the request status by custom code
+   * Here is just an example
+   * You can also judge the status by HTTP Status Code
+   */
+  response => {
+    let disposition = response.headers['content-disposition'];
+    //以下部分有需要优化,如后端返回时没有携带文件后缀名,没有.时会有问题等等
+    console.log(disposition);
+    let filename = disposition?disposition.substring(disposition.indexOf('=')+1,disposition.indexOf('.')):"下载文件";
+    let newName = decodeURI(escape(filename))
+    let extName =disposition.substring(disposition.indexOf('.')+1)
+    let blob = new Blob([response.data],{type: 'application/vnd.ms-excel'});
+    let link = document.createElement("a");
+    let evt = document.createEvent("HTMLEvents");
+    evt.initEvent("click", false, false);
+    link.href = URL.createObjectURL(blob);
+    link.download = newName+"."+extName;
+    link.style.display = "none";
+    document.body.appendChild(link);
+    link.click();
+    window.URL.revokeObjectURL(link.href);
+  },
+  error => {
+    console.log('err' + error) // for debug
+    Message({
+      message: error.message,
+      type: 'error',
+      duration: 5 * 1000
+    })
+    return Promise.reject(error)
+  }
+)
+
+export default service

+ 1 - 1
src/views/enforceflow/enforceflow.vue

@@ -429,7 +429,7 @@ export default {
       this.usersVisble=false
     },
     getDeptUserTrees(){
-      getDeptUserTree().then(res => {
+      getDeptUserTree('').then(res => {
         this.userList = res.data
       });
     },

+ 332 - 0
src/views/material/receive.vue

@@ -0,0 +1,332 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
+      <el-form-item label="物料名称">
+        <el-input
+          v-model="queryParams.materialName"
+          placeholder="请输入物料名称"
+          clearable
+          style="width: 240px"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="厂商">
+        <el-input
+          v-model="queryParams.factory"
+          placeholder="请输入厂商名称"
+          clearable
+          style="width: 240px"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="领取时间">
+        <el-date-picker
+          v-model="queryParams.rangeDate"
+          type="daterange"
+          value-format="yyyy-MM-dd"
+          range-separator="至"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" style="margin-bottom: 8px">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['material:material:add']"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['material:material:add']"
+        >导出
+        </el-button>
+      </el-col>
+    </el-row>
+
+    <el-table :data="materialList"
+              border
+              stripe
+              size="mini">
+      <el-table-column label="编号" prop="id"/>
+      <el-table-column label="物料名称" prop="materialName" :show-overflow-tooltip="true"/>
+      <el-table-column label="规格" prop="specification" :show-overflow-tooltip="true"/>
+      <el-table-column label="品牌/货号" prop="articleNo" :show-overflow-tooltip="true"/>
+      <el-table-column label="厂商" prop="factory"/>
+      <el-table-column label="单位" prop="unit"/>
+      <el-table-column label="领取量" prop="num"/>
+      <el-table-column label="物料类型">
+        <template slot-scope="scope">
+          <el-tag v-if="scope.row.materialType==='1'" type="warning" size="mini">生产</el-tag>
+          <el-tag v-else type="info" size="mini">非生产</el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column label="领用人" prop="receiveUserName"/>
+      <el-table-column label="时间" prop="receiveDate" width="180"/>
+      <el-table-column label="操作" align="center" width="130">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['material:material:edit']"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['material:material:delete']"
+          >删除
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <div style="margin-top: 10px;text-align: center">
+      <el-pagination
+        background
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+        :current-page="queryParams.pageNum"
+        :page-sizes="[10, 20, 50]"
+        :page-size="queryParams.pageSize"
+        layout="total, sizes, prev, pager, next, jumper"
+        :total="total">
+      </el-pagination>
+    </div>
+
+    <!-- 添加或修改物料配置对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="物料名称" prop="MaterialName">
+          <el-input v-model="form.materialName" placeholder="请输入物料名称"/>
+        </el-form-item>
+        <el-form-item label="物料规格" prop="specification">
+          <el-input v-model="form.specification" placeholder="请输入物料规格"/>
+        </el-form-item>
+        <el-form-item label="品牌/货号" prop="articleNo">
+          <el-input v-model="form.articleNo" placeholder="请输入品牌/货号"/>
+        </el-form-item>
+        <el-form-item label="厂商" prop="factory">
+          <el-input v-model="form.factory" placeholder="请输入厂商"/>
+        </el-form-item>
+        <el-form-item label="单位" prop="unit">
+          <el-input v-model="form.unit" placeholder="请输入单位"/>
+        </el-form-item>
+        <el-form-item label="领取量" prop="num">
+          <el-input-number v-model="form.num" controls-position="right" :min="0" placeholder="请输入领取量"/>
+        </el-form-item>
+        <el-form-item label="物料类型" prop="materialType">
+          <el-radio-group v-model="form.materialType">
+            <el-radio label="1">生产</el-radio>
+            <el-radio label="2">非生产</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="月/周数据" prop="monthOrWeek">
+          <el-radio-group v-model="form.monthOrWeek">
+            <el-radio label="1">月</el-radio>
+            <el-radio label="2">周</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="备注">
+          <el-input v-model="form.remark" type="textarea"/>
+        </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 {
+  listMaterial,
+  getMaterial,
+  delMaterial,
+  addMaterial,
+  updateMaterial,
+  exportMaterial
+} from "@/api/material/material";
+
+export default {
+  name: "Receive",
+  data() {
+    return {
+      // 总条数
+      total: 0,
+      // 物料表格数据
+      materialList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        materialName: undefined,
+        factory: undefined,
+        status: undefined
+      },
+      // 表单参数
+      form: {},
+
+      // 表单校验
+      rules: {
+        materialName: [
+          {required: true, message: "物料名称不能为空", trigger: "blur"}
+        ],
+        specification: [
+          {required: true, message: "物料规格不能为空", trigger: "blur"}
+        ],
+        articleNo: [
+          {required: true, message: "品牌/货号不能为空", trigger: "blur"}
+        ],
+        factory: [
+          {required: true, message: "厂商不能为空", trigger: "blur"}
+        ],
+        unit: [
+          {required: true, message: "单位不能为空", trigger: "blur"}
+        ],
+        num: [
+          {required: true, message: "领取量不能为空", trigger: "blur"}
+        ],
+        materialType: [
+          {required: true, message: "物料类型不能为空", trigger: "change"}
+        ],
+        monthOrWeek: [
+          {required: true, message: "月/周数据不能为空", trigger: "change"}
+        ]
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询物料列表 */
+    getList() {
+      listMaterial(this.queryParams).then(res => {
+        this.materialList = res.data.records;
+        this.total = res.data.total;
+      })
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 取消按钮(数据权限)
+    cancelDataScope() {
+      this.openDataScope = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: undefined,
+        materialName: undefined,
+        specification: undefined,
+        articleNo: undefined,
+        factory: undefined,
+        unit: undefined,
+        num: undefined,
+        materialType: undefined,
+        monthOrWeek: undefined,
+        remark: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.getList();
+    },
+    handleCurrentChange(val) {
+      this.pageNum = val;
+      this.getList();
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加物料计划";
+    },
+    handleExport() {
+      exportMaterial()
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      getMaterial(row.id).then(res => {
+        this.form = res.data;
+        this.open = true;
+        this.title = "修改物料计划";
+      });
+    },
+
+
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != undefined) {
+            updateMaterial(this.form).then(res => {
+              this.$message.success("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addMaterial(this.form).then(res => {
+              this.$message.success("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      this.$confirm('是否确认删除编号为"' + row.id + '"的数据项?').then(() => {
+        return delMaterial(row.id);
+      }).then(() => {
+        this.getList();
+        this.$message.success("删除成功");
+      }).catch(() => {
+      });
+    },
+  }
+};
+</script>

+ 4 - 4
src/views/task/task.vue

@@ -60,7 +60,7 @@
       </el-col>
     </el-row>
 
-    <el-table :data="TaskList"
+    <el-table :data="taskList"
               @row-click="rowClick"
               border
               stripe
@@ -320,7 +320,7 @@ export default {
       // 总条数
       total: 0,
       // 项目表格数据
-      TaskList: [],
+      taskList: [],
       statusMap: statusMap,
       // 弹出层标题
       title: "",
@@ -376,7 +376,7 @@ export default {
         this.projectList = res.data;
       })
       listTask(this.queryParams).then(res => {
-          this.TaskList = res.data.records;
+          this.taskList = res.data.records;
           this.total = res.data.total;
         }
       );
@@ -441,7 +441,7 @@ export default {
     },
     /** 新增按钮操作 */
     handleAdd() {
-      getDeptUserTree().then(res => {
+      getDeptUserTree('').then(res => {
         this.userList = res.data
       })
       this.reset();

+ 14 - 12
src/views/task/view.vue

@@ -157,7 +157,14 @@ export default {
       visible: false,
       rules: {},
       openDetail: false,
-      detailForm: {}
+      detailForm: {},
+      cellColorMap: {
+        '1': '#fefeff',
+        '2': '#a6a9ad',
+        '3': '#f56c6c',
+        '4': '#67c23a',
+        '5': '#e6a23c',
+      }
     }
   },
   created() {
@@ -166,32 +173,24 @@ export default {
   methods: {
     initData() {
       this.queryParams.month = DateUtil.month(new Date())
-      this.tableHeaders = this.getMonthDate('2023-10');
       this.getList()
       getProjectList("").then(res => {
         this.projectList = res.data;
       })
     },
     getList() {
+      this.tableHeaders = this.getMonthDate(this.queryParams.month);
       listView(this.queryParams).then(res => {
         this.tableData = res.data
       })
     },
-    headerCellStyle({row, column, rowIndex, columnIndex}) {
-      return {
-        fontSize: '12px',
-        padding: '0',
-        lineHeight: '20px',
-        width: '30px'
-      }
-    },
     cellStyle({row, column, rowIndex, columnIndex}) {
       let style = {
         fontSize: '12px',
         padding: '2px 0'
       }
       if (row[column.property]) {
-        style.background = row[column.property].color
+        style.background = this.cellColorMap[row[column.property].color]
       }
       return style
     },
@@ -280,5 +279,8 @@ export default {
 </script>
 
 <style scoped lang="scss">
-
+::v-deep.el-table .cell {
+  padding-left: 5px;
+  padding-right: 5px;
+}
 </style>

+ 1 - 1
src/views/workbench/workbench.vue

@@ -269,7 +269,7 @@ export default {
   },
   methods:{
     getDeptUserTrees(){
-      getDeptUserTree().then(res => {
+      getDeptUserTree('').then(res => {
         this.userList = res.data
       });
     },