瀏覽代碼

物资信息接口对接

wangyani 11 月之前
父節點
當前提交
e40b39f65f

+ 53 - 0
src/api/mes/material/information.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询物资信息--分页 /dev-api/iscs/materials/getIsMaterialsPage
+export function listMaterials(query) {
+    return request({
+        url: '/iscs/materials/getIsMaterialsPage',
+        method: 'get',
+        params: query
+    })
+}
+
+// 新增物资信息 /dev-api/iscs/materials/insertIsMaterials
+export function addMaterials(data) {
+    return request({
+        url: '/iscs/materials/insertIsMaterials',
+        method: 'post',
+        data: data
+    })
+}
+
+// 修改物资信息 /dev-api/iscs/materials/updateIsMaterials
+export function updateMaterials(data) {
+    return request({
+        url: '/iscs/materials/updateIsMaterials',
+        method: 'post',
+        data: data
+    })
+}
+
+// 删除物资信息 /dev-api/iscs/materials/deleteIsMaterialsByMaterialsIds
+export function deleteMaterials(data) {
+    return request({
+        url: '/iscs/materials/deleteIsMaterialsByMaterialsIds?materialsIds=' + data,
+        method: 'post',
+    })
+}
+
+// 获取物资详细信息 /dev-api/iscs/materials/selectIsMaterialsById
+export function selectMaterialsById(query) {
+    return request({
+        url: '/iscs/materials/selectIsMaterialsById?materialsId=' + query,
+        method: 'get',
+    })
+}
+
+
+// 物资所属柜 查询物资柜-分页
+export function getIsMaterialsCabinets() {
+    return request({
+        url: '/iscs/cabinet/getIsMaterialsCabinetPage',
+        method: 'get',
+    })
+}

+ 1 - 1
src/api/mes/material/typeindex.js

@@ -35,7 +35,7 @@ export function deleteMaterialsType(data) {
     })
 }
 
-// 获取物资详细信息/dev-api/iscs/type/selectIsMaterialsTypeById
+// 获取物资类型详细信息/dev-api/iscs/type/selectIsMaterialsTypeById
 export function selectMaterialsTypeById(query) {
     return request({
         url: '/iscs/type/selectIsMaterialsTypeById?materialsTypeId=' + query,

+ 225 - 190
src/views/mes/material/materialinformation/index.vue

@@ -8,48 +8,44 @@
       v-show="showSearch"
       label-width="100px"
     >
-      <el-form-item label="物资类型编码" prop="teamCode">
+      <el-form-item label="物资编码" prop="materialsCode">
         <el-input
-          v-model="queryParams.teamCode"
-          placeholder="请输入物资类型编码"
+          v-model="queryParams.materialsCode"
+          placeholder="请输入物资编码"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="物资类型名称" prop="teamCode">
+      <el-form-item label="物资名称" prop="materialsName">
         <el-input
-          v-model="queryParams.teamCode"
-          placeholder="请输入物资类型名称"
+          v-model="queryParams.materialsName"
+          placeholder="请输入物资名称"
           clearable
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="物资状态" prop="calendarType">
-        <el-select v-model="queryParams.calendarType" placeholder="状态">
-          <el-option>柜中</el-option>
-          <el-option>柜外</el-option>
-          <!--          <el-option-->
-          <!--            v-for="dict in dict.type.mes_calendar_type"-->
-          <!--            :key="dict.value"-->
-          <!--            :label="dict.label"-->
-          <!--            :value="dict.value"-->
-          <!--          />-->
-        </el-select>
-      </el-form-item>
-      <el-form-item label="物资类型" prop="teamCode">
-        <el-select v-model="queryParams.calendarType" placeholder="物资状态">
+      <el-form-item label="物资状态" prop="loanState">
+        <el-select v-model="queryParams.loanState" placeholder="状态">
           <el-option
-            v-for="dict in dict.type.mes_calendar_type"
+            v-for="dict in dict.type.material_status"
             :key="dict.value"
             :label="dict.label"
             :value="dict.value"
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="启用时间">
+      <el-form-item label="物资类型" prop="materialsTypeId">
+        <treeselect
+          style="width: 318px"
+          v-model="queryParams.materialsTypeId"
+          :options="machinerytypeOptions"
+          :normalizer="normalizer"
+          placeholder="选择上级作业区域"
+        />
+      </el-form-item>
+      <el-form-item label="启用时间" prop="createTime">
         <el-date-picker
-          style="width: 218px"
-          v-model="value2"
+          v-model="createTime"
           type="datetimerange"
           :picker-options="pickerOptions"
           range-separator="-"
@@ -59,31 +55,21 @@
         >
         </el-date-picker>
       </el-form-item>
-      <el-form-item label="所属物资柜" prop="teamCode">
-        <el-select v-model="queryParams.calendarType" placeholder="所属物资柜">
+      <el-form-item label="所属柜" prop="materialsCabinetId">
+        <el-select
+          style="width: 348px"
+          v-model="queryParams.materialsCabinetId"
+          placeholder="请选择所属柜"
+        >
           <el-option
-            v-for="dict in dict.type.mes_calendar_type"
+            v-for="dict in cabinets"
             :key="dict.value"
             :label="dict.label"
             :value="dict.value"
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="是否需要归还" prop="teamCode">
-        <el-select
-          v-model="queryParams.calendarType"
-          placeholder="是否需要归还"
-        >
-          <el-option>需要归还</el-option>
-          <el-option>不需要归还</el-option>
-          <!--          <el-option-->
-          <!--            v-for="dict in dict.type.mes_calendar_type"-->
-          <!--            :key="dict.value"-->
-          <!--            :label="dict.label"-->
-          <!--            :value="dict.value"-->
-          <!--          />-->
-        </el-select>
-      </el-form-item>
+
       <el-form-item>
         <el-button
           type="primary"
@@ -110,17 +96,6 @@
           >新增
         </el-button>
       </el-col>
-      <!--      <el-col :span="1.5">-->
-      <!--        <el-button-->
-      <!--          type="success"-->
-      <!--          plain-->
-      <!--          icon="el-icon-edit"-->
-      <!--          size="mini"-->
-      <!--          :disabled="single"-->
-      <!--          @click="handleUpdate"-->
-      <!--          v-hasPermi="['mes:cal:team:edit']"-->
-      <!--        >修改</el-button>-->
-      <!--      </el-col>-->
       <el-col :span="1.5">
         <el-button
           type="danger"
@@ -133,16 +108,6 @@
           >批量删除
         </el-button>
       </el-col>
-      <!--      <el-col :span="1.5">-->
-      <!--        <el-button-->
-      <!--          type="warning"-->
-      <!--          plain-->
-      <!--          icon="el-icon-download"-->
-      <!--          size="mini"-->
-      <!--          @click="handleExport"-->
-      <!--          v-hasPermi="['mes:cal:team:export']"-->
-      <!--        >导出</el-button>-->
-      <!--      </el-col>-->
       <right-toolbar
         :showSearch.sync="showSearch"
         @queryTable="getList"
@@ -151,32 +116,25 @@
 
     <el-table
       v-loading="loading"
-      :data="teamList"
+      :data="materialsList"
       @selection-change="handleSelectionChange"
     >
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="物资编码" align="center" prop="teamCode">
-        <template slot-scope="scope">
-          <el-button
-            type="text"
-            @click="handleView(scope.row)"
-            v-hasPermi="['mes:mat:info:query']"
-            >{{ scope.row.teamCode }}
-          </el-button>
-        </template>
+      <el-table-column label="物资编码" align="center" prop="materialsCode">
       </el-table-column>
-      <el-table-column label="物资名称" align="center" prop="teamName" />
-      <el-table-column label="物资类型" align="center" prop="teamName" />
-      <el-table-column label="所属柜" align="center" prop="teamName" />
-      <el-table-column label="物资状态" align="center" prop="calendarType">
+      <el-table-column label="物资名称" align="center" prop="materialsName" />
+      <el-table-column
+        label="物资类型"
+        align="center"
+        prop="materialsTypeName"
+      />
+      <el-table-column label="所属柜" align="center" prop="cabinetName" />
+      <el-table-column label="物资状态" align="center" prop="loanState">
         <template slot-scope="scope">
-          <dict-tag
-            :options="dict.type.mes_calendar_type"
-            :value="scope.row.calendarType"
-          />
+          <span>{{ scope.row.loanState == 0 ? "借出" : "柜中" }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="创建时间" align="center" prop="remark">
+      <el-table-column label="创建时间" align="center" prop="createTime">
       </el-table-column>
       <el-table-column
         label="操作"
@@ -206,8 +164,8 @@
     <pagination
       v-show="total > 0"
       :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
+      :page.sync="queryParams.pages"
+      :limit.sync="queryParams.size"
       @pagination="getList"
     />
     <!-- 添加或修改班组对话框 -->
@@ -219,42 +177,51 @@
       <el-form ref="form" :model="form" :rules="rules" label-width="110px">
         <el-row>
           <el-col :span="12">
-            <el-form-item label="物资编码" prop="teamCode">
-              <el-input v-model="form.teamCode" placeholder="请输入物资编码" />
+            <el-form-item label="物资编码" prop="materialsCode">
+              <el-input
+                v-model="form.materialsCode"
+                placeholder="请输入物资编码"
+                style="width: 200px; margin-right: 10px"
+              />
+              <el-switch
+                v-model="autoGenFlag"
+                active-color="#13ce66"
+                active-text="自动生成"
+                @change="handleAutoGenChange(autoGenFlag)"
+              >
+              </el-switch>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="物资类型" prop="calendarType">
-              <el-select
-                style="width: 348px"
-                v-model="form.calendarType"
-                placeholder="请选择物资类型"
-              >
-                <el-option
-                  v-for="dict in dict.type.mes_calendar_type"
-                  :key="dict.value"
-                  :label="dict.label"
-                  :value="dict.value"
-                />
-              </el-select>
+            <el-form-item label="物资类型" prop="materialsTypeId">
+              <treeselect
+                style="width: 318px"
+                v-model="form.materialsTypeId"
+                :options="machinerytypeOptions"
+                :normalizer="normalizer"
+                placeholder="选择上级作业区域"
+              />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="物资名称" prop="teamCode">
-              <el-input v-model="form.teamCode" placeholder="请输入物资名称" />
+            <el-form-item label="物资名称" prop="materialsName">
+              <el-input
+                v-model="form.materialsName"
+                placeholder="请输入物资名称"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="所属柜" prop="teamCode">
+            <el-form-item label="所属柜" prop="materialsCabinetId">
               <el-select
                 style="width: 348px"
-                v-model="form.calendarType"
-                placeholder="请选择所属柜"
+                v-model="form.materialsCabinetId"
+                placeholder="请选择所属物资柜"
               >
                 <el-option
-                  v-for="dict in dict.type.mes_calendar_type"
+                  v-for="dict in cabinets"
                   :key="dict.value"
                   :label="dict.label"
                   :value="dict.value"
@@ -265,44 +232,31 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="启用日期" prop="calendarType">
-              <el-input v-model="form.teamCode" placeholder="" disabled />
+            <el-form-item label="启用日期" prop="startTime">
+              <el-input v-model="form.startTime" placeholder="" disabled />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="物资使用次数" prop="calendarType">
+            <el-form-item label="物资剩余次数" prop="availableTimes">
               <el-input
-                v-model="form.teamCode"
-                placeholder="请输入物资使用次数"
+                v-model="form.availableTimes"
+                placeholder="请输入物资剩余次数"
               />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="可用次数" prop="calendarType">
-              <el-input v-model="form.teamCode" placeholder="" disabled />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="物资寿命" prop="calendarType">
-              <el-input v-model="form.teamCode" placeholder="请输入物资寿命" />
-            </el-form-item>
-          </el-col>
-        </el-row>
-
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="物资报废时间" prop="calendarType">
-              <el-input v-model="form.teamCode" placeholder="" disabled />
+            <el-form-item label="可用次数" prop="serviceTimes">
+              <el-input v-model="form.serviceTimes" placeholder="" disabled />
             </el-form-item>
           </el-col>
-        </el-row>
-        <el-row>
           <el-col :span="12">
-            <el-form-item label="是否需要归还" prop="calendarType">
-              <el-radio v-model="radio" label="1">需要归还</el-radio>
-              <el-radio v-model="radio" label="2">不需要归还</el-radio>
+            <el-form-item label="可用寿命" prop="serviceLife">
+              <el-input
+                v-model="form.serviceLife"
+                placeholder="请输入可用寿命"
+              />
             </el-form-item>
           </el-col>
         </el-row>
@@ -327,13 +281,25 @@ import {
   addTeam,
   updateTeam,
 } from "@/api/mes/cal/team";
-
+import {
+  listMaterials,
+  addMaterials,
+  updateMaterials,
+  deleteMaterials,
+  selectMaterialsById,
+  getIsMaterialsCabinets,
+} from "@/api/mes/material/information";
+import { listType } from "@/api/mes/material/typeindex";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 import { genCode } from "@/api/system/autocode/rule";
 
 export default {
   name: "Team",
-
-  dicts: ["mes_calendar_type"],
+  components: {
+    Treeselect,
+  },
+  dicts: ["material_status"],
   data() {
     return {
       //自动生成编码
@@ -343,6 +309,7 @@ export default {
       loading: true,
       // 选中数组
       ids: [],
+      codes: [],
       // 非单个禁用
       single: true,
       // 非多个禁用
@@ -352,18 +319,30 @@ export default {
       // 总条数
       total: 0,
       // 班组表格数据
-      teamList: [],
+      materialsList: [],
       // 弹出层标题
       title: "",
       // 是否显示弹出层
       open: false,
+
       // 查询参数
+      createTime: "",
       queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        teamCode: null,
-        teamName: null,
-        calendarType: null,
+        pages: 1,
+        size: 10,
+        materialsCode: null,
+        materialsName: null,
+        loanState: null,
+        materialsCabinetId: null,
+        materialsTypeId: null,
+        startTime: "",
+        endTime: "",
+      },
+
+      // 查询参数
+      queryParamsCabinets: {
+        current: 1,
+        size: -1,
       },
       pickerOptions: {
         shortcuts: [
@@ -397,34 +376,87 @@ export default {
         ],
       },
 
-      value2: "",
-
       // 表单参数
       form: {},
+      cabinets: [], //物资所属柜
       // 表单校验
       rules: {
-        teamCode: [
-          { required: true, message: "班组编号不能为空", trigger: "blur" },
-        ],
-        teamName: [
-          { required: true, message: "班组名称不能为空", trigger: "blur" },
+        materialsCode: [
+          { required: true, message: "物资编码不能为空", trigger: "blur" },
         ],
-        calendarType: [
-          { required: true, message: "清选择班组类型", trigger: "blur" },
+        materialsName: [
+          { required: true, message: "物资名称不能为空", trigger: "blur" },
         ],
       },
+
+      machinerytypeOptions: [],
     };
   },
   created() {
     this.getList();
+    this.getTreeselect();
+  },
+  mounted() {
+    this.materialsCabinets();
   },
   methods: {
-    /** 查询班组列表 */
+    /** 转换数据结构 */
+    normalizer(node) {
+      if (node.children && !node.children.length) {
+        delete node.children;
+      }
+      return {
+        id: node.materialsTypeId,
+        label: node.materialsTypeName,
+        children: node.children,
+      };
+    },
+    /** 查询物资类型下拉树结构 */
+    getTreeselect() {
+      const data = {
+        current: 1,
+        size: 99999,
+      };
+
+      listType(data).then((response) => {
+        this.machinerytypeOptions = this.handleTree(
+          response.data.records,
+          "materialsTypeId",
+          "parentId",
+          "children"
+        );
+      });
+    },
+    // 格式化日期查询数据
+    formatDate(date) {
+      if (date && date instanceof Date && !isNaN(date)) {
+        // 使用本地时间
+        return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(
+          2,
+          "0"
+        )}-${String(date.getDate()).padStart(2, "0")}`;
+      }
+      return null;
+    },
+    /** 查询物资信息列表 */
     getList() {
       this.loading = true;
-      listTeam(this.queryParams).then((response) => {
-        this.teamList = response.rows;
-        this.total = response.total;
+      // 格式化日期并更新 queryParams
+      if (Array.isArray(this.createTime) && this.createTime.length === 2) {
+        this.queryParams.startTime = this.formatDate(this.createTime[0]);
+        this.queryParams.endTime = this.formatDate(this.createTime[1]);
+      }
+
+      listMaterials(this.queryParams).then((response) => {
+        console.log(response, "获取物资信息allList ");
+        this.materialsList = response.data.records;
+        this.total = response.data.total;
+        this.machinerytypeList = this.handleTree(
+          response.data.records,
+          "materialsTypeId",
+          "parentId",
+          "children"
+        );
         this.loading = false;
       });
     },
@@ -444,21 +476,15 @@ export default {
     // 表单重置
     reset() {
       this.form = {
-        teamId: null,
-        teamCode: null,
-        teamName: null,
-        calendarType: null,
-        remark: null,
-        attr1: null,
-        attr2: null,
-        attr3: null,
-        attr4: null,
-        createBy: null,
-        createTime: null,
-        updateBy: null,
-        updateTime: null,
+        materialsCode: "",
+        materialsName: "",
+        loanState: "",
+        createTime: "",
+        materialsTypeId: "",
+        materialsCabinetId: "",
       };
       this.resetForm("form");
+      this.autoGenFlag = false;
     },
     /** 搜索按钮操作 */
     handleQuery() {
@@ -469,39 +495,44 @@ export default {
     resetQuery() {
       this.resetForm("queryForm");
       this.handleQuery();
+      this.createTime = "";
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
-      this.ids = selection.map((item) => item.teamId);
+      this.ids = selection.map((item) => item.materialsId);
+      this.codes = selection.map((item) => item.materialsCode);
       this.single = selection.length !== 1;
       this.multiple = !selection.length;
     },
+
+    // 物资所属柜
+    materialsCabinets() {
+      getIsMaterialsCabinets(this.queryParamsCabinets).then((response) => {
+        if (response?.data?.records) {
+          // 提取 cabinetId 和 cabinetName
+          this.cabinets = response.data.records.map((item) => ({
+            value: item.cabinetId,
+            label: item.cabinetName,
+          }));
+        }
+      });
+    },
+
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "新增物资类型";
+      this.title = "新增物资信息";
       this.optType = "add";
     },
-    // 查询明细按钮操作
-    handleView(row) {
-      this.reset();
-      const teamId = row.teamId || this.ids;
-      getTeam(teamId).then((response) => {
-        this.form = response.data;
-        this.open = true;
-        this.title = "查看班组";
-        this.optType = "view";
-      });
-    },
+
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
-      const teamId = row.teamId || this.ids;
-      getTeam(teamId).then((response) => {
+      selectMaterialsById(row.materialsId).then((response) => {
         this.form = response.data;
         this.open = true;
-        this.title = "编辑物资类型";
+        this.title = "编辑物资信息";
         this.optType = "edit";
       });
     },
@@ -509,14 +540,16 @@ export default {
     submitForm() {
       this.$refs["form"].validate((valid) => {
         if (valid) {
-          if (this.form.teamId != null) {
-            updateTeam(this.form).then((response) => {
+          if (this.form.materialsId != null) {
+            updateMaterials(this.form).then((response) => {
+              console.log(response, "修改返回");
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             });
           } else {
-            addTeam(this.form).then((response) => {
+            addMaterials(this.form).then((response) => {
+              console.log(response, "新增返回");
               this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();
@@ -527,11 +560,12 @@ export default {
     },
     /** 删除按钮操作 */
     handleDelete(row) {
-      const teamIds = row.teamId || this.ids;
+      const materialsIds = row.materialsId || this.ids;
+      const materialsCodes = row.materialsCode || this.codes;
       this.$modal
-        .confirm('是否确认删除班组编号为"' + teamIds + '"的数据项?')
+        .confirm('是否确认删除编号为"' + materialsCodes + '"的数据项?')
         .then(function () {
-          return delTeam(teamIds);
+          return deleteMaterials(materialsIds);
         })
         .then(() => {
           this.getList();
@@ -549,14 +583,15 @@ export default {
         `team_${new Date().getTime()}.xlsx`
       );
     },
+
     //自动生成编码
     handleAutoGenChange(autoGenFlag) {
       if (autoGenFlag) {
-        genCode("CAL_TEAM_CODE").then((response) => {
-          this.form.teamCode = response;
+        genCode("MATERIALS_CODE").then((response) => {
+          this.form.materialsCode = response;
         });
       } else {
-        this.form.teamCode = null;
+        this.form.materialsCode = null;
       }
     },
   },

+ 13 - 9
src/views/mes/material/typeofmaterial/index.vue

@@ -247,16 +247,16 @@
           </div>
         </el-form-item>
         <el-form-item label="是否需要归还" prop="restitutionRequired">
-          <el-radio v-model="form.restitutionRequired" :label="1"
-            >需要归还</el-radio
-          >
-          <el-radio v-model="form.restitutionRequired" :label="2"
-            >不需要归还</el-radio
-          >
+          <el-radio-group v-model="form.restitutionRequired">
+            <el-radio :label="1">需要归还</el-radio>
+            <el-radio :label="2">不需要归还</el-radio>
+          </el-radio-group>
         </el-form-item>
         <el-form-item label="状态" prop="status">
-          <el-radio v-model="form.status" label="y">启用</el-radio>
-          <el-radio v-model="form.status" label="n">禁用</el-radio>
+          <el-radio-group v-model="form.status">
+            <el-radio :label="'y'">启用</el-radio>
+            <el-radio :label="'n'">禁用</el-radio>
+          </el-radio-group>
         </el-form-item>
         <el-form-item label="备注" prop="remark">
           <el-input
@@ -322,6 +322,8 @@ export default {
       form: {
         parentId: 0,
         ancestors: "0",
+        restitutionRequired: 1, // 默认为 "需要归还"
+        status: "y", // 默认为 "启用"
       },
       EditId: null, //编辑传递id
       // 借用时长
@@ -473,6 +475,8 @@ export default {
         this.form.parentId = 0;
         this.form.ancestors = 0;
       }
+      this.form.restitutionRequired = 1;
+      this.form.status='y'
       this.open = true;
       this.title = "新增物资类型";
     },
@@ -565,7 +569,7 @@ export default {
       const materialsTypeIds = row.materialsTypeId;
       const materialsTypeCodes = row.materialsTypeCode;
       this.$modal
-        .confirm('是否删除硬件编号为"' + materialsTypeCodes + '"的硬件类型?')
+        .confirm('是否删除编码为"' + materialsTypeCodes + '"的数据项?')
         .then(function () {
           return deleteMaterialsType(materialsTypeIds);
         })