Browse Source

委托查询前端

110 2 years ago
parent
commit
ba8a2a3f74

File diff suppressed because it is too large
+ 3520 - 175
itdmWeb/package-lock.json


+ 1 - 0
itdmWeb/package.json

@@ -16,6 +16,7 @@
     "@toast-ui/editor": "^2.1.2",
     "ant-design-vue": "^1.7.2",
     "axios": "^0.18.0",
+    "caniuse-lite": "^1.0.30001492",
     "china-area-data": "^5.0.1",
     "clipboard": "^2.0.4",
     "codemirror": "^5.46.0",

+ 7 - 0
itdmWeb/src/mixins/JeecgListMixin.js

@@ -16,6 +16,7 @@ export const JeecgListMixin = {
       queryParam: {},
       /* 数据源 */
       dataSource:[],
+      options:[],
       /* 分页参数 */
       ipagination:{
         current: 1,
@@ -86,6 +87,12 @@ export const JeecgListMixin = {
         if (res.success) {
           //update-begin---author:zhangyafei    Date:20201118  for:适配不分页的数据列表------------
           this.dataSource = res.result.records||res.result;
+          this.options =  res.result.records.map(item => {
+            return {
+              label: item.weituoClient,
+              value: item.id,
+            };
+          });
           if(res.result.total)
           {
             this.ipagination.total = res.result.total;

+ 122 - 3
itdmWeb/src/views/module-iTDM/gongdanshuju/ItdmGongdanShujuList.vue

@@ -5,8 +5,23 @@
       <a-form layout="inline" @keyup.enter.native="searchQuery">
         <a-row :gutter="24">
           <a-col :xl="6" :lg="7" :md="8" :sm="24">
-            <a-form-item label="工单id">
-              <a-input placeholder="请输入工单id" values="123"  v-model="queryParam.woId"></a-input>
+            <a-form-item label="委托单位名称">
+              <j-search-select-tag placeholder="请选择委托单位名称" :dictOptions="weituoClientList" @change="handlewcChange"/>
+            </a-form-item>
+          </a-col>
+           <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <a-form-item label="委托编号">
+              <j-search-select-tag placeholder="请选择委托编号" :dictOptions="weituoNoList" @change="handlewnChange"/>
+            </a-form-item>
+          </a-col>
+          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <a-form-item label="工单号">
+              <j-search-select-tag placeholder="请选择工单"  v-model="queryParam.woId" :dictOptions="gongdanList" @change="handlegdChange"/>
+            </a-form-item>
+          </a-col>
+          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <a-form-item label="日期">
+              <j-search-select-tag placeholder="请选择日期"  :dictOptions="gongdanDateList" @change="handlegddChange"/>
             </a-form-item>
           </a-col>
           <a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -147,6 +162,17 @@
     },
     data () {
       return {
+        weituoClientList:[],
+        weituoNoList:[],
+        gongdanList:[],
+        gongdanDateList:[],
+        gongdanDetailList:[],
+        queryParam: {
+          shiyanType: 0,
+          shiyanKaishitime: "",
+          shiyanJieshutime: ""
+
+        },
         // queryParam:{
         //   woId:"1660195756643786754",
         //   shiyanType:"0,1",
@@ -207,6 +233,14 @@
             align:"center",
             dataIndex: 'shiyanShidu'
           },
+            {
+          title: '任务日期',
+          align: 'center',
+          dataIndex: 'workDate',
+          customRender: function(text) {
+            return !text ? '' : (text.length > 10 ? text.substr(0, 10) : text)
+          }
+        },
           // {
           //   title:'试验图片',
           //   align:"center",
@@ -242,6 +276,7 @@
     },
     created() {
     this.getSuperFieldList();
+    this.init();
     },
     computed: {
       importExcelUrl: function(){
@@ -249,8 +284,92 @@
       },
     },
     methods: {
-      initDictConfig(){
+
+      init(){
+
+        getAction('/weituo/itdmWeituoInfo/distinctClientList', {}).then((res) => {
+          if (res.success) {
+            console.log(res.result)
+            this.weituoClientList = res.result.map(i=>{
+              return { value: i, text: i}
+            })
+            console.log(this.weituoClientList)
+          }
+        })
+
+      },
+      
+      handlewcChange(data){
+
+      var weituoClient={weituoClient:data}
+      getAction('/weituo/itdmWeituoInfo/weituoNoList', weituoClient).then((res) => {
+        if (res.success) {
+          console.log("xxxxxxxxxxxxxxxxxxx")
+          console.log(res.result)
+          this.weituoNoList = res.result.map(i=>{
+            return { value: i.id, text: i.weituoNo}
+          })
+          console.log(this.weituoNoList)
+        }
+      })
+      console.log(data)
       },
+
+      handlewnChange(data){
+
+        var weituoClient={weituoId:data}
+        getAction('/gongdandetail/itdmGongdanDetail/gongdanIdList', weituoClient).then((res) => {
+          if (res.success) {
+            console.log("=========================")
+            console.log(res.result)
+            this.gongdanList = res.result.map(i=>{
+              return { value: i, text: i}
+            })
+            console.log(this.gongdanList)
+          }
+        })
+
+
+
+      },
+
+      handlegdChange(data){
+
+          var woId={woId:data}
+          getAction('/gongdandetail/itdmGongdanDetail/gongdanDateListByWoId', woId).then((res) => {
+          if (res.success) {
+            console.log("****************")
+            console.log(res.result)
+            this.gongdanDetailList = res.result;
+            console.log(this.gongdanDetailList)
+            this.gongdanDateList = res.result.map(i=>{
+              return { value: i.shijiWorkDate, text: i.shijiWorkDate}
+            })
+        
+            
+          }
+        })
+
+      },
+      handlegddChange(data) {
+        console.log(data);
+        for (const key in this.gongdanDetailList) {
+    
+          if(this.gongdanDetailList[key].shijiWorkDate === data) {
+            
+            this.queryParam.shiyanType = this.gongdanDetailList[key].shijiShiiyanType;
+            this.queryParam.shiyanKaishitime = this.gongdanDetailList[key].shijiStartTime;
+            this.queryParam.shiyanJieshutime = this.gongdanDetailList[key].shijiEndTime;
+            console.log(this.queryParam)
+          }
+           
+        }
+      },
+
+      initDictConfig() {
+      },
+
+
       getSuperFieldList(){
         let fieldList=[];
         fieldList.push({type:'string',value:'woId',text:'工单id',dictCode:''})

+ 566 - 0
itdmWeb/src/views/module-iTDM/itdmShiYanXuQiu/ShiyanXuqiuList.vue

@@ -0,0 +1,566 @@
+<template>
+  <a-card :bordered="false">
+    <table class="main-table">
+
+
+
+<td class="title">资质要求</td>
+<td class="content" style="display: flex; flex-direction: column; align-items: center; justify-content: center; height: auto;">
+  <div style="width:100%; flex-wrap:wrap; display:flex; flex-direction:column;">
+    <div style="width:100%; display:flex; flex-direction:row; justify-content:space-between;">
+      <div style="width: auto;">
+        <input type="checkbox" v-model="tableData.zizhiYaoqiu_dictText1" />
+        <label>气候环境</label>
+      </div>
+      <div style="width: auto;">
+        <input type="checkbox" v-model="tableData.zizhiYaoqiu_dictText6" />
+        <label>模态试验</label>
+      </div>
+      <div style="width: auto;">
+        <input type="checkbox" v-model="tableData.zizhiYaoqiu_dictText11" />
+        <label>静强度</label>
+      </div>
+    </div>
+    <div style="width:100%; display:flex; flex-direction:row; justify-content:space-between;">
+      <div style="width: auto;">
+        <input type="checkbox" v-model="tableData.zizhiYaoqiu_dictText2" />
+        <label>力学环境</label>
+      </div>
+      <div style="width: auto;">
+        <input type="checkbox" v-model="tableData.zizhiYaoqiu_dictText7" />
+      
+
+  <label>外场测试</label>
+      </div>
+      <div style="width: auto;">
+        <input type="checkbox" v-model="tableData.zizhiYaoqiu_dictText12" />
+        <label>其他</label>
+      </div>
+    </div>
+    <div style="width:100%; display:flex; flex-direction:row; justify-content:space-between;">
+      <div style="width: auto;">
+        <input type="checkbox" v-model="tableData.zizhiYaoqiu_dictText3" />
+        <label>可靠性试验</label>
+      </div>
+      <div style="width: auto;">
+        <input type="checkbox" v-model="tableData.zizhiYaoqiu_dictText8" />
+        <label>课题研究</label>
+      </div>
+      <div style="width: auto;">
+        
+      </div>
+    </div>
+    <div style="width:100%; display:flex; flex-direction:row; justify-content:space-between;">
+      <div style="width: auto;">
+        <input type="checkbox" v-model="tableData.zizhiYaoqiu_dictText4" />
+        <label>综合环境算</label>
+      </div>
+      <div style="width: auto;">
+        <input type="checkbox" v-model="tableData.zizhiYaoqiu_dictText9" />
+        <label>淋雨试验</label>
+      </div>
+      <div style="width: auto;">
+      </div>
+    </div>
+    <div style="width:100%; display:flex; flex-direction:row; justify-content:space-between;">
+      <div style="width: auto;">
+        <input type="checkbox" v-model="tableData.zizhiYaoqiu_dictText5" />
+        <label>仿真计</label>
+      </div>
+      <div style="width: auto;">
+        <input type="checkbox" v-model="tableData.zizhiYaoqiu_dictText10" />
+        <label>沙尘试验</label>
+      </div>
+      <div style="width: auto;">
+      </div>
+    </div>
+  </div>
+</td>
+    <td class="title">产品线</td>
+        <td class="content" style="display: flex; align-items: center; justify-content: center">
+          <input type="checkbox" v-model="tableData.jishuzhan_dictText1" /> 检测试验&nbsp;<input
+            type="checkbox"
+            v-model="tableData.jishuzhan_dictText2"
+          />
+          研制试验&nbsp; 
+ </td>
+
+            <!-- <tr>
+              <td style="min-width: 50px">1</td>
+              <td style="max-width: 130px">
+                <input v-model="tableData.newkehu" style="text-align: center; max-width: 130px" />
+              </td>
+              <td style="max-width: 130px">
+                <input v-model="tableData.kehuHangye" style="text-align: center; max-width: 130px" />
+              </td>
+              <td style="max-width: 130px">
+                <input v-model="tableData.kehuMingcheng" style="text-align: center; max-width: 130px" />
+              </td>
+            </tr> -->
+          </table>
+    <td class="title">试验分级</td>
+        <td class="content">
+          <input style="width: 100px; text-align: center; margin-right: 50px" v-model="tableData.zhushenRen" />
+          重要性系数
+          <input style="width: 100px; text-align: center" v-model="tableData.zhushenShijian" />
+        </td>
+            <td class="title">重要性标准</td>
+        <td class="content">
+          <input style="width: 100px; text-align: center; margin-right: 50px" v-model="tableData.zhushenRen" />
+          气候试验
+          <input style="width: 100px; text-align: center" v-model="tableData.qihoushiyan" />
+          力学试验
+          <input style="width: 180px; text-align: center" v-model="tableData.lixueshiyan" />
+           力学/气候
+          <input style="width: 100px; text-align: center" v-model="tableData.lixueqihou" />
+          重要试验
+          <input style="width: 100px; text-align: center" v-model="tableData.zhongyaoshiyan" />
+          非标试验
+          <input style="width: 100px; text-align: center" v-model="tableData.feibiaozshiyan" />
+        </td>
+      </tr>
+      <tr style="height: 150px">
+        <td class="title">实验信息</td>
+        <td class="content"><input v-model="tableData.shiyanXinxi" style="text-align: center" /></td>
+        <td class="title">定制需求</td>
+        <td class="content">
+          <div style="display: flex; align-items: center; justify-content: center">
+            方案设计:
+            <input type="radio" name="fangan" value="需要" v-model="tableData.fanganSheji" />需要&nbsp;<input
+              type="radio"
+              name="fangan"
+              value="不需要"
+              v-model="tableData.fanganSheji"
+            />不需要&nbsp;&nbsp; 工装设计:
+            <input type="radio" name="gongzhuang" value="需要" v-model="tableData.gongzhuangSheji" />需要 &nbsp;<input
+              type="radio"
+              name="gongzhuang"
+              value="不需要"
+              v-model="tableData.gongzhuangSheji"
+            />不需要
+          </div>
+
+          <div style="display: flex; align-items: center; justify-content: center">
+            试验评审:
+            <input type="radio" name="shiyan" value="需要" v-model="tableData.shiyanPingshen" />需要 &nbsp;<input
+              type="radio"
+              name="shiyan"
+              value="不需要"
+              v-model="tableData.shiyanPingshen"
+            />不需要&nbsp;&nbsp; 用餐安排:
+            <input type="radio" name="yongcan" value="需要" v-model="tableData.yongcanAnpai" />需要 &nbsp;<input
+              type="radio"
+              name="yongcan"
+              value="不需要"
+              v-model="tableData.yongcanAnpai"
+            />不需要
+          </div>
+
+          <div style="display: flex; align-items: center; justify-content: center">
+            用车安排: <input type="radio" name="yongche" value="需要" v-model="tableData.yongcheAnpai" />需要
+            &nbsp;<input
+              type="radio"
+              name="yongche"
+              value="不需要"
+              v-model="tableData.yongcheAnpai"
+            />不需要&nbsp;&nbsp; 住宿安排:
+            <input type="radio" name="zhusu" value="需要" v-model="tableData.zhusuAnpai" />需要 &nbsp;<input
+              type="radio"
+              name="zhusu"
+              value="不需要"
+              v-model="tableData.zhusuAnpai"
+            />不需要
+          </div>
+        </td>
+      </tr>
+      <tr>
+        <td class="title">客户<br />联系信息</td>
+        <td class="content">
+          姓名:<input style="width: 110px" v-model="tableData.kehuName" /> 电话:<input
+            style="width: 150px"
+            v-model="tableData.kehuPhone"
+          />
+        </td>
+        <td class="title">合同编号</td>
+        <td class="content">
+          <input style="width: 100%; text-align: center" v-model="tableData.hetongBianhao" />
+        </td>
+      </tr>
+      <tr>
+        <td class="title">试验要求</td>
+        <td class="content" colspan="3">
+          <input style="width: 100%; text-align: center" v-model="tableData.shiyanYaoqiu" />
+        </td>
+      </tr>
+      <tr>
+        <td class="title">报告体系</td>
+        <td class="content" style="display: flex; align-items: center; justify-content: center">
+          <input type="radio" name="baogao" value="海检版" v-model="tableData.baogaoTixi" /> 海检版&nbsp;
+          <input type="radio" name="baogao" value="瑞莱版" v-model="tableData.baogaoTixi" /> 瑞莱版&nbsp;
+          <input type="radio" name="baogao" value="瑞莱海检版" v-model="tableData.baogaoTixi" /> 瑞莱海检版
+        </td>
+        <td class="title">资质要求</td>
+        <td class="content" style="display: flex; align-items: center; justify-content: center">
+          <input type="checkbox" v-model="tableData.zizhiYaoqiu_dictText1" /> CNAS&nbsp;<input
+            type="checkbox"
+            v-model="tableData.zizhiYaoqiu_dictText2"
+          />
+          CMA&nbsp; <input type="checkbox" v-model="tableData.zizhiYaoqiu_dictText3" /> ISTA &nbsp;<input
+            type="checkbox"
+            v-model="tableData.zizhiYaoqiu_dictText4"
+          />
+          船级社&nbsp; <input type="checkbox" v-model="tableData.zizhiYaoqiu_dictText5" /> 无
+        </td>
+      </tr>
+      <tr>
+        <td class="title">项目<br />虚拟结算额</td>
+        <td class="content" colspan="3">
+          <div style="display: flex; align-items: flex-end">
+            <table>
+              <thead>
+                <td>序号</td>
+                <td>试验设备</td>
+                <td>试验时间(h)</td>
+                <td>试验单价(rmb/h)</td>
+                <td>试验费用</td>
+                <td style="width: 60px">操作</td>
+              </thead>
+              <tr v-for="(item, index) in tableData.cleanPrice" :key="index">
+                <td>{{ index + 1 }}</td>
+                <td><input style="max-width: 150px; text-align: center" v-model="item.shebei" /></td>
+                <td><input style="max-width: 150px; text-align: center" v-model="item.time" /></td>
+                <td><input style="max-width: 150px; text-align: center" v-model="item.price" /></td>
+                <td><input style="max-width: 150px; text-align: center" v-model="item.total" /></td>
+                <td><div class="delBtn" @click="delRow(index)" v-show="tableData.cleanPrice.length >= 2">删除</div></td>
+              </tr>
+              <tr>
+                <td>合计</td>
+                <td></td>
+                <td></td>
+                <td></td>
+                <td>{{ totalCleanPrice }}</td>
+              </tr>
+            </table>
+            <div class="addRow" @click="addRow">添加</div>
+            <div class="addRow" @click="addSubTable">提交</div>
+          </div>
+        </td>
+      </tr>
+      <tr>
+        <td class="title">预计报价</td>
+        <td class="content" colspan="3">
+          <input style="width: 100%; text-align: center" v-model="tableData.yujiBaojia" />
+        </td>
+      </tr>
+      <tr>
+        <td class="title">评审结论</td>
+        <td class="content">
+          <input style="width: 100%; text-align: center" v-model="tableData.pingshenJielun" />
+        </td>
+        <td class="title">主审人</td>
+        <td class="content">
+          <input style="width: 100px; text-align: center; margin-right: 50px" v-model="tableData.zhushenRen" />
+          时间
+          <input style="width: 100px; text-align: center" v-model="tableData.zhushenShijian" />
+        </td>
+      </tr>
+    </table>
+    <div class="btn" @click="submit">提交</div>
+  </a-card>
+</template>
+
+<script>
+import '@/assets/less/TableExpand.less'
+import { mixinDevice } from '@/utils/mixin'
+import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+
+export default {
+  name: 'ItdmShiyanxiangmuList',
+  mixins: [JeecgListMixin, mixinDevice],
+  data() {
+    return {
+      description: '试验项目输入管理页面',
+      tableData: {
+        cleanPrice: [
+          {
+            total: 0,
+          },
+        ],
+      },
+      // 表头
+      columns: [
+        {
+          title: '#',
+          dataIndex: '',
+          key: 'rowIndex',
+          width: 60,
+          align: 'center',
+          customRender: function (t, r, index) {
+            return parseInt(index) + 1
+          },
+        },
+        {
+          title: '是否新客户',
+          align: 'center',
+          dataIndex: 'newkehu',
+        },
+        {
+          title: '客户行业',
+          align: 'center',
+          dataIndex: 'kehuHangye',
+        },
+        {
+          title: '客户名称',
+          align: 'center',
+          dataIndex: 'kehuMingcheng',
+        },
+        {
+          title: '输入类型',
+          align: 'center',
+          dataIndex: 'shuruLeixing',
+        },
+        {
+          title: '试验信息',
+          align: 'center',
+          dataIndex: 'shiyanXinxi',
+        },
+        {
+          title: '方案设计',
+          align: 'center',
+          dataIndex: 'fanganSheji_dictText',
+        },
+        {
+          title: '试验评审',
+          align: 'center',
+          dataIndex: 'shiyanPingshen_dictText',
+        },
+        {
+          title: '用车安排',
+          align: 'center',
+          dataIndex: 'yongcheAnpai_dictText',
+        },
+        {
+          title: '工装设计',
+          align: 'center',
+          dataIndex: 'gongzhuangSheji_dictText',
+        },
+        {
+          title: '用餐安排',
+          align: 'center',
+          dataIndex: 'yongcanAnpai_dictText',
+        },
+        {
+          title: '住宿安排',
+          align: 'center',
+          dataIndex: 'zhusuAnpai_dictText',
+        },
+        {
+          title: '报告确认',
+          align: 'center',
+          dataIndex: 'baogaoQueren_dictText',
+        },
+        {
+          title: '客户姓名',
+          align: 'center',
+          dataIndex: 'kehuName',
+        },
+        {
+          title: '客户电话',
+          align: 'center',
+          dataIndex: 'kehuPhone',
+        },
+        {
+          title: '合同编号',
+          align: 'center',
+          dataIndex: 'hetongBianhao',
+        },
+        {
+          title: '试验要求',
+          align: 'center',
+          dataIndex: 'shiyanYaoqiu',
+        },
+        {
+          title: '报告体系',
+          align: 'center',
+          dataIndex: 'baogaoTixi_dictText',
+        },
+        {
+          title: '资质要求',
+          align: 'center',
+          dataIndex: 'zizhiYaoqiu_dictText',
+        },
+        {
+          title: '预计报价',
+          align: 'center',
+          dataIndex: 'yujiBaojia',
+        },
+        {
+          title: '评审结论',
+          align: 'center',
+          dataIndex: 'pingshenJielun',
+        },
+        {
+          title: '主审人',
+          align: 'center',
+          dataIndex: 'zhushenRen',
+        },
+        {
+          title: '主审时间',
+          align: 'center',
+          dataIndex: 'zhushenShijian',
+        },
+        {
+          title: '操作',
+          dataIndex: 'action',
+          align: 'center',
+          fixed: 'right',
+          width: 147,
+          scopedSlots: { customRender: 'action' },
+        },
+      ],
+      url: {
+        list: '/itdmShiYanXiangMu/itdmShiyanxiangmu/list',
+        delete: '/itdmShiYanXiangMu/itdmShiyanxiangmu/delete',
+        deleteBatch: '/itdmShiYanXiangMu/itdmShiyanxiangmu/deleteBatch',
+        exportXlsUrl: '/itdmShiYanXiangMu/itdmShiyanxiangmu/exportXls',
+        importExcelUrl: 'itdmShiYanXiangMu/itdmShiyanxiangmu/importExcel',
+      },
+      dictOptions: {},
+      superFieldList: [],
+    }
+  },
+  created() {
+    this.getSuperFieldList()
+  },
+  computed: {
+    importExcelUrl: function () {
+      return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
+    },
+    totalCleanPrice() {
+      let total = 0
+      this.tableData.cleanPrice.forEach((item) => {
+        if (!isNaN(item.total)) {
+          total += Number(item.total)
+        }
+      })
+      return total.toFixed(2)
+    },
+  },
+  methods: {
+    submit() {
+    
+      let zizhiYaoqiu = []
+      if (this.tableData.zizhiYaoqiu_dictText1) {
+        zizhiYaoqiu.push('CNAS')
+      }
+      if (this.tableData.zizhiYaoqiu_dictText2) {
+        zizhiYaoqiu.push('CMA')
+      }
+      if (this.tableData.zizhiYaoqiu_dictText3) {
+        zizhiYaoqiu.push('ISTA')
+      }
+      if (this.tableData.zizhiYaoqiu_dictText4) {
+        zizhiYaoqiu.push('船级社')
+      }
+      if (this.tableData.zizhiYaoqiu_dictText5) {
+        zizhiYaoqiu.push('无')
+      }
+      this.tableData.zizhiYaoqiu = zizhiYaoqiu.join(',')
+        console.log(this.tableData)
+    },
+    addSubTable() {
+      console.log(this.tableData.cleanPrice)
+    },
+    addRow() {
+      this.tableData.cleanPrice.push({})
+    },
+    delRow(index) {
+      this.tableData.cleanPrice.splice(index, 1)
+    },
+    initDictConfig() {},
+    getSuperFieldList() {
+      let fieldList = []
+      fieldList.push({ type: 'string', value: 'newkehu', text: '是否新客户', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'kehuHangye', text: '客户行业', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'kehuMingcheng', text: '客户名称', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'shuruLeixing', text: '输入类型', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'shiyanXinxi', text: '试验信息', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'fanganSheji', text: '方案设计', dictCode: 'fangan_sheji' })
+      fieldList.push({ type: 'string', value: 'shiyanPingshen', text: '试验评审', dictCode: 'shiyan_pingshen' })
+      fieldList.push({ type: 'string', value: 'yongcheAnpai', text: '用车安排', dictCode: 'yongche_anpai' })
+      fieldList.push({ type: 'string', value: 'gongzhuangSheji', text: '工装设计', dictCode: 'gongzhuang_sheji' })
+      fieldList.push({ type: 'string', value: 'yongcanAnpai', text: '用餐安排', dictCode: 'yongcan_anpai' })
+      fieldList.push({ type: 'string', value: 'zhusuAnpai', text: '住宿安排', dictCode: 'zhusu_anpai' })
+      fieldList.push({ type: 'string', value: 'baogaoQueren', text: '报告确认', dictCode: 'baogao_queren' })
+      fieldList.push({ type: 'string', value: 'kehuName', text: '客户姓名', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'kehuPhone', text: '客户电话', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'hetongBianhao', text: '合同编号', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'shiyanYaoqiu', text: '试验要求', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'baogaoTixi', text: '报告体系', dictCode: 'baogao_tixi' })
+      fieldList.push({ type: 'string', value: 'zizhiYaoqiu', text: '资质要求', dictCode: 'zizhi_yaoqiu' })
+      fieldList.push({ type: 'string', value: 'yujiBaojia', text: '预计报价', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'pingshenJielun', text: '评审结论', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'zhushenRen', text: '主审人', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'zhushenShijian', text: '主审时间', dictCode: '' })
+      this.superFieldList = fieldList
+    },
+  },
+}
+</script>
+<style scoped>
+@import '~@assets/less/common.less';
+table * {
+  box-sizing: border-box;
+  font-size: 14px;
+}
+table {
+  border: 1px solid rgb(30, 53, 65);
+}
+input {
+  padding: 0 20px;
+  height: 50px;
+  outline: none;
+  border: none;
+  background: transparent;
+}
+td {
+  text-align: center;
+  border: 1px solid rgb(30, 53, 65);
+}
+
+tr {
+  height: 50px;
+}
+
+.main-table {
+  background-color: rgb(219, 238, 244);
+}
+.title {
+  background-color: #fff;
+}
+.addRow {
+  width: 60px;
+  height: 24px;
+  background-color: #fff;
+  border-radius: 4px;
+  text-align: center;
+  line-height: 24px;
+  font-size: 12px;
+  margin-left: 20px;
+  cursor: pointer;
+}
+.btn {
+  display: inline-block;
+  padding: 4px 15px;
+  font-size: 13px;
+  border: 1px solid rgb(3, 188, 244);
+  color: rgb(8, 187, 241);
+  border-radius: 4px;
+  cursor: pointer;
+}
+.delBtn {
+  padding: 3px 10px;
+  text-align: center;
+  font-size: 12px;
+}
+</style>

+ 31 - 20
itdmWeb/src/views/module-iTDM/moban/modules/ItdmMobanForm.vue

@@ -4,18 +4,38 @@
       <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
         <a-row>
           <a-col :span="24">
-            <a-form-model-item label="模板名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
-              <a-input v-model="model.name" placeholder="请输入模板名称"  ></a-input>
+            <a-form-model-item label="技术线" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="jishuXian">
+              <j-multi-select-tag type="checkbox" v-model="model.jishuXian" dictCode="jishu_xian" placeholder="请选择技术线" />
             </a-form-model-item>
           </a-col>
           <a-col :span="24">
-            <a-form-model-item label="模板类型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="type">
-              <j-search-select-tag v-model="model.type" dict="muban.type"  />
+            <a-form-model-item label="产品线" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="chanpinXian">
+              <j-multi-select-tag type="checkbox" v-model="model.chanpinXian" dictCode="chanpin_xian" placeholder="请选择产品线" />
             </a-form-model-item>
           </a-col>
           <a-col :span="24">
-            <a-form-model-item label="模板地址" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="filePath">
-              <j-upload v-model="model.filePath" :number="1"  :multiple="false"  ></j-upload>
+            <a-form-model-item label="试验分级" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="shiyanxingFenji">
+              <a-input v-model="model.shiyanxingFenji" placeholder="请输入试验分级"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="beizhu">
+              <a-input v-model="model.beizhu" placeholder="请输入备注"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="评审结论" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="pingshenJielun">
+              <a-input v-model="model.pingshenJielun" placeholder="请输入评审结论"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="主审人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="zhushenRen">
+              <a-input v-model="model.zhushenRen" placeholder="请输入主审人"  ></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item label="工程技术部部长" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="gongchengBuzhang">
+              <a-input v-model="model.gongchengBuzhang" placeholder="请输入工程技术部部长"  ></a-input>
             </a-form-model-item>
           </a-col>
         </a-row>
@@ -30,7 +50,7 @@
   import { validateDuplicateValue } from '@/utils/util'
 
   export default {
-    name: 'ItdmMobanForm',
+    name: 'ShiyanXuqiuForm',
     components: {
     },
     props: {
@@ -55,20 +75,11 @@
         },
         confirmLoading: false,
         validatorRules: {
-          name: [
-            { required: true, message: '请输入模板名称!'},
-          ],
-          type: [
-            { required: true, message: '请输入模板类型!'},
-          ],
-          filePath: [
-            { required: true, message: '请输入模板地址!'},
-          ],
         },
         url: {
-          add: "/moban/itdmMoban/add",
-          edit: "/moban/itdmMoban/edit",
-          queryById: "/moban/itdmMoban/queryById"
+          add: "/itdmShiYanXuQiu/shiyanXuqiu/add",
+          edit: "/itdmShiYanXuQiu/shiyanXuqiu/edit",
+          queryById: "/itdmShiYanXuQiu/shiyanXuqiu/queryById"
         }
       }
     },
@@ -115,7 +126,7 @@
               that.confirmLoading = false;
             })
           }
-
+         
         })
       },
     }

+ 4 - 4
itdmWeb/src/views/module-iTDM/moban/modules/ItdmMobanModal.Style#Drawer.vue

@@ -7,7 +7,7 @@
     @close="close"
     destroyOnClose
     :visible="visible">
-    <itdm-moban-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></itdm-moban-form>
+    <shiyan-xuqiu-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></shiyan-xuqiu-form>
     <div class="drawer-footer">
       <a-button @click="handleCancel" style="margin-bottom: 0;">关闭</a-button>
       <a-button v-if="!disableSubmit"  @click="handleOk" type="primary" style="margin-bottom: 0;">提交</a-button>
@@ -17,12 +17,12 @@
 
 <script>
 
-  import ItdmMobanForm from './ItdmMobanForm'
+  import ShiyanXuqiuForm from './ShiyanXuqiuForm'
 
   export default {
-    name: 'ItdmMobanModal',
+    name: 'ShiyanXuqiuModal',
     components: {
-      ItdmMobanForm
+      ShiyanXuqiuForm
     },
     data () {
       return {

+ 4 - 4
itdmWeb/src/views/module-iTDM/moban/modules/ItdmMobanModal.vue

@@ -8,17 +8,17 @@
     :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
     @cancel="handleCancel"
     cancelText="关闭">
-    <itdm-moban-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></itdm-moban-form>
+    <shiyan-xuqiu-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></shiyan-xuqiu-form>
   </j-modal>
 </template>
 
 <script>
 
-  import ItdmMobanForm from './ItdmMobanForm'
+  import ShiyanXuqiuForm from './ShiyanXuqiuForm'
   export default {
-    name: 'ItdmMobanModal',
+    name: 'ShiyanXuqiuModal',
     components: {
-      ItdmMobanForm
+      ShiyanXuqiuForm
     },
     data () {
       return {

+ 457 - 330
itdmWeb/src/views/module-iTDM/itdmShiyanxiangmu/ItdmShiyanxiangmuList.vue

@@ -1,350 +1,477 @@
 <template>
   <a-card :bordered="false">
-    <!-- 查询区域 -->
-    <div class="table-page-search-wrapper">
-      <a-form layout="inline" @keyup.enter.native="searchQuery">
-        <a-row :gutter="24">
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
-            <a-form-item label="是否新客户">
-              <a-input placeholder="请输入是否新客户" v-model="queryParam.newkehu"></a-input>
-            </a-form-item>
-          </a-col>
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
-            <a-form-item label="客户行业">
-              <a-input placeholder="请输入客户行业" v-model="queryParam.kehuHangye"></a-input>
-            </a-form-item>
-          </a-col>
-          <template v-if="toggleSearchStatus">
-            <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="客户名称">
-                <a-input placeholder="请输入客户名称" v-model="queryParam.kehuMingcheng"></a-input>
-              </a-form-item>
-            </a-col>
-            <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="输入类型">
-                <a-input placeholder="请输入输入类型" v-model="queryParam.shuruLeixing"></a-input>
-              </a-form-item>
-            </a-col>
-            <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="客户姓名">
-                <a-input placeholder="请输入客户姓名" v-model="queryParam.kehuName"></a-input>
-              </a-form-item>
-            </a-col>
-            <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="客户电话">
-                <a-input placeholder="请输入客户电话" v-model="queryParam.kehuPhone"></a-input>
-              </a-form-item>
-            </a-col>
-            <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="合同编号">
-                <a-input placeholder="请输入合同编号" v-model="queryParam.hetongBianhao"></a-input>
-              </a-form-item>
-            </a-col>
-            <a-col :xl="6" :lg="7" :md="8" :sm="24">
-              <a-form-item label="试验要求">
-                <a-input placeholder="请输入试验要求" v-model="queryParam.shiyanYaoqiu"></a-input>
-              </a-form-item>
-            </a-col>
-          </template>
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
-            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
-              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
-              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
-              <a @click="handleToggleSearch" style="margin-left: 8px">
-                {{ toggleSearchStatus ? '收起' : '展开' }}
-                <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
-              </a>
-            </span>
-          </a-col>
-        </a-row>
-      </a-form>
-    </div>
-    <!-- 查询区域-END -->
+    <table class="main-table">
+      <tr>
+        <td class="title" style="width: 100px">委托单位</td>
+        <td class="content" style="width: 360px">
+          <table>
+            <tr>
+              <td>序号</td>
+              <td>新客户</td>
+              <td>客户行业</td>
+              <td>客户名称</td>
+            </tr>
+            <tr>
+              <td style="min-width: 50px">1</td>
+              <td style="max-width: 130px">
+                <input v-model="tableData.newkehu" style="text-align: center; max-width: 130px" />
+              </td>
+              <td style="max-width: 130px">
+                <input v-model="tableData.kehuHangye" style="text-align: center; max-width: 130px" />
+              </td>
+              <td style="max-width: 130px">
+                <input v-model="tableData.kehuMingcheng" style="text-align: center; max-width: 130px" />
+              </td>
+            </tr>
+          </table>
+        </td>
+        <td class="title white" style="width: 100px">输入类型</td>
+        <td class="content" style="width: 450px">
+          <input v-model="tableData.shuruLeixing" style="text-align: center" />
+        </td>
+      </tr>
+      <tr style="height: 150px">
+        <td class="title">实验信息</td>
+        <td class="content"><input v-model="tableData.shiyanXinxi" style="text-align: center" /></td>
+        <td class="title">定制需求</td>
+        <td class="content">
+          <div style="display: flex; align-items: center; justify-content: center">
+            方案设计:
+            <input type="radio" name="fangan" value="需要" v-model="tableData.fanganSheji" />需要&nbsp;<input
+              type="radio"
+              name="fangan"
+              value="不需要"
+              v-model="tableData.fanganSheji"
+            />不需要&nbsp;&nbsp; 工装设计:
+            <input type="radio" name="gongzhuang" value="需要" v-model="tableData.gongzhuangSheji" />需要 &nbsp;<input
+              type="radio"
+              name="gongzhuang"
+              value="不需要"
+              v-model="tableData.gongzhuangSheji"
+            />不需要
+          </div>
 
-    <!-- 操作按钮区域 -->
-    <div class="table-operator">
-      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
-      <a-button type="primary" icon="download" @click="handleExportXls('试验项目输入')">导出</a-button>
-      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
-        <a-button type="primary" icon="import">导入</a-button>
-      </a-upload>
-      <!-- 高级查询区域 -->
-      <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
-      <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
-          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
-        </a-menu>
-        <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
-      </a-dropdown>
-    </div>
+          <div style="display: flex; align-items: center; justify-content: center">
+            试验评审:
+            <input type="radio" name="shiyan" value="需要" v-model="tableData.shiyanPingshen" />需要 &nbsp;<input
+              type="radio"
+              name="shiyan"
+              value="不需要"
+              v-model="tableData.shiyanPingshen"
+            />不需要&nbsp;&nbsp; 用餐安排:
+            <input type="radio" name="yongcan" value="需要" v-model="tableData.yongcanAnpai" />需要 &nbsp;<input
+              type="radio"
+              name="yongcan"
+              value="不需要"
+              v-model="tableData.yongcanAnpai"
+            />不需要
+          </div>
 
-    <!-- table区域-begin -->
-    <div>
-      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
-        <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
-        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
-      </div>
-
-      <a-table
-        ref="table"
-        size="middle"
-        :scroll="{x:true}"
-        bordered
-        rowKey="id"
-        :columns="columns"
-        :dataSource="dataSource"
-        :pagination="ipagination"
-        :loading="loading"
-        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
-        class="j-table-force-nowrap"
-        @change="handleTableChange">
-
-        <template slot="htmlSlot" slot-scope="text">
-          <div v-html="text"></div>
-        </template>
-        <template slot="imgSlot" slot-scope="text,record">
-          <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
-          <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
-        </template>
-        <template slot="fileSlot" slot-scope="text">
-          <span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
-          <a-button
-            v-else
-            :ghost="true"
-            type="primary"
-            icon="download"
-            size="small"
-            @click="downloadFile(text)">
-            下载
-          </a-button>
-        </template>
-
-        <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
-
-          <a-divider type="vertical" />
-          <a-dropdown>
-            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
-            <a-menu slot="overlay">
-              <a-menu-item>
-                <a @click="handleDetail(record)">详情</a>
-              </a-menu-item>
-              <a-menu-item>
-                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
-                  <a>删除</a>
-                </a-popconfirm>
-              </a-menu-item>
-            </a-menu>
-          </a-dropdown>
-        </span>
-
-      </a-table>
-    </div>
-
-    <itdm-shiyanxiangmu-modal ref="modalForm" @ok="modalFormOk"></itdm-shiyanxiangmu-modal>
+          <div style="display: flex; align-items: center; justify-content: center">
+            用车安排: <input type="radio" name="yongche" value="需要" v-model="tableData.yongcheAnpai" />需要
+            &nbsp;<input
+              type="radio"
+              name="yongche"
+              value="不需要"
+              v-model="tableData.yongcheAnpai"
+            />不需要&nbsp;&nbsp; 住宿安排:
+            <input type="radio" name="zhusu" value="需要" v-model="tableData.zhusuAnpai" />需要 &nbsp;<input
+              type="radio"
+              name="zhusu"
+              value="不需要"
+              v-model="tableData.zhusuAnpai"
+            />不需要
+          </div>
+        </td>
+      </tr>
+      <tr>
+        <td class="title">客户<br />联系信息</td>
+        <td class="content">
+          姓名:<input style="width: 110px" v-model="tableData.kehuName" /> 电话:<input
+            style="width: 150px"
+            v-model="tableData.kehuPhone"
+          />
+        </td>
+        <td class="title">合同编号</td>
+        <td class="content">
+          <input style="width: 100%; text-align: center" v-model="tableData.hetongBianhao" />
+        </td>
+      </tr>
+      <tr>
+        <td class="title">试验要求</td>
+        <td class="content" colspan="3">
+          <input style="width: 100%; text-align: center" v-model="tableData.shiyanYaoqiu" />
+        </td>
+      </tr>
+      <tr>
+        <td class="title">报告体系</td>
+        <td class="content" style="display: flex; align-items: center; justify-content: center">
+          <input type="radio" name="baogao" value="海检版" v-model="tableData.baogaoTixi" /> 海检版&nbsp;
+          <input type="radio" name="baogao" value="瑞莱版" v-model="tableData.baogaoTixi" /> 瑞莱版&nbsp;
+          <input type="radio" name="baogao" value="瑞莱海检版" v-model="tableData.baogaoTixi" /> 瑞莱海检版
+        </td>
+        <td class="title">资质要求</td>
+        <td class="content" style="display: flex; align-items: center; justify-content: center">
+          <input type="checkbox" v-model="tableData.zizhiYaoqiu_dictText1" /> CNAS&nbsp;<input
+            type="checkbox"
+            v-model="tableData.zizhiYaoqiu_dictText2"
+          />
+          CMA&nbsp; <input type="checkbox" v-model="tableData.zizhiYaoqiu_dictText3" /> ISTA &nbsp;<input
+            type="checkbox"
+            v-model="tableData.zizhiYaoqiu_dictText4"
+          />
+          船级社&nbsp; <input type="checkbox" v-model="tableData.zizhiYaoqiu_dictText5" /> 无
+        </td>
+      </tr>
+      <tr>
+        <td class="title">项目<br />虚拟结算额</td>
+        <td class="content" colspan="3">
+          <div style="display: flex; align-items: flex-end">
+            <table>
+              <thead>
+                <td>序号</td>
+                <td>试验设备</td>
+                <td>试验时间(h)</td>
+                <td>试验单价(rmb/h)</td>
+                <td>试验费用</td>
+                <td style="width: 60px">操作</td>
+              </thead>
+              <tr v-for="(item, index) in tableData.cleanPrice" :key="index">
+                <td>{{ index + 1 }}</td>
+                <td><input style="max-width: 150px; text-align: center" v-model="item.shebei" /></td>
+                <td><input style="max-width: 150px; text-align: center" v-model="item.time" /></td>
+                <td><input style="max-width: 150px; text-align: center" v-model="item.price" /></td>
+                <td><input style="max-width: 150px; text-align: center" v-model="item.total" /></td>
+                <td><div class="delBtn" @click="delRow(index)" v-show="tableData.cleanPrice.length >= 2">删除</div></td>
+              </tr>
+              <tr>
+                <td>合计</td>
+                <td></td>
+                <td></td>
+                <td></td>
+                <td>{{ totalCleanPrice }}</td>
+              </tr>
+            </table>
+            <div class="addRow" @click="addRow">添加</div>
+            <div class="addRow" @click="addSubTable">提交</div>
+          </div>
+        </td>
+      </tr>
+      <tr>
+        <td class="title">预计报价</td>
+        <td class="content" colspan="3">
+          <input style="width: 100%; text-align: center" v-model="tableData.yujiBaojia" />
+        </td>
+      </tr>
+      <tr>
+        <td class="title">评审结论</td>
+        <td class="content">
+          <input style="width: 100%; text-align: center" v-model="tableData.pingshenJielun" />
+        </td>
+        <td class="title">主审人</td>
+        <td class="content">
+          <input style="width: 100px; text-align: center; margin-right: 50px" v-model="tableData.zhushenRen" />
+          时间
+          <input style="width: 100px; text-align: center" v-model="tableData.zhushenShijian" />
+        </td>
+      </tr>
+    </table>
+    <div class="btn" @click="submit">提交</div>
   </a-card>
 </template>
 
 <script>
+import '@/assets/less/TableExpand.less'
+import { mixinDevice } from '@/utils/mixin'
+import { JeecgListMixin } from '@/mixins/JeecgListMixin'
 
-  import '@/assets/less/TableExpand.less'
-  import { mixinDevice } from '@/utils/mixin'
-  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
-  import ItdmShiyanxiangmuModal from './modules/ItdmShiyanxiangmuModal'
-  import {filterMultiDictText} from '@/components/dict/JDictSelectUtil'
-
-  export default {
-    name: 'ItdmShiyanxiangmuList',
-    mixins:[JeecgListMixin, mixinDevice],
-    components: {
-      ItdmShiyanxiangmuModal
-    },
-    data () {
-      return {
-        description: '试验项目输入管理页面',
-        // 表头
-        columns: [
-          {
-            title: '#',
-            dataIndex: '',
-            key:'rowIndex',
-            width:60,
-            align:"center",
-            customRender:function (t,r,index) {
-              return parseInt(index)+1;
-            }
-          },
-          {
-            title:'是否新客户',
-            align:"center",
-            dataIndex: 'newkehu'
-          },
-          {
-            title:'客户行业',
-            align:"center",
-            dataIndex: 'kehuHangye'
-          },
-          {
-            title:'客户名称',
-            align:"center",
-            dataIndex: 'kehuMingcheng'
-          },
-          {
-            title:'输入类型',
-            align:"center",
-            dataIndex: 'shuruLeixing'
-          },
-          {
-            title:'试验信息',
-            align:"center",
-            dataIndex: 'shiyanXinxi'
-          },
-          {
-            title:'方案设计',
-            align:"center",
-            dataIndex: 'fanganSheji_dictText'
-          },
-          {
-            title:'试验评审',
-            align:"center",
-            dataIndex: 'shiyanPingshen_dictText'
-          },
-          {
-            title:'用车安排',
-            align:"center",
-            dataIndex: 'yongcheAnpai_dictText'
-          },
-          {
-            title:'工装设计',
-            align:"center",
-            dataIndex: 'gongzhuangSheji_dictText'
-          },
-          {
-            title:'用餐安排',
-            align:"center",
-            dataIndex: 'yongcanAnpai_dictText'
-          },
-          {
-            title:'住宿安排',
-            align:"center",
-            dataIndex: 'zhusuAnpai_dictText'
-          },
-          {
-            title:'报告确认',
-            align:"center",
-            dataIndex: 'baogaoQueren_dictText'
-          },
-          {
-            title:'客户姓名',
-            align:"center",
-            dataIndex: 'kehuName'
-          },
-          {
-            title:'客户电话',
-            align:"center",
-            dataIndex: 'kehuPhone'
-          },
-          {
-            title:'合同编号',
-            align:"center",
-            dataIndex: 'hetongBianhao'
-          },
-          {
-            title:'试验要求',
-            align:"center",
-            dataIndex: 'shiyanYaoqiu'
-          },
-          {
-            title:'报告体系',
-            align:"center",
-            dataIndex: 'baogaoTixi_dictText'
-          },
-          {
-            title:'资质要求',
-            align:"center",
-            dataIndex: 'zizhiYaoqiu_dictText'
-          },
-          {
-            title:'预计报价',
-            align:"center",
-            dataIndex: 'yujiBaojia'
-          },
-          {
-            title:'评审结论',
-            align:"center",
-            dataIndex: 'pingshenJielun'
-          },
+export default {
+  name: 'ItdmShiyanxiangmuList',
+  mixins: [JeecgListMixin, mixinDevice],
+  data() {
+    return {
+      description: '试验项目输入管理页面',
+      tableData: {
+        cleanPrice: [
           {
-            title:'主审人',
-            align:"center",
-            dataIndex: 'zhushenRen'
+            total: 0,
           },
-          {
-            title:'主审时间',
-            align:"center",
-            dataIndex: 'zhushenShijian'
-          },
-          {
-            title: '操作',
-            dataIndex: 'action',
-            align:"center",
-            fixed:"right",
-            width:147,
-            scopedSlots: { customRender: 'action' }
-          }
         ],
-        url: {
-          list: "/itdmShiYanXiangMu/itdmShiyanxiangmu/list",
-          delete: "/itdmShiYanXiangMu/itdmShiyanxiangmu/delete",
-          deleteBatch: "/itdmShiYanXiangMu/itdmShiyanxiangmu/deleteBatch",
-          exportXlsUrl: "/itdmShiYanXiangMu/itdmShiyanxiangmu/exportXls",
-          importExcelUrl: "itdmShiYanXiangMu/itdmShiyanxiangmu/importExcel",
-          
+      },
+      // 表头
+      columns: [
+        {
+          title: '#',
+          dataIndex: '',
+          key: 'rowIndex',
+          width: 60,
+          align: 'center',
+          customRender: function (t, r, index) {
+            return parseInt(index) + 1
+          },
+        },
+        {
+          title: '是否新客户',
+          align: 'center',
+          dataIndex: 'newkehu',
+        },
+        {
+          title: '客户行业',
+          align: 'center',
+          dataIndex: 'kehuHangye',
+        },
+        {
+          title: '客户名称',
+          align: 'center',
+          dataIndex: 'kehuMingcheng',
+        },
+        {
+          title: '输入类型',
+          align: 'center',
+          dataIndex: 'shuruLeixing',
+        },
+        {
+          title: '试验信息',
+          align: 'center',
+          dataIndex: 'shiyanXinxi',
+        },
+        {
+          title: '方案设计',
+          align: 'center',
+          dataIndex: 'fanganSheji_dictText',
+        },
+        {
+          title: '试验评审',
+          align: 'center',
+          dataIndex: 'shiyanPingshen_dictText',
+        },
+        {
+          title: '用车安排',
+          align: 'center',
+          dataIndex: 'yongcheAnpai_dictText',
+        },
+        {
+          title: '工装设计',
+          align: 'center',
+          dataIndex: 'gongzhuangSheji_dictText',
+        },
+        {
+          title: '用餐安排',
+          align: 'center',
+          dataIndex: 'yongcanAnpai_dictText',
+        },
+        {
+          title: '住宿安排',
+          align: 'center',
+          dataIndex: 'zhusuAnpai_dictText',
+        },
+        {
+          title: '报告确认',
+          align: 'center',
+          dataIndex: 'baogaoQueren_dictText',
+        },
+        {
+          title: '客户姓名',
+          align: 'center',
+          dataIndex: 'kehuName',
+        },
+        {
+          title: '客户电话',
+          align: 'center',
+          dataIndex: 'kehuPhone',
+        },
+        {
+          title: '合同编号',
+          align: 'center',
+          dataIndex: 'hetongBianhao',
+        },
+        {
+          title: '试验要求',
+          align: 'center',
+          dataIndex: 'shiyanYaoqiu',
         },
-        dictOptions:{},
-        superFieldList:[],
+        {
+          title: '报告体系',
+          align: 'center',
+          dataIndex: 'baogaoTixi_dictText',
+        },
+        {
+          title: '资质要求',
+          align: 'center',
+          dataIndex: 'zizhiYaoqiu_dictText',
+        },
+        {
+          title: '预计报价',
+          align: 'center',
+          dataIndex: 'yujiBaojia',
+        },
+        {
+          title: '评审结论',
+          align: 'center',
+          dataIndex: 'pingshenJielun',
+        },
+        {
+          title: '主审人',
+          align: 'center',
+          dataIndex: 'zhushenRen',
+        },
+        {
+          title: '主审时间',
+          align: 'center',
+          dataIndex: 'zhushenShijian',
+        },
+        {
+          title: '操作',
+          dataIndex: 'action',
+          align: 'center',
+          fixed: 'right',
+          width: 147,
+          scopedSlots: { customRender: 'action' },
+        },
+      ],
+      url: {
+        list: '/itdmShiYanXiangMu/itdmShiyanxiangmu/list',
+        delete: '/itdmShiYanXiangMu/itdmShiyanxiangmu/delete',
+        deleteBatch: '/itdmShiYanXiangMu/itdmShiyanxiangmu/deleteBatch',
+        exportXlsUrl: '/itdmShiYanXiangMu/itdmShiyanxiangmu/exportXls',
+        importExcelUrl: 'itdmShiYanXiangMu/itdmShiyanxiangmu/importExcel',
+      },
+      dictOptions: {},
+      superFieldList: [],
+    }
+  },
+  created() {
+    this.getSuperFieldList()
+  },
+  computed: {
+    importExcelUrl: function () {
+      return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
+    },
+    totalCleanPrice() {
+      let total = 0
+      this.tableData.cleanPrice.forEach((item) => {
+        if (!isNaN(item.total)) {
+          total += Number(item.total)
+        }
+      })
+      return total.toFixed(2)
+    },
+  },
+  methods: {
+    submit() {
+    
+      let zizhiYaoqiu = []
+      if (this.tableData.zizhiYaoqiu_dictText1) {
+        zizhiYaoqiu.push('CNAS')
+      }
+      if (this.tableData.zizhiYaoqiu_dictText2) {
+        zizhiYaoqiu.push('CMA')
       }
+      if (this.tableData.zizhiYaoqiu_dictText3) {
+        zizhiYaoqiu.push('ISTA')
+      }
+      if (this.tableData.zizhiYaoqiu_dictText4) {
+        zizhiYaoqiu.push('船级社')
+      }
+      if (this.tableData.zizhiYaoqiu_dictText5) {
+        zizhiYaoqiu.push('无')
+      }
+      this.tableData.zizhiYaoqiu = zizhiYaoqiu.join(',')
+        console.log(this.tableData)
     },
-    created() {
-    this.getSuperFieldList();
+    addSubTable() {
+      console.log(this.tableData.cleanPrice)
     },
-    computed: {
-      importExcelUrl: function(){
-        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
-      },
+    addRow() {
+      this.tableData.cleanPrice.push({})
     },
-    methods: {
-      initDictConfig(){
-      },
-      getSuperFieldList(){
-        let fieldList=[];
-        fieldList.push({type:'string',value:'newkehu',text:'是否新客户',dictCode:''})
-        fieldList.push({type:'string',value:'kehuHangye',text:'客户行业',dictCode:''})
-        fieldList.push({type:'string',value:'kehuMingcheng',text:'客户名称',dictCode:''})
-        fieldList.push({type:'string',value:'shuruLeixing',text:'输入类型',dictCode:''})
-        fieldList.push({type:'string',value:'shiyanXinxi',text:'试验信息',dictCode:''})
-        fieldList.push({type:'string',value:'fanganSheji',text:'方案设计',dictCode:'fangan_sheji'})
-        fieldList.push({type:'string',value:'shiyanPingshen',text:'试验评审',dictCode:'shiyan_pingshen'})
-        fieldList.push({type:'string',value:'yongcheAnpai',text:'用车安排',dictCode:'yongche_anpai'})
-        fieldList.push({type:'string',value:'gongzhuangSheji',text:'工装设计',dictCode:'gongzhuang_sheji'})
-        fieldList.push({type:'string',value:'yongcanAnpai',text:'用餐安排',dictCode:'yongcan_anpai'})
-        fieldList.push({type:'string',value:'zhusuAnpai',text:'住宿安排',dictCode:'zhusu_anpai'})
-        fieldList.push({type:'string',value:'baogaoQueren',text:'报告确认',dictCode:'baogao_queren'})
-        fieldList.push({type:'string',value:'kehuName',text:'客户姓名',dictCode:''})
-        fieldList.push({type:'string',value:'kehuPhone',text:'客户电话',dictCode:''})
-        fieldList.push({type:'string',value:'hetongBianhao',text:'合同编号',dictCode:''})
-        fieldList.push({type:'string',value:'shiyanYaoqiu',text:'试验要求',dictCode:''})
-        fieldList.push({type:'string',value:'baogaoTixi',text:'报告体系',dictCode:'baogao_tixi'})
-        fieldList.push({type:'string',value:'zizhiYaoqiu',text:'资质要求',dictCode:'zizhi_yaoqiu'})
-        fieldList.push({type:'string',value:'yujiBaojia',text:'预计报价',dictCode:''})
-        fieldList.push({type:'string',value:'pingshenJielun',text:'评审结论',dictCode:''})
-        fieldList.push({type:'string',value:'zhushenRen',text:'主审人',dictCode:''})
-        fieldList.push({type:'string',value:'zhushenShijian',text:'主审时间',dictCode:''})
-        this.superFieldList = fieldList
-      }
-    }
-  }
+    delRow(index) {
+      this.tableData.cleanPrice.splice(index, 1)
+    },
+    initDictConfig() {},
+    getSuperFieldList() {
+      let fieldList = []
+      fieldList.push({ type: 'string', value: 'newkehu', text: '是否新客户', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'kehuHangye', text: '客户行业', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'kehuMingcheng', text: '客户名称', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'shuruLeixing', text: '输入类型', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'shiyanXinxi', text: '试验信息', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'fanganSheji', text: '方案设计', dictCode: 'fangan_sheji' })
+      fieldList.push({ type: 'string', value: 'shiyanPingshen', text: '试验评审', dictCode: 'shiyan_pingshen' })
+      fieldList.push({ type: 'string', value: 'yongcheAnpai', text: '用车安排', dictCode: 'yongche_anpai' })
+      fieldList.push({ type: 'string', value: 'gongzhuangSheji', text: '工装设计', dictCode: 'gongzhuang_sheji' })
+      fieldList.push({ type: 'string', value: 'yongcanAnpai', text: '用餐安排', dictCode: 'yongcan_anpai' })
+      fieldList.push({ type: 'string', value: 'zhusuAnpai', text: '住宿安排', dictCode: 'zhusu_anpai' })
+      fieldList.push({ type: 'string', value: 'baogaoQueren', text: '报告确认', dictCode: 'baogao_queren' })
+      fieldList.push({ type: 'string', value: 'kehuName', text: '客户姓名', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'kehuPhone', text: '客户电话', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'hetongBianhao', text: '合同编号', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'shiyanYaoqiu', text: '试验要求', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'baogaoTixi', text: '报告体系', dictCode: 'baogao_tixi' })
+      fieldList.push({ type: 'string', value: 'zizhiYaoqiu', text: '资质要求', dictCode: 'zizhi_yaoqiu' })
+      fieldList.push({ type: 'string', value: 'yujiBaojia', text: '预计报价', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'pingshenJielun', text: '评审结论', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'zhushenRen', text: '主审人', dictCode: '' })
+      fieldList.push({ type: 'string', value: 'zhushenShijian', text: '主审时间', dictCode: '' })
+      this.superFieldList = fieldList
+    },
+  },
+}
 </script>
 <style scoped>
-  @import '~@assets/less/common.less';
+@import '~@assets/less/common.less';
+table * {
+  box-sizing: border-box;
+  font-size: 14px;
+}
+table {
+  border: 1px solid rgb(30, 53, 65);
+}
+input {
+  padding: 0 20px;
+  height: 50px;
+  outline: none;
+  border: none;
+  background: transparent;
+}
+td {
+  text-align: center;
+  border: 1px solid rgb(30, 53, 65);
+}
+
+tr {
+  height: 50px;
+}
+
+.main-table {
+  background-color: rgb(219, 238, 244);
+}
+.title {
+  background-color: #fff;
+}
+.addRow {
+  width: 60px;
+  height: 24px;
+  background-color: #fff;
+  border-radius: 4px;
+  text-align: center;
+  line-height: 24px;
+  font-size: 12px;
+  margin-left: 20px;
+  cursor: pointer;
+}
+.btn {
+  display: inline-block;
+  padding: 4px 15px;
+  font-size: 13px;
+  border: 1px solid rgb(3, 188, 244);
+  color: rgb(8, 187, 241);
+  border-radius: 4px;
+  cursor: pointer;
+}
+.delBtn {
+  padding: 3px 10px;
+  text-align: center;
+  font-size: 12px;
+}
 </style>

+ 47 - 12
itdmWeb/src/views/module-iTDM/weituochaxun/ItdmWeituoYangpinList.vue

@@ -3,16 +3,16 @@
 <div class="table-page-search-wrapper">
       <a-form layout="inline" @keyup.enter.native="searchQuery">
         <a-row :gutter="24">
-          <!-- <a-col :xl="6" :lg="7" :md="8" :sm="24">
+     <a-col :xl="6" :lg="7" :md="8" :sm="24">
             <a-form-item label="委托单位名称">
-              <a-input placeholder="请输入委托单位名称" v-model="queryParam.weituoClient"></a-input>
+              <j-search-select-tag placeholder="请选择委托单位名称" :dictOptions="weituoClientList" @change="handlewcChange"/>
             </a-form-item>
-          </a-col> -->
-          <a-col :xl="7" :lg="7" :md="8" :sm="24">
+          </a-col>
+          <!-- <a-col :xl="7" :lg="7" :md="8" :sm="24"> -->
             <!-- <a-form-item label="委托单位名称">
               <a-input placeholder="请输入委托单位名称" v-model="queryParam.weituoClient"></a-input>
             </a-form-item> -->
-             <a-select
+             <!-- <a-select
               show-search
               placeholder="请选择"
               v-model="queryParam.id"
@@ -20,8 +20,8 @@
               :options="options"
               :allow-clear="true"
             >
-            </a-select>
-          </a-col>
+            </a-select> -->
+          <!-- </a-col> -->
           <a-col :xl="5" :lg="7" :md="8" :sm="24">
            <a-date-picker :show-time="{ format: 'HH:mm:ss' }" format="YYYY-MM-DD HH:mm:ss" v-model:value="queryParam.startTime" placeholder="请输入开始时间"/>
           </a-col>
@@ -46,12 +46,12 @@
     <!-- 操作按钮区域 -->
     <div class="table-operator">
       <!-- <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button> -->
-      <a-button type="primary" icon="download" @click="handleExportXls('委托样品')">导出</a-button>
+      <!-- <a-button type="primary" icon="download" @click="handleExportXls('委托样品')">导出</a-button>
       <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
-      </a-upload>
+      </a-upload> -->
       <!-- 高级查询区域 -->
-      <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
+      <!-- <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query> -->
       <a-dropdown v-if="selectedRowKeys.length > 0">
         <a-menu slot="overlay">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
@@ -133,7 +133,7 @@
   import { mixinDevice } from '@/utils/mixin'
   import { JeecgListMixin } from '@/mixins/JeecgListMixin'
   import ItdmWeituoYangpinModal from './modules/ItdmWeituoYangpinModal'
-
+  import { httpAction, getAction } from '@/api/manage'
   export default {
     name: 'ItdmWeituoYangpinList',
     mixins:[JeecgListMixin, mixinDevice],
@@ -142,6 +142,7 @@
     },
     data () {
       return {
+        weituoClientList:[],
         description: '委托样品管理页面',
         // 表头
         columns: [
@@ -217,7 +218,8 @@
       }
     },
     created() {
-    this.getSuperFieldList();
+      this.init();
+      this.getSuperFieldList();
     },
     computed: {
       importExcelUrl: function(){
@@ -225,6 +227,39 @@
       },
     },
     methods: {
+            init(){
+
+        getAction('/weituo/itdmWeituoInfo/distinctClientList', {}).then((res) => {
+          if (res.success) {
+            console.log(res.result)
+            this.weituoClientList = res.result.map(i=>{
+              return { value: i, text: i}
+            })
+            console.log(this.weituoClientList)
+          }
+        })
+
+      },
+      
+      handlewcChange(data){
+
+      var weituoClient={weituoClient:data}
+      getAction('/weituo/itdmWeituoInfo/weituoNoList', weituoClient).then((res) => {
+        if (res.success) {
+          console.log("xxxxxxxxxxxxxxxxxxx")
+          console.log(res.result)
+          this.weituoNoList = res.result.map(i=>{
+            return { value: i.id, text: i.weituoNo}
+          })
+          console.log(this.weituoNoList)
+        }
+      })
+
+
+
+
+      console.log(data)
+      },
       initDictConfig(){
       },
       getSuperFieldList(){

+ 39 - 3
itdmWeb/src/views/module-iTDM/weituoshenhe/ItdmWeituoshenheInfoList.vue

@@ -4,9 +4,9 @@
     <div class="table-page-search-wrapper">
       <a-form layout="inline" @keyup.enter.native="searchQuery">
         <a-row :gutter="24">
-          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+           <a-col :xl="6" :lg="7" :md="8" :sm="24">
             <a-form-item label="委托单位名称">
-              <a-input placeholder="请输入委托单位名称" v-model="queryParam.weituoClient"></a-input>
+              <j-search-select-tag placeholder="请选择委托单位名称" :dictOptions="weituoClientList" @change="handlewcChange"/>
             </a-form-item>
           </a-col>
           <!-- <a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -121,7 +121,7 @@ import { JeecgListMixin } from '@/mixins/JeecgListMixin'
 import ItdmWeituoInfoModal from './modules/ItdmWeituoInfoModal'
 import { ajaxGetDictItems, loadCategoryData } from '@/api/api'
 import { filterMultiDictText } from '@comp/dict/JDictSelectUtil'
-
+ import { httpAction, getAction } from '@/api/manage'
 export default {
   name: 'ItdmWeituoInfoList',
   mixins:[JeecgListMixin, mixinDevice],
@@ -130,6 +130,7 @@ export default {
   },
   data () {
     return {
+      weituoClientList:[],
       description: '委托信息管理页面',
       // 表头
       columns: [
@@ -236,6 +237,7 @@ export default {
     }
   },
   created() {
+    this.init();
     this.getSuperFieldList();
   },
   computed: {
@@ -245,6 +247,40 @@ export default {
   },
   
   methods: {
+          init(){
+
+        getAction('/weituo/itdmWeituoInfo/distinctClientList', {}).then((res) => {
+          if (res.success) {
+            console.log(res.result)
+            this.weituoClientList = res.result.map(i=>{
+              return { value: i, text: i}
+            })
+            console.log(this.weituoClientList)
+          }
+        })
+
+      },
+      
+          handlewcChange(data){
+
+      var weituoClient={weituoClient:data}
+      getAction('/weituo/itdmWeituoInfo/weituoNoList', weituoClient).then((res) => {
+        if (res.success) {
+          console.log("xxxxxxxxxxxxxxxxxxx")
+          console.log(res.result)
+          this.weituoNoList = res.result.map(i=>{
+            return { value: i.id, text: i.weituoNo}
+          })
+          console.log(this.weituoNoList)
+        }
+      })
+
+
+
+
+      console.log(data)
+      },
+
     initDictConfig(){
       ajaxGetDictItems('weituo.bgyz').then((res) => {
         if (res.success) {

File diff suppressed because it is too large
+ 12551 - 12101
itdmWeb/yarn.lock


+ 4 - 1
package-lock.json

@@ -1,3 +1,6 @@
 {
-  "lockfileVersion": 1
+  "name": "iTDM-web6.2",
+  "lockfileVersion": 2,
+  "requires": true,
+  "packages": {}
 }