| | |
| | | <style scoped> |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .search_thing { |
| | | display: flex; |
| | | align-items: center; |
| | | height: 50px; |
| | | } |
| | | |
| | | .search_label { |
| | | width: 120px; |
| | | font-size: 14px; |
| | | text-align: right; |
| | | } |
| | | |
| | | .search_input { |
| | | width: calc(100% - 120px); |
| | | } |
| | | |
| | | >>> .custom-statistic .el-statistic .head { |
| | | font-size: 25px; |
| | | } |
| | | |
| | | .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; |
| | | } |
| | | |
| | | >>> .el-table tbody tr:hover > td { |
| | | background-color: transparent !important; |
| | | } |
| | | </style> |
| | | |
| | | <template> |
| | | <div>费用统计</div> |
| | | <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"> |
| | | <div class="search_thing"> |
| | | <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" 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="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="margin-left: 50px"> |
| | | <div style="width: 100%; text-align: right">总价:</div> |
| | | <el-statistic |
| | | group-separator="," |
| | | :precision="2" |
| | | :value="total" |
| | | ></el-statistic> |
| | | </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'" |
| | | /> --> |
| | | <lims-table |
| | | :tableData="tableData" |
| | | :column="column" |
| | | :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 270px)'" |
| | | :page="page" |
| | | @pagination="pagination" |
| | | ></lims-table> |
| | | </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> |
| | | </template> |
| | | |
| | | <script> |
| | | export default {}; |
| | | </script> |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import { |
| | | costStatistics, |
| | | exportCommissionFees, |
| | | costStatistics2, |
| | | selectCustomPageList, |
| | | } from "../../../api/business/costStatistics"; |
| | | |
| | | <style></style> |
| | | export default { |
| | | components: { |
| | | limsTable, |
| | | }, |
| | | data() { |
| | | return { |
| | | tableData: [], |
| | | column: [ |
| | | { |
| | | label: "下单时间", |
| | | prop: "createTime", |
| | | }, |
| | | { |
| | | label: "委托编号", |
| | | prop: "entrustCode", |
| | | }, |
| | | { |
| | | label: "样品名称", |
| | | prop: "sample", |
| | | }, |
| | | { |
| | | label: "规格型号", |
| | | prop: "model", |
| | | }, |
| | | { |
| | | label: "样品数量", |
| | | prop: "num", |
| | | }, |
| | | { |
| | | label: "总价", |
| | | prop: "price", |
| | | }, |
| | | { |
| | | label: "试验项目", |
| | | prop: "inspectionItem", |
| | | }, |
| | | { |
| | | label: "委托单位", |
| | | prop: "company", |
| | | }, |
| | | { |
| | | label: "委托人", |
| | | prop: "name", |
| | | }, |
| | | ], |
| | | tableLoading: false, |
| | | page: { |
| | | current: 1, |
| | | size: 20, |
| | | total: 0, |
| | | }, |
| | | entity: { |
| | | company: null, |
| | | dates: null, |
| | | }, |
| | | entityCopy: {}, |
| | | upIndex: 0, |
| | | claimVisible: false, |
| | | dates: [], |
| | | index2: 0, |
| | | total: 0, |
| | | companyOptions: [], // 委托单位枚举值 |
| | | outLoading: false, |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.getDates(); |
| | | this.refreshTable(); |
| | | this.entityCopy = this.HaveJson(this.entity); |
| | | }, |
| | | methods: { |
| | | getData() { |
| | | this.tableLoading = true; |
| | | let params = { ...this.page, ...this.entity }; |
| | | costStatistics(params).then((res) => { |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total; |
| | | this.tableLoading = false; |
| | | }); |
| | | }, |
| | | pagination({ cutPage, size }) { |
| | | this.page.current = cutPage; |
| | | this.page.size = size; |
| | | this.refreshTable(); |
| | | }, |
| | | |
| | | handleDown() { |
| | | let data = { |
| | | company: this.entity.company ? this.entity.company : '', |
| | | startTime: this.dates[0], |
| | | endTime: this.dates[1], |
| | | }; |
| | | this.outLoading = true; |
| | | exportCommissionFees(data).then((res) => { |
| | | const blod = new Blob([res], { type: "application/octet-stream" }); |
| | | const url = URL.createObjectURL(blod); |
| | | const link = document.createElement("a"); |
| | | link.href = url; |
| | | link.download = "委托费用统计.xlsx"; |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | this.$nextTick(() => { |
| | | this.$message.success("导出成功"); |
| | | this.outLoading = false; |
| | | }); |
| | | }); |
| | | }, |
| | | getTotal() { |
| | | costStatistics2(this.entity).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.entity.dates = `["${startDate}","${endDate}"]`; |
| | | }, |
| | | getCompanyOptions() { |
| | | selectCustomPageList({ ...this.page, ...this.entity }) |
| | | .then((res) => { |
| | | const list = res.data.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.entity.dates = JSON.stringify(this.dates); |
| | | this.getData(); |
| | | this.getTotal(); |
| | | }, |
| | | refresh() { |
| | | this.entity = this.HaveJson(this.entityCopy); |
| | | this.getDates(); |
| | | this.getTotal(); |
| | | this.$nextTick(() => { |
| | | this.getData(); |
| | | }); |
| | | }, |
| | | 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()); |
| | | }, |
| | | datesChange(val) { |
| | | if (val == null) { |
| | | return; |
| | | } |
| | | this.componentData.entity.dates = JSON.stringify(val); |
| | | this.$refs["ValueTable"].selectList(); |
| | | this.getTotal(); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |