Explorar o código

编程模块调整

liqianyi hai 2 semanas
pai
achega
77ac261f41

+ 256 - 98
src/views/modules/tech/program-add-or-update.vue

@@ -1,126 +1,259 @@
 <template>
   <div>
-    <div class="my-title">{{ !id ? "新增" : "修改" }}</div>
-    <el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="180px">
-      <el-row>
-        <el-col :span="6">
-          <el-form-item label="项目名称" prop="projectName">
-            <el-input v-model="dataForm.projectName" placeholder="请输入项目名称"></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="6">
-          <el-form-item label="任务号" prop="orderCode">
-            <el-input v-model="dataForm.orderCode" placeholder="请输入任务号"></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="6">
-          <el-form-item label="图号" prop="drawingNumber">
-            <el-input v-model="dataForm.drawingNumber" placeholder="请输入图号"></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="6">
-          <el-form-item label="物料名称" prop="productId">
-            <product-component v-model="dataForm.productId" :product-id="dataForm.productId"
-              @productSelected="prodSelected" />
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row>
-        <el-col :span="6">
-          <el-form-item label="数量" prop="planCnt">
-            <el-input-number v-model="dataForm.planCnt" :min="1" placeholder="请输入数量"></el-input-number>
-          </el-form-item>
-        </el-col>
-        <el-col :span="6">
-          <el-form-item label="合同交期" prop="deliveryDate">
-            <el-date-picker v-model="dataForm.deliveryDate" type="date" placeholder="请选择合同交期" format="yyyy-MM-dd"
-              value-format="yyyy-MM-dd"></el-date-picker>
-          </el-form-item>
-        </el-col>
-        <el-col :span="6">
-          <el-form-item label="责任人" prop="responsibilityPerson">
-            <user-component v-model="dataForm.responsibilityPerson" />
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row>
-        <el-col :span="8">
-          <el-form-item label="技术协议" prop="attachList1">
-            <upload-component
-              :displayStar="false"
-              :accept="'*'"
-              :file-obj-list="fileList1"
-              @uploadSuccess="uploadSuccess1"
-            />
-          </el-form-item>
-        </el-col>
-        <el-col :span="8" :offset="4">
-          <el-form-item label="技术文件" prop="attachList2">
-            <upload-component
-              :displayStar="false"
-              :accept="'*'"
-              :file-obj-list="fileList2"
-              @uploadSuccess="uploadSuccess2"
-            />
-          </el-form-item>
-        </el-col>
-      </el-row>
-    </el-form>
+    <div class="my-title">{{ type === 1 ? '处理' : '修改' }}</div>
+    <e-desc title="基本信息" column="3">
+      <e-desc-item label="项目名称">{{ dataForm.projectName }}</e-desc-item>
+      <e-desc-item label="任务号">{{ dataForm.orderCode }}</e-desc-item>
+      <e-desc-item label="图号">{{ dataForm.mapNumber }}</e-desc-item>
+      <e-desc-item label="物料名称">{{ dataForm.productName }}</e-desc-item>
+      <e-desc-item label="数量">{{ dataForm.planCnt }}</e-desc-item>
+      <e-desc-item label="状态">{{
+        dataForm.state
+          ? optionsStates.find(item => item.value === dataForm.state).label
+          : ''
+      }}</e-desc-item>
+      <e-desc-item label="合同交期">{{ dataForm.deliveryDate }}</e-desc-item>
+      <e-desc-item label="责任人">{{
+        dataForm.responsibilityPerson
+      }}</e-desc-item>
+    </e-desc>
+    <e-desc title="技术协议">
+      <e-desc-item v-if="dataForm.attachList1" label="技术协议" span="3">
+        <div
+          v-for="(item, index) in dataForm.attachList1"
+          style="display: inline"
+        >
+          <span v-if="index > 0">,</span>
+          <a
+            :key="item.fileName + index"
+            type="primary"
+            href="#"
+            @click="previewFile(item.fileName, item.url)"
+            >{{ item.fileName }}</a
+          >
+        </div>
+      </e-desc-item>
+    </e-desc>
+    <e-desc title="技术文件">
+      <e-desc-item v-if="dataForm.attachList2" label="技术文件" span="3">
+        <div
+          v-for="(item, index) in dataForm.attachList2"
+          style="display: inline"
+        >
+          <span v-if="index > 0">,</span>
+          <a
+            :key="item.fileName + index"
+            type="primary"
+            href="#"
+            @click="previewFile(item.fileName, item.url)"
+            >{{ item.fileName }}</a
+          >
+        </div>
+      </e-desc-item>
+    </e-desc>
+    <e-desc title="工艺路线">
+      <el-table
+        :data="dataForm.proTechnologyStepNodeList"
+        :row-style="tableRowStyle"
+        border
+        style="width: 100%"
+      >
+        <el-table-column label="序号" type="index" width="50" align="center">
+        </el-table-column>
+        <el-table-column
+          prop="nodeName"
+          header-align="center"
+          align="center"
+          min-width="80"
+          :show-tooltip-when-overflow="true"
+          label="工种"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="require"
+          header-align="center"
+          align="center"
+          min-width="400"
+          :show-tooltip-when-overflow="true"
+          label="工序要求"
+        >
+        </el-table-column>
+      </el-table>
+    </e-desc>
+    <e-desc title="编程列表">
+      <el-form
+        :model="dataForm"
+        :rules="dataRule"
+        ref="dataForm"
+        style="width: 100%"
+      >
+        <!-- 编程列表 -->
+        <el-table
+          :data="dataForm.proProgramDetailsList || []"
+          border
+          style="width: 100%"
+        >
+          <el-table-column label="序号" type="index" width="50" align="center">
+          </el-table-column>
+          <el-table-column
+            prop="nodeName"
+            header-align="center"
+            align="center"
+            min-width="80"
+            label="节点名称"
+          >
+            <template slot-scope="scope">
+              <el-input
+                v-model="scope.row.nodeName"
+                placeholder="请输入节点名称"
+              ></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="require"
+            header-align="center"
+            align="center"
+            min-width="240"
+            label="节点内容"
+          >
+            <template slot-scope="scope">
+              <el-input
+                v-model="scope.row.require"
+                placeholder="请输入节点内容"
+              ></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="num"
+            header-align="center"
+            align="center"
+            min-width="100"
+            label="程序数量"
+          >
+            <template slot-scope="scope">
+              <el-input-number
+                v-model="scope.row.num"
+                :min="1"
+                placeholder="请输入程序数量"
+              ></el-input-number>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="attachList"
+            header-align="center"
+            align="center"
+            label="程序文件"
+          >
+            <template slot-scope="scope">
+              <upload-component
+                :displayStar="false"
+                :accept="'*'"
+                :file-obj-list="scope.row.attachList || []"
+                @uploadSuccess="
+                  fileList => uploadProgramSuccess(fileList, scope.$index)
+                "
+              />
+            </template>
+          </el-table-column>
+          <el-table-column
+            v-if="type === 1"
+            header-align="center"
+            align="center"
+            width="60"
+            label="操作"
+          >
+            <template slot-scope="scope">
+              <el-button
+                type="text"
+                size="small"
+                style="color: red"
+                @click="deleteRow(scope.$index)"
+                >删除</el-button
+              >
+            </template>
+          </el-table-column>
+        </el-table>
+        <el-row v-if="type === 1" style="text-align: center; margin-top: 10px">
+          <el-button
+            type="primary"
+            icon="el-icon-plus"
+            @click="addRow"
+          ></el-button>
+        </el-row>
+      </el-form>
+    </e-desc>
     <span slot="footer" class="dialog-footer">
       <el-button @click="onChose">取消</el-button>
-      <el-button type="primary" @click="dataFormSubmit()" v-reClick>确定</el-button>
+      <el-button type="primary" @click="dataFormSubmit()" v-reClick
+        >确定</el-button
+      >
     </span>
   </div>
 </template>
 
 <script>
-import { getMaterialList } from '@/api/material'
+import EDesc from '../common/e-desc'
+import EDescItem from '../common/e-desc-item'
+import { getDetail } from '@/api/program'
 import uploadComponent from '../common/upload-component-v2'
-import ProductComponent from '@/views/modules/common/product-component'
-import UserComponent from '@/views/modules/common/user-component'
 export default {
   name: 'program-add-or-update',
-  components: { ProductComponent, uploadComponent, UserComponent },
-  data () {
+  components: { EDesc, EDescItem, uploadComponent },
+  data() {
     return {
       id: 0,
-      dataForm: {},
-      materialList: [],
-      fileList1: [],
-      fileList2: [],
-      optionsState: [
+      type: 1,
+      dataForm: {
+        attachList1: [],
+        attachList2: [],
+        proTechnologyStepNodeList: [],
+        proProgramDetailsList: []
+      },
+      // 状态列表数据
+      optionsStates: [
         { value: '1', label: '待处理' },
         { value: '2', label: '已处理' }
       ],
-      dataRule: {
-        projectName: [{ required: true, message: '请输入项目名称', trigger: 'blur' }],
-        orderCode: [{ required: true, message: '请输入任务号', trigger: 'blur' }],
-        productName: [{ required: true, message: '请选择物料名称', trigger: 'change' }],
-        planCnt: [{ required: true, message: '请输入数量', trigger: 'blur' }],
-        deliveryDate: [{ required: true, message: '请选择合同交期', trigger: 'change' }],
-        responsibilityPerson: [{ required: true, message: '请选择责任人', trigger: 'change' }]
-      }
+      dataRule: {}
     }
   },
-  created () {
-  },
+  created() {},
   methods: {
-    init (id) {
+    init(id, type) {
+      this.type = type
       this.id = id || 0
-      this.getMaterialList()
+      // this.getMaterialList()
+      this.getDetail()
     },
-    onChose () {
+    onChose() {
       this.$emit('onChose')
     },
-    getMaterialList () {
-      getMaterialList().then(({ data }) => {
+    getDetail() {
+      getDetail(this.id).then(({ data }) => {
         if (data && data.code === '200') {
-          this.materialList = data.data.records
+          this.dataForm = data.data
+          if (!this.dataForm.proProgramDetailsList) {
+            this.dataForm.proProgramDetailsList = []
+          }
+          if (!this.dataForm.proTechnologyStepNodeList) {
+            this.dataForm.proTechnologyStepNodeList = []
+          }
+          this.fileList1 = data.data.attachList1 || []
+          this.fileList2 = data.data.attachList2 || []
+        } else {
+          this.$message.error(data.msg)
         }
       })
     },
-    dataFormSubmit () {
-      this.$refs['dataForm'].validate((valid) => {
+    // getMaterialList() {
+    //   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
@@ -146,15 +279,40 @@ export default {
         }
       })
     },
-    uploadSuccess1 (fileList) {
+    uploadSuccess1(fileList) {
       this.fileList1 = fileList
+      this.dataForm.attachList1 = fileList
     },
-    uploadSuccess2 (fileList) {
+    uploadSuccess2(fileList) {
       this.fileList2 = fileList
+      this.dataForm.attachList2 = fileList
     },
-    prodSelected (item) {
+    prodSelected(item) {
       this.dataForm.productId = item.value
       this.dataForm.materialName = item.label
+    },
+    // 编程列表相关方法
+    addRow() {
+      if (!this.dataForm.proProgramDetailsList) {
+        this.dataForm.proProgramDetailsList = []
+      }
+      this.dataForm.proProgramDetailsList.push({
+        nodeName: '',
+        require: '',
+        num: 1,
+        attachList: []
+      })
+    },
+    deleteRow(index) {
+      this.dataForm.proProgramDetailsList.splice(index, 1)
+    },
+    uploadProgramSuccess(fileList, index) {
+      this.dataForm.proProgramDetailsList[index].attachList = fileList
+    },
+    tableRowStyle({ row }) {
+      return row.id === this.dataForm.nodeId
+        ? { backgroundColor: '#ffcccc' }
+        : {}
     }
   }
 }

+ 142 - 15
src/views/modules/tech/program-detail.vue

@@ -8,34 +8,156 @@
         <e-desc-item label="图号">{{ dataForm.mapNumber }}</e-desc-item>
         <e-desc-item label="物料名称">{{ dataForm.productName }}</e-desc-item>
         <e-desc-item label="数量">{{ dataForm.planCnt }}</e-desc-item>
-        <e-desc-item label="状态">{{dataForm.state ? optionsStates.find(item => item.value ===
-          dataForm.state).label : ''}}</e-desc-item>
+        <e-desc-item label="状态">{{
+          dataForm.state
+            ? optionsStates.find(item => item.value === dataForm.state).label
+            : ''
+        }}</e-desc-item>
         <e-desc-item label="合同交期">{{ dataForm.deliveryDate }}</e-desc-item>
-        <e-desc-item label="责任人">{{ dataForm.responsibilityPerson }}</e-desc-item>
+        <e-desc-item label="责任人">{{
+          dataForm.responsibilityPerson
+        }}</e-desc-item>
       </e-desc>
       <e-desc title="技术协议">
         <e-desc-item v-if="dataForm.attachList1" label="技术协议" span="3">
-          <div v-for="(item, index) in dataForm.attachList1" style="display: inline">
+          <div
+            v-for="(item, index) in dataForm.attachList1"
+            style="display: inline"
+          >
             <span v-if="index > 0">,</span>
-            <a :key="item.fileName + index" type="primary" href="#" @click="previewFile(item.fileName, item.url)">{{
-              item.fileName }}</a>
+            <a
+              :key="item.fileName + index"
+              type="primary"
+              href="#"
+              @click="previewFile(item.fileName, item.url)"
+              >{{ item.fileName }}</a
+            >
           </div>
         </e-desc-item>
       </e-desc>
       <e-desc title="技术文件">
         <e-desc-item v-if="dataForm.attachList2" label="技术文件" span="3">
-          <div v-for="(item, index) in dataForm.attachList2" style="display: inline">
+          <div
+            v-for="(item, index) in dataForm.attachList2"
+            style="display: inline"
+          >
             <span v-if="index > 0">,</span>
-            <a :key="item.fileName + index" type="primary" href="#" @click="previewFile(item.fileName, item.url)">{{
-              item.fileName }}</a>
+            <a
+              :key="item.fileName + index"
+              type="primary"
+              href="#"
+              @click="previewFile(item.fileName, item.url)"
+              >{{ item.fileName }}</a
+            >
           </div>
         </e-desc-item>
       </e-desc>
+      <e-desc title="工艺路线">
+        <el-table
+          :data="dataForm.proTechnologyStepNodeList"
+          :row-style="tableRowStyle"
+          border
+          style="width: 100%"
+        >
+          <el-table-column label="序号" type="index" width="50" align="center">
+          </el-table-column>
+          <el-table-column
+            prop="nodeName"
+            header-align="center"
+            align="center"
+            min-width="80"
+            :show-tooltip-when-overflow="true"
+            label="工种"
+          >
+          </el-table-column>
+          <el-table-column
+            prop="require"
+            header-align="center"
+            align="center"
+            min-width="400"
+            :show-tooltip-when-overflow="true"
+            label="工序要求"
+          >
+          </el-table-column>
+        </el-table>
+      </e-desc>
+      <e-desc title="编程">
+        <el-table
+          :data="dataForm.proProgramDetailsList"
+          border
+          style="width: 100%"
+        >
+          <el-table-column label="序号" type="index" width="50" align="center">
+          </el-table-column>
+          <el-table-column
+            prop="nodeName"
+            header-align="center"
+            align="center"
+            min-width="80"
+            :show-tooltip-when-overflow="true"
+            label="节点名称"
+          >
+          </el-table-column>
+          <el-table-column
+            prop="require"
+            header-align="center"
+            align="center"
+            min-width="240"
+            :show-tooltip-when-overflow="true"
+            label="节点内容"
+          >
+          </el-table-column>
+          <el-table-column
+            prop="createTime"
+            header-align="center"
+            align="center"
+            min-width="160"
+            :show-tooltip-when-overflow="true"
+            label="程序时间"
+          >
+          </el-table-column>
+          <el-table-column
+            prop="num"
+            header-align="center"
+            align="center"
+            min-width="80"
+            :show-tooltip-when-overflow="true"
+            label="程序数量"
+          >
+          </el-table-column>
+          <el-table-column
+            prop="attachList"
+            header-align="center"
+            align="center"
+            label="程序文件"
+          >
+            <template slot-scope="scope">
+              <div
+                v-for="(item, index) in scope.row.attachList"
+                style="display: inline"
+              >
+                <span v-if="index > 0">,</span>
+                <a
+                  :key="item.fileName + index"
+                  type="primary"
+                  href="#"
+                  @click="previewFile(item.fileName, item.url)"
+                  >{{ item.fileName }}</a
+                >
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </e-desc>
     </div>
     <span slot="footer" class="dialog-footer">
       <el-button @click="onChose">返回</el-button>
     </span>
-    <preview-component ref="preview" v-if="previewVisible" @onChose="previewVisible = false" />
+    <preview-component
+      ref="preview"
+      v-if="previewVisible"
+      @onChose="previewVisible = false"
+    />
   </div>
 </template>
 
@@ -48,7 +170,7 @@ import PreviewComponent from '@/views/modules/common/preview-component'
 export default {
   name: 'tech-program-detail',
   components: { EDesc, EDescItem, uploadComponent, PreviewComponent },
-  data () {
+  data() {
     return {
       id: '',
       dataForm: {
@@ -64,22 +186,27 @@ export default {
     }
   },
   methods: {
-    async init (id) {
+    async init(id) {
       this.id = id || 0
       this.getDetail()
     },
-    onChose () {
+    onChose() {
       this.$emit('onChose')
     },
-    getDetail () {
+    getDetail() {
       getDetail(this.id).then(({ data }) => {
         if (data && data.code === '200') {
           this.dataForm = data.data
         }
       })
     },
+    tableRowStyle({ row }) {
+      return row.id === this.dataForm.nodeId
+        ? { backgroundColor: '#ffcccc' }
+        : {}
+    },
     // 预览
-    previewFile (fileName, url) {
+    previewFile(fileName, url) {
       this.previewVisible = true
       this.$nextTick(() => {
         this.$refs.preview.init(fileName, url)

+ 215 - 54
src/views/modules/tech/program.vue

@@ -2,86 +2,242 @@
 <template>
   <div>
     <template v-if="!addOrUpdateVisible && !detailVisible">
-      <el-form :inline="true" :model="dataForm" label-width="80px" @keyup.enter.native="queryData()">
+      <el-form
+        :inline="true"
+        :model="dataForm"
+        label-width="80px"
+        @keyup.enter.native="queryData()"
+      >
         <el-form-item label="项目名称">
-          <el-input v-model="dataForm.projectName" placeholder="请输入项目名称" clearable />
+          <el-input
+            v-model="dataForm.projectName"
+            placeholder="请输入项目名称"
+            clearable
+          />
         </el-form-item>
         <el-form-item label="任务号">
-          <el-input v-model="dataForm.orderCode" placeholder="请输入任务号" clearable />
+          <el-input
+            v-model="dataForm.orderCode"
+            placeholder="请输入任务号"
+            clearable
+          />
         </el-form-item>
         <el-form-item label="责任人">
           <user-component v-model="dataForm.responsibilityPerson" />
         </el-form-item>
         <el-form-item label="状态">
-          <el-select v-model="dataForm.state" placeholder="请选择状态" clearable>
-            <el-option v-for="item in optionsState" :key="item.value" :label="item.label" :value="item.value" />
+          <el-select
+            v-model="dataForm.state"
+            placeholder="请选择状态"
+            clearable
+          >
+            <el-option
+              v-for="item in optionsState"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            />
           </el-select>
         </el-form-item>
         <el-form-item label="物料名称">
-          <el-input v-model="dataForm.productName" placeholder="请输入物料名称" clearable />
+          <el-input
+            v-model="dataForm.productName"
+            placeholder="请输入物料名称"
+            clearable
+          />
         </el-form-item>
         <el-form-item>
           <el-button @click="queryData()">查询</el-button>
-          <el-button v-if="isAuth('pro:program:save')" type="primary" @click="addOrUpdateHandle(0)">新建</el-button>
+          <el-button
+            v-if="isAuth('pro:program:save')"
+            type="primary"
+            @click="addOrUpdateHandle(0)"
+            >新建</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="projectName" header-align="center" align="center" min-width="140"
-          :show-tooltip-when-overflow="true" label="项目名称">
+      <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="projectName"
+          header-align="center"
+          align="center"
+          min-width="140"
+          :show-tooltip-when-overflow="true"
+          label="项目名称"
+        >
         </el-table-column>
-        <el-table-column prop="orderCode" header-align="center" align="center" min-width="140"
-          :show-tooltip-when-overflow="true" label="任务号">
+        <el-table-column
+          prop="orderCode"
+          header-align="center"
+          align="center"
+          min-width="140"
+          :show-tooltip-when-overflow="true"
+          label="任务号"
+        >
         </el-table-column>
-        <el-table-column prop="mapNumber" header-align="center" align="center" min-width="140"
-          :show-tooltip-when-overflow="true" label="图号">
+        <el-table-column
+          prop="mapNumber"
+          header-align="center"
+          align="center"
+          min-width="140"
+          :show-tooltip-when-overflow="true"
+          label="图号"
+        >
         </el-table-column>
-        <el-table-column prop="productName" header-align="center" align="center" min-width="140"
-          :show-tooltip-when-overflow="true" label="物料名称">
+        <el-table-column
+          prop="productName"
+          header-align="center"
+          align="center"
+          min-width="140"
+          :show-tooltip-when-overflow="true"
+          label="物料名称"
+        >
         </el-table-column>
-        <el-table-column prop="planCnt" header-align="center" align="center" min-width="80"
-          :show-tooltip-when-overflow="true" label="数量">
+        <el-table-column
+          prop="planCnt"
+          header-align="center"
+          align="center"
+          min-width="80"
+          :show-tooltip-when-overflow="true"
+          label="数量"
+        >
         </el-table-column>
-        <el-table-column prop="state" header-align="center" align="center" min-width="80" fixed="right" label="状态">
+        <el-table-column
+          prop="state"
+          header-align="center"
+          align="center"
+          min-width="80"
+          fixed="right"
+          label="状态"
+        >
           <template slot-scope="scope">
-            <span>{{(optionsState.find(t => t.value === scope.row.state.toString())).label}}</span>
+            <span>{{
+              optionsState.find(t => t.value === scope.row.state.toString())
+                .label
+            }}</span>
           </template>
         </el-table-column>
-        <el-table-column prop="attachList1" header-align="center" align="center" min-width="100" label="技术协议">
+        <el-table-column
+          prop="attachList1"
+          header-align="center"
+          align="center"
+          min-width="100"
+          label="技术协议"
+        >
           <template slot-scope="scope">
-            <el-button :disabled="!scope.row.attachList1 || scope.row.attachList1.length === 0
-              " type="text" size="small" @click="attachDetails(scope.row.attachList1)">查看</el-button>
+            <el-button
+              :disabled="
+                !scope.row.attachList1 || scope.row.attachList1.length === 0
+              "
+              type="text"
+              size="small"
+              @click="attachDetails(scope.row.attachList1)"
+              >查看</el-button
+            >
           </template>
         </el-table-column>
-        <el-table-column prop="attachList2" header-align="center" align="center" min-width="100" label="技术文件">
+        <el-table-column
+          prop="attachList2"
+          header-align="center"
+          align="center"
+          min-width="100"
+          label="技术文件"
+        >
           <template slot-scope="scope">
-            <el-button :disabled="!scope.row.attachList2 || scope.row.attachList2.length === 0
-              " type="text" size="small" @click="attachDetails(scope.row.attachList2)">查看</el-button>
+            <el-button
+              :disabled="
+                !scope.row.attachList2 || scope.row.attachList2.length === 0
+              "
+              type="text"
+              size="small"
+              @click="attachDetails(scope.row.attachList2)"
+              >查看</el-button
+            >
           </template>
         </el-table-column>
-        <el-table-column prop="deliveryDate" header-align="center" align="center" min-width="160"
-          :show-tooltip-when-overflow="true" label="合同交期">
+        <el-table-column
+          prop="deliveryDate"
+          header-align="center"
+          align="center"
+          min-width="160"
+          :show-tooltip-when-overflow="true"
+          label="合同交期"
+        >
         </el-table-column>
-        <el-table-column prop="responsibilityPerson" header-align="center" align="center" min-width="100"
-          :show-tooltip-when-overflow="true" label="责任人">
+        <el-table-column
+          prop="responsibilityPerson"
+          header-align="center"
+          align="center"
+          min-width="100"
+          :show-tooltip-when-overflow="true"
+          label="责任人"
+        >
         </el-table-column>
-        <el-table-column fixed="right" header-align="center" align="center" width="90" label="操作">
+        <el-table-column
+          fixed="right"
+          header-align="center"
+          align="center"
+          width="130"
+          label="操作"
+        >
           <template slot-scope="scope">
-            <el-button type="text" size="small" @click="showDetail(scope.row.programId)">查看</el-button>
-            <el-button v-if="isAuth('pro:program:update')" type="text" size="small"
-              @click="addOrUpdateHandle(scope.row.programId)">编辑</el-button>
+            <el-button
+              type="text"
+              size="small"
+              @click="showDetail(scope.row.programId)"
+              >查看</el-button
+            >
+            <el-button
+              v-if="isAuth('pro:program:updateProcessing')"
+              type="text"
+              size="small"
+              @click="addOrUpdateHandle(scope.row.programId, 1)"
+              >处理</el-button
+            >
+            <el-button
+              v-if="isAuth('pro:program:update')"
+              type="text"
+              size="small"
+              @click="addOrUpdateHandle(scope.row.programId, 2)"
+              >编辑</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
+        @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>
     <attach-detail-dialog ref="attachDetail" />
-    <program-add-or-update ref="addOrUpdate" v-if="addOrUpdateVisible" @onChose="onChose"
-      @refreshDataList="getDataList"></program-add-or-update>
-    <program-detail ref="detail" v-if="detailVisible" @onChose="onChose"></program-detail>
+    <program-add-or-update
+      ref="addOrUpdate"
+      v-if="addOrUpdateVisible"
+      @onChose="onChose"
+      @refreshDataList="getDataList"
+    ></program-add-or-update>
+    <program-detail
+      ref="detail"
+      v-if="detailVisible"
+      @onChose="onChose"
+    ></program-detail>
   </div>
 </template>
 
@@ -95,8 +251,13 @@ import { isAuth } from '@/utils'
 import UserComponent from '@/views/modules/common/user-component.vue'
 export default {
   name: 'program',
-  components: { UserComponent, AttachDetailDialog, ProgramAddOrUpdate, ProgramDetail },
-  data () {
+  components: {
+    UserComponent,
+    AttachDetailDialog,
+    ProgramAddOrUpdate,
+    ProgramDetail
+  },
+  data() {
     return {
       addOrUpdateVisible: false,
       detailVisible: false,
@@ -113,17 +274,17 @@ export default {
       ]
     }
   },
-  created () {
+  created() {
     this.queryData()
     this.getProductList()
   },
   methods: {
     isAuth,
-    onChose () {
+    onChose() {
       this.addOrUpdateVisible = false
       this.detailVisible = false
     },
-    getProductList () {
+    getProductList() {
       let params = {
         current: 1,
         size: 100
@@ -135,11 +296,11 @@ export default {
       })
     },
     // 查询
-    queryData () {
+    queryData() {
       this.pageIndex = 1
       this.getDataList()
     },
-    getDataList () {
+    getDataList() {
       let param = {
         current: this.pageIndex,
         size: this.pageSize,
@@ -151,29 +312,29 @@ export default {
         }
       })
     },
-    addOrUpdateHandle (id) {
+    addOrUpdateHandle(id, type) {
       this.addOrUpdateVisible = true
       this.$nextTick(() => {
-        this.$refs.addOrUpdate.init(id)
+        this.$refs.addOrUpdate.init(id, type)
       })
     },
-    showDetail (id) {
+    showDetail(id) {
       this.detailVisible = true
       this.$nextTick(() => {
         this.$refs.detail.init(id)
       })
     },
-    attachDetails (attachList) {
+    attachDetails(attachList) {
       this.$refs.attachDetail.init(attachList)
     },
     // 每页数
-    sizeChangeHandle (val) {
+    sizeChangeHandle(val) {
       this.pageSize = val
       this.pageIndex = 1
       this.getDataList()
     },
     // 当前页
-    currentChangeHandle (val) {
+    currentChangeHandle(val) {
       this.pageIndex = val
       this.getDataList()
     }