From 9b0a82931d2d4ef6fa877ebba59737a65ba37103 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期三, 07 八月 2024 11:18:53 +0800
Subject: [PATCH] 检验下单-检验项要求值校验修改
---
src/components/view/b1-expenses.vue | 506 ++++++++++++++++++++++++++++++++++---------------------
1 files changed, 312 insertions(+), 194 deletions(-)
diff --git a/src/components/view/b1-expenses.vue b/src/components/view/b1-expenses.vue
index cf2a16d..9cab03f 100644
--- a/src/components/view/b1-expenses.vue
+++ b/src/components/view/b1-expenses.vue
@@ -1,238 +1,356 @@
<style scoped>
- .title {
- height: 60px;
- line-height: 60px;
- }
+ .title {
+ height: 60px;
+ line-height: 60px;
+ }
- .search {
- background-color: #fff;
- height: 80px;
- display: flex;
- align-items: center;
- }
+ .search {
+ background-color: #fff;
+ height: 80px;
+ display: flex;
+ align-items: center;
+ }
- .search_thing {
- display: flex;
- align-items: center;
- height: 50px;
- }
+ .search_thing {
+ display: flex;
+ align-items: center;
+ height: 50px;
+ }
- .search_label {
- width: 120px;
- font-size: 14px;
- text-align: right;
- }
+ .search_label {
+ width: 120px;
+ font-size: 14px;
+ text-align: right;
+ }
- .search_input {
- width: calc(100% - 120px);
- }
+ .search_input {
+ width: calc(100% - 120px);
+ }
- .table {
- margin-top: 10px;
- background-color: #fff;
- width: calc(100% - 40px);
- height: calc(100% - 60px - 80px - 10px - 40px);
- padding: 20px;
- }
+ .table {
+ margin-top: 10px;
+ background-color: #fff;
+ width: calc(100% - 40px);
+ height: calc(100% - 60px - 80px - 10px - 40px);
+ padding: 20px;
+ }
- .el-form-item {
- margin-bottom: 16px;
- }
-</style>
+ .el-form-item {
+ margin-bottom: 16px;
+ }
-<style>
- .el-table tbody tr:hover > td {
- background-color: transparent !important;
+ >>>.el-table tbody tr:hover>td {
+ background-color: transparent !important;
}
</style>
<template>
- <div class="inspection_order">
- <div style="width: 100%;height: 100%;">
- <div>
- <el-row class="title">
- <el-col :span="12" style="padding-left: 20px;">璐圭敤缁熻</el-col>
+ <div class="inspection_order">
+ <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: right;">
- <el-button size="small" type="primary">OA鎺ㄩ��</el-button>
- </el-col>
- </el-row>
- </div>
- <div class="search">
+ <el-button size="small" type="primary">OA鎺ㄩ��</el-button>
+ </el-col>
+ </el-row>
+ </div>
+ <div class="search">
<div class="search_thing">
- <div class="search_label">鏃堕棿鑼冨洿锛�</div>
- <div class="search_input">
- <el-date-picker
- v-model="dates"
- type="datetimerange"
- range-separator="鑷�"
- format="yyyy-MM-dd HH:mm:ss"
- start-placeholder="寮�濮嬫棩鏈�"
- end-placeholder="缁撴潫鏃ユ湡"
- size="small">
+ <div class="search_label">鏃堕棿鑼冨洿锛�</div>
+ <div class="search_input">
+ <el-date-picker v-model="dates" type="daterange" range-separator="鑷�" format="yyyy-MM-dd"
+ value-format="yyyy-MM-dd" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" size="small"
+ @change="datesChange" :key="index2">
</el-date-picker>
</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.name" @keyup.enter.native="refreshTable()"></el-input></div>
- </div>
- <div class="search_thing" style="padding-left: 30px;">
- <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.costStatistics" :componentData="componentData"
- :key="upIndex" @handleWeave="handleWeave"/>
- </div>
- </div>
+ </div>
+ <div class="search_thing" style="width: 340px">
+ <div class="search_label">濮旀墭鍗曚綅锛�</div>
+ <div class="search_input">
+<!-- <el-input size="small" placeholder="璇疯緭鍏�" clearable-->
+<!-- @keyup.enter.native="refreshTable()"></el-input>-->
+ <el-select @focus="getCompanyOptions" @change="refreshTable()" clearable
+ size="small" v-model="componentData.entity.company" style="width: 100%">
+ <el-option v-for="item in companyOptions" :key="item.value"
+ :label="item.label" :value="item.label">
+ </el-option>
+ </el-select>
+ </div>
+ </div>
+ <div class="search_thing" style="padding-left: 30px;">
+ <el-button size="small" @click="refresh()">閲� 缃�</el-button>
+ <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
+ </div>
+ <div class="search_thing" style="padding-left: 70px;">鎬讳环锛歿{total}}</div>
+ <div class="search_thing" style="padding-left: 70px;">
+ <el-button size="small" type="primary" @click="handleDown" :loading="outLoading">瀵煎嚭</el-button>
+ </div>
+ </div>
+ <div class="table">
+ <ValueTable ref="ValueTable" :url="$api.insOrder.costStatistics"
+ :componentData="componentData" :key="upIndex"
+ @handleWeave="handleWeave" :column-min-width="'140'"/>
+ </div>
+ </div>
<el-dialog title="鍦ㄧ嚎缂栧埗" :visible.sync="claimVisible" width="70%" :modal-append-to-body="false">
- <Word style="height:70vh" v-if="claimVisible" ref="Word"/>
- <span slot="footer" class="dialog-footer">
- <el-button @click="claimVisible = false">鍙� 娑�</el-button>
- <el-button type="primary" @click="confirmClaim">纭� 瀹�</el-button>
- </span>
- </el-dialog>
- </div>
+ <Word style="height:70vh" v-if="claimVisible" ref="Word" />
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="claimVisible = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="confirmClaim">纭� 瀹�</el-button>
+ </span>
+ </el-dialog>
+ </div>
</template>
<script>
- import ValueTable from '../tool/value-table.vue'
- import Word from '../tool/word.vue'
- export default {
- components: {
- ValueTable,
- Word,
- },
- data() {
- return {
- componentData: {
- entity: {
- name: null,
- orderBy: {
- field: 'id,ins_sample_id',
- order: 'asc'
- }
- },
- isIndex: true,
- showSelect: false,
- select: false,
- highlight:false,
- do: [],
- linkEvent:{},
- spanConfig:{
+ import ValueTable from '../tool/value-table.vue'
+ export default {
+ components: {
+ ValueTable,
+ },
+ data() {
+ return {
+ componentData: {
+ entity: {
+ company: null,
+ dates: null,
+ orderBy: {
+ field: 'id',
+ order: 'asc'
+ }
+ },
+ init: false,
+ isIndex: true,
+ showSelect: false,
+ select: false,
+ highlight: false,
+ do: [],
+ linkEvent: {},
+ spanConfig: {
//鍚堝苟琛�
- rows:[
- {
- name:'createTime',
- index:1
+ rows: [{
+ name: 'createTime',
+ index: 1
},
{
- name:'entrustCode',
- index:2
+ name: 'entrustCode',
+ index: 2
+ },
+ /* {
+ name: 'sample',
+ index: 3
},
{
- name:'company',
- index:8
+ name: 'model',
+ index: 4
+ }, */
+ {
+ name: 'company',
+ index: 8
},
{
- name:'name',
- index:9
+ name: 'name',
+ index: 9
},
],
// 鐗规畩鐨勫悎骞惰锛屾牴鎹甿ain鍜宺ows鐨刵ame鏉ュ悎骞�
- special:{
- main:'insSampleId',
- rows:[
- {
- name:'sample',
- index:3
+ /* special: {
+ main: 'entrustCode',
+ rows: [{
+ name: 'sample',
+ index: 3
},
{
- name:'model',
- index:4
+ name: 'model',
+ index: 4
},
{
- name:'num',
- index:5
+ name: 'num',
+ index: 5
},
{
- name:'price',
- index:6
+ name: 'price',
+ index: 6
},
]
+ } */
+ },
+ tagField: {
+ type: {
+ select: [{
+ value: 0,
+ type: 'success',
+ label: '鏅��'
+ }, {
+ value: 1,
+ type: 'warning',
+ label: '浼樺厛'
+ }, {
+ value: 2,
+ type: 'danger',
+ label: '绱ф��'
+ }]
+ },
+ createUser: {
+ select: []
}
},
- tagField: {
- type: {
- select: [{
- value: 0,
- type: 'success',
- label: '鏅��'
- }, {
- value: 1,
- type: 'warning',
- label: '浼樺厛'
- }, {
- value: 2,
- type: 'danger',
- label: '绱ф��'
- }]
- },
- createUser: {
- select: []
- }
- },
- selectField: {},
- requiredAdd: [],
- requiredUp: []
- },
- entityCopy: {},
- upIndex: 0,
- claimVisible:false,
- dates: []
- }
- },
- mounted() {
- this.entityCopy = this.HaveJson(this.componentData.entity)
- this.getPower()
- },
- methods: {
- refreshTable() {
- this.$refs['ValueTable'].selectList()
- },
- refresh() {
- this.componentData.entity = this.HaveJson(this.entityCopy)
- this.upIndex++
- },
- handleWeave(){
+ selectField: {},
+ requiredAdd: [],
+ requiredUp: [],
+ needSort: ['createTime', 'sample'],
+ },
+ entityCopy: {},
+ upIndex: 0,
+ claimVisible: false,
+ dates: [],
+ index2: 0,
+ total: 0,
+ companyOptions: [], // 濮旀墭鍗曚綅鏋氫妇鍊�
+ entity: {
+ orderBy: {
+ field: 'id',
+ order: 'asc'
+ }
+ },
+ page: {
+ current: -1,
+ size: -1,
+ },
+ outLoading:false
+ }
+ },
+ mounted() {
+ this.getDates()
+ this.refreshTable()
+ this.entityCopy = this.HaveJson(this.componentData.entity)
+ this.getPower()
+ },
+ methods: {
+ handleDown(){
+ let entity = {...this.componentData.entity}
+ // entity.dates = JSON.stringify(entity.dates)
+ delete entity.orderBy
+ this.outLoading = true
+ this.$axios.post(this.$api.insOrder.export,{
+ entity:entity
+ },{
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ ,responseType: "blob"}).then(res => {
+ this.outLoading = false
+ this.$message.success('瀵煎嚭鎴愬姛')
+ const blob = new Blob([res],{ type: 'application/octet-stream' });
+ const url = URL.createObjectURL(blob);
+ const link = document.createElement('a');
+ link.href = url;
+ let date = JSON.parse(entity.dates)
+ link.download = (entity.company?entity.company+' ':'')+date[0]+' - '+date[1]+'璐圭敤缁熻.xlsx';
+ link.click();
+ })
+ },
+ getTotal(){
+ this.$axios.post(this.$api.insOrder.costStatistics2, {
+ entity:this.componentData.entity
+ }, {
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ }).then(res => {
+ this.total = res.data.total
+ })
+ },
+ getDates(){
+ //褰撳墠鏈堢涓�澶�
+ var y = new Date().getFullYear(); //鑾峰彇骞翠唤
+ var m = new Date().getMonth() + 1; //鑾峰彇鏈堜唤
+ var d = "01";
+ m = m < 10 ? "0" + m : m; //鏈堜唤琛� 0
+ let startDate = [y, m, d].join("-");
+ //褰撳墠鏈堟渶鍚庝竴澶�
+ var y = new Date().getFullYear(); //鑾峰彇骞翠唤
+ var m = new Date().getMonth() + 1; //鑾峰彇鏈堜唤
+ var d = new Date(y, m, 0).getDate(); //鑾峰彇褰撴湀鏈�鍚庝竴鏃�
+ m = m < 10 ? "0" + m : m; //鏈堜唤琛� 0
+ d = d < 10 ? "0" + d : d; //鏃ユ暟琛� 0
+ let endDate = [y, m, d].join("-");
+ this.dates = [startDate, endDate]
+ this.index2++
+ this.componentData.entity.dates = `["${startDate}","${endDate}"]`
+ },
+ getCompanyOptions () {
+ this.$axios.post(this.$api.user.selectCustomPageList, {
+ page: this.page,
+ entity: this.entity
+ }, {
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ }
+ ).then(res => {
+ if (res.code === 200) {
+ const list = res.data.body.records
+ this.companyOptions = []
+ list.map((item) => {
+ const obj = Object.assign({
+ value: item.id,
+ label: item.company,
+ })
+ this.companyOptions.push(obj)
+ })
+ }
+ }).catch(e => {
+ this.$message.error('鏌ヨ澶辫触')
+ })
+ },
+ refreshTable() {
+ this.$refs['ValueTable'].selectList()
+ this.getTotal()
+ },
+ refresh() {
+ this.componentData.entity = this.HaveJson(this.entityCopy)
+ this.componentData.init = true
+ this.getDates()
+ this.getTotal()
+ this.upIndex++
+ },
+ handleWeave() {
this.claimVisible = true;
},
- // 鏉冮檺鍒嗛厤
- getPower(radio) {
- let power = JSON.parse(sessionStorage.getItem('power'))
- let up = false
- let del = false
- let add = false
- for (var i = 0; i < power.length; i++) {
- if (power[i].menuMethod == 'upInsOrder') {
- up = true
- }
- if (power[i].menuMethod == 'addInsOrder') {
- add = true
- }
- }
- if (!up) {
- this.componentData.do.splice(4, 1)
- }
- },
- handleClose() {
- this.upLoad = false;
- },
- confirmClaim(){
- console.log(11111111111,this.$refs.Word.getValue())
+ // 鏉冮檺鍒嗛厤
+ getPower(radio) {
+ let power = JSON.parse(sessionStorage.getItem('power'))
+ let up = false
+ let del = false
+ let add = false
+ for (var i = 0; i < power.length; i++) {
+ if (power[i].menuMethod == 'upInsOrder') {
+ up = true
+ }
+ if (power[i].menuMethod == 'addInsOrder') {
+ add = true
+ }
+ }
+ if (!up) {
+ this.componentData.do.splice(4, 1)
+ }
+ },
+ handleClose() {
+ this.upLoad = false;
+ },
+ confirmClaim() {
+ console.log(11111111111, this.$refs.Word.getValue())
+ },
+ datesChange(val){
+ if(val == null){
+ return
+ }
+ this.componentData.entity.dates = JSON.stringify(val)
+ this.$refs['ValueTable'].selectList()
+ this.getTotal()
}
- }
- }
+ }
+ }
</script>
--
Gitblit v1.9.3