Browse Source

优化合同评审表单布局,简化代码结构,调整表单和表格样式

chrislee 4 days ago
parent
commit
cce41bc368

+ 339 - 348
src/views/modules/cus/contract-add-or-update.vue

@@ -5,402 +5,393 @@
       width="70%"
       :close-on-click-modal="false"
       :visible.sync="visible"> -->
-      <div class="my-title">{{ !id ? '发起评审': display ? '评审详情' : '修改' }}</div>
-      <!-- 工作流 -->
-      <div v-show="display && dataForm.workFlowBusinessExt">
-        <el-steps :active="activeNo" finish-status="success" align-center style="margin-bottom: 20px">
-          <template v-for="(item, i) in stepList">
-            <el-step :icon="item.icon" :title="item.title" :description="item.description"></el-step>
+    <div class="my-title">{{ !id ? '发起评审' : display ? '评审详情' : '修改' }}</div>
+    <!-- 工作流 -->
+    <div v-show="display && dataForm.workFlowBusinessExt">
+      <el-steps :active="activeNo" finish-status="success" align-center style="margin-bottom: 20px">
+        <template v-for="(item, i) in stepList">
+          <el-step :icon="item.icon" :title="item.title" :description="item.description"></el-step>
+        </template>
+      </el-steps>
+      <el-collapse style="margin-bottom: 20px">
+        <el-collapse-item>
+          <template slot="title">
+            <span style="color: red">审批日志(展开查看更多):</span>
           </template>
-        </el-steps>
-        <el-collapse style="margin-bottom: 20px">
-          <el-collapse-item>
-            <template slot="title">
-              <span style="color: red">审批日志(展开查看更多):</span>
-            </template>
-            <template v-for="(item, i) in logList">
-              <div>{{++i}}:{{item.approverName}}  {{item.createTime}}  {{item.approvalValue}}</div>
-            </template>
-          </el-collapse-item>
-        </el-collapse>
-      </div>
-      <!-- 表单 -->
-      <el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="auto">
-        <el-row class="my-row">
-           <el-col :span="8" style="padding-left: 20px">
-            <el-form-item label="合同名称" prop="protocolName">
-              <el-input v-model="dataForm.protocolName" placeholder="合同名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8" style="padding-left: 20px">
-            <el-form-item label="沟通编码" prop="coCode">
-              <el-select
-                v-model="dataForm.coCode"
-                ref="coSelectRef"
-                :disabled="display"
-                remote
-                placeholder="请选择"
-                @change="coListSelected">
-                <el-option
-                  v-for="item in options1"
-                  :key="item.value"
-                  :label="item.coCode + ' (' + item.customerName + ')'"
-                  :value="item">
-                </el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8" style="padding-left: 20px">
-            <el-form-item label="评审类别" prop="reType">
-              <el-select
-                v-model="dataForm.reType"
-                :disabled="display"
-                remote
-                placeholder="请选择">
-                <el-option
-                  v-for="item in options"
-                  :key="item.code"
-                  :label="item.value"
-                  :value="item.code">
-                </el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row class="my-row">
-          <el-col :span="8">
-            <el-form-item label="客户名称" prop="name">
-              <el-input v-model="dataForm.name" disabled placeholder="客户名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8" style="padding-left: 20px">
-            <el-form-item label="联系人" prop="cellName">
-              <el-input v-model="dataForm.cellName" disabled placeholder="联系人"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8">
-            <el-form-item label="评审编码" prop="reCode">
-              <el-input v-model="dataForm.reCode" :disabled="true" placeholder="系统自动生成,无需填写"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row class="my-row">
-          <el-col :span="8">
-            <el-form-item label="合同号" prop="contractCode">
-              <el-input v-model="dataForm.contractCode" placeholder="合同号"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="16">
-            <el-form-item label="备注说明">
-              <el-input v-model="dataForm.notes" :disabled="display" placeholder="备注说明"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
+          <template v-for="(item, i) in logList">
+            <div>{{+ + i }}:{{ item.approverName }} {{ item.createTime }} {{ item.approvalValue }}</div>
+          </template>
+        </el-collapse-item>
+      </el-collapse>
+    </div>
+    <!-- 表单 -->
+    <el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="auto">
+      <el-row class="my-row">
+        <el-col :span="8" style="padding-left: 20px">
+          <el-form-item label="合同名称" prop="protocolName">
+            <el-input v-model="dataForm.protocolName" placeholder="合同名称"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8" style="padding-left: 20px">
+          <el-form-item label="沟通编码" prop="coCode">
+            <el-select v-model="dataForm.coCode" ref="coSelectRef" :disabled="display" remote placeholder="请选择"
+              @change="coListSelected">
+              <el-option v-for="item in options1" :key="item.value"
+                :label="item.coCode + ' (' + item.customerName + ')'" :value="item">
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8" style="padding-left: 20px">
+          <el-form-item label="评审类别" prop="reType">
+            <el-select v-model="dataForm.reType" :disabled="display" remote placeholder="请选择">
+              <el-option v-for="item in options" :key="item.code" :label="item.value" :value="item.code">
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row class="my-row">
+        <el-col :span="8">
+          <el-form-item label="客户名称" prop="name">
+            <el-input v-model="dataForm.name" disabled placeholder="客户名称"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8" style="padding-left: 20px">
+          <el-form-item label="联系人" prop="cellName">
+            <el-input v-model="dataForm.cellName" disabled placeholder="联系人"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="评审编码" prop="reCode">
+            <el-input v-model="dataForm.reCode" :disabled="true" placeholder="系统自动生成,无需填写"></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row class="my-row">
+        <el-col :span="8">
+          <el-form-item label="合同号" prop="contractCode">
+            <el-input v-model="dataForm.contractCode" :disabled="true" placeholder="由系统自动生成"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="16">
+          <el-form-item label="备注说明">
+            <el-input v-model="dataForm.notes" :disabled="display" placeholder="备注说明"></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
 
-        <el-row class="my-row my-bg">
-          <div class="title">
-            与物料有关要求的明确性、符合性:
-          </div>
-          <div class="item">
-            <div class="msage">
-              1、顾客对物料的要求与潜在要求是否明确
-            </div>
-            <el-radio v-model="dataForm.part11" :label="1">是</el-radio>
-            <el-radio v-model="dataForm.part11" :label="0">否</el-radio>
+      <el-row class="my-row my-bg">
+        <div class="title">
+          与物料有关要求的明确性、符合性:
+        </div>
+        <div class="item">
+          <div class="msage">
+            1、顾客对物料的要求与潜在要求是否明确
           </div>
-          <div class="item">
-            <div class="msage">
-              2、合同的合法性、完性整性、规范性
-            </div>
-            <el-radio v-model="dataForm.part12" :label="1">是</el-radio>
-            <el-radio v-model="dataForm.part12" :label="0">否</el-radio>
+          <el-radio v-model="dataForm.part11" :label="1">是</el-radio>
+          <el-radio v-model="dataForm.part11" :label="0">否</el-radio>
+        </div>
+        <div class="item">
+          <div class="msage">
+            2、合同的合法性、完性整性、规范性
           </div>
-        </el-row>
+          <el-radio v-model="dataForm.part12" :label="1">是</el-radio>
+          <el-radio v-model="dataForm.part12" :label="0">否</el-radio>
+        </div>
+      </el-row>
 
-        <el-row class="my-row my-bg">
-          <div class="title">
-            风险控制能力:
-          </div>
-          <div class="item">
-            <div class="msage">
-              1、图样和技术要求能否满足生产要求,物料服务和培训能否满足要求
-            </div>
-            <el-radio v-model="dataForm.part21" :label="1">是</el-radio>
-            <el-radio v-model="dataForm.part21" :label="0">否</el-radio>
-          </div>
-          <div class="item">
-            <div class="msage">
-              2、外购器材风险的控制情况,能否保障生产
-            </div>
-            <el-radio v-model="dataForm.part22" :label="1">是</el-radio>
-            <el-radio v-model="dataForm.part22" :label="0">否</el-radio>
-          </div>
-          <div class="item">
-            <div class="msage">
-              3、质量控制情况能否满足要求(生产、检验和验收设备能否满足要求)
-            </div>
-            <el-radio v-model="dataForm.part23" :label="1">是</el-radio>
-            <el-radio v-model="dataForm.part23" :label="0">否</el-radio>
-          </div>
-          <div class="item">
-            <div class="msage">
-              4、财务能否满足生产要求(成本、价格、结算方式与付款能否接受)
-            </div>
-            <el-radio v-model="dataForm.part24" :label="1">是</el-radio>
-            <el-radio v-model="dataForm.part24" :label="0">否</el-radio>
-          </div>
-          <div class="item">
-            <div class="msage">
-              5、规格数量能否满足,运输、交货方式能否满足,生产进度能否满足
-            </div>
-            <el-radio v-model="dataForm.part25" :label="1">是</el-radio>
-            <el-radio v-model="dataForm.part25" :label="0">否</el-radio>
+      <el-row class="my-row my-bg">
+        <div class="title">
+          风险控制能力:
+        </div>
+        <div class="item">
+          <div class="msage">
+            1、图样和技术要求能否满足生产要求,物料服务和培训能否满足要求
           </div>
-        </el-row>
-
-        <el-row class="my-row my-bg">
-          <div class="title">
-            满足规定要求的能力:
+          <el-radio v-model="dataForm.part21" :label="1">是</el-radio>
+          <el-radio v-model="dataForm.part21" :label="0">否</el-radio>
+        </div>
+        <div class="item">
+          <div class="msage">
+            2、外购器材风险的控制情况,能否保障生产
           </div>
-          <div class="item">
-              项目组对履行承诺的风险(包括技术、质量、生产能力、进度、经费)识别:
-            <el-radio v-model="dataForm.part31" :label="1">高</el-radio>
-            <el-radio v-model="dataForm.part31" :label="2">中</el-radio>
-            <el-radio v-model="dataForm.part31" :label="3">低</el-radio>
+          <el-radio v-model="dataForm.part22" :label="1">是</el-radio>
+          <el-radio v-model="dataForm.part22" :label="0">否</el-radio>
+        </div>
+        <div class="item">
+          <div class="msage">
+            3、质量控制情况能否满足要求(生产、检验和验收设备能否满足要求)
           </div>
-          <div class="item">
-              控制能力:
-            <el-radio v-model="dataForm.part32" :label="1">可控</el-radio>
-            <el-radio v-model="dataForm.part32" :label="2">基本可控</el-radio>
-            <el-radio v-model="dataForm.part32" :label="3">不可控</el-radio>
+          <el-radio v-model="dataForm.part23" :label="1">是</el-radio>
+          <el-radio v-model="dataForm.part23" :label="0">否</el-radio>
+        </div>
+        <div class="item">
+          <div class="msage">
+            4、财务能否满足生产要求(成本、价格、结算方式与付款能否接受)
           </div>
-          <div class="item">
-            <div class="label">采取措施:</div>
-            <el-input v-model="dataForm.takeStep" style="display: inline-table; width: calc(100% - 200px);" placeholder="采取措施"></el-input>
+          <el-radio v-model="dataForm.part24" :label="1">是</el-radio>
+          <el-radio v-model="dataForm.part24" :label="0">否</el-radio>
+        </div>
+        <div class="item">
+          <div class="msage">
+            5、规格数量能否满足,运输、交货方式能否满足,生产进度能否满足
           </div>
-        </el-row>
+          <el-radio v-model="dataForm.part25" :label="1">是</el-radio>
+          <el-radio v-model="dataForm.part25" :label="0">否</el-radio>
+        </div>
+      </el-row>
 
-<!--        <el-row class="my-row">-->
-<!--          <upload-component :display="true" :title="'沟通信息表附件'" :accept="'*'" :file-obj-list="fileList1"/>-->
-<!--        </el-row>-->
-        <el-row class="my-row">
-          <upload-component :display-star="false" :display="display" :title="'合同评审表'" :accept="'*'" :file-obj-list="fileList" @uploadSuccess="uploadSuccess" templateCode="contract_review_htpsyjb"/>
-        </el-row>
-        <div style="margin-top: 20px" v-if="isCommVisible">
-          <h3>合同沟通信息:</h3>
-          <communicate-detail ref="commDetail"/>
+      <el-row class="my-row my-bg">
+        <div class="title">
+          满足规定要求的能力:
+        </div>
+        <div class="item">
+          项目组对履行承诺的风险(包括技术、质量、生产能力、进度、经费)识别:
+          <el-radio v-model="dataForm.part31" :label="1">高</el-radio>
+          <el-radio v-model="dataForm.part31" :label="2">中</el-radio>
+          <el-radio v-model="dataForm.part31" :label="3">低</el-radio>
+        </div>
+        <div class="item">
+          控制能力:
+          <el-radio v-model="dataForm.part32" :label="1">可控</el-radio>
+          <el-radio v-model="dataForm.part32" :label="2">基本可控</el-radio>
+          <el-radio v-model="dataForm.part32" :label="3">不可控</el-radio>
         </div>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="onChose">取消</el-button>
-        <el-button v-if="!display" type="primary" @click="dataFormSubmit()" v-reClick>确定</el-button>
-      </span>
+        <div class="item">
+          <div class="label">采取措施:</div>
+          <el-input v-model="dataForm.takeStep" style="display: inline-table; width: calc(100% - 200px);"
+            placeholder="采取措施"></el-input>
+        </div>
+      </el-row>
+
+      <!--        <el-row class="my-row">-->
+      <!--          <upload-component :display="true" :title="'沟通信息表附件'" :accept="'*'" :file-obj-list="fileList1"/>-->
+      <!--        </el-row>-->
+      <el-row class="my-row">
+        <upload-component :display-star="false" :display="display" :title="'合同评审表'" :accept="'*'"
+          :file-obj-list="fileList" @uploadSuccess="uploadSuccess" templateCode="contract_review_htpsyjb" />
+      </el-row>
+      <div style="margin-top: 20px" v-if="isCommVisible">
+        <h3>合同沟通信息:</h3>
+        <communicate-detail ref="commDetail" />
+      </div>
+    </el-form>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="onChose">取消</el-button>
+      <el-button v-if="!display" type="primary" @click="dataFormSubmit()" v-reClick>确定</el-button>
+    </span>
     <!-- </el-dialog> -->
   </div>
 </template>
 
 <script>
-  import { getCoCode, geTreDetail } from '@/api/cus'
-  import { getDictList } from '@/api/dict'
-  import { dealStepData, dealStepLogs } from '@/api/util'
-  import UploadComponent from '../common/upload-component'
-  import CommunicateDetail from '@/views/modules/cus/communicate-detail'
+import { getCoCode, geTreDetail } from '@/api/cus'
+import { getDictList } from '@/api/dict'
+import { dealStepData, dealStepLogs } from '@/api/util'
+import UploadComponent from '../common/upload-component'
+import CommunicateDetail from '@/views/modules/cus/communicate-detail'
 export default {
-    name: 'stock-order-inbound',
-    components: {CommunicateDetail, UploadComponent},
-    computed: {
-      orgId: {
-        get () { return this.$store.state.user.orgId }
-      }
-    },
-    data () {
-      return {
-        visible: false,
-        isCommVisible: false,
-        dictType: 'material_type',
-        options: [],
-        options1: [],
-        dataList: [],
-        fileList: [],
-        fileList1: [],
-        activeNo: 0,
-        stepList: [],
-        logList: [],
-        radio: '',
-        id: 0,
-        dataForm: {
-          coCode: '',
-          name: '',
-          cellName: '',
-          reType: '',
-          notes: '',
-          attachList: []
-        },
-        dataRule: {
-          coCode: [{ required: true, message: '沟通编码不能为空', trigger: 'change' }],
-          reType: [{ required: true, message: '评审类别不能为空', trigger: 'change' }],
-          protocolName: [{ required: true, message: '合同名称不能为空', trigger: 'blur' }]
-          // cellName: [{ required: true, message: '联系人不能为空', trigger: 'blur' }]
-        },
-        display: false
-      }
-    },
-    watch: {
-      'dataForm.coCode' (value) {
-        let v = this.options1.find((item) => { return item.coCode === value })
-        if (v) {
-          this.dataForm.name = v.customerName
-          this.dataForm.cellName = v.contact
-          if (v.attachList) {
-            this.fileList1 = []
-            v.attachList.forEach((item) => {
-              this.fileList1.push({
-                name: item.fileName,
-                url: item.url,
-                id: item.url
-              })
+  name: 'stock-order-inbound',
+  components: { CommunicateDetail, UploadComponent },
+  computed: {
+    orgId: {
+      get() { return this.$store.state.user.orgId }
+    }
+  },
+  data() {
+    return {
+      visible: false,
+      isCommVisible: false,
+      dictType: 'material_type',
+      options: [],
+      options1: [],
+      dataList: [],
+      fileList: [],
+      fileList1: [],
+      activeNo: 0,
+      stepList: [],
+      logList: [],
+      radio: '',
+      id: 0,
+      dataForm: {
+        coCode: '',
+        name: '',
+        cellName: '',
+        reType: '',
+        notes: '',
+        attachList: []
+      },
+      dataRule: {
+        coCode: [{ required: true, message: '沟通编码不能为空', trigger: 'change' }],
+        reType: [{ required: true, message: '评审类别不能为空', trigger: 'change' }],
+        protocolName: [{ required: true, message: '合同名称不能为空', trigger: 'blur' }]
+        // cellName: [{ required: true, message: '联系人不能为空', trigger: 'blur' }]
+      },
+      display: false
+    }
+  },
+  watch: {
+    'dataForm.coCode'(value) {
+      let v = this.options1.find((item) => { return item.coCode === value })
+      if (v) {
+        this.dataForm.name = v.customerName
+        this.dataForm.cellName = v.contact
+        if (v.attachList) {
+          this.fileList1 = []
+          v.attachList.forEach((item) => {
+            this.fileList1.push({
+              name: item.fileName,
+              url: item.url,
+              id: item.url
             })
-          }
+          })
         }
       }
+    }
+  },
+  methods: {
+    onChose() {
+      this.$emit('onChose')
     },
-    methods: {
-      onChose () {
-        this.$emit('onChose')
-      },
-      async init (id, disable) {
-        this.dataForm = {
-          part11: 1,
-          part12: 1,
-          part21: 1,
-          part22: 1,
-          part23: 1,
-          part24: 1,
-          part25: 1,
-          part31: 3,
-          part32: 1
+    async init(id, disable) {
+      this.dataForm = {
+        part11: 1,
+        part12: 1,
+        part21: 1,
+        part22: 1,
+        part23: 1,
+        part24: 1,
+        part25: 1,
+        part31: 3,
+        part32: 1
+      }
+      this.display = disable
+      this.fileList = []
+      this.stepList = []
+      this.logList = []
+      this.visible = true
+      this.id = id || 0
+      // 获取评审类别
+      await getDictList({ type: 'review_type' }).then(({ data }) => {
+        if (data) {
+          this.options = data
         }
-        this.display = disable
-        this.fileList = []
-        this.stepList = []
-        this.logList = []
-        this.visible = true
-        this.id = id || 0
-        // 获取评审类别
-        await getDictList({type: 'review_type'}).then(({data}) => {
-          if (data) {
-            this.options = data
+      })
+      await getCoCode().then(({ data }) => {
+        if (data && data.code === '200') {
+          this.options1 = data.data
+        }
+      })
+      if (!id) return
+      await geTreDetail(id).then(({ data }) => {
+        if (data && data.code === '200') {
+          this.dataForm = data.data
+          // 流程图展示
+          if (data.data.workFlowBusinessExt) {
+            dealStepData(data.data.workFlowBusinessExt.workFlowProcessStepList, this.stepList)
+            dealStepLogs(data.data.workFlowBusinessExt.processLogList, this.logList)
           }
-        })
-        await getCoCode().then(({data}) => {
-          if (data && data.code === '200') {
-            this.options1 = data.data
+          if (data.data.workFlowProcessStepList) {
+            this.activeNo = Number(data.data.workFlowProcessStepList.activeNo)
           }
-        })
-        if (!id) return
-        await geTreDetail(id).then(({data}) => {
-          if (data && data.code === '200') {
-            this.dataForm = data.data
-            // 流程图展示
-            if (data.data.workFlowBusinessExt) {
-              dealStepData(data.data.workFlowBusinessExt.workFlowProcessStepList, this.stepList)
-              dealStepLogs(data.data.workFlowBusinessExt.processLogList, this.logList)
-            }
-            if (data.data.workFlowProcessStepList) {
-              this.activeNo = Number(data.data.workFlowProcessStepList.activeNo)
-            }
-            // 附件显示
-            this.fileList = []
-            data.data.attachList.forEach((item) => {
-              this.fileList.push({
-                name: item.fileName,
-                url: item.url,
-                id: item.url
-              })
+          // 附件显示
+          this.fileList = []
+          data.data.attachList.forEach((item) => {
+            this.fileList.push({
+              name: item.fileName,
+              url: item.url,
+              id: item.url
             })
-          }
-        })
-      },
-      uploadSuccess (fileList) {
-        this.fileList = fileList
-      },
-      // 表单提交
-      dataFormSubmit () {
-        this.$refs['dataForm'].validate((valid) => {
-          if (valid) {
-            let fList = this.fileList
-            if (fList.length > 0) {
-              this.dataForm.attachList = []
-              for (let i = 0; i < fList.length; i++) {
-                this.dataForm.attachList.push({
-                  fileName: fList[i].name,
-                  url: fList[i].url
-                })
-              }
+          })
+        }
+      })
+    },
+    uploadSuccess(fileList) {
+      this.fileList = fileList
+    },
+    // 表单提交
+    dataFormSubmit() {
+      this.$refs['dataForm'].validate((valid) => {
+        if (valid) {
+          let fList = this.fileList
+          if (fList.length > 0) {
+            this.dataForm.attachList = []
+            for (let i = 0; i < fList.length; i++) {
+              this.dataForm.attachList.push({
+                fileName: fList[i].name,
+                url: fList[i].url
+              })
             }
-            this.$http({
-              url: this.$http.adornUrl(`/biz-service/flow/cusContractReview/submit`),
-              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)
-              }
-            })
           }
-        })
-      },
-      validateField (type) {
-        this.$refs.dataForm.validateField(type)
-      },
-      coListSelected (item) {
-        this.dataForm.coCode = item.coCode
-        this.dataForm.coId = item.coId
-        this.showComm(item.coId)
-      },
-      showComm (id) {
-        this.isCommVisible = true
-        this.$nextTick(() => {
-          this.$refs.commDetail.init(id, null, true)
-        })
-      }
+          this.$http({
+            url: this.$http.adornUrl(`/biz-service/flow/cusContractReview/submit`),
+            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)
+            }
+          })
+        }
+      })
+    },
+    validateField(type) {
+      this.$refs.dataForm.validateField(type)
+    },
+    coListSelected(item) {
+      this.dataForm.coCode = item.coCode
+      this.dataForm.coId = item.coId
+      this.showComm(item.coId)
+    },
+    showComm(id) {
+      this.isCommVisible = true
+      this.$nextTick(() => {
+        this.$refs.commDetail.init(id, null, true)
+      })
     }
   }
+}
 </script>
 
 <style scoped>
-.my-line{
+.my-line {
   border-bottom: 1px solid #c0c4cc;
   margin-bottom: 10px;
 }
-.title{
-  padding: 10px 0 ;
+
+.title {
+  padding: 10px 0;
   font-weight: bold;
 }
-.item{
+
+.item {
   padding: 10px 20px;
 }
-.msage{
+
+.msage {
   display: inline-table;
   min-width: 500px;
 }
-.my-bg{
+
+.my-bg {
   border-radius: 4px;
   border: 1px solid #dcdfe6;
   margin: 10px;
   padding: 10px;
 }
-.label{
+
+.label {
   display: inline-table;
 }
 </style>

+ 16 - 32
src/views/modules/tech/project-product-selection.vue

@@ -1,12 +1,7 @@
 <template>
   <div>
     <div class="my-title">选择清单</div>
-    <el-form
-      :model="dataForm"
-      :rules="dataRule"
-      ref="dataForm"
-      label-width="auto"
-    >
+    <el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="auto">
       <el-row class="my-row">
         <el-col :span="8">
           <el-form-item label="物料名称" prop="productName">
@@ -20,26 +15,15 @@
         </el-col>
       </el-row>
     </el-form>
-    <el-table
-      ref="multipleTable"
-      :data="dataList"
-      tooltip-effect="dark"
-      style="width: 100%"
-      @selection-change="handleSelectionChange"
-       @row-click="clickRow"
-    >
+    <el-table ref="multipleTable" :data="dataList" tooltip-effect="dark" style="width: 100%"
+      @selection-change="handleSelectionChange" @row-click="clickRow">
       <el-table-column type="selection" width="55"> </el-table-column>
       <el-table-column prop="projectName" label="项目名称"> </el-table-column>
       <el-table-column prop="productName" label="物料名称"></el-table-column>
     </el-table>
     <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>
@@ -49,7 +33,7 @@ export default {
   name: 'project-product-selection',
   components: {},
   computed: {},
-  data () {
+  data() {
     return {
       visible: false,
       id: 0,
@@ -60,24 +44,23 @@ export default {
       dataRule: {}
     }
   },
-  created () {},
-  beforeDestroy () {},
+  created() { },
+  beforeDestroy() { },
   methods: {
-    onChose () {
+    onChose() {
       this.$emit('onChose')
     },
-    async init (item) {
+    async init(item) {
       this.dataForm = item
-
       this.queryData()
     },
     // 查询
-    queryData () {
+    queryData() {
       this.pageIndex = 1
       this.getDataList()
     },
     // 获取数据列表
-    getDataList () {
+    getDataList() {
       this.$http({
         url: this.$http.adornUrl(`/biz-service/proProductBom/list`),
         method: 'get',
@@ -96,7 +79,7 @@ export default {
         }
       })
     },
-    handleSelectionChange (val) {
+    handleSelectionChange(val) {
       if (val.length > 1) {
         this.$refs.multipleTable.clearSelection() // 清除所有选中
         this.$refs.multipleTable.toggleRowSelection(val.pop()) // 重新选中最后一项
@@ -106,12 +89,12 @@ export default {
       this.multipleSelection = [val[0]]
     },
     // 点击行时触发选中
-    clickRow (row) {
+    clickRow(row) {
       this.$refs.multipleTable.clearSelection()
       this.$refs.multipleTable.toggleRowSelection(row)
     },
     // 表单提交
-    dataFormSubmit () {
+    dataFormSubmit() {
       if (this.multipleSelection == null || this.multipleSelection.length === 0) {
         this.$message.error('请选择清单')
         return
@@ -120,7 +103,8 @@ export default {
         url: this.$http.adornUrl(`/biz-service/projProduct/selection`),
         method: 'post',
         data: this.$http.adornData({
-          productTechnologyId: this.multipleSelection[0].productTechnologyId
+          productTechnologyId: this.dataForm.productTechnologyId
+          , productId: this.multipleSelection[0].productId
         })
       }).then(({ data }) => {
         if (data && data.code === '200') {