damon227 2 жил өмнө
parent
commit
59f6cba296

+ 18 - 0
src/api/process.js

@@ -0,0 +1,18 @@
+import request from '@/utils/httpRequest'
+
+// 特殊过程列表
+export function getList (params) {
+  return request({
+    url: request.adornUrl(`/biz-service/pro-crux-course/list`),
+    method: 'get',
+    params: params
+  })
+}
+
+// 特殊过程详情
+export function getDetail (programId) {
+  return request({
+    url: request.adornUrl(`/biz-service/pro-crux-course/info/${programId}`),
+    method: 'get'
+  })
+}

+ 2 - 2
src/views/modules/tech-manage/material-tech.vue

@@ -82,7 +82,7 @@
         >
         </el-table-column>
         <el-table-column
-          prop="address"
+          prop=""
           header-align="center"
           align="center"
           width="120"
@@ -94,7 +94,7 @@
           </template>
         </el-table-column>
         <el-table-column
-          prop="optionAlter"
+          prop=""
           header-align="center"
           align="center"
           label="更改说明"

+ 162 - 0
src/views/modules/tech-manage/process-add-or-update.vue

@@ -0,0 +1,162 @@
+<template>
+  <div>
+    <div class="my-title">{{ !id ? "新增" : "修改" }}</div>
+    <el-form
+      :model="dataForm"
+      :rules="dataRule"
+      ref="dataForm"
+      @keyup.enter.native="dataFormSubmit()"
+      label-width="120px"
+    >
+      <el-row class="my-row">
+        <el-col :span="6">
+          <el-form-item label="编码" prop="cruxCode">
+            <el-input
+              v-model="dataForm.cruxCode"
+              placeholder="请输入编码"
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="6">
+          <el-form-item label="物料名称" prop="productId">
+            <el-select
+              v-model="dataForm.productId"
+              placeholder="请选择"
+              filterable
+              remote
+              clearable
+              style="width:100%"
+            >
+              <el-option
+                v-for="item in materialList"
+                :key="item.materialId"
+                :label="item.materialName"
+                :value="item.materialId"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="6">
+          <el-form-item label="关键特殊名称" prop="cruxName">
+            <el-input
+              v-model="dataForm.cruxName"
+              placeholder="请输入关键特殊名称"
+            ></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row class="my-row">
+        <el-col :span="18">
+          <el-form-item label="备注说明" prop="remark">
+            <el-input
+              type="textarea"
+              v-model="dataForm.remark"
+              placeholder="备注"
+            ></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row class="my-row">
+        <el-col :span="8">
+        <el-form-item label="附件" prop="attachList">
+          <upload-component :accept="'*'" v-model="dataForm.attachList" />
+        </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="onChose">取消</el-button>
+      <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
+    </span>
+  </div>
+</template>
+
+<script>
+import UploadComponent from '../common/upload-component-v2'
+import { getMaterialList } from '@/api/material'
+export default {
+  name: 'process-add-or-update',
+  components: { UploadComponent },
+  data () {
+    return {
+      id: 0,
+      isEdit: false,
+      dataForm: {
+        cruxCode: '',
+        productId: '',
+        cruxName: '',
+        remark: '',
+        attachList: []
+      },
+      fileList: [],
+      materialList: [],
+      dataRule: {
+        cruxCode: [
+          { required: true, message: '请输入编码', trigger: 'blur' }
+        ],
+        productId: [
+          { required: true, message: '请选择物料名称', trigger: 'change' }
+        ],
+        cruxName: [
+          { required: true, message: '请输入关键特殊名称', trigger: 'blur' }
+        ],
+        attachList: [
+          { required: true, message: '请选择附件', trigger: 'change' }
+        ]
+      }
+    }
+  },
+  mounted () {},
+  methods: {
+    onChose () {
+      this.$emit('onChose')
+    },
+    async init (id, display) {
+      this.id = id || 0
+      this.$refs['dataForm'].resetFields()
+      this.materialList = []
+      await this.getMaterialList()
+    },
+    async getMaterialList () {
+      await getMaterialList().then(({ data }) => {
+        if (data && data.code === '200') {
+          this.materialList = data.data.records
+        }
+      })
+    },
+    dataFormSubmit () {
+      this.$refs['dataForm'].validate((valid) => {
+        if (valid) {
+          this.$http({
+            url: !this.id
+              ? this.$http.adornUrl(`/biz-service/pro-crux-course/save`)
+              : this.$http.adornUrl(
+                  `/biz-service/pro-crux-course/update`
+                ),
+            method: 'post',
+            data: this.$http.adornData({ ...this.dataForm, orgId: this.orgId })
+          }).then(({ data }) => {
+            if (data && data.code === '200') {
+              this.$message({
+                message: '操作成功',
+                type: 'success',
+                duration: 1500,
+                onClose: () => {
+                  this.onChose()
+                  this.$emit('refreshDataList')
+                }
+              })
+            } else {
+              this.$message.error(data.msg)
+            }
+          })
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+</style>

+ 311 - 0
src/views/modules/tech-manage/process-manage.vue

@@ -0,0 +1,311 @@
+<template>
+  <div>
+    <template
+      v-if="
+        !addOrUpdateVisible &&
+        !detailVisible &&
+        !noteChangeVisible &&
+        !attachVisible
+      "
+    >
+      <el-form :inline="true" :model="dataForm" @keyup.enter.native="search()">
+        <el-form-item label="名称">
+          <el-input
+            v-model="dataForm.name"
+            placeholder="请输入产品名称"
+            clearable
+          />
+        </el-form-item>
+        <el-form-item label="创建日期">
+          <el-date-picker
+            v-model="dataForm.createTime"
+            value-format="yyyy-MM-dd"
+            type="daterange"
+            range-separator="至"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="物料">
+          <el-select
+            v-model="dataForm.productName"
+            filterable
+            remote
+            clearable
+            placeholder="请选择"
+          >
+            <el-option
+              v-for="item in materialList"
+              :key="item.materialId"
+              :label="item.materialName"
+              :value="item.materialName"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button @click="search()">查询</el-button>
+          <el-button
+            v-if="isAuth('process-manage:insert')"
+            type="primary"
+            @click="addOrUpdateHandle(0, false)"
+            >新建</el-button
+          >
+          <el-button
+            v-if="isAuth('process-manage:change')"
+            type="primary"
+            @click="noteChange()"
+            >变更通知人设置</el-button
+          >
+        </el-form-item>
+      </el-form>
+      <el-table
+        :data="dataList"
+        border
+        v-loading="dataListLoading"
+        style="width: 100%"
+      >
+        <el-table-column label="序号" type="index" width="50" align="center">
+        </el-table-column>
+        <el-table-column
+          prop="cruxCode"
+          header-align="center"
+          align="center"
+          min-width="120"
+          :show-tooltip-when-overflow="true"
+          label="编码"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="cruxName"
+          header-align="center"
+          align="center"
+          min-width="120"
+          label="关键特殊名称"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="productName"
+          header-align="center"
+          align="center"
+          min-width="120"
+          label="物料名称"
+        >
+        </el-table-column>
+        <el-table-column
+          prop=""
+          header-align="center"
+          align="center"
+          width="120"
+          :show-tooltip-when-overflow="true"
+          label="附件"
+        >
+          <template slot-scope="scope">
+            <el-button
+              :disabled="
+                !scope.row.attachList || scope.row.attachList.length === 0
+              "
+              type="text"
+              size="small"
+              @click="attachDetails(scope.row.attachList)"
+              >查看</el-button
+            >
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="cruxAlter"
+          header-align="center"
+          align="center"
+          label="更改说明"
+        >
+        </el-table-column>
+        <el-table-column
+          prop=""
+          header-align="center"
+          align="center"
+          min-width="180"
+          :show-tooltip-when-overflow="true"
+          label="更改单"
+        >
+          <template slot-scope="scope">
+            <el-button
+              :disabled="
+                !scope.row.changeList || scope.row.changeList.length === 0
+              "
+              type="text"
+              size="small"
+              @click="attachDetails(scope.row.changeList)"
+              >查看</el-button
+            >
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="remark"
+          header-align="center"
+          align="center"
+          :show-tooltip-when-overflow="true"
+          label="备注"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="createTime"
+          header-align="center"
+          align="center"
+          min-width="120"
+          :show-tooltip-when-overflow="true"
+          label="创建时间"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="creatorName"
+          header-align="center"
+          align="center"
+          :show-tooltip-when-overflow="true"
+          label="创建人"
+        >
+        </el-table-column>
+        <el-table-column
+          fixed="right"
+          header-align="center"
+          align="center"
+          width="150"
+          label="操作"
+        >
+          <template slot-scope="scope">
+            <el-button
+              v-if="isAuth('process-manage:list')"
+              type="text"
+              size="small"
+              @click="detailHandle(scope.row.optionId)"
+              >查看</el-button
+            >
+            <el-button
+              v-if="isAuth('process-manage:update')"
+              type="text"
+              size="small"
+              @click="addOrUpdateHandle(scope.row.optionId, false)"
+              >编辑</el-button
+            >
+            <el-button
+              v-if="isAuth('process-manage:change')"
+              type="text"
+              size="small"
+              @click="addOrUpdateHandle(scope.row.optionId, false)"
+              >变更</el-button
+            >
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-pagination
+        @size-change="sizeChangeHandle"
+        @current-change="currentChangeHandle"
+        :current-page="pageIndex"
+        :page-sizes="[10, 20, 50, 100]"
+        :page-size="pageSize"
+        :total="totalPage"
+        layout="total, sizes, prev, pager, next, jumper"
+      >
+      </el-pagination>
+    </template>
+    <process-add-or-update
+      ref="addOrUpdate"
+      v-if="addOrUpdateVisible"
+      @onChose="onChose"
+    ></process-add-or-update>
+  </div>
+</template>
+
+<script>
+import { getMaterialList } from '@/api/material'
+import {getList} from '@/api/process'
+import ProcessAddOrUpdate from './process-add-or-update.vue'
+export default {
+  name: 'tech-manage-process-manage',
+  components: {ProcessAddOrUpdate},
+  data () {
+    return {
+      addOrUpdateVisible: false,
+      detailVisible: false,
+      noteChangeVisible: false,
+      attachVisible: false,
+      materialList: [],
+      dataForm: {},
+      dataList: [],
+      pageIndex: 1,
+      pageSize: 10,
+      totalPage: 0,
+      dataListLoading: false
+    }
+  },
+  created () {
+    this.getMaterialList()
+  },
+  mounted () {},
+  activated () {},
+  computed: {},
+  methods: {
+    onChose () {
+      this.addOrUpdateVisible = false
+      this.detailVisible = false
+      this.noteChangeVisible = false
+      this.attachVisible = false
+    },
+    getMaterialList () {
+      getMaterialList().then(({ data }) => {
+        if (data && data.code === '200') {
+          this.materialList = data.data.records
+        }
+      })
+    },
+    search () {
+      this.pageIndex = 1
+      this.getDataList()
+    },
+     // 每页数
+    sizeChangeHandle (val) {
+      this.pageSize = val
+      this.pageIndex = 1
+      this.getDataList()
+    },
+    // 当前页
+    currentChangeHandle (val) {
+      this.pageIndex = val
+      this.getDataList()
+    },
+    getDataList () {
+      let param = {
+        current: this.pageIndex,
+        size: this.pageSize,
+        name: this.dataForm.name,
+        productName: this.dataForm.productName,
+        startTime: this.dataForm.createTime
+            ? this.dataForm.createTime[0]
+            : null,
+        endTime: this.dataForm.createTime
+            ? this.dataForm.createTime[1]
+            : null
+      }
+      getList(param).then(({ data }) => {
+        if (data && data.code === '200') {
+          this.dataList = data.data.records
+          this.totalPage = Number(data.data.total)
+        } else {
+          this.dataList = []
+          this.totalPage = 0
+        }
+        this.dataListLoading = false
+      })
+    },
+    addOrUpdateHandle (id) {
+      this.addOrUpdateVisible = true
+      this.$nextTick(() => {
+        this.$refs.addOrUpdate.init(id)
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+</style>