From 6bf3dda64be0aeef5c999818075facb41988f7bd Mon Sep 17 00:00:00 2001
From: licp <lichunping@guanfang.com.cn>
Date: 星期一, 09 九月 2024 16:05:52 +0800
Subject: [PATCH] 新增订单-生成报告功能

---
 src/components/view/b1-report-preparation.vue     |   19 ++-
 src/components/do/b1-report-preparation/order.vue |  230 ++++++++++++++++++++++++++++++++++++++++++++++
 src/assets/api/controller.js                      |    1 
 3 files changed, 245 insertions(+), 5 deletions(-)

diff --git a/src/assets/api/controller.js b/src/assets/api/controller.js
index 0c07042..752ca22 100644
--- a/src/assets/api/controller.js
+++ b/src/assets/api/controller.js
@@ -271,6 +271,7 @@
   ratifyReport: "/insReport/ratifyReport", //鎶ュ憡鎵瑰噯
   downAll: "/insReport/downAll", //鎶ュ憡鎵归噺涓嬭浇
   upAll: "/insReport/upAll", //鎶ュ憡鎵归噺涓婁紶
+  isReport: "/insReport/isReport", //鏄惁鐢熸垚鎬绘姤鍛�
 }
 
 const warehouse = {
diff --git a/src/components/do/b1-report-preparation/order.vue b/src/components/do/b1-report-preparation/order.vue
new file mode 100644
index 0000000..5d001d0
--- /dev/null
+++ b/src/components/do/b1-report-preparation/order.vue
@@ -0,0 +1,230 @@
+<template>
+  <div style="height: calc(100vh - 280px);">
+    <div class="search">
+      <div class="search_thing">
+        <div class="search_label">濮旀墭缂栧彿锛�</div>
+        <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable
+            v-model="componentData.entity.entrustCode" @keyup.enter.native="refreshTable()"></el-input></div>
+      </div>
+      <div class="search_thing">
+        <div class="search_label">鏍峰搧鍚嶇О锛�</div>
+        <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable
+            v-model="componentData.entity.sampleName" @keyup.enter.native="refreshTable()"></el-input></div>
+      </div>
+      <div class="search_thing">
+        <div class="search_label">鏍峰搧鍨嬪彿锛�</div>
+        <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable
+            v-model="componentData.entity.sampleModel" @keyup.enter.native="refreshTable()"></el-input></div>
+      </div>
+      <div class="search_thing">
+        <div class="search_label">鏍峰搧缂栧彿锛�</div>
+        <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable
+            v-model="componentData.entity.sampleCode" @keyup.enter.native="refreshTable()"></el-input></div>
+      </div>
+      <div class="search_thing" style="margin-left: 20px;">
+        <el-button size="small" @click="refresh()">閲� 缃�</el-button>
+        <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
+      </div>
+    </div>
+    <div class="table">
+      <ValueTable ref="ValueTable"
+        :url="$api.insOrder.selectInsOrderParameter" :componentData="componentData"
+        :upIndex="upIndex"  />
+    </div>
+  </div>
+</template>
+
+<script>
+import ValueTable from '../../tool/value-table.vue'
+export default {
+  components: {
+			ValueTable,
+		},
+  data() {
+    return {
+      componentData: {
+        entity: {
+          entrustCode: null,
+          sample: null,
+          sampleName: null,
+          sampleModel: null,
+          sampleCode: null,
+          outEntrustCode: null,
+          state: 1,
+          name:null,
+          engineering:null,
+          production:null,
+        },
+        isIndex: true,
+        showSelect: false,
+        select: false,
+        // selectMethod:'selectMethod',
+        do: [{
+          id: 'handleCreateReport',
+          font: '鐢熸垚鎶ュ憡',
+          type: 'text',
+          method: 'handleCreateReport',
+          disabFun: (row, index) => {
+            return row.insState == 5
+          }
+        }],
+        tagField: {
+          type: {
+            select: [{
+              value: 0,
+              type: 'success',
+              label: '鏅��'
+            }, {
+              value: 1,
+              type: 'warning',
+              label: '浼樺厛'
+            }, {
+              value: 2,
+              type: 'danger',
+              label: '绱ф��'
+            }]
+          },
+          createUser: {
+            select: []
+          },
+          orderType: {
+            select: []
+          },
+          processing: {
+            select: [{
+              value: 1,
+              label: '瀹為獙瀹ゅ鐞�'
+            },{
+              value: 0,
+              label: '濮旀墭鍗曚綅鍙栧洖'
+            }]
+          },
+          isLeave: {
+            select: [{
+              value: 1,
+              label: '鐣欐牱'
+            },{
+              value: 0,
+              label: '涓嶇暀鏍�'
+            }]
+          },
+          send: {
+            select: [{
+              value: 1,
+              label: '鑷彇'
+            },{
+              value: 0,
+              label: '鍏朵粬'
+            }]
+          }
+        },
+        selectField: {},
+        requiredAdd: [],
+        requiredUp: [],
+        needSort: ['createTime', 'sendTime', 'type', 'appointed']
+      },
+      upIndex: 0,
+      entityCopy: {}
+    }
+  },
+  mounted() {
+    this.entityCopy = this.HaveJson(this.componentData.entity)
+    this.getPower()
+  },
+  methods:{
+    // 鏉冮檺鍒嗛厤
+    getPower(radio) {
+      let power = JSON.parse(sessionStorage.getItem('power'))
+      let isReport = false
+      for (var i = 0; i < power.length; i++) {
+        if (power[i].menuMethod == 'isReport') {
+          isReport = true
+        }
+      }
+      if (!isReport) {
+        this.componentData.do.splice(0, 1)
+      }
+    },
+    refreshTable(e) {
+      this.$refs['ValueTable'].selectList(e)
+    },
+    refresh() {
+      this.componentData.entity = this.HaveJson(this.entityCopy)
+      this.upIndex++
+      this.refreshTable()
+    },
+    handleCreateReport(row){
+      this.$confirm(`鏄惁鐢熸垚姝ゅ鎵樺崟 ${row.entrustCode} 鐨勬�绘姤鍛�?`, "鎻愮ず", {
+            confirmButtonText: "鐢熸垚",
+            cancelButtonText: "涓嶇敓鎴�",
+            type: "success",
+            distinguishCancelAndClose: true,
+          }).then(() => {
+            this.$axios.post(this.$api.insReport.isReport, {
+              id:row.id,
+              state:1
+            }).then(res => {
+              if (res.code === 201) {
+                return
+              }
+              this.$message.success("宸茬敓鎴�")
+              this.refreshTable()
+            }).catch(err => {
+
+              console.log(err)
+            })
+          }).catch((e) => {
+            console.log(e)
+            if(e=='cancel'){
+              this.$axios.post(this.$api.insReport.isReport, {
+                id:row.id,
+                state:0
+              }).then(res => {
+                if (res.code === 201) {
+                  return
+                }
+                this.refreshTable()
+                this.$message.success("宸插彇娑堢敓鎴�")
+              }).catch(err => {
+                console.log(err)
+              })
+            }
+          })
+    }
+  }
+}
+</script>
+
+<style scoped>
+.search {
+		background-color: #fff;
+		height: 80px;
+		display: flex;
+		align-items: center;
+    overflow: hidden;
+	}
+
+	.search_thing {
+		display: flex;
+		align-items: center;
+		height: 50px;
+    width: 230px;
+	}
+
+	.search_label {
+		width: 90px;
+		font-size: 14px;
+		text-align: right;
+	}
+
+	.search_input {
+		width: calc(100% - 90px);
+	}
+
+	.table {
+		margin-top: 10px;
+		background-color: #fff;
+		height: 100%;
+		padding: 20px;
+	}
+</style>
diff --git a/src/components/view/b1-report-preparation.vue b/src/components/view/b1-report-preparation.vue
index a99b5f8..9b5d017 100644
--- a/src/components/view/b1-report-preparation.vue
+++ b/src/components/view/b1-report-preparation.vue
@@ -87,10 +87,15 @@
     <div style="width: 100%;height: 100%;">
       <div>
         <el-row class="title">
-          <el-col :span="12" style="padding-left: 20px;text-align: left;">鎶ュ憡缂栧埗</el-col>
+          <el-col :span="12" style="text-align: left;">
+            <el-radio-group v-model="radio"size="medium" fill="#3A7BFA">
+              <el-radio-button label="0">鎶ュ憡缂栧埗</el-radio-button>
+              <el-radio-button label="1">璁㈠崟</el-radio-button>
+            </el-radio-group>
+          </el-col>
         </el-row>
       </div>
-      <div class="search" style="position: relative;">
+      <div class="search" style="position: relative;" v-if="radio==0">
         <div class="search_thing">
           <div class="search_label">鎶ュ憡缂栧彿锛�</div>
           <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable
@@ -124,13 +129,13 @@
           </el-upload>
         </div>
       </div>
-      <!-- <input id="input" type="file" accept=".doc,.docx"></input> -->
-      <div class="table">
+      <div class="table" v-if="radio==0">
         <ValueTable ref="ValueTable" :url="$api.insReport.pageInsReport"
                     :isColumnWidth="true"
                     :componentData="componentData"
           :key="upIndex" />
       </div>
+      <Order v-if="radio==1"/>
     </div>
     <el-dialog title="鍦ㄧ嚎缂栧埗" :visible.sync="claimVisible" width="22cm" :modal-append-to-body="false"
       :fullscreen="fullscreen">
@@ -213,13 +218,16 @@
 <script>
   import ValueTable from '../tool/value-table.vue'
   import onlyoffice from '../tool/onlyoffice.vue'
+  import Order from '../do/b1-report-preparation/order.vue'
   export default {
     components: {
       ValueTable,
-      onlyoffice
+      onlyoffice,
+      Order
     },
     data() {
       return {
+        radio:0,
         componentData: {
           entity: {
             entrustCode: null,
@@ -486,6 +494,7 @@
       refresh() {
         this.componentData.entity = this.HaveJson(this.entityCopy)
         this.upIndex++
+        this.$refs['ValueTable'].selectList(e)
       },
       async handleWeave(row) {
         let fileName = (row.urlS===null||row.urlS==='')?row.url:row.urlS

--
Gitblit v1.9.3