Jelajahi Sumber

编程(处理、编辑)

chrislee 2 minggu lalu
induk
melakukan
a6191a1e16

+ 5 - 1
.eslintrc.js

@@ -20,6 +20,10 @@ module.exports = {
     // allow async-await
     'generator-star-spacing': 'off',
     // allow debugger during development
-    'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
+    'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
+    'space-before-function-paren': 'off',  // 关闭规则
+    'semi': 'off',  // 关闭分号检查
+    'quotes': 'off',  // 关闭引号检查
+    'comma-dangle': 'off'  // 关闭尾随逗号检查
   }
 }

+ 146 - 157
src/views/modules/tech/program-add-or-update.vue

@@ -19,175 +19,102 @@
     </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 :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 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 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-form :model="dataForm" :rules="dataRule" ref="dataForm" style="width: 100%">
         <!-- 编程列表 -->
-        <el-table
-          :data="dataForm.proProgramDetailsList || []"
-          border
-          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 prop="nodeName" header-align="center" align="center" min-width="80" label="节点名称">
           </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 prop="require" header-align="center" align="center" min-width="240" label="节点内容">
           </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 prop="preTaskTime" header-align="center" align="center" min-width="100" label="程序时间">
+          </el-table-column>
+          <el-table-column prop="num" header-align="center" align="center" min-width="100" label="程序数量">
           </el-table-column>
-          <el-table-column
-            prop="attachList"
-            header-align="center"
-            align="center"
-            label="程序文件"
-          >
+          <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)
-                "
-              />
+              <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
-            v-if="type === 1"
-            header-align="center"
-            align="center"
-            width="60"
-            label="操作"
-          >
+
+          <!-- Add dialog for row operations -->
+          <el-table-column header-align="center" align="center" width="120" label="操作">
             <template slot-scope="scope">
-              <el-button
-                type="text"
-                size="small"
-                style="color: red"
-                @click="deleteRow(scope.$index)"
-                >删除</el-button
-              >
+              <el-button v-if="type === 2" type="text" size="small"
+                @click="handleEdit(scope.row, scope.$index)">编辑</el-button>
+              <el-button v-if="type === 1" type="text" size="small" style="color: red"
+                @click="deleteRow(scope.$index)">删除</el-button>
             </template>
           </el-table-column>
         </el-table>
+
+        <!-- Add/Edit dialog -->
+        <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="500px">
+          <el-form :model="rowForm" ref="rowForm" label-width="100px">
+            <el-form-item label="节点名称">
+              <el-input v-model="rowForm.nodeName" placeholder="请输入节点名称"></el-input>
+            </el-form-item>
+            <el-form-item label="节点内容">
+              <el-input v-model="rowForm.require" placeholder="请输入节点内容"></el-input>
+            </el-form-item>
+            <el-form-item label="预估工时">
+              <el-input-number v-model="rowForm.preTaskTime" :min="1" placeholder="请输入预估工时"></el-input-number>
+            </el-form-item>
+            <el-form-item label="程序数量">
+              <el-input-number v-model="rowForm.num" :min="1" placeholder="请输入程序数量"></el-input-number>
+            </el-form-item>
+            <el-form-item label="程序文件">
+              <upload-component :display-title="false" :displayStar="false" :accept="'*'"
+                :file-obj-list="rowForm.attachList || []" @uploadSuccess="handleUploadSuccess" />
+            </el-form-item>
+          </el-form>
+          <span slot="footer">
+            <el-button @click="dialogVisible = false">取 消</el-button>
+            <el-button type="primary" @click="saveRow">确 定</el-button>
+          </span>
+        </el-dialog>
+
         <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>
+          <el-button type="primary" icon="el-icon-plus" @click="handleAdd"></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>
+    <preview-component ref="preview" v-if="previewVisible" @onChose="previewVisible = false" />
+    <attach-detail-dialog ref="attachDetail" />
   </div>
 </template>
 
@@ -195,10 +122,12 @@
 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 uploadComponent from "../common/upload-component";
+import AttachDetailDialog from '../common/attach-detail-dialog'
+import PreviewComponent from '@/views/modules/common/preview-component'
 export default {
   name: "program-add-or-update",
-  components: { EDesc, EDescItem, uploadComponent },
+  components: { EDesc, EDescItem, uploadComponent, AttachDetailDialog, PreviewComponent },
   data() {
     return {
       id: 0,
@@ -214,10 +143,21 @@ export default {
         { value: "1", label: "待处理" },
         { value: "2", label: "已处理" },
       ],
+      previewVisible: false,
       dataRule: {},
+      dialogVisible: false,
+      dialogTitle: '',
+      rowForm: {
+        nodeName: '',
+        require: '',
+        preTaskTime: 0,
+        num: 1,
+        attachList: []
+      },
+      editIndex: -1
     };
   },
-  created() {},
+  created() { },
   methods: {
     init(id, type) {
       this.type = type;
@@ -245,19 +185,28 @@ export default {
         }
       });
     },
-    // getMaterialList() {
-    //   getMaterialList().then(({ data }) => {
-    //     if (data && data.code === '200') {
-    //       this.materialList = data.data.records
-    //     }
-    //   })
-    // },
     dataFormSubmit() {
       this.$refs["dataForm"].validate((valid) => {
         if (valid) {
+          // 检查proProgramDetailsList是否为空
+          if (
+            !this.dataForm.proProgramDetailsList ||
+            this.dataForm.proProgramDetailsList.length === 0
+          ) {
+            this.$message.error("编程列表不能为空");
+            return;
+          }
+          // proProgramDetailsList 中附件字段name转为fileName
+          this.dataForm.proProgramDetailsList.forEach((item) => {
+            item.attachList.forEach((attach) => {
+              attach.fileName = attach.name;
+            });
+          });
+          // console.log(this.dataForm)
+          // return
           this.$http({
-            url: !this.id
-              ? this.$http.adornUrl(`/biz-service/proProgram/save`)
+            url: this.type === 1
+              ? this.$http.adornUrl(`/biz-service/proProgram/updateProcessing`)
               : this.$http.adornUrl(`/biz-service/proProgram/update`),
             method: "post",
             data: this.$http.adornData({ ...this.dataForm, orgId: this.orgId }),
@@ -279,18 +228,6 @@ export default {
         }
       });
     },
-    uploadSuccess1(fileList) {
-      this.fileList1 = fileList;
-      this.dataForm.attachList1 = fileList;
-    },
-    uploadSuccess2(fileList) {
-      this.fileList2 = fileList;
-      this.dataForm.attachList2 = fileList;
-    },
-    prodSelected(item) {
-      this.dataForm.productId = item.value;
-      this.dataForm.materialName = item.label;
-    },
     // 编程列表相关方法
     addRow() {
       if (!this.dataForm.proProgramDetailsList) {
@@ -314,6 +251,58 @@ export default {
         ? { backgroundColor: "#ffcccc" }
         : {};
     },
+    handleAdd() {
+      this.dialogTitle = '新增编程项目'
+      this.editIndex = -1
+      this.rowForm = {
+        nodeName: '',
+        require: '',
+        preTaskTime: 0,
+        num: 1,
+        attachList: []
+      }
+      this.dialogVisible = true
+    },
+    handleEdit(row, index) {
+      this.dialogTitle = '编辑编程项目'
+      this.editIndex = index
+      console.log(row)
+      this.rowForm = {
+        ...row,
+        attachList: row.attachList ? row.attachList.map(item => ({
+          ...item,
+          name: item.fileName,
+          id: item.url
+        })) : []
+      }
+      this.dialogVisible = true
+    },
+    saveRow() {
+      if (this.editIndex === -1) {
+        this.dataForm.proProgramDetailsList.push({ ...this.rowForm })
+      } else {
+        this.$set(this.dataForm.proProgramDetailsList, this.editIndex, { ...this.rowForm })
+      }
+      this.dialogVisible = false
+    },
+    handleUploadSuccess(fileList) {
+      this.rowForm.attachList = fileList
+    },
+    attachDetails(attachList) {
+      // 转换数据结构以匹配组件期望的格式
+      const formattedList = attachList.map(item => ({
+        fileName: item.fileName || item.name || item.originalName,
+        url: item.url || item.path || item.src
+      }))
+      this.$refs.attachDetail.init(formattedList)
+    },
+    // 预览
+    previewFile(fileName, url) {
+      this.previewVisible = true
+      this.$nextTick(() => {
+        this.$refs.preview.init(fileName, url)
+      })
+    }
   },
 };
 </script>

+ 34 - 106
src/views/modules/tech/program-detail.vue

@@ -20,131 +20,54 @@
       </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 :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 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 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 :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 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 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 prop="preTaskTime" 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 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="程序文件"
-          >
+          <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>
+              <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>
@@ -153,11 +76,8 @@
     <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" />
+    <attach-detail-dialog ref="attachDetail" />
   </div>
 </template>
 
@@ -167,9 +87,10 @@ import EDescItem from '../common/e-desc-item'
 import uploadComponent from '../common/upload-component-v2'
 import { getDetail } from '@/api/program'
 import PreviewComponent from '@/views/modules/common/preview-component'
+import AttachDetailDialog from '../common/attach-detail-dialog'
 export default {
   name: 'tech-program-detail',
-  components: { EDesc, EDescItem, uploadComponent, PreviewComponent },
+  components: { EDesc, EDescItem, uploadComponent, PreviewComponent, AttachDetailDialog },
   data() {
     return {
       id: '',
@@ -205,6 +126,13 @@ export default {
         ? { backgroundColor: '#ffcccc' }
         : {}
     },
+    attachDetails(attachList) {
+      const formattedList = attachList.map(item => ({
+        fileName: item.fileName || item.name || item.originalName,
+        url: item.url || item.path || item.src
+      }))
+      this.$refs.attachDetail.init(formattedList)
+    },
     // 预览
     previewFile(fileName, url) {
       this.previewVisible = true

+ 42 - 193
src/views/modules/tech/program.vue

@@ -2,125 +2,47 @@
 <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())
@@ -128,116 +50,43 @@
             }}</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="130"
-          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: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
-            >
+            <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>