mushencc 3 anos atrás
pai
commit
bab58fc561

+ 1 - 1
src/components/navgation/index.vue

@@ -118,7 +118,7 @@ export default {
   },
   data() {
     return {
-      activeMenu: "",
+      activeMenu: '',
       openMenu: [],
       c: "#icongongyiluxian",
     };

+ 11 - 9
src/components/selects/reference/index.vue

@@ -297,7 +297,8 @@ export default {
             title: '物料规格', key: '', align: 'center', minWidth: 150,
             render: (h, params) => {
               const { row } = params
-              let text = `${row.long}*${row.width}*${row.high}`
+              let text = `${row.long?row.long:0}*${row.width?row.width:0}*${row.high?row.high:0}`
+              // let text = `${row.long}*${row.width}*${row.high}`
               return h('span', {}, text)
             }
           },
@@ -403,7 +404,7 @@ export default {
             title: '物料规格', key: '', align: 'center', minWidth: 150,
             render: (h, params) => {
               const { row } = params
-              let text = `${row.long}*${row.width}*${row.high}`
+              let text = `${row.long?row.long:0}*${row.width?row.width:0}*${row.high?row.high:0}`
               return h('span', {}, text)
             }
           },
@@ -448,7 +449,7 @@ export default {
             title: '物料规格', key: '', align: 'center', minWidth: 150,
             render: (h, params) => {
               const { row } = params
-              let text = `${row.long}*${row.width}*${row.high}`
+               let text = `${row.long?row.long:0}*${row.width?row.width:0}*${row.high?row.high:0}`
               return h('span', {}, text)
             }
           },
@@ -483,7 +484,7 @@ export default {
             title: '物料规格', key: '', align: 'center', minWidth: 150,
             render: (h, params) => {
               const { row } = params
-              let text = `${row.long}*${row.width}*${row.high}`
+             let text = `${row.long?row.long:0}*${row.width?row.width:0}*${row.high?row.high:0}`
               return h('span', {}, text)
             }
           },
@@ -528,7 +529,7 @@ export default {
             title: '物料规格', key: '', align: 'center', minWidth: 150,
             render: (h, params) => {
               const { row } = params
-              let text = `${row.long}*${row.width}*${row.high}`
+               let text = `${row.long?row.long:0}*${row.width?row.width:0}*${row.high?row.high:0}`
               return h('span', {}, text)
             }
           },
@@ -559,7 +560,7 @@ export default {
             title: '物料规格', key: '', align: 'center', minWidth: 150,
             render: (h, params) => {
               const { row } = params
-              let text = `${row.long}*${row.width}*${row.high}`
+            let text = `${row.long?row.long:0}*${row.width?row.width:0}*${row.high?row.high:0}`
               return h('span', {}, text)
             }
           },
@@ -590,7 +591,7 @@ export default {
             title: '物料规格', key: '', align: 'center', minWidth: 150,
             render: (h, params) => {
               const { row } = params
-              let text = `${row.long}*${row.width}*${row.high}`
+             let text = `${row.long?row.long:0}*${row.width?row.width:0}*${row.high?row.high:0}`
               return h('span', {}, text)
             }
           },
@@ -622,7 +623,7 @@ export default {
             title: '物料规格', key: '', align: 'center', minWidth: 150,
             render: (h, params) => {
               const { row } = params
-              let text = `${row.long}*${row.width}*${row.high}`
+             let text = `${row.long?row.long:0}*${row.width?row.width:0}*${row.high?row.high:0}`
               return h('span', {}, text)
             }
           },
@@ -660,7 +661,7 @@ export default {
             title: '物料规格', key: '', align: 'center', minWidth: 150,
             render: (h, params) => {
               const { row } = params
-              let text = `${row.long}*${row.width}*${row.high}`
+             let text = `${row.long?row.long:0}*${row.width?row.width:0}*${row.high?row.high:0}`
               return h('span', {}, text)
             }
           },
@@ -1056,6 +1057,7 @@ export default {
               element.purchases_num = 0;
             })
             this.parts_tableData = res.data.children;
+            console.log(this.parts_tableData)
           }).catch((err) => { });
           break;
         case 2://到货单参照采购单

+ 49 - 1
src/routerMap/index.js

@@ -1219,7 +1219,15 @@ const routerMap = [
     component: (resolve) =>
       require(["@/views/BasicSettings/rootManage"], resolve),
   },
-  
+  {
+    path: "/cms/BasicSettings/finishWorkConfig",
+    name: "finishWorkConfig", // 设置-->设置-->工序完工配置
+    meta: {
+      index: 3,
+    },
+    component: (resolve) =>
+      require(["@/views/BasicSettings/finishWorkConfig"], resolve),
+  },
   {
     path: "/cms/Dispatching/DispatchingDetail",
     name: "DispatchingDetail", // 分类派工→派工详情
@@ -1551,6 +1559,46 @@ const routerMap = [
     component: (resolve) =>
       require(["@/views/ChipPrintScreen/ChipPrintScreenCheck"], resolve),
   },
+  {
+    path: "/cms/BidSystem/CompletionStatistics",
+    name: "CompletionStatistics", //业务报表-->完工统计表
+    meta: {
+      index: 3,
+      keepAlive: true,
+    },
+    component: (resolve) =>
+      require(["@/views/BidSystem/CompletionStatistics"], resolve),
+  },
+  {
+    path: "/cms/BidSystem/CompletionStatisticsDetail",
+    name: "CompletionStatisticsDetail", //业务报表-->完工统计表-->详请
+    meta: {
+      index: 3,
+      keepAlive: true,
+    },
+    component: (resolve) =>
+      require(["@/views/BidSystem/CompletionStatisticsDetail"], resolve),
+  },
+  {
+    path: "/cms/BidSystem/CompletionStatisticsConfig",
+    name: "CompletionStatisticsConfig", //业务报表-->完工统计表-->详请-->详情
+    meta: {
+      index: 3,
+      keepAlive: true,
+    },
+    component: (resolve) =>
+      require(["@/views/BidSystem/CompletionStatisticsConfig"], resolve),
+  },
+  {
+    path: "/cms/BidSystem/IncompleteStatistics",
+    name: "IncompleteStatistics", //业务报表-->未完工统计表
+    meta: {
+      index: 3,
+      keepAlive: true,
+    },
+    component: (resolve) =>
+      require(["@/views/BidSystem/IncompleteStatistics"], resolve),
+  },
   // 测试用
   {
     path: "/cms/ordermannage/businessorderlist/editcopy",

+ 102 - 22
src/views/BasicSettings/PartSettings/detail.vue

@@ -12,7 +12,7 @@
         >保存</Button
       >
     </Toptitle>
-    <div>
+    <div style="height:90%">
       <Row type="flex" justify="space-between" style="padding:10px 0">
         <Col span="4">
           <span>ID:</span>
@@ -140,23 +140,28 @@
           >
         </Col>
       </Row>
-      <div>
+      <div style="height:85%;overflow:auto">
         <Table
           :columns="tableColumns"
           border
-          :max-height="700"
+          :max-height="600"
           :data="tableData"
         >
          <template slot="partDetailProduct" slot-scope="{ index }">
             <Select
               v-model="tableData[index].product_id"
               transfer
+              filterable
+              clearable
+              @on-change="
+                (e) => handleProduct(tableData[index], index, e)
+              "
              placeholder="全部"
             >
               <Option
                 v-for="item in product"
                 :key="item.id"
-                :label="item.type_name"
+                :label="item.title"
                 :value="item.id"
               ></Option>
             </Select>
@@ -166,7 +171,7 @@
               v-model="tableData[index].parts_detail_id"
               transfer
               @on-change="
-                (e) => handlePartDetailSelected(tableData[index], index, e)
+                (e) => handlePartDetailSelected(tableData[index], index, e,1)
               "
             >
               <Option
@@ -250,6 +255,7 @@ export default {
   data() {
     // 这里存放数据
     return {
+      state:false,
       type: this.$route.query.type,
       id: this.$route.query.id,
       formData: {
@@ -315,6 +321,7 @@ export default {
       process_list: [],
       measure_list: [],
       product:[],
+      material:[]
     };
   },
   // 生命周期 - 创建完成(可以访问当前this实例)
@@ -331,12 +338,42 @@ export default {
     this.axios.get("/api/basics_measure_index").then((res) => {
       this.measure_list = res.data.data;
     });
+     this.axios.get("/api/material").then((res) => {
+       this.material = res.data.data
+     })
   },
   // 生命周期 - 挂载完成(可以访问DOM元素)
   mounted() {
-    this.id && this.initData(this.id);
+    this.id && this.initData(this.id); //id是这张单子的id
   },
   methods: {
+    handleProduct(row, index, id){ //id是产品的product_id
+      let list = [];
+      let ids = [];
+       this.part_detail_list.forEach(v=>{
+          ids.push(v.product_id)
+       })
+    if(ids.indexOf(id)>=0){
+     this.part_detail_list.forEach(v=>{
+       if(v.product_id == id){
+          list.push(v)
+       }
+     });
+      row.part_detail_list = list;
+     }
+     if(ids.indexOf(id)<0){
+      // row.part_detail_list = JSON.parse(JSON.stringify(this.part_detail_list));
+      this.part_detail_list.forEach(v=>{
+        if(v.product_id == 0){
+          list.push(v)
+        }
+      })
+      row.part_detail_list = list;
+     }
+    row.change_state = true;
+     row.parts_detail_id = '';
+       this.handlePartDetailSelected(row, index, row.parts_detail_id);
+    },
     back() {
       this.$router.go(-1);
     },
@@ -372,7 +409,13 @@ export default {
       if (!this.formData.part_id) {
         return this.$Message.warning("请先选择部件");
       }
-      row.part_detail_list = JSON.parse(JSON.stringify(this.part_detail_list));
+      let list =[];
+      this.part_detail_list.forEach(v=>{
+            if(v.product_id==0){
+              list.push(v)
+            }
+      })
+      row.part_detail_list = JSON.parse(JSON.stringify(list));
       row.part_id = this.formData.part_id;
       const obj = JSON.parse(JSON.stringify(row));
       switch (type) {
@@ -392,11 +435,15 @@ export default {
           this.formData = res.data.detail;
           this.formData.process_id = this.formData.bp_id;
           this.tableData = res.data.list;
+          this.tableData.map(v=>{v.change_state=false})
+          //工艺属性分类赋值第一个
           this.handleProcessSelected(res.data.detail.process_id);
+          //工艺属性分类赋值第二个
           this.handleGetProcessIds(
             res.data.detail.process_id,
             res.data.detail.type_title
           );
+          //赋值部件名称并且带出数据修改
           this.handlePartSelected(this.formData.part_id, 2);
         });
     },
@@ -423,32 +470,65 @@ export default {
           }
         });
     },
-    handlePartSelected(id, type) {
+    handlePartSelected(id, type) { //id搜索条件中的部件名称part_id
       id &&
-        this.axios.get("/api/parts_detail", { params: { id } }).then((res) => {
+        this.axios.get("/api/parts_detail", { params: { id } }).then((res) => {//获取产品名称part_id中所有零部件名称
           this.part_detail_list = res.data.detail;
-          if (type == 2) {
-            this.tableData.map((v, k) => {
-              v.part_detail_list = JSON.parse(
-                JSON.stringify(this.part_detail_list)
-              );
+          let product_ids = [];
+          this.part_detail_list.forEach(v=>{
+              product_ids.push(v.product_id)
+          })
+
+          if (type == 2) {//type==2来区分编辑还是新增
+          console.log(this.part_detail_list)
+          console.log(product_ids);
+           console.log(this.tableData)
+            this.tableData.map((v, k) => {//给零部件下拉框赋值
+              let list = [];
+              if(v.product_id == 0||product_ids.indexOf(v.product_id)<0){
+               this.part_detail_list.forEach(element=>{
+                 if(element.product_id==0){
+                   list.push(element)
+                 }
+               })
+                 v.part_detail_list = JSON.parse(JSON.stringify(list))
+                // v.part_detail_list = JSON.parse(JSON.stringify(this.part_detail_list));
+                  //  v.part_detail_list = this.part_detail_list.filter(v=>{v.product_id==0})
+                   console.log(v.part_detail_list)
+              }
+              if(product_ids.indexOf(v.product_id)>=0&&v.product_id != 0){
+                      this.part_detail_list.forEach(m=>{
+                        if(m.product_id == v.product_id){
+                          list.push(m)
+                        }
+                      })
+                        v.part_detail_list = JSON.parse(
+                JSON.stringify(list) );
+              }
+          // console.log(v.part_detail_list)
               this.handlePartDetailSelected(v, k, v.parts_detail_id);
-            });
+            })
           } else {
             this.tableData = [];
           }
           this.tableData = JSON.parse(JSON.stringify(this.tableData));
         });
     },
-    handlePartDetailSelected(row, index, id) {
-      if (id) {
-        const material_id = row.part_detail_list.filter((v) => v.id == id)[0]
-          .material_id;
+    handlePartDetailSelected(row, index, id,type) {//id是零部件的parts_detail_id
+  if(row.change_state||type){
+      row.part_detail_list.forEach(element => {
+        if(element.id == id){
+          row.num = element.number;
+          console.log('cc')
+        }
+      });}
+      if (id) {//id是零部件的parts_detail_id
+        const material_id = this.part_detail_list.filter((v) => v.id == id)[0].material_id; //通过零部件的parts_detail_id来找到当前零部件下拉框中物料名称id
         this.axios
-          .get("/api/material", { params: { id: material_id } })
+          .get("/api/material", { params: { id: material_id } }) //通过得到的material_id找到物料的名称
           .then((res) => {
-            this.tableData[index].parts_detail_title = res.data[0].title;
-            this.tableData[index].materialDetailList = res.data[0].detail.map(
+            this.tableData[index].parts_detail_title = res.data[0].title; //物料名字赋值
+            this.tableData[index].materialDetailList = res.data[0].detail.map( //物料尺寸赋值
               (v) => {
                 return { id: v.id, materialDetailShow: v.long + "*" + v.width };
               }

+ 312 - 0
src/views/BasicSettings/finishWorkConfig.vue

@@ -0,0 +1,312 @@
+<template>
+  <div>
+    <Toptitle :title="title">
+      <slot name="titleButton">
+        <!-- <Button @click="back"
+                type='primary'
+                ghost
+                style="margin-right:10px;">返回</Button> -->
+        <Button type="primary"
+                style="margin-right:10px;"
+                @click="handleRowClick({},null,1)"
+                ghost>新增</Button>
+      </slot>
+    </Toptitle>
+    <div style="height:80%;overflow:auto">
+    <div style="padding-top:20px">
+      <Form inline :label-width='50'>
+        <FormItem label="工序:">
+          <Input style="width:150px"
+                 clearable
+                 v-model="search_title"
+                 size="small"
+                 placeholder="请输入工序" />
+        </FormItem>
+        <FormItem>
+          <Button type="primary"
+                  size="small"
+                  @click="init">搜索</Button>
+        </FormItem>
+      </Form>
+    </div>
+    <div style="padding:20px 0px">
+      <Table border
+             ref="refTableData"
+             draggable
+             :columns="columns"
+             :data="tableData"
+             @on-drag-drop="onDragDrop">
+        <template slot="process"
+                  slot-scope="{row}">
+        <span>{{row.process.toString()}}</span>
+        </template>
+         <template slot="band"
+                  slot-scope="{row}">
+        <span>{{row.band.toString()}}</span>
+        </template>
+        <template slot="op"
+                  slot-scope="{row,index}">
+                 
+             <a @click="handleRowClick(row,index,4)"
+             style="margin-right:10px">编辑</a>      
+          <a @click="handleRowClick(row,index,2)"
+             style="margin-right:10px">查看</a>
+          <a @click="handleRowClick(row,index,3)">删除</a>
+        </template>
+      </Table>
+
+    </div>
+    </div>
+    <div style="text-align:center">
+          <Page :page-size-opts="[10, 20, 30, 40,100]"
+                @on-page-size-change='changeSize'
+                @on-change='changePage'
+                :current='pageIndex'
+                show-total
+                :total="total"
+                show-sizer
+                :page-size='pageSize' />
+        </div>
+    <Modal class="modal"
+           :title='modal_title'
+           v-model='showModal'
+           :mask-closable="false"
+           :width="400">
+      <div>
+        <span style="width:60px;margin-left:25px">工序:</span>
+        
+          <Select  v-model="currencyRow.sub_id" filterable v-if="modal_title !== '查看'" :multiple="modal_title=='新增'?true:false" style="width:300px" class="select">
+              <Option v-for="(item,index) in process_list" :key="index" :label="item.title" :value="item.id">
+              </Option>
+          </Select>
+           <span v-else style="margin:0 auto">{{currencyRow.process}}</span>
+      </div>
+      <div>
+        <span >完工方式:</span>
+        <!-- style="width:50%" v-model="currencyRow.employee_ids" filterable multiple v-if="modal_title !== '查看'" class="select_band" -->
+        <RadioGroup v-model="currencyRow.json" v-if="modal_title !== '查看'" style="">
+        <Radio :label="1" :value='1'>
+            
+            <span>部件名称</span>
+        </Radio>
+        <Radio :label="2" :value='2'>
+           
+            <span>组合名称</span>
+        </Radio>
+    </RadioGroup>
+           <span v-else style="margin:0 auto">{{currencyRow.type}}</span>
+      </div>
+      <div class="modal-footer"
+           slot="footer">
+        <Button @click="showModal = false" :style="modal_title!=='查看'?{'margin-left':'110px'}:{'margin-left':'150px'}">取消</Button>
+        <Button type="primary"
+        v-if="modal_title !=='查看' "
+                @click="handleColorConfirm">确认</Button>
+      </div>
+    </Modal>
+  </div>
+</template>
+
+<script>
+// 这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
+// 例如:import 《组件名称》 from '《组件路径》';
+
+export default {
+  components: {
+
+  },
+  props: {},
+  // import引入的组件需要注入到对象中才能使用
+  data () {
+    // 这里存放数据
+    return {
+      pageSize:10,
+      pageIndex: 1,
+      total: 0,
+        process_list:[],
+        band_list:[],
+        user_list:[],
+        search_title:'',
+        modal_title:'',
+      title: '工序完工配置',
+      columns: [
+        { title:'ID', type:'index', align: 'center' },
+        { title: '工序', key: 'process', align: 'center',  ellipsis:'true',tooltip:'true'},
+        { title: '完工方式', key: 'type', align: 'center'},
+        { title: '操作', key: 'operation', align: 'center', slot: 'op' }
+      ],
+      tableData: [],
+      maxSort: 0,
+      showModal: false,
+      //1新增2编辑
+      addState: 0,
+      currencyRow: {
+        id:'',
+        json:'',
+      },
+      currencyIndex: 0
+    }
+  },
+  // 生命周期 - 创建完成(可以访问当前this实例)
+  created () {
+    // this.initData()
+  
+    //用户列表
+    this.axios.get('/api/user').then(res=>{this.user_list = res.data.data});
+    //工序列表
+    this.axios.post('/api/ext_produce_list').then(res=>{this.process_list = res.data});
+    //班组列表
+    this.axios("/api/employee_list").then((res) => (this.band_list = res.data));
+  },
+  // 生命周期 - 挂载完成(可以访问DOM元素)
+  mounted () {  
+      this.init()
+  },
+  methods: {
+      changeSize (e) {
+      this.pageSize = e;
+      this.init()
+    },
+    changePage (index) {
+      this.pageIndex = index;
+      
+      this.init()
+     
+    },
+    init () {
+    //   this.$forceUpdate();
+      this.axios.post('/api/ext_produce_set_list', 
+         {
+          title: this.search_title,
+          page_size:this.pageSize,
+          page_index:this.pageIndex
+        }
+      ).then(res => {
+        if (res.code == 200) { 
+          this.tableData = res.data.data;
+          this.total = res.data.total;
+        }
+      }).catch(err => {  })
+    },
+    back () {
+      this.$router.go(-1)
+    },
+    handleRowClick (row, index, type) {
+//1新增 2查看 3删除 4编辑
+      this.currencyIndex = index
+      this.addState = type
+   
+      switch (type) {
+        case 1:
+            this.modal_title = '新增';
+            
+            this.currencyRow = {
+        sub_id:[],
+        json:''
+      }
+      this.showModal = true;
+            break;
+        case 2:
+            this.modal_title ='查看';
+           this.currencyRow.process = row.process;
+           this.currencyRow.type = row.type;
+          this.showModal = true;
+ 
+          break;
+        case 3:
+          this.$Modal.confirm({
+            title: '确认删除?',
+            content: '此操作确认后无法恢复,请确认此操作!',
+            onOk: () => {
+              this.axios({
+                method: 'post',
+                url: '/api/ext_produce_set_del',
+                data: {
+                  id: row.id
+                }
+              }).then((res) => {
+                this.$Message.success(res.msg)
+                this.init()
+              }).catch((err) => { });
+            },
+            onCancel: () => { }
+          })
+          break;
+          case 4:
+            this.modal_title = '编辑';
+           console.log(row)
+           this.currencyRow.id = row.id;
+           this.currencyRow.sub_id =row.sub_id;
+           this.currencyRow.json = row.json;
+             this.showModal = true;
+      }
+    },
+    handleColorChange (row, index, type) {
+      this.addState = type
+      this.showModal = true
+    },
+    handleColorConfirm () {
+        this.currencyRow.sub_id=this.currencyRow.sub_id.toString()
+      this.axios({
+        method: 'post',
+        url: '/api/ext_produce_set_edit',
+        data: {
+          ...this.currencyRow
+        }
+      }).then((res) => {
+        if(res.code == 200){
+        this.$Message.success(res.msg)
+        this.showModal = false
+        this.init()}
+      }).catch((err) => { });
+    },
+    handleSave () {
+      this.tableData.forEach((el, index) => {
+        el.sort = index + 1
+      });
+      this.axios({
+        method: 'post',
+        url: '/api/basics_color_edit',
+        data: {
+          ...this.tableData
+        }
+      }).then((res) => {
+        this.$Message.success(res.msg)
+        this.showModal = false
+        // this.init()
+      }).catch((err) => { });
+    },
+    onDragDrop (a, b) {
+      this.tableData.splice(b, 0, ...this.tableData.splice(a, 1))
+    }
+  },
+  // 监听属性 类似于data概念
+  computed: {
+  },
+  // 监控data中的数据变化
+  watch: {},
+  beforeCreate () { }, // 生命周期 - 创建之前
+  beforeMount () { }, // 生命周期 - 挂载之前
+  beforeUpdate () { }, // 生命周期 - 更新之前
+  updated () { }, // 生命周期 - 更新之后
+  beforeDestroy () { }, // 生命周期 - 销毁之前
+  destroyed () { }, // 生命周期 - 销毁完成
+  activated () { }, // 如果页面有keep-alive缓存功能,这个函数会触发
+}
+</script>
+
+<style lang='scss' scoped>
+.modal {
+    // display: flex;
+    // flex-wrap: wrap;
+ div {
+     margin: 10px;
+    display: flex;
+    justify-items: center;
+    align-items: center;
+ }
+}
+/deep/ .select .ivu-select-selection{
+    width:84%
+}
+</style>

+ 228 - 0
src/views/BidSystem/CompletionStatistics.vue

@@ -0,0 +1,228 @@
+<template>
+    <div>
+        <Toptitle title="完工统计表">
+      <slot name="titleButton">
+        <Button
+                @click="showTableSet=true"
+                type='primary'
+                ghost
+                style="margin-right:10px;">栏目设置</Button>
+        <Button type="primary"
+                style="margin-right:10px;"
+           
+                ghost>导出</Button>
+      </slot>
+    </Toptitle>
+    <div style="height:80%">
+     <Form :label-width='100' :model="searchData" style="display:flex;flex-wrap:wrap;margin:15px 0">
+        <FormItem label='派工时间:'>
+            <DatePicker type="date" placeholder="年/月/日" style="width: 130px" size='small' v-model="searchData.start_time"></DatePicker>
+            ~
+             <DatePicker type="date" placeholder="年/月/日" style="width: 130px" size='small'  v-model="searchData.end_time"></DatePicker>
+        </FormItem>
+        <FormItem label='工序名称:'>
+           <Select v-model="searchData.process" style="width:150px" size='small'>
+        <Option v-for="item in process_list" :value="item.id" :key="item.id">{{ item.title }}</Option>
+    </Select>
+        </FormItem>
+        <FormItem label='班组名称:'>
+         <Select v-model="searchData.band" style="width:150px" size='small'>
+        <Option v-for="item in band_list" :value="item.id" :key="item.id">{{ item.nickname }}</Option>
+        </Select>
+        </FormItem>
+        <FormItem>
+                <Button type="primary"
+                  size="small"
+                  @click="init">搜索</Button>
+        </FormItem>
+    </Form>
+    <Table 
+    :data='tableData'
+    :columns='tableColumns'
+    border>
+    <template slot="setSlot" slot-scope="{row}">
+         <a @click="goPageDetail(row)">详情</a>
+    </template>
+    </Table>
+    </div>
+     <div style="text-align:center">
+          <Page :page-size-opts="[10, 20, 30, 40,100]"
+                @on-page-size-change='changeSize'
+                @on-change='changePage'
+                :current='pageIndex'
+                show-total
+                :total="total"
+                show-sizer
+                :page-size='pageSize' />
+        </div>
+    <Modal title="表头设置" v-model="showTableSet" :width='700' @on-ok='tableSetSure'>
+        <div style="display:flex;margin:10px 0">
+             <Checkbox style="margin-right:50px"/>
+             <span style="margin-right:90px;width:60px">产品名称</span>
+             <Input style="width:120px;margin-right:40px" size="small"/>
+             <Select style="width:120px;margin-right:40px" size="small" v-model="tableSet[0].sort">
+                 <Option :value="1">升序</Option>
+                 <Option :value="2">降序</Option>
+             </Select>
+              <Select style="width:120px" size="small" v-model="tableSet[0].important">
+                 <Option :value="1">1</Option>
+                 <Option :value='2'>2</Option>
+                 <Option :value='3'>3</Option>
+             </Select>
+        </div>
+         <div style="display:flex;margin:10px 0">
+             <Checkbox style="margin-right:50px"/>
+             <span style="margin-right:90px;width:60px">计量单位</span>
+             <Input style="width:120px;margin-right:40px" size="small"/>
+           <Select style="width:120px;margin-right:40px" size="small" v-model="tableSet[1].sort">
+                 <Option :value="1">升序</Option>
+                 <Option :value="2">降序</Option>
+             </Select>
+              <Select style="width:120px" size="small" v-model="tableSet[1].important">
+                 <Option :value="1">1</Option>
+                 <Option :value='2'>2</Option>
+                 <Option :value='3'>3</Option>
+             </Select>
+        </div>
+         <div style="display:flex;margin:10px 0">
+             <Checkbox style="margin-right:50px"/>
+             <span style="margin-right:90px;width:60px">型号</span>
+             <Input style="width:120px;margin-right:40px" size="small"/>
+            <Select style="width:120px;margin-right:40px" size="small" v-model="tableSet[2].sort">
+                 <Option :value="1">升序</Option>
+                 <Option :value="2">降序</Option>
+             </Select>
+              <Select style="width:120px" size="small" v-model="tableSet[2].important">
+                 <Option :value="1">1</Option>
+                 <Option :value='2'>2</Option>
+                 <Option :value='3'>3</Option>
+             </Select>
+        </div>
+         <div style="display:flex;margin:10px 0">
+             <Checkbox style="margin-right:50px"/>
+             <span style="margin-right:90px;width:60px">图号</span>
+             <Input style="width:120px;margin-right:40px" size="small"/>
+             <Select style="width:120px;margin-right:40px" size="small" v-model="tableSet[3].sort">
+                 <Option :value="1">升序</Option>
+                 <Option :value="2">降序</Option>
+             </Select>
+              <Select style="width:120px" size="small" v-model="tableSet[3].important">
+                 <Option :value="1">1</Option>
+                 <Option :value='2'>2</Option>
+                 <Option :value='3'>3</Option>
+             </Select>
+        </div>
+         <div style="display:flex;margin:10px 0">
+             <Checkbox style="margin-right:50px"/>
+             <span style="margin-right:90px;width:60px">产品图片</span>
+             <Input style="width:120px;margin-right:40px" size="small"/>
+            <Select style="width:120px;margin-right:40px" size="small" v-model="tableSet[4].sort">
+                 <Option :value="1">升序</Option>
+                 <Option :value="2">降序</Option>
+             </Select>
+              <Select style="width:120px" size="small" v-model="tableSet[4].important">
+                 <Option :value="1">1</Option>
+                 <Option :value='2'>2</Option>
+                 <Option :value='3'>3</Option>
+             </Select>
+        </div>
+         <div style="display:flex;margin:10px 0">
+             <Checkbox style="margin-right:50px"/>
+             <span style="margin-right:90px;width:60px">图纸</span>
+             <Input style="width:120px;margin-right:40px" size="small"/>
+            <Select style="width:120px;margin-right:40px" size="small" v-model="tableSet[5].sort">
+                 <Option :value="1">升序</Option>
+                 <Option :value="2">降序</Option>
+             </Select>
+              <Select style="width:120px" size="small" v-model="tableSet[5].important">
+                 <Option :value="1">1</Option>
+                 <Option :value='2'>2</Option>
+                 <Option :value='3'>3</Option>
+             </Select>
+        </div>
+    </Modal>
+    </div>
+</template>
+<script>
+export default {
+    name:'CompletionStatistics',
+    data(){
+        return{
+            tableSet:[{sort:'',important:''},{sort:'',important:''},{sort:'',important:''},{sort:'',important:''},{sort:'',important:''},{sort:'',important:''}],
+            showTableSet:false,
+            pageIndex:1,
+            pageSize:10,
+            total:0,
+            searchData:{
+                process:'',
+                band:'',
+                start_time:'',
+                end_time:''
+            },
+       process_list:[],
+       band_list:[],
+       tableData:[],
+       tableColumns:[
+           {title:'工序',align:'center',minWidth:120,key:'produce'},
+           {title:'班组',align:'center',minWidth:120,key:'employee'},
+           {title:'派工平方',align:'center',minWidth:120,key:'push_area'},
+           {title:'完工平方',align:'center',minWidth:120,key:'complete_area'},
+           {title:'未完工平方',align:'center',minWidth:120,key:'un_complete_area'},
+           {title:'操作',align:'center',slot:'setSlot',minWidth:120},
+       ]
+        }
+    },
+    created(){
+      //工序列表
+    this.axios.post('/api/ext_produce_list').then(res=>{this.process_list = res.data});
+    //班组列表
+    this.axios("/api/employee_list").then((res) => (this.band_list = res.data));
+    },
+    mounted(){
+          this.getData();
+          let myDate = new Date();
+          let Year = myDate.getFullYear();
+          let Month = myDate.getMonth();
+          this.searchData.start_time = `${Year}-${Month+1}-1`
+    },
+    methods:{
+        getData(row){
+            this.axios.get('/api/finance_complete_total',{params:{...row,page_size:this.pageSize,page_index:this.pageIndex}}).then(res=>{
+                 this.tableData = res.data.list;
+                 this.total = Number(res.data.total);
+            })
+        },
+        tableSetSure(){
+           console.log(this.tableSet)
+        },
+        init(){
+           let data = JSON.parse(JSON.stringify(this.searchData));
+            data.start_time=data.start_time?Date.parse(this.searchData.start_time).toString().slice(0,10):'';
+            data.end_time=data.end_time?Date.parse(this.searchData.end_time).toString().slice(0,10):'';
+            this.getData(data)
+        },
+        goPageDetail(row){
+            let data = JSON.parse(JSON.stringify(this.searchData));
+            data.start_time=data.start_time?Date.parse(this.searchData.start_time).toString().slice(0,10):'';
+            data.end_time=data.end_time?Date.parse(this.searchData.end_time).toString().slice(0,10):'';
+           this.$router.push({path:'/cms/BidSystem/CompletionStatisticsDetail',query:{
+              ...row,
+               start_time:data.start_time,
+               end_time:data.end_time
+               }})
+        },
+        changeSize(e){
+           this.pageSize = e;
+           this.getData();
+        },
+        changePage(e){
+             this.pageIndex=e;
+             this.getData();
+        }
+
+    }
+}
+</script>
+<style lang="scss" scoped>
+
+</style>

+ 106 - 0
src/views/BidSystem/CompletionStatisticsConfig.vue

@@ -0,0 +1,106 @@
+<template>
+    <div>
+        <Toptitle title="详情">
+      <slot name="titleButton">
+        <Button
+                type='primary'
+                ghost
+                style="margin-right:10px;">栏目设置</Button>
+        <Button type="primary"
+                style="margin-right:10px;"
+           
+                ghost>导出</Button>
+           <Button type="primary"
+                style="margin-right:10px;"
+                @click="back"
+                ghost>返回</Button>
+      </slot>
+    </Toptitle>
+     <div style="height:80%">
+    <Form style="display:flex;margin:10px 0;flex-wrap:wrap" :label-width='90'>
+        <FormItem label='派工日期:' style="width:250px"><span>{{formData.push_time}}</span></FormItem>
+        <FormItem label='项目编码:' style="width:250px"><span>{{formData.order_no}}</span></FormItem>
+        <FormItem label='项目名称:' style="width:250px"><span>{{formData.project_name}}</span></FormItem>
+        <FormItem label='平方:' style="width:250px"><span>{{formData.area}}</span></FormItem>
+        <FormItem label='图号:' style="width:250px"><span>{{formData.url_number}}</span></FormItem>
+         <FormItem label='完工进度:' style="width:250px"><span>{{formData.complete}}</span></FormItem>
+          <FormItem label='完工日期:' style="width:250px"><span>{{formData.complete_time}}</span></FormItem>
+    </Form>
+     <Table 
+    :data='tableData'
+    :columns='tableColumns'
+    border>
+    <template slot="setSlot" slot-scope="{row}">
+         <a @click="goPageDetail(row)">详情</a>
+    </template>
+    </Table>
+    </div>
+     <div style="text-align:center">
+          <Page :page-size-opts="[10, 20, 30, 40,100]"
+                @on-page-size-change='changeSize'
+                @on-change='changePage'
+                :current='pageIndex'
+                show-total
+                :total="total"
+                show-sizer
+                :page-size='pageSize' />
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    name:'CompletionStatisticsConfig',
+    data(){
+        return{
+             formData:{},
+             pageSize:10,
+             pageIndex:1,
+             total:0,
+             tableData:[],
+             tableColumns:[
+             {title:'图号',align:'center',minWidth:120,key:'url_number'},
+           {title:'产品名称',align:'center',minWidth:120,key:'product_title'},
+           {title:'楼栋',align:'center',minWidth:120,key:'house'},
+           {title:'单元',align:'center',minWidth:120,key:'unit'},
+           {title:'楼层',align:'center',minWidth:120,key:'layer'},
+            {title:'房号',align:'center',minWidth:120,key:'house_number'},
+             {title:'组合名称',align:'center',minWidth:120,key:'compose_name'},
+               {title:'部件名称',align:'center',minWidth:120,key:'part_name'},
+           {title:'操作',align:'center',slot:'setSlot',minWidth:120},
+             ],
+        }
+    },
+    mounted(){
+           this.formData=this.$route.query;
+           this.getData();
+    },
+    methods:{
+          changeSize(e){
+              this.pageSize = e;
+              this.getData();
+        },
+        changePage(e){
+                this.pageIndex = e;
+                this.getData();
+        },
+         back(){
+            this.$router.go(-1)
+        },
+        getData(){
+            this.axios.get('/api/finance_complete_total_order_detail',{params:{
+                produce_id:this.$route.query.produce_id,
+               employee_id:this.$route.query.employee_id,
+                start_time:this.$route.query.start_time,
+                end_time:this.$route.query.end_time,
+                   order_no:this.$route.query.order_no
+            }}).then(res=>{
+                this.tableData=res.data.list;
+                this.total = Number(res.data.total)
+            })
+        }
+    }
+}
+</script>
+<style lang="scss" scoped>
+
+</style>

+ 111 - 0
src/views/BidSystem/CompletionStatisticsDetail.vue

@@ -0,0 +1,111 @@
+<template>
+    <div>
+          <Toptitle title="详情">
+      <slot name="titleButton">
+        <Button
+                type='primary'
+                ghost
+                style="margin-right:10px;">栏目设置</Button>
+        <Button type="primary"
+                style="margin-right:10px;"
+           
+                ghost>导出</Button>
+           <Button type="primary"
+                style="margin-right:10px;"
+                @click="back"
+                ghost>返回</Button>
+      </slot>
+    </Toptitle>
+    <div style="height:80%">
+    <Form style="display:flex;margin:10px 0;flex-wrap:wrap" :label-width='90'>
+        <FormItem label='工序:' style="width:250px"><span>{{formData.produce}}</span></FormItem>
+        <FormItem label='班组:' style="width:250px"><span>{{formData.employee}}</span></FormItem>
+        <FormItem label='派工平方:' style="width:250px"><span>{{formData.push_area}}</span></FormItem>
+        <FormItem label='完工平方:' style="width:250px"><span>{{formData.complete_area}}</span></FormItem>
+        <FormItem label='未完工平方:' style="width:250px"><span>{{formData.un_complete_area}}</span></FormItem>
+    </Form>
+     <Table 
+    :data='tableData'
+    :columns='tableColumns'
+    border>
+    <template slot="setSlot" slot-scope="{row}">
+         <a @click="goPageDetail(row)">详情</a>
+    </template>
+    </Table>
+    </div>
+     <div style="text-align:center">
+          <Page :page-size-opts="[10, 20, 30, 40,100]"
+                @on-page-size-change='changeSize'
+                @on-change='changePage'
+                :current='pageIndex'
+                show-total
+                :total="total"
+                show-sizer
+                :page-size='pageSize' />
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    name:'CompletionStatisticsDetail',
+    data(){
+        return{
+            pageSize:10,
+            pageIndex:1,
+            total:0,
+            formData:{},
+            tableData:[],
+           tableColumns:[
+            {title:'派工日期',align:'center',minWidth:120,key:'push_time'},
+           {title:'项目编码',align:'center',minWidth:120,key:'order_no'},
+           {title:'项目名称',align:'center',minWidth:120,key:'project_name'},
+           {title:'平方',align:'center',minWidth:120,key:'area'},
+           {title:'图号',align:'center',minWidth:120,key:'url_number'},
+            {title:'完工进度',align:'center',minWidth:120,key:'complete'},
+             {title:'完工日期',align:'center',minWidth:120,key:'complete_time'},
+           {title:'操作',align:'center',slot:'setSlot',minWidth:120},
+           ],
+        }
+    },
+    created(){
+        this.formData = this.$route.query;
+     
+    },
+    mounted(){
+         this.getData();
+    },
+    methods:{
+        goPageDetail(row){
+              this.$router.push({path:'/cms/BidSystem/CompletionStatisticsConfig',query:{...row,...this.$route.query}})
+        },
+        back(){
+            this.$router.go(-1)
+        },
+        changeSize(e){
+              this.pageSize = e;
+              this.getData();
+        },
+        changePage(e){
+                this.pageIndex = e;
+                this.getData();
+        },
+        getData(){
+               this.axios.get('/api/finance_complete_total_detail',{params:{
+            page_size:this.pageSize,
+            page_index:this.pageIndex,
+            produce_id:this.$route.query.produce_id,
+            employee_id:this.$route.query.employee_id,
+            start_time:this.$route.query.start_time,
+            end_time:this.$route.query.end_time
+            }}).then(res=>{
+                this.tableData = res.data.list;
+                this.total = Number(res.data.total);
+            })
+        }
+
+    }
+}
+</script>
+<style lang="scss" scoped>
+
+</style>

+ 6 - 4
src/views/BidSystem/DeepeningOrder/change.vue

@@ -8,17 +8,18 @@
           style="margin-right: 10px"
           >完成</Button
         > -->
-        <!-- <Upload
+        <Upload
           style="display: inline"
           name="your_file"
           :show-upload-list="false"
           :headers="headers"
           :on-error="uploadError"
           :on-success="uploadSuccess"
-          :action="$store.state.ip + '/api/order_area_product_import'"
+          :data='{order_no:$route.query.order_no}'
+          :action="$store.state.ip + '/api/change_import_new'"
         >
-          <Button type="primary" style="margin-right: 10px">导入1</Button>
-        </Upload> -->
+          <Button type="primary" style="margin-right: 10px">导入</Button>
+        </Upload>
         <Button
           @click="goback()"
           type="primary"
@@ -649,6 +650,7 @@ export default {
     uploadSuccess(res) {
       if (res.code == 200) {
         this.$Message.success(res.msg || "上传成功");
+        this.getListData();
         // const temp = res.data;
         // let list = [...this.postInfo.children, ...temp];
       } else {

+ 20 - 18
src/views/BidSystem/DeepeningOrder/deepDetail.vue

@@ -397,14 +397,8 @@
                 <Option
                   v-for="(item, index) in fashion"
                   :key="index"
-                  :label="
-                    item.fashion === 0
-                      ? '无'
-                      : item.fashion === 1
-                      ? '左式'
-                      : '右式'
-                  "
-                  :value="item.fashion"
+                  :label="item.label"
+                  :value="item.value"
                 ></Option>
               </Select>
             </FormItem>
@@ -435,7 +429,7 @@
             </FormItem>
           </Form>
         </div>
-        <Tabs type="card" @on-click="getData">
+        <Tabs type="card" @on-click="tabChange">
           <TabPane
             v-for="tab in tabs"
             :key="tab"
@@ -450,8 +444,9 @@
                 <template slot="urlSet" slot-scope="{ row,index }">
                    <div class="items">
                 <img 
+
                 @click="looks(totalData[index].url)"
-                :src='$store.state.ip + row.url[0]' alt=""/>
+                :src='$store.state.ip + row.url[0]' alt=""/><span v-if="totalData[index].url.length>1" style="position: relative;bottom: 10px;">...</span>
                 </div>
                   <!-- v-show="totalData[index].url.length !== 0 ? true : false"-->
                     <!-- <img
@@ -532,6 +527,7 @@
               <Button size="small" type="primary" >图纸导入</Button>
             </Upload> -->
              <UploadImg
+             @initData='getData(currency_tag)'
              :headers="headers"
               v-if="$route.query.type!=3"
           :data="uploadData"
@@ -669,9 +665,9 @@ export default {
             return h(
               "span",
               {},
-              row.left_right_mode == 1
+              row.fashion == 1
                 ? "左式"
-                : row.left_right_mode == 2
+                : row.fashion == 2
                 ? "右式"
                 : "无"
             );
@@ -725,13 +721,13 @@ export default {
          render:(h,params)=>{
              const {row} = params;
               const text = this.func.replaceDateNoHMS(row.crt_time);
-              h('span',{},text)
+             return h('span',{},text)
          } },
           { title: "交货日期", align: "center", key: "arrive_time", minWidth: 200,
             render:(h,params)=>{
              const {row} = params;
               const text = this.func.replaceDateNoHMS(row.arrive_time);
-              h('span',{},text)
+             return h('span',{},text)
          }
           },
            { title: "下单编号", align: "center", key: "order_number", minWidth: 200 },
@@ -790,7 +786,7 @@ export default {
       url_number: [],
       product_title: [],
       product_type: [],
-      fashion: [],
+    fashion: [{label:'左氏',value:1},{label:'右式',value:2},{label:'无',value:0}],
       material: [],
       color: [],
       work: [],
@@ -853,6 +849,10 @@ export default {
 
   },
   methods: {
+    tabChange(e){
+      this.page_index =1;
+      this.getData(e)
+    },
     looks(arr) {
       // const array = [{ img_url: img }];
       const array = arr.map((v) => {
@@ -967,6 +967,7 @@ export default {
     getData(type) {
         this.currency_tag = type;
       if (type == 1) {
+      
         if (this.search_state) {
             console.log('明细')
           this.axios
@@ -1000,7 +1001,7 @@ export default {
                 this.area_code = res.data.area_code;
                 this.area_title = res.data.area_title;
                 this.color = res.data.color;
-                this.fashion = res.data.fashion;
+                // this.fashion = res.data.fashion;
                 this.house = res.data.house;
                 this.house_type = res.data.house_type;
                 this.layer = res.data.layer;
@@ -1018,6 +1019,7 @@ export default {
         }
       } else if (type == 0) {
         console.log("111 :>> ", 111);
+      
         this.axios
           .post("/api/order_area_details", {
             type: 1,
@@ -1035,7 +1037,7 @@ export default {
             this.area_code = res.data.area_code;
             this.area_title = res.data.area_title;
             this.color = res.data.color;
-            this.fashion = res.data.fashion;
+            // this.fashion = res.data.fashion;
             this.house = res.data.house;
             this.house_type = res.data.house_type;
             this.layer = res.data.layer;
@@ -1067,7 +1069,7 @@ export default {
             this.area_code = res.data.area_code;
             this.area_title = res.data.area_title;
             this.color = res.data.color;
-            this.fashion = res.data.fashion;
+            // this.fashion = res.data.fashion;
             this.house = res.data.house;
             this.house_type = res.data.house_type;
             this.layer = res.data.layer;

+ 4 - 0
src/views/BidSystem/DeepeningOrder/uploadImg/index.vue

@@ -83,6 +83,7 @@ export default {
           }
         }
       }
+      this.initData();
     },
     objToForm (obj) {
       let Form = new FormData();
@@ -94,6 +95,9 @@ export default {
     //点击事件
     onClickBtn () {
       this.$refs.file.click()
+    },
+    initData(){
+      this.$emit('initData')
     }
   },
 };

+ 223 - 0
src/views/BidSystem/IncompleteStatistics.vue

@@ -0,0 +1,223 @@
+<template>
+    <div>
+        <Toptitle title="未完工统计表">
+      <slot name="titleButton">
+        <Button
+                @click="showTableSet=true"
+                type='primary'
+                ghost
+                style="margin-right:10px;">栏目设置</Button>
+        <Button type="primary"
+                style="margin-right:10px;"
+           
+                ghost>导出</Button>
+      </slot>
+    </Toptitle>
+    <div style="height:80%">
+     <Form :label-width='100' :model="searchData" style="display:flex;flex-wrap:wrap;margin:15px 0">
+        <FormItem label='派工时间:'>
+            <DatePicker type="date" placeholder="年/月/日" style="width: 130px" size='small' v-model="searchData.start_time"></DatePicker>
+        </FormItem>
+        <FormItem label='项目编码:'>
+           <Select v-model="searchData.order_no" style="width:150px" size='small'>
+        <Option v-for="item in order_list" :value="item.order_no" :key="item.order_no">{{ item.order_no }}</Option>
+    </Select>
+        </FormItem>
+        <FormItem label='项目名称:'>
+         <Select v-model="searchData.project_title" style="width:150px" size='small'>
+        <Option v-for="item in order_list" :value="item.project_title" :key="item.order_no">{{ item.project_title }}</Option>
+        </Select>
+        </FormItem>
+         <FormItem label='逾期状态:'>
+         <Select v-model="searchData.status" style="width:150px" size='small'>
+        <Option :value="0" >未逾期</Option>
+        <Option :value="1" >临近逾期</Option>
+        <Option :value="2" >已逾期</Option>
+        </Select>
+        </FormItem>
+        <FormItem>
+                <Button type="primary"
+                  size="small"
+                  @click="init">搜索</Button>
+        </FormItem>
+    </Form>
+    <Table 
+    :data='tableData'
+    :columns='tableColumns'
+    border>
+    <template slot="setSlot" slot-scope="{row}">
+         <a @click="goPageDetail(row)">详情</a>
+    </template>
+    </Table>
+    </div>
+     <div style="text-align:center">
+          <Page :page-size-opts="[10, 20, 30, 40,100]"
+                @on-page-size-change='changeSize'
+                @on-change='changePage'
+                :current='pageIndex'
+                show-total
+                :total="total"
+                show-sizer
+                :page-size='pageSize' />
+        </div>
+    <Modal title="表头设置" v-model="showTableSet" :width='700' @on-ok='tableSetSure'>
+        <div style="display:flex;margin:10px 0">
+             <Checkbox style="margin-right:50px"/>
+             <span style="margin-right:90px;width:60px">产品名称</span>
+             <Input style="width:120px;margin-right:40px" size="small"/>
+             <Select style="width:120px;margin-right:40px" size="small" v-model="tableSet[0].sort">
+                 <Option :value="1">升序</Option>
+                 <Option :value="2">降序</Option>
+             </Select>
+              <Select style="width:120px" size="small" v-model="tableSet[0].important">
+                 <Option :value="1">1</Option>
+                 <Option :value='2'>2</Option>
+                 <Option :value='3'>3</Option>
+             </Select>
+        </div>
+         <div style="display:flex;margin:10px 0">
+             <Checkbox style="margin-right:50px"/>
+             <span style="margin-right:90px;width:60px">计量单位</span>
+             <Input style="width:120px;margin-right:40px" size="small"/>
+           <Select style="width:120px;margin-right:40px" size="small" v-model="tableSet[1].sort">
+                 <Option :value="1">升序</Option>
+                 <Option :value="2">降序</Option>
+             </Select>
+              <Select style="width:120px" size="small" v-model="tableSet[1].important">
+                 <Option :value="1">1</Option>
+                 <Option :value='2'>2</Option>
+                 <Option :value='3'>3</Option>
+             </Select>
+        </div>
+         <div style="display:flex;margin:10px 0">
+             <Checkbox style="margin-right:50px"/>
+             <span style="margin-right:90px;width:60px">型号</span>
+             <Input style="width:120px;margin-right:40px" size="small"/>
+            <Select style="width:120px;margin-right:40px" size="small" v-model="tableSet[2].sort">
+                 <Option :value="1">升序</Option>
+                 <Option :value="2">降序</Option>
+             </Select>
+              <Select style="width:120px" size="small" v-model="tableSet[2].important">
+                 <Option :value="1">1</Option>
+                 <Option :value='2'>2</Option>
+                 <Option :value='3'>3</Option>
+             </Select>
+        </div>
+         <div style="display:flex;margin:10px 0">
+             <Checkbox style="margin-right:50px"/>
+             <span style="margin-right:90px;width:60px">图号</span>
+             <Input style="width:120px;margin-right:40px" size="small"/>
+             <Select style="width:120px;margin-right:40px" size="small" v-model="tableSet[3].sort">
+                 <Option :value="1">升序</Option>
+                 <Option :value="2">降序</Option>
+             </Select>
+              <Select style="width:120px" size="small" v-model="tableSet[3].important">
+                 <Option :value="1">1</Option>
+                 <Option :value='2'>2</Option>
+                 <Option :value='3'>3</Option>
+             </Select>
+        </div>
+         <div style="display:flex;margin:10px 0">
+             <Checkbox style="margin-right:50px"/>
+             <span style="margin-right:90px;width:60px">产品图片</span>
+             <Input style="width:120px;margin-right:40px" size="small"/>
+            <Select style="width:120px;margin-right:40px" size="small" v-model="tableSet[4].sort">
+                 <Option :value="1">升序</Option>
+                 <Option :value="2">降序</Option>
+             </Select>
+              <Select style="width:120px" size="small" v-model="tableSet[4].important">
+                 <Option :value="1">1</Option>
+                 <Option :value='2'>2</Option>
+                 <Option :value='3'>3</Option>
+             </Select>
+        </div>
+         <div style="display:flex;margin:10px 0">
+             <Checkbox style="margin-right:50px"/>
+             <span style="margin-right:90px;width:60px">图纸</span>
+             <Input style="width:120px;margin-right:40px" size="small"/>
+            <Select style="width:120px;margin-right:40px" size="small" v-model="tableSet[5].sort">
+                 <Option :value="1">升序</Option>
+                 <Option :value="2">降序</Option>
+             </Select>
+              <Select style="width:120px" size="small" v-model="tableSet[5].important">
+                 <Option :value="1">1</Option>
+                 <Option :value='2'>2</Option>
+                 <Option :value='3'>3</Option>
+             </Select>
+        </div>
+    </Modal>
+    </div>
+</template>
+<script>
+export default {
+    name:'CompletionStatistics',
+    data(){
+        return{
+            tableSet:[{sort:'',important:''},{sort:'',important:''},{sort:'',important:''},{sort:'',important:''},{sort:'',important:''},{sort:'',important:''}],
+            showTableSet:false,
+            pageIndex:1,
+            pageSize:10,
+            total:0,
+            searchData:{
+               start_time:'',
+               order_no:'',
+                project_title:'',
+               status:'',
+            },
+      order_list:[],
+       tableData:[],
+       tableColumns:[
+           {title:'项目编码',align:'center',minWidth:120,key:'order_no'},
+           {title:'项目名称',align:'center',minWidth:120,key:'project_name'},
+           {title:'图号',align:'center',minWidth:120,key:'url_number'},
+           {title:'未完工平方',align:'center',minWidth:120,key:'un_complete_area'},
+           {title:'操作',align:'center',slot:'setSlot',minWidth:120},
+       ]
+        }
+    },
+    created(){
+    //   //工序列表
+    // this.axios.post('/api/ext_produce_list').then(res=>{this.process_list = res.data});
+    // //班组列表
+    // this.axios("/api/employee_list").then((res) => (this.band_list = res.data));
+     this.axios.get('/api/finance_un_complete_total').then(res=>{
+                 this.order_list = res.data.order_list
+     })
+    },
+    mounted(){
+        this.getData();
+    },
+    methods:{
+        getData(row){
+         this.axios.get('/api/finance_un_complete_total',{params:{...row,page_index:this.pageIndex,page_size:this.pageSize}}).then(res=>{
+             this.tableData = res.data.list;
+             this.total = Number(res.data.total);
+         })
+        },
+        tableSetSure(){
+           console.log(this.tableSet)
+        },
+        init(){
+            let data = [];
+            data = JSON.parse(JSON.stringify(this.searchData));
+            data.start_time = data.start_time?Date.parse(data.start_time).toString().slice(0,10):'';
+            this.getData(data)
+        },
+        goPageDetail(row){
+            
+        },
+        changeSize(e){
+             this.pageSize = e;
+             this.getData();
+        },
+        changePage(e){
+        this.pageIndex = e;
+        this.getData();
+        }
+
+    }
+}
+</script>
+<style lang="scss" scoped>
+
+</style>

+ 3 - 1
src/views/ChipPrintScreen/ChipPrintScreen.vue

@@ -597,8 +597,9 @@
             :key="index"
             @click="handleSelectedRoomClick(modalRoomList, block)"
           >
-            <div>
+            <div style="display:flex;flex-direction: column;text-align: center;">
               <span style="font-size:25px">{{ block.house }}</span>
+              <span style="font-size:18px">{{`(${block.tag})`}}</span>
             </div>
           </div>
         </div>
@@ -1652,6 +1653,7 @@ handleSelectionAll(){
           });
           this.modalRoomList = res.data.data;
           this.modal_room_total = res.data.total;
+          console.log(this.modalRoomList)
         }
       });
     },

+ 1 - 0
src/views/ChipPrintScreen/ChipPrintScreenCheck.vue

@@ -885,6 +885,7 @@ export default {
         },
       }).then((res) => {
         if (res.code == 200) {
+       
           res.data.data.map((v) => {
             v.isCurrent = false;
             this.modalRoomListSelected &&

+ 263 - 205
src/views/OrderMannage/BusinessOrderlist/edit.vue

@@ -772,13 +772,17 @@
             </template>
           </vxe-column>
           <vxe-column title="门头板" min-width="100" :edit-render="{}">
-            <!-- <template #default="scope"> -->
+            <template #default="{row,rowIndex}">
+             <div v-if="row.hasOwnProperty('addMTB')">
+             <span v-show="tableData[rowIndex].addMTB">是</span>
+            
+              <span v-show="!tableData[rowIndex].addMTB||!tableData[rowIndex].hasOwnProperty('addMTB')">否</span></div>
               <!-- {{
                 scope.row.part.filter(
                   (v) => v.part_title && v.part_title.indexOf("门头板")
                 )[0].part_title
               }} -->
-            <!-- </template> -->
+            </template>
             <template #edit="scope">
               <div>
                 <a v-if="!scope.row.addMTB" @click="handleMTBClick(scope.row)"
@@ -795,7 +799,168 @@
               <div></div>
             </template>
           </vxe-column>
-          <vxe-column title="原材料名称" min-width="100">
+      
+          <vxe-column
+            field="total_num"
+            title="数量"
+            min-width="40"
+            :edit-render="{}"
+          >
+            <template #edit="scope">
+              <Input
+                v-if="!scope.row.is_metal"
+                v-model="scope.row.total_num"
+                @on-change="(e) => changeEditTotalNum(e, scope.row)"
+              />
+              <Input
+                v-else
+                v-model="scope.row.num"
+                @on-change="(e) => changeEditMetalNum(e, scope.row)"
+              />
+            </template>
+            <template #default="scope">
+              {{ scope.row.is_metal ? scope.row.num : scope.row.total_num }}
+            </template>
+          </vxe-column>
+          <vxe-column field="unit" title="单位" min-width="20"> </vxe-column>
+          <vxe-column field="num" title="核算数量" min-width="40"> </vxe-column>
+          <vxe-column title="单价" min-width="80" :edit-render="{}">
+            <template #edit="scope">
+              <Input
+                v-if="!scope.row.is_metal"
+                v-model="scope.row.unit_price"
+                @on-change="(e) => handleProductUnit_priceChange(e, scope.row)"
+              />
+              <Input
+                v-else
+                v-model="scope.row.single_price"
+                @on-change="(e) => handleMetailPriceChange(e, scope.row)"
+              />
+            </template>
+            <template #default="scope">
+              {{
+                scope.row.is_metal
+                  ? scope.row.single_price
+                  : scope.row.unit_price
+              }}
+            </template>
+          </vxe-column>
+          <vxe-column title="附加项" min-width="150" :edit-render="{}">
+            <template #edit="scope">
+              <div>
+                <div
+                  v-for="(ext_detail, idx) in scope.row.extArray"
+                  :key="ext_detail.ext_id"
+                  :style="
+                    idx != scope.row.extArray.length - 1
+                      ? {
+                          borderBottom: '1px solid #e8eaec',
+                          padding: '10px 0',
+                        }
+                      : { padding: '10px 0' }
+                  "
+                  v-show="ext_detail.type == 2"
+                >
+                  <Select
+                    filterable
+                    clearable
+                    transfer
+                    label-in-value
+                    size="small"
+                    v-model="ext_detail.id"
+                    @on-change="(e) => changeEditExt(ext_detail, e, scope.row)"
+                    style="width: 100px"
+                  >
+                    <Option
+                      v-for="item of extList"
+                      :key="item.id"
+                      :label="item.title"
+                      :value="item.id"
+                    ></Option>
+                  </Select>
+                  <Icon
+                    style="'margin:0 5px"
+                    @click="handleExtraAdd(scope.row.extArray, 2)"
+                    color="#32C800"
+                    size="20"
+                    type="ios-add-circle"
+                  />
+                  <Icon
+                    @click="
+                      handleExtraDele(
+                        scope.row.extArray,
+                        ext_detail,
+                        idx,
+                        scope.row
+                      )
+                    "
+                    color="#FF5E5C"
+                    v-show="scope.row.extArray.length > 1"
+                    size="20"
+                    type="md-remove-circle"
+                  />
+                </div>
+              </div>
+            </template>
+            <template #default="scope">
+              <Tooltip
+                max-width="600"
+                transfer
+                placement="right"
+                v-if="!scope.row.is_metal"
+              >
+                <span slot="content">
+                  <div
+                    v-for="(_item, _index) in scope.row.extArray"
+                    :key="_item.ext_id + 'ext' + _index"
+                    v-show="_item.type == 2"
+                  >
+                    <div style="display:flex;justify-content: space-between;">
+                      <div style="width:120px">
+                        {{
+                          extList.filter((v) => v.id == _item.ext_id).length > 0
+                            ? extList.filter((v) => v.id == _item.ext_id)[0]
+                                .title
+                            : ""
+                        }}
+                      </div>
+                      <div style="width:80px">数量:{{ _item.num }}</div>
+                      <div style="width:100px">单价:{{ _item.price }}</div>
+                      <div style="width:120px">
+                        金额:{{ _item.num * 1 * _item.price }}
+                      </div>
+                      <div style="width:160px">备注:{{ _item.remark }}</div>
+                    </div>
+                  </div>
+                </span>
+                {{
+                  scope.row.extArray
+                    ? scope.row.extArray
+                        .filter((v) => v.type == 2)
+                        .map((v) => v.title)
+                        .join("/")
+                    : ""
+                }}
+              </Tooltip>
+            </template>
+          </vxe-column>
+          <vxe-column title="附加金额" min-width="40" :edit-render="{}">
+            <template #default="scope"
+              >{{ scope.row.is_metal ? scope.row.price : scope.row.ext_price }}
+            </template>
+            <template #edit="scope">
+              <Input v-if="!scope.row.is_metal" v-model="scope.row.ext_price" @on-change='(e) =>changeExtPrice(e, scope.row)'/>
+              <span v-else></span>
+            </template>
+          </vxe-column>
+          <vxe-column field="over_price" title="超标金额" min-width="40">
+          </vxe-column>
+          <vxe-column title="总金额" min-width="60">
+            <template #default="scope"
+              >{{ scope.row.is_metal ? scope.row.price : scope.row.price }}
+            </template>
+          </vxe-column>
+              <vxe-column title="原材料名称" min-width="100">
             <template #default="scope">
               <div v-if="!scope.row.is_metal">
                 <div
@@ -970,166 +1135,6 @@
             </template>
           </vxe-column>
           <vxe-column
-            field="total_num"
-            title="数量"
-            min-width="80"
-            :edit-render="{}"
-          >
-            <template #edit="scope">
-              <Input
-                v-if="!scope.row.is_metal"
-                v-model="scope.row.total_num"
-                @on-change="(e) => changeEditTotalNum(e, scope.row)"
-              />
-              <Input
-                v-else
-                v-model="scope.row.num"
-                @on-change="(e) => changeEditMetalNum(e, scope.row)"
-              />
-            </template>
-            <template #default="scope">
-              {{ scope.row.is_metal ? scope.row.num : scope.row.total_num }}
-            </template>
-          </vxe-column>
-          <vxe-column field="unit" title="单位" min-width="70"> </vxe-column>
-          <vxe-column field="num" title="核算数量" min-width="40"> </vxe-column>
-          <vxe-column title="单价" min-width="80" :edit-render="{}">
-            <template #edit="scope">
-              <Input
-                v-if="!scope.row.is_metal"
-                v-model="scope.row.unit_price"
-                @on-change="(e) => handleProductUnit_priceChange(e, scope.row)"
-              />
-              <Input
-                v-else
-                v-model="scope.row.single_price"
-                @on-change="(e) => handleMetailPriceChange(e, scope.row)"
-              />
-            </template>
-            <template #default="scope">
-              {{
-                scope.row.is_metal
-                  ? scope.row.single_price
-                  : scope.row.unit_price
-              }}
-            </template>
-          </vxe-column>
-          <vxe-column title="附加项" min-width="150" :edit-render="{}">
-            <template #edit="scope">
-              <div>
-                <div
-                  v-for="(ext_detail, idx) in scope.row.extArray"
-                  :key="ext_detail.ext_id"
-                  :style="
-                    idx != scope.row.extArray.length - 1
-                      ? {
-                          borderBottom: '1px solid #e8eaec',
-                          padding: '10px 0',
-                        }
-                      : { padding: '10px 0' }
-                  "
-                  v-show="ext_detail.type == 2"
-                >
-                  <Select
-                    filterable
-                    clearable
-                    transfer
-                    label-in-value
-                    size="small"
-                    v-model="ext_detail.id"
-                    @on-change="(e) => changeEditExt(ext_detail, e, scope.row)"
-                    style="width: 100px"
-                  >
-                    <Option
-                      v-for="item of extList"
-                      :key="item.id"
-                      :label="item.title"
-                      :value="item.id"
-                    ></Option>
-                  </Select>
-                  <Icon
-                    style="'margin:0 5px"
-                    @click="handleExtraAdd(scope.row.extArray, 2)"
-                    color="#32C800"
-                    size="20"
-                    type="ios-add-circle"
-                  />
-                  <Icon
-                    @click="
-                      handleExtraDele(
-                        scope.row.extArray,
-                        ext_detail,
-                        idx,
-                        scope.row
-                      )
-                    "
-                    color="#FF5E5C"
-                    v-show="scope.row.extArray.length > 1"
-                    size="20"
-                    type="md-remove-circle"
-                  />
-                </div>
-              </div>
-            </template>
-            <template #default="scope">
-              <Tooltip
-                max-width="600"
-                transfer
-                placement="right"
-                v-if="!scope.row.is_metal"
-              >
-                <span slot="content">
-                  <div
-                    v-for="(_item, _index) in scope.row.extArray"
-                    :key="_item.ext_id + 'ext' + _index"
-                    v-show="_item.type == 2"
-                  >
-                    <div style="display:flex;justify-content: space-between;">
-                      <div style="width:120px">
-                        {{
-                          extList.filter((v) => v.id == _item.ext_id).length > 0
-                            ? extList.filter((v) => v.id == _item.ext_id)[0]
-                                .title
-                            : ""
-                        }}
-                      </div>
-                      <div style="width:80px">数量:{{ _item.num }}</div>
-                      <div style="width:100px">单价:{{ _item.price }}</div>
-                      <div style="width:120px">
-                        金额:{{ _item.num * 1 * _item.price }}
-                      </div>
-                      <div style="width:160px">备注:{{ _item.remark }}</div>
-                    </div>
-                  </div>
-                </span>
-                {{
-                  scope.row.extArray
-                    ? scope.row.extArray
-                        .filter((v) => v.type == 2)
-                        .map((v) => v.title)
-                        .join("/")
-                    : ""
-                }}
-              </Tooltip>
-            </template>
-          </vxe-column>
-          <vxe-column title="附加金额" min-width="40" :edit-render="{}">
-            <template #default="scope"
-              >{{ scope.row.is_metal ? scope.row.price : scope.row.ext_price }}
-            </template>
-            <template #edit="scope">
-              <Input v-if="!scope.row.is_metal" v-model="scope.row.ext_price" @on-change='(e) =>changeExtPrice(e, scope.row)'/>
-              <span v-else></span>
-            </template>
-          </vxe-column>
-          <vxe-column field="over_price" title="超标金额" min-width="40">
-          </vxe-column>
-          <vxe-column title="总金额" min-width="60">
-            <template #default="scope"
-              >{{ scope.row.is_metal ? scope.row.price : scope.row.price }}
-            </template>
-          </vxe-column>
-          <vxe-column
             field="remark"
             title="备注"
             min-width="100"
@@ -1307,8 +1312,8 @@
       <div label="线条:" style="margin-left:20px;width:95%">
         <div style="font-size:20px">
           <span>线条:</span>
-          <span>{{ print_line_data === "" ? "无" : print_line_data }}</span>
-          <!-- <span v-if="wood_title_count.length < 1">无</span>
+          <!-- <span>{{ print_line_data === "" ? "无" : print_line_data }}</span> -->
+          <span v-if="wood_title_count.length < 1">无</span>
           <span
             v-else
             v-for="(item, index) in wood_title_count"
@@ -1319,7 +1324,7 @@
               <span v-show="_index < item.measure_str.length - 1">;</span>
             </span>
             <span v-show="index < wood_title_count.length - 1">;</span>
-          </span> -->
+          </span>
         </div>
       </div>
       <div label="合计:" style="margin-left:20px;width:95%">
@@ -1764,7 +1769,7 @@
                         v-for="item of element.change"
                         :key="item.id"
                         :label="item.part_title || item.title"
-                        :value="item.id"
+                        :value="typeof(item.id) == 'string'?item.part_id:item.id"
                       ></Option>
                     </Select>
                   </FormItem>
@@ -1830,11 +1835,11 @@
                     :key="idx + '555' + element.part_id"
                     :label="process_detail.name + ':'"
                     v-show="
-                      !element.is_metal &&
+                      (!element.is_metal &&
                         element.hide_process &&
                         !element.hide_process.filter(
                           (v) => v == process_detail.id
-                        ).length > 0
+                        ).length > 0)||element.addMTB
                     "
                   >
                     <Tooltip style="width: 120px" transfer>
@@ -1885,7 +1890,7 @@
                       >拆分</Button
                     >
                     <Button
-                      @click="handlePartsDele(element, idx, modalData.part)"
+                      @click="handlePartsDele(element, idx, modalData)"
                       type="primary"
                       v-else
                       v-show="!isCheck"
@@ -1926,7 +1931,7 @@
                           style="width: 80px"
                         />
                       </FormItem>
-                      <FormItem label="面积">
+                      <FormItem label="面积(m²)" :label-width='80'>
                         <Input
                             @on-change='changeNum(element, idx, modalData)'
                           size="small"
@@ -2245,6 +2250,7 @@ export default {
   },
   data() {
     return {
+      lineData:[],
       ext_sum:0,
       MTBtotal:0,
       currency_edit_index: null,
@@ -2670,8 +2676,8 @@ export default {
     changeHigh(row,index,arr){
      if(row.addMTB){
         if(row.long&&row.wide){
-          row.MTBsize = 1*row.long*row.wide;
-         arr.part[index].MTBsize = 1*row.long*row.wide;
+          row.MTBsize = (1*row.long*row.wide)/1000000>=0.3?(1*row.long*row.wide)/1000000:0.3;
+         arr.part[index].MTBsize = (1*row.long*row.wide)/1000000>=0.3?(1*row.long*row.wide)/1000000:0.3;
         //  arr.part[index].MTBtotal = arr.part[index].MTBsize*arr.part[index].MTBnum*arr.part[index].MTBprice*1
         this.changeNum(row,index,arr)
         }
@@ -2682,10 +2688,10 @@ export default {
     changeNum(row,index,arr){
       if(row.MTBnum&&row.MTBsize&&row.MTBprice){
 
-        row.MTBtotal = row.MTBnum*1*row.MTBsize*row.MTBprice
-        arr.part[index].MTBtotal = row.MTBnum*1*row.MTBsize*row.MTBprice
-        this.MTBtotal = arr.part[index].MTBtotal
-        arr.ext_price = this.ext_sum + this.MTBtotal; 
+        row.MTBtotal = (row.MTBnum*1*row.MTBsize*row.MTBprice).toFixed(2)
+        arr.part[index].MTBtotal = (row.MTBnum*1*row.MTBsize*row.MTBprice).toFixed(2)
+        this.MTBtotal = arr.part[index].MTBtotal*1
+        arr.ext_price = this.ext_sum*1 + this.MTBtotal*1; 
         arr.price =
         (arr.unit_price * 1 || 0) * (arr.num * 1 || 1) +
         (arr.over_price * 1 || 0) +
@@ -2695,7 +2701,7 @@ export default {
       }else{
        return 
       }
-       console.log(row)
+     
     },
     quoteRoughDraft() {
       this.axios
@@ -2828,7 +2834,7 @@ export default {
           v.material_id = v.product_id;
           v.ext_id = v.product_id;
         });
-      console.log(sendList);
+     
       sendList.length > 0 &&
         sendList.map((element, index) => {
           element.ext = element.extArray;
@@ -2843,7 +2849,7 @@ export default {
               });
             }
           });
-          console.log(2);
+         
           if (!element.measurement) {
             element.measurement = "";
           }
@@ -3002,7 +3008,7 @@ export default {
                 if (elem.type == 1) {
                   elem.total_num = elem.num;
                   elem.unit_price = elem.price;
-                  elem.ext_price = elem.num * elem.price;
+                  elem.ext_price = elem.num * elem.price*1;
                   elem.is_metal = true;
                   // element.part.push(elem);
                 } else {
@@ -3219,13 +3225,14 @@ export default {
           this.handleCalcCount();
           this.showEditProduct = false;
           this.$forceUpdate();
-          console.log(this.tableData)
+        
         },
         onCancel: () => {},
       });
     },
     // 合计 、 线条 统计价格
     handleCalcCount(type) {
+      console.log(this.tableData,1);
       let sum = 0;
       this.parts_title_count = [];
       this.wood_title_count = [];
@@ -3437,6 +3444,7 @@ export default {
       this.support_remark.push(val);
     },
     handleMTBClick(row) {
+      console.log(row)
       row.addMTB = true;
       const _obj = {
         is_metal: false,
@@ -3449,6 +3457,7 @@ export default {
         wide: "",
         high: "",
         hide_measure: [],
+        part_title:'',
         process: [],
         part_id: '', //门头板ID   没有part_id 通过选择框来确定part_id 就是id
         hide_process: ["1", "2", "3"],
@@ -3470,6 +3479,8 @@ export default {
           },
         ],
       };
+      console.log(this.process_obj)
+      _obj.process = JSON.parse(JSON.stringify(this.process_obj))
       row.part.push(_obj);
       this.$forceUpdate();
     },
@@ -3905,7 +3916,7 @@ export default {
                 if (elem.type == 1) {
                   elem.total_num = elem.num;
                   elem.unit_price = elem.price;
-                  elem.ext_price = elem.num * elem.price;
+                  elem.ext_price = elem.num * elem.price*1;
                   elem.is_metal = true;
                   element.part.push(elem);
                   if (!element.extra) {
@@ -3999,7 +4010,6 @@ export default {
           (v) => ((obj[v.id] = ""), (obj.procedure_properties[v.id] = ""))
         );
         this.tableData.push(obj);
-        console.log(this.tableData)
         this.$forceUpdate();
       } else {
         this.$Message.warning("请先选择客户");
@@ -4039,7 +4049,7 @@ export default {
           this.title_state = 2;
           this.isCheck = false;
           if (this.type == 1) {
-            console.log(row)
+          
             this.showEditProduct = true;
             this.modalData = JSON.parse(JSON.stringify(row));
             this.currencyIndex = index;
@@ -4072,6 +4082,7 @@ export default {
             this.showEditProduct = true;
             // }
           }
+          console.log(this.modalData.part)
           break;
         case 3:
           this.$Modal.confirm({
@@ -4088,7 +4099,7 @@ export default {
           obj = this.deepClone(row);
           obj.isCopied = true;
           if (row.is_metal) {
-            console.log(`123`, 123);
+         
           } else {
             obj.position = "";
             obj.measure.map((v) => {
@@ -4175,7 +4186,7 @@ export default {
       this.$Message.error(err.msg || "上传失败");
     },
     onProgress(e) {
-      console.log(e);
+     
     },
     //导入成功
     uploadSuccess(res) {
@@ -4237,7 +4248,7 @@ export default {
         return (sum += v.total_price * 1);
       });
       this.ext_sum = sum
-      item.ext_price = this.ext_sum +this.MTBtotal;
+      item.ext_price = this.ext_sum +this.MTBtotal*1;
       item.price =
         (item.unit_price * 1 || 0) * (item.num * 1 || 1) +
         (item.over_price * 1 || 0) +
@@ -4254,7 +4265,7 @@ export default {
           sum2 += element.total_price * 1 || 0;
         });
         this.ext_sum = sum2*1
-      item.ext_price = this.ext_sum +this.MTBtotal;
+      item.ext_price = this.ext_sum +this.MTBtotal*1;
       item.price =
         (item.unit_price * 1 || 0) * (item.num * 1 || 1) +
         (item.over_price * 1 || 0) +
@@ -4273,7 +4284,26 @@ export default {
       this.$forceUpdate();
     },
     handlePartsDele(element, index, array) {
-      array.splice(index, 1);
+    
+    //   let data = JSON.parse(JSON.stringify(this.tableData));
+    //   data.splice(data.length-1,1);
+    //   let state = false;
+    //  data.forEach((v,idx)=>{
+    //     v.part.forEach(m=>{
+          
+    //       if(m.part_title.indexOf('门头板')<0){
+            
+    //         return state=true
+    //       }
+    //     })
+     
+    //    if(state){
+        
+    //      this.tableData[0].addMTB = false;
+    //       console.log(this.tableData)
+    //    }
+    //  })
+      array.part.splice(index, 1);
       this.handleCalcCount();
       this.$forceUpdate();
     },
@@ -4307,7 +4337,7 @@ export default {
         modalData.extArray.map((v) => {
           return (sum += v.total_price * 1);
         });
-        modalData.ext_price = sum;
+        modalData.ext_price = sum*1;
         modalData.price =
           (modalData.unit_price * 1 || 0) * (modalData.num * 1 || 1) +
           (modalData.over_price * 1 || 0) +
@@ -4344,6 +4374,7 @@ export default {
       this.handleCalcCount();
     },
     changeEditMeasure(e, row, measure) {
+     
       if (e.target.value) {
         row.isEdit = true;
         row.measure.map((v) => {
@@ -4411,11 +4442,13 @@ export default {
       }
     },
     handleSelectProductMetail(row, rowIndex, $event, scope) {
+   
       if ($event) {
         const arr = $event.tag.split("_");
         let obj = {};
         // 分类   1产品   2五金
         if (arr[1] == "1") {
+
           obj = {
             isCopied: row.isCopied,
             select_all_id: $event.value,
@@ -4478,6 +4511,25 @@ export default {
           this.changeEditMetal(obj, rowIndex, $event, scope);
         }
         this.HandleAutoCreateNewLine();
+      //   let data = [];
+      
+      //   data = this.tableData;
+      //  data.splice(this.tableData.length-1,1)
+      
+      //   data.forEach(v=>{
+      //     console.log(v)
+      //       let arr = [];
+      //       v.part.forEach(m=>{
+      //         console.log(2)
+      //         let obj = {};
+      //         if(m.part_title.indexOf('线条')>=0){
+      //           obj = m;
+      //         }
+      //         arr.push(obj)
+      //       })
+      //       this.lineData = [...arr]
+      //   })
+      //   console.log(this.lineData)
       }
     },
     changeEditTableData(row, rowIndex, $event, scope) {
@@ -4493,6 +4545,7 @@ export default {
             custom_id: this.info.custom_id,
           },
         }).then((res) => {
+          console.log(res)
           this.process_match_list = res.data.process.list;
           this.process_all_list = res.data.process_list;
           this.support_remark = Array.from(
@@ -4500,9 +4553,10 @@ export default {
           );
           this.bpp_list.map((v) => (row[v.id] = ""));
           this.measure_total.map((v) => (row[v.e_title] = ""));
+          row.addMTB = res.data.addMTB?res.data.addMTB:false;
           row.url = res.data.url;
           row.total_num = res.data.total_num || 1;
-          row.ext_price = res.data.ext_price || 0;
+          row.ext_price = res.data.ext_price*1 || 0;
           row.unit_price = res.data.price || 0;
           row.num = res.data.num || 1;
           row.over_price = res.data.over_price || 0;
@@ -4664,7 +4718,7 @@ export default {
             this.pre_process_obj = JSON.parse(JSON.stringify(_temp_obj));
             this.modalData.url = res.data.url;
             this.modalData.total_num = res.data.total_num || 1;
-            this.modalData.ext_price = res.data.ext_price || 0;
+            this.modalData.ext_price = res.data.ext_price*1 || 0;
             this.modalData.unit_price = res.data.price || 0;
             this.modalData.num = res.data.num || 1;
             this.modalData.over_price = res.data.over_price || 0;
@@ -4856,7 +4910,7 @@ export default {
             this.process_all_list = res.data.process_list;
             //获取产品
             this.modalData.total_num = res.data.total_num || 1;
-            this.modalData.ext_price = res.data.ext_price || 0;
+            this.modalData.ext_price = res.data.ext_price*1 || 0;
             this.modalData.unit_price = res.data.price || 0;
             this.modalData.num = res.data.num || 1;
             this.modalData.num_temp_save = res.data.num || 1;
@@ -4944,7 +4998,7 @@ export default {
                   v.material_detail_list[0].material_detail_id;
                 v.material_detail_num = 1;
               });
-              part.MTBsize = res.data.long*res.data.wide*1;
+              part.MTBsize = (res.data.long*res.data.wide*1)/1000000>=0.3?(res.data.long*res.data.wide*1)/1000000:0.3;
               part.MTBnum = res.data.MTBnum?res.data.MTBnum:0;
               part.MTBprice = res.data.MTBprice?res.data.MTBprice:0;
               part.part_id = part.change_id;
@@ -4953,13 +5007,14 @@ export default {
               part.high = res.data.high;
               part.wide = res.data.wide;
               part.route_id = res.data.route_id;
-              part.process = res.data.process;
+              part.part_title = res.data.part_title;
+              // part.process = res.data.process;
             }
           });
         });
     },
     handlePartChange($event, row, measure, product_num) {
-      console.log(row)
+    
       if (row.addMTB) {
         this.handeMTBSelection($event, row);
       } else {
@@ -5114,10 +5169,11 @@ export default {
         (product.over_price * 1 || 0) +
         (product.ext_price * 1 || 0);
       product.price = product.price.toFixed(2);
+      this.
       this.$forceUpdate();
     },
     changeExtPrice(e, product){
-      console.log(e)
+
   product.ext_price = e.target.value * 1;
       product.price =
         (product.unit_price * 1 || 0) * (product.num * 1 || 1) +
@@ -5138,7 +5194,7 @@ export default {
       // this.$forceUpdate();
     },
     handleProductExt_priceChange(e, product) {
-      console.log(product)
+
       product.ext_price = e.target.value * 1;
       product.price =
         (product.unit_price * 1 || 0) * (product.num * 1 || 1) +
@@ -5280,7 +5336,7 @@ export default {
                   product.part.map((v) => {
                     if (match_item.e_title == "H") {
                       if (
-                        match_item.max > v.long * 1 + product["H"] * 1 &&
+                        match_item.max >= v.long * 1 + product["H"] * 1 &&
                         match_item.min <= v.long * 1 + product["H"] * 1
                       ) {
                         part_arr &&
@@ -5295,10 +5351,12 @@ export default {
                           });
                       }
                     } else {
+                     
                       if (
-                        match_item.max > product[match_item.e_title] &&
+                        match_item.max >= product[match_item.e_title] &&
                         match_item.min <= product[match_item.e_title]
                       ) {
+
                         part_arr &&
                           part_arr.part_detail &&
                           part_arr.part_detail.map((v) => {
@@ -5314,7 +5372,7 @@ export default {
                   });
                 } else {
                   if (
-                    match_item.max > product[match_item.e_title] &&
+                    match_item.max >= product[match_item.e_title] &&
                     match_item.min <= product[match_item.e_title]
                   ) {
                     part_arr &&
@@ -5414,13 +5472,13 @@ export default {
             let flag_wide = false;
             for (let index = 0; index < product.measure.length; index++) {
               const item = product.measure[index];
-              if (element.high.indexOf(item.measureCalc) != -1) {
+              if (element.high.toString().indexOf(item.measureCalc) != -1) {
                 flag_high = true;
               }
-              if (element.long.indexOf(item.measureCalc) != -1) {
+              if (element.long.toString().indexOf(item.measureCalc) != -1) {
                 flag_long = true;
               }
-              if (element.wide.indexOf(item.measureCalc) != -1) {
+              if (element.wide.toString().indexOf(item.measureCalc) != -1) {
                 flag_wide = true;
               }
             }

+ 85 - 5
src/views/ProductionOrderList/ProductionsOrder/BST_Decorationlist.vue

@@ -17,10 +17,33 @@
       :total="total"
     >
       <div slot="titleButton">
-        <Button @click="back" type="primary" ghost style="margin-right: 10px"
+        <Button @click="back" type="primary" ghost style="margin-right: 30px"
           >返回</Button
         >
-        <Button
+         <Dropdown trigger="click" transfer style="margin-right: 30px;
+    border: 1px solid rgb(45, 140, 240);
+    width: 75px;
+    height: 31px;
+    border-radius: 5px;
+    text-align: center;
+    line-height: 30px;
+    position: relative;
+    top: 2px;
+    font-size: 14px;" @on-click='totalClick'>
+        <a href="javascript:void(0)" >
+            批量
+            <Icon type="ios-arrow-down"></Icon>
+        </a>
+        <DropdownMenu slot="list" >
+            <DropdownItem name='1'>修改尺寸</DropdownItem>
+            <DropdownItem name='2'>批量打印芯片</DropdownItem>
+            <DropdownItem name='3'>批量修改工艺路线</DropdownItem>
+            <DropdownItem name='4'>批量下生产排产</DropdownItem>
+            <DropdownItem name='5'>批量打印订单</DropdownItem>
+            <DropdownItem name='6'>下计划</DropdownItem>
+        </DropdownMenu>
+      </Dropdown>
+        <!-- <Button
           type="primary"
           ghost
           style="margin-right: 10px"
@@ -33,9 +56,9 @@
           style="margin-right: 10px"
           @click="openShipModal(selects)"
           >批量打印芯片</Button
-        >
+        > -->
         <!-- <Button type="primary" ghost style="margin-right:10px;" @click="showBatchModal = true">批量绑定芯片</Button> -->
-        <Button
+        <!-- <Button
           type="primary"
           ghost
           style="margin-right: 10px"
@@ -49,7 +72,7 @@
           @click="openModal(selects)"
           >批量下生产排产</Button
         >
-        <Button type="primary" ghost>批量打印订单</Button>
+        <Button type="primary" ghost>批量打印订单</Button> -->
       </div>
 
       <template slot="set" slot-scope="{ row }">
@@ -367,6 +390,13 @@
     >
       <Input type="textarea" v-model="test_content" :rows="40" />
     </Modal>
+    <Modal v-model="show_plan" title='批量下计划' :mask-closable="false" @on-ok='finishDataTrue'>
+      <Form  :label-width='150'>
+        <FormItem v-for="item in basics_procedure_list" :key="item.id" :label='`要求${item.title}完成的时间:`' style="margin-left:60px" >
+          <DatePicker type="date" placeholder="请选择" style="width: 200px" v-model='item.time' transfer></DatePicker>
+        </FormItem>
+      </Form>
+    </Modal>
   </div>
 </template>
 
@@ -381,6 +411,9 @@ export default {
   },
   data() {
     return {
+      finishData:[],
+      basics_procedure_list:[],
+      show_plan:false,
       measureModalColumns: [
         {
           title: "部件名称",
@@ -944,6 +977,53 @@ export default {
     });
   },
   methods: {
+    finishDataTrue(){
+      let arr = [];
+      this.basics_procedure_list.forEach(m=>{
+        if(m.time){
+          arr[m.id]=Date.parse(m.time).toString().slice(0,10)
+        }
+      })
+      let id = [];
+      this.selects.forEach(v=>{
+        id.push(v.id)
+      })
+      console.log(arr);
+        this.axios.post('/api/ext_product_pr_plan',{order_no:this.$route.query.order_no,id,type:{...arr}}).then(res=>{
+           if(res.code==200){
+             this.$Message.success(res.msg)
+           }
+        })
+    },
+    totalClick(e){
+switch(e){
+  case '1':
+    
+    this.openMeasureModal(this.selects)
+    break;
+   case '2':
+     this.openShipModal(this.selects)
+    break;
+    case '3':
+      this.batchSelectRouter();
+    break;
+    case '4':
+      this.openModal(this.selects)
+    break;
+    case '5':
+
+    break;
+    case '6':
+       if (this.selects.length < 1) {
+        return this.$Message.error("请至少选择一项");
+      }
+      this.axios.get('/api/basics_procedure_index').then(res=>{
+        this.basics_procedure_list = res.data.data;
+      })
+    this.show_plan = true;
+    break;
+}
+    },
     init(row) {
       this.pageIndex = 1;
       row.page_index = this.pageIndex;

+ 1 - 1
src/views/PurchasingManage/PurchasingOrder/edit.vue

@@ -1314,7 +1314,7 @@ if(this.selectChoose.length == 0){
        if(!this.searchData.order_time){
        return this.$Message.warning('请选择单据日期')
       };
-      if(!this.searchData.supply_title){
+      if(!this.searchData.supply_title&&!this.searchData.supply_id){
         return this.$Message.warning('请选择供应商')
       }
       let state = false;

+ 25 - 2
src/views/cms.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="content">
-    <Header @handleTitleClick="handleTitleClick" />
+    <Header @handleTitleClick="handleTitleClick" ref="header"/>
     <div class="page">
       <div class="navigation">
         <Navgation :navgationData="navgationData" @menuSelect="menuSelect" />
@@ -46,6 +46,7 @@ import { mapState, mapMutations, mapActions } from "vuex";
 export default {
   data() {
     return {
+      w_arr:[],
       transitionName: "slide-left",
       // navgationData:[]
     };
@@ -63,7 +64,29 @@ export default {
   },
   created() {
     this.undata_side_navData();
+     if(!sessionStorage.getItem('open-menu')){
+       console.log(1)
+        this.axios({ method: "get", url: "/api/menu" }).then((res) => {
+        this.w_arr = res.data;
+      // this.undata_navData();
+       this.handleTitleClick(this.w_arr[0]) 
+    });
+    
+       
+     }
   },
+//   beforeRouteEnter(to, from, next){
+//     next();
+//      if(!sessionStorage.getItem('open-menu')){
+//        console.log(1)
+//        let arr = [];
+//         this.axios({ method: "get", url: "/api/menu" }).then((res) => {
+//         arr = res.data;
+//       // this.undata_navData();
+//     });
+//         this.handleTitleClick(arr[0]) 
+//      }
+//  },
   mounted() {
     if (sessionStorage.getItem("crumbs")) {
       let data = JSON.parse(sessionStorage.getItem("crumbs"));
@@ -74,7 +97,6 @@ export default {
     ...mapMutations(["updateCrumbs"]),
     ...mapActions(["undata_side_navData"]),
     menuSelect(name, data) {
-      console.log(this.$children)
       let permisssions_id = "";
       sessionStorage.setItem("open-menu", name);
       sessionStorage.removeItem("crumbs");
@@ -164,6 +186,7 @@ export default {
       });
     },
     handleTitleClick(row) {
+     
       this.$store.commit("updataNavgation", row.sub);
       sessionStorage.setItem("navgation", JSON.stringify(row.sub));
       // if (row.title == '首页') {

+ 2 - 2
vue.config.js

@@ -1,8 +1,8 @@
 const axios_default_ip =
   process.env.NODE_ENV == "dev"
-    ? "http://124.71.176.88:882"
+    ? "http://121.41.102.225:82"
     : process.env.NODE_ENV == "test-prd"
-    ? "http://124.71.176.88:882" //测试服
+    ? "http://121.41.102.225:82" //测试服
     : process.env.NODE_ENV == "prd_other"
     ? "http://121.37.173.82:82" //贝斯特
     : "http://124.71.176.88:882";