| | |
| | | // 采购状态 |
| | | const purchaseStatus=[ |
| | | { |
| | | name:'已下单', |
| | | id:1, |
| | | }, |
| | | { |
| | | name:'到货质检', |
| | | id:2, |
| | | }, |
| | | { |
| | | name:'已入库', |
| | | id:3, |
| | | }, |
| | | { |
| | | name:'已完成', |
| | | id:4, |
| | | }, |
| | | ] |
| | | // 质检单状态 |
| | | const qualityStatus=[ |
| | | { |
| | | name:'待质检', |
| | | id:1, |
| | | }, |
| | | { |
| | | name:'已完成', |
| | | id:2, |
| | | } |
| | | ] |
| | | // 退货单状态 |
| | | const returnedStatus=[ |
| | | { |
| | | name:'待发货', |
| | | id:1, |
| | | }, |
| | | { |
| | | name:'待签收', |
| | | id:2, |
| | | }, |
| | | { |
| | | name:'待发货', |
| | | id:3, |
| | | }, |
| | | { |
| | | name:'已完成', |
| | | id:4, |
| | | }, |
| | | // 检查项目名称 |
| | | const projectOptions = [ |
| | | { id: 1, value: "纤度偏差" }, |
| | | { id: 2, value: "二次变化" }, |
| | | { id: 3, value: "清洁分" }, |
| | | { id: 4, value: "洁净分" }, |
| | | { id: 5, value: "最大偏差" } |
| | | ] |
| | | |
| | | export const getDataByType = type => { |
| | | if(type =='purchaseStatus'){ |
| | | return purchaseStatus; |
| | | }else if(type=='qualityStatus'){ |
| | | return qualityStatus; |
| | | }else if(type=='returnedStatus'){ |
| | | return returnedStatus; |
| | | export const getDataByType = (type) => { |
| | | if (type == "projectOptions") { |
| | | return projectOptions |
| | | } |
| | | } |
| | |
| | | import request from "@/common/untils/request.js" |
| | | |
| | | // 跟进记录列表 |
| | | export function getFollowRecordList(data) { |
| | | // 纤度登记列表 |
| | | export function getRegisterList(data) { |
| | | return request({ |
| | | url: "/api/followRecord/list", |
| | | url: "/api-jl/v1/fineness/register?page="+ data.page+"&pageSize="+data.pageSize, |
| | | method: "get", |
| | | data |
| | | }) |
| | | } |
| | | //保存纤度登记 |
| | | export function saveRegister(data) { |
| | | return request({ |
| | | url: "/api-jl/v1/fineness/register", |
| | | method: "post", |
| | | data |
| | | }) |
| | | } |
| | | // 添加跟进记录 |
| | | export function getAddFollowRecord(data) { |
| | | // 删除纤度登记列表 |
| | | export function getDeleteRegister(data) { |
| | | return request({ |
| | | url: "/api/followRecord/add", |
| | | method: "post", |
| | | data |
| | | }) |
| | | } |
| | | // 删除跟进记录 |
| | | export function getDeleteFollowRecord(data) { |
| | | return request({ |
| | | url: "/api/followRecord/delete", |
| | | url: "/api-jl/v1/fineness/register/"+data.id, |
| | | method: "delete", |
| | | data |
| | | }) |
| | | } |
| | | // 纤度登记 select数据 |
| | | export function getDictList(data) { |
| | | return request({ |
| | | url: "/api-jl/v1/system/dict?dictType="+data.dictType, |
| | | method: "get", |
| | | data |
| | | }) |
| | | } |
| | | // 更新跟进记录 |
| | | export function getUpdateFollowRecord(data) { |
| | | return request({ |
| New file |
| | |
| | | import request from "@/common/untils/request.js" |
| | | |
| | | // 创建服务商 |
| | | export function getRankStandard() { |
| | | return request({ |
| | | url: "/api-jl/v1/system/getRankStandard", |
| | | method: "get" |
| | | }) |
| | | } |
| | | // 创建服务商 |
| | | export function saveRankStandard(data) { |
| | | return request({ |
| | | url: "/api-jl/v1/system/saveRankStandard", |
| | | method: "post", |
| | | data |
| | | }) |
| | | } |
| | |
| | | // if (token != undefined) { |
| | | // config.headers.Authorization = "Bearer " + token; |
| | | // } |
| | | |
| | | let token = document.cookie.replace( |
| | | /(?:(?:^|.*;\s*)token\s*=\s*([^;]*).*$)|^.*$/, |
| | | "$1", |
| | | ); |
| | | if (token) { |
| | | config.headers.Authorization = "Bearer " + token; |
| | | } |
| | | return config |
| | | }, |
| | | (error) => { |
| | |
| | | <!-- eslint-disable vue/no-use-v-if-with-v-for --> |
| | | <template> |
| | | <div class="table-view"> |
| | | <div class="table-view" v-loading="loading"> |
| | | <el-table |
| | | ref="table" |
| | | :class="tableList.headerColor=='red'?'table-red':''" |
| | | border |
| | | :data="tableList.tableInfomation" |
| | | tooltip-effect="dark" |
| | | style="width: 100%" |
| | | :height="'calc(100% - 0px)'" |
| | | :max-height="tableList.maxHeight" |
| | | style="width: 100%" |
| | | :lazy="tableList.lazy" |
| | | size="mini" |
| | | :show-summary="showSummary.show" |
| | | :summary-method="getSummaries" |
| | | :span-method="arraySpanMethod" |
| | | @selection-change="handleSelectionChange" |
| | | :header-cell-style="{ background: '#f1f3f8', color: '#000009' , 'font-size': '14px'}" |
| | | :highlight-current-row="tableList.highlight" |
| | | :row-class-name="tableRowClassName" |
| | | :header-cell-style="{ background: '#f1f3f8', color: '#000009', 'font-size': '12px', 'font-family': 'PingFangSC' }" |
| | | size="mini" |
| | | @row-click="tableRowClick" |
| | | :row-key="tableList.key" |
| | | :default-expand-all="tableList.isDefaultExpandAll" |
| | | :tree-props="{ children: 'child', hasChildren: 'hasChildren' }" |
| | | :row-class-name="tableRowClassName" |
| | | > |
| | | <el-table-column align="center" v-if="tableList.selectBox" type="selection" width="40"> </el-table-column> |
| | | <el-table-column align="center" v-if="tableList.selectIndex" type="index" label="序号" width="50"> </el-table-column> |
| | | <template v-for="(item, i) in tableList.tableColumn"> |
| | | <el-table-column |
| | | align="center" |
| | | :key="i" |
| | | :prop="item.prop" |
| | | :label="item.label" |
| | | :width="item.width" |
| | | :min-width="item.min" |
| | | show-overflow-tooltip |
| | | :sortable="item.sortable" |
| | | v-if="item.isShowColumn" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span v-if="item.price">{{ "¥" + number_format(scope.row[item.prop], 2, ".", ",") }}</span> |
| | | <div v-else-if="item.status" :class="scope.row.status">{{ scope.row[item.prop] }}</div> |
| | | <span v-else-if="item.isTime">{{ |
| | | dateFormat("YYYY-mm-dd HH:MM:SS", scope.row[item.prop]) === "1900-01-01 00:06:26" |
| | | ? "--" |
| | | : dateFormat("YYYY-mm-dd HH:MM:SS", scope.row[item.prop]) |
| | | }}</span> |
| | | <span v-else-if="item.isClick && scope.row[item.prop]" class="sel-name" @click="selCommonClick(scope.row)">{{ |
| | | scope.row[item.prop] |
| | | }}</span> |
| | | <span v-else-if="item.isFirst">{{ scope.row[item.prop] ? "是" : "否" }}</span> |
| | | <span |
| | | v-else-if="item.isCommonClick && scope.row[item.prop]" |
| | | class="sel-name" |
| | | @click="selCommonClick(scope.row)" |
| | | <el-table-column v-if="selectBox" type="selection" width="40" :selectable="selectable"> </el-table-column> |
| | | <el-table-column v-if="tableList.selectIndex" type="index" label="序号" width="50"></el-table-column> |
| | | <el-table-column |
| | | v-for="(item, i) in tableList.tableColumn" |
| | | :key="i" |
| | | :prop="item.prop" |
| | | :label="item.label" |
| | | :width="item.width" |
| | | :min-width="item.min" |
| | | show-overflow-tooltip |
| | | :sortable="item.sortable" |
| | | v-if="item.isShowColumn" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span v-if="item.price">{{ "¥" + number_format(scope.row[item.prop], 2, ".", ",") }}</span> |
| | | <div v-else-if="item.status" :class="scope.row.status">{{ scope.row[item.prop] }}</div> |
| | | <span v-else-if="item.isTime">{{ |
| | | dateFormat("YYYY-mm-dd HH:MM:SS", scope.row[item.prop]) === "1900-01-01 00:06:26" |
| | | ? "--" |
| | | : dateFormat("YYYY-mm-dd HH:MM:SS", scope.row[item.prop]) |
| | | }}</span> |
| | | <span v-else-if="item.isClick && scope.row[item.prop]" class="sel-name" @click="selNameClick(scope.row)">{{ |
| | | scope.row[item.prop] |
| | | }}</span> |
| | | <span v-else-if="item.isFirst">{{ scope.row[item.prop] ? "是" : "否" }}</span> |
| | | <span |
| | | v-else-if="item.isSalesLeadClick && scope.row[item.prop]" |
| | | class="sel-name" |
| | | @click="selSalesLeadClick(scope.row)" |
| | | >{{ scope.row[item.prop] }}</span |
| | | > |
| | | <div v-else-if="item.isProductName" class="product-view"> |
| | | <ul v-if="scope.row.products && scope.row.products.length > 0"> |
| | | <li v-for="(item, index) in scope.row.products" :key="index"> |
| | | <div :class="scope.row.products.length === 1 ? 'name-view no-bottom' : 'name-view'"> |
| | | {{ item.name }} |
| | | </div> |
| | | </li> |
| | | </ul> |
| | | <div v-else class="no-product">{{ "--" }}</div> |
| | | </div> |
| | | <div v-else-if="item.isProductAmount" class="product-view"> |
| | | <ul v-if="scope.row.products && scope.row.products.length > 0"> |
| | | <li v-for="(item, index) in scope.row.products" :key="index"> |
| | | <div :class="scope.row.products.length === 1 ? 'name-view no-bottom' : 'name-view'"> |
| | | {{ item.amount }} |
| | | </div> |
| | | </li> |
| | | </ul> |
| | | <div v-else class="no-product">{{ "--" }}</div> |
| | | </div> |
| | | <div v-else-if="item.isProductPrice" class="product-view"> |
| | | <ul v-if="scope.row.products && scope.row.products.length > 0"> |
| | | <li v-for="(item, index) in scope.row.products" :key="index"> |
| | | <div :class="scope.row.products.length === 1 ? 'name-view no-bottom' : 'name-view'"> |
| | | {{ item.price }} |
| | | </div> |
| | | </li> |
| | | </ul> |
| | | <div v-else class="no-product">{{ "--" }}</div> |
| | | </div> |
| | | <div v-else-if="item.isProductTotal" class="product-view"> |
| | | <ul v-if="scope.row.products && scope.row.products.length > 0"> |
| | | <li v-for="(item, index) in scope.row.products" :key="index"> |
| | | <div :class="scope.row.products.length === 1 ? 'name-view no-bottom' : 'name-view'"> |
| | | {{ item.total }} |
| | | </div> |
| | | </li> |
| | | </ul> |
| | | <div v-else class="no-product">{{ "--" }}</div> |
| | | </div> |
| | | <span v-else>{{ scope.row[item.prop] ? scope.row[item.prop] : "--" }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | </template> |
| | | > |
| | | <span |
| | | v-else-if="item.isClientClick && scope.row[item.prop]" |
| | | class="sel-name" |
| | | @click="selClientClick(scope.row)" |
| | | >{{ scope.row[item.prop] ? scope.row[item.prop] : "--" }}</span |
| | | > |
| | | <span |
| | | v-else-if="item.isContactClick && scope.row[item.prop]" |
| | | class="sel-name" |
| | | @click="selContactsClick(scope.row)" |
| | | >{{ scope.row[item.prop] }}</span |
| | | > |
| | | <span |
| | | v-else-if="item.isMasterClick && scope.row[item.prop]" |
| | | class="sel-name" |
| | | @click="selMasterClick(scope.row)" |
| | | >{{ scope.row[item.prop] }}</span |
| | | > |
| | | <span |
| | | v-else-if="item.isServiceOrder && scope.row[item.prop]" |
| | | class="sel-name" |
| | | @click="selServiceOrderClick(scope.row)" |
| | | >{{ scope.row[item.prop] }}</span |
| | | > |
| | | <span |
| | | v-else-if="item.isCommonClick && scope.row[item.prop]" |
| | | class="sel-name" |
| | | @click="selCommonClick(scope.row)" |
| | | >{{ scope.row[item.prop] }}</span |
| | | > |
| | | <div v-else-if="item.isProductName" class="product-view"> |
| | | <ul v-if="scope.row.products && scope.row.products.length > 0"> |
| | | <li v-for="(item, index) in scope.row.products" :key="index"> |
| | | <div class="name-view"> |
| | | {{ item.name }} |
| | | </div> |
| | | </li> |
| | | </ul> |
| | | <div v-else class="no-product">{{ "--" }}</div> |
| | | </div> |
| | | <div v-else-if="item.isProductAmount" class="product-view"> |
| | | <ul v-if="scope.row.products && scope.row.products.length > 0"> |
| | | <li v-for="(item, index) in scope.row.products" :key="index"> |
| | | <div class="name-view"> |
| | | {{ item.amount }} |
| | | </div> |
| | | </li> |
| | | </ul> |
| | | <div v-else class="no-product">{{ "--" }}</div> |
| | | </div> |
| | | <div v-else-if="item.isProductPrice" class="product-view"> |
| | | <ul v-if="scope.row.products && scope.row.products.length > 0"> |
| | | <li v-for="(item, index) in scope.row.products" :key="index"> |
| | | <div class="name-view"> |
| | | {{ item.price }} |
| | | </div> |
| | | </li> |
| | | </ul> |
| | | <div v-else class="no-product">{{ "--" }}</div> |
| | | </div> |
| | | <div v-else-if="item.isProductTotal" class="product-view"> |
| | | <ul v-if="scope.row.products && scope.row.products.length > 0"> |
| | | <li v-for="(item, index) in scope.row.products" :key="index"> |
| | | <div class="name-view"> |
| | | {{ item.total }} |
| | | </div> |
| | | </li> |
| | | </ul> |
| | | <div v-else class="no-product">{{ "--" }}</div> |
| | | </div> |
| | | <!-- 调用方法显示文字 --> |
| | | <div v-else-if="item.isCallMethod"> |
| | | <span :class="item.isClass ? item.getClassName(scope.row[item.prop], scope.row) : ''">{{ |
| | | item.getCallMethod(scope.row[item.prop], scope.row) |
| | | }}</span> |
| | | </div> |
| | | <span v-else>{{ scope.row[item.prop] ? scope.row[item.prop] : "--" }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <slot name="tableButton" /> |
| | | <div slot="empty"> |
| | | <el-empty description="暂无数据"></el-empty> |
| | | </div> |
| | | </el-table> |
| | | |
| | | <div class="overSpread1" v-show="iscolopen" @click="onMaskClick"></div> |
| | | <div class="styleBtn"> |
| | | <i @click="checkCol()" v-if="colOpenShow" class="label">...</i> |
| | | <el-checkbox-group |
| | | v-model="showcol" |
| | | v-show="iscolopen" |
| | | class="checkbox-group" |
| | | @change="selectCheckBoxList" |
| | | > |
| | | <el-checkbox v-for="item in tableList.allcol" :label="item" :key="item" |
| | | >{{ item }} |
| | | </el-checkbox> |
| | | <i @click="checkCol()" class="label">...</i> |
| | | <el-checkbox-group v-model="showcol" v-show="iscolopen" class="checkbox-group" @change="selectCheckBoxList"> |
| | | <el-checkbox v-for="item in tableList.allcol" :label="item" :key="item">{{ item }} </el-checkbox> |
| | | </el-checkbox-group> |
| | | </div> |
| | | </div> |
| | |
| | | export default { |
| | | name: "TableCommonView", |
| | | props: { |
| | | selectBox: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | tableList: { |
| | | type: Object, |
| | | default: () => { |
| | | return { |
| | | selectBox: false, |
| | | selectIndex: false, |
| | | selectIndex: true, |
| | | tableInfomation: [], // 接口返回数据 |
| | | showcol: [], |
| | | allcol: [], |
| | | highlight: false, |
| | | tableColumn: [ |
| | | // table表单 |
| | | { label: "", prop: "", min: 200, tooltip: true } |
| | |
| | | } |
| | | } |
| | | }, |
| | | // 是否可以配置列表 表头 |
| | | colOpenShow: { |
| | | type: Boolean, |
| | | default: true, |
| | | }, |
| | | showSummary: { |
| | | type: Object, |
| | | default: () => { |
| | | return { |
| | | show: false, |
| | | sumProp: [], |
| | | mergeNumber: 1, |
| | | totalName: "本页总计" |
| | | mergeNumber: 1 |
| | | } |
| | | } |
| | | }, |
| | |
| | | default: () => { |
| | | return {} |
| | | } |
| | | }, |
| | | loading: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | selectBoxList: { |
| | | type: Array, |
| | | default: () => [] |
| | | } |
| | | }, |
| | | |
| | | data() { |
| | | return { |
| | | iscolopen: false, |
| | | showcol:[] |
| | | } |
| | | }, |
| | | watch: { |
| | | 'tableList.showcol':{ |
| | | handler(newVal){ |
| | | this.showcol=newVal |
| | | }, |
| | | immediate:true |
| | | showcol: [] |
| | | } |
| | | }, |
| | | computed: {}, |
| | | watch: { |
| | | "tableList.showcol": { |
| | | handler(newVal) { |
| | | this.showcol = newVal |
| | | }, |
| | | immediate: true |
| | | } |
| | | }, |
| | | methods: { |
| | | onMaskClick() { |
| | | this.iscolopen = false; |
| | | this.iscolopen = false |
| | | }, |
| | | checkCol() { |
| | | this.iscolopen = !this.iscolopen; |
| | | this.iscolopen = !this.iscolopen |
| | | }, |
| | | selectCheckBoxList(val) { |
| | | this.$emit("selTableCol", val); |
| | | this.$emit("selTableCol", val) |
| | | }, |
| | | handleReserve(row) { |
| | | return row._id ? row._id : row.id |
| | |
| | | .querySelector(".el-table__footer") |
| | | var cell = current.rows[0].cells |
| | | for (let i = 0; i < this.showSummary.mergeNumber; i++) { |
| | | cell[i].style.display = "none" |
| | | cell[i] && cell[i].style && (cell[i].style.display = "none") |
| | | } |
| | | cell[this.showSummary.mergeNumber].classList.remove("is-left") |
| | | cell[this.showSummary.mergeNumber].colSpan = this.showSummary.mergeNumber.toString() |
| | | if (cell[this.showSummary.mergeNumber]) { |
| | | if (cell[this.showSummary.mergeNumber].classList) { |
| | | cell[this.showSummary.mergeNumber].classList.remove("is-left") |
| | | } |
| | | if (cell[this.showSummary.mergeNumber].colSpan) { |
| | | cell[this.showSummary.mergeNumber].colSpan = this.showSummary.mergeNumber.toString() |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | } |
| | |
| | | const sums = [] |
| | | columns.forEach((column, index) => { |
| | | if (index === this.showSummary.mergeNumber) { |
| | | sums[index] = this.showSummary.totalName |
| | | sums[index] = "本页总计" |
| | | } |
| | | const values = data.map((item) => Number(item[column.property])) |
| | | if (this.showSummary.sumProp.includes(column.property)) { |
| | |
| | | } |
| | | return fmt |
| | | }, |
| | | // 公共详情 |
| | | // 新建编辑选择弹窗 |
| | | selNameClick(row) { |
| | | this.$emit("selCommonClick", row) |
| | | }, |
| | | // 销售线索 |
| | | selSalesLeadClick(row) { |
| | | this.$emit("selSalesLeadClick", row) |
| | | }, |
| | | // 客户名称 |
| | | selClientClick(row) { |
| | | this.$emit("selClientClick", row) |
| | | }, |
| | | // 联系人姓名 |
| | | selContactsClick(row) { |
| | | this.$emit("selContactsClick", row) |
| | | }, |
| | | // 销售总单 |
| | | selMasterClick(row) { |
| | | this.$emit("selMasterClick", row) |
| | | }, |
| | | // 客户服务单 |
| | | selServiceOrderClick(row) { |
| | | this.$emit("selServiceOrderClick", row) |
| | | }, |
| | | // 公共(销售机会、报价单、销售总单、销售子单。。。) |
| | | selCommonClick(row) { |
| | | this.$emit("selCommonClick", row) |
| | | }, |
| | | // 行点击 |
| | | tableRowClick(row, column, event) { |
| | | this.$emit("tableRowClick", row, column, event) |
| | | }, |
| | | // 单选行相关 |
| | | tableRowClassName({ row }) { |
| | |
| | | } |
| | | this.$emit("tableRowClassName", row) |
| | | }, |
| | | tableRowClick(row) { |
| | | this.$emit("tableRowClick", row) |
| | | selectable(row) { |
| | | let list = this.selectBoxList.map((item) => item.number) |
| | | if (list.findIndex((v) => v == row.number) == -1) { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | <!-- Add "scoped" attribute to limit CSS to this component only --> |
| | | <style lang="scss" scoped> |
| | | .table-view { |
| | | // margin-top: 20px; |
| | | // margin-right: 10px; |
| | | // margin-bottom: 40px; |
| | | position: relative; |
| | | height: 100%; |
| | | .blue { |
| | |
| | | margin-left: -10px; |
| | | margin-right: -11px; |
| | | li { |
| | | height: 57px; |
| | | line-height: 57px; |
| | | height: 22px; |
| | | line-height: 22px; |
| | | .name-view { |
| | | padding-left: 10px; |
| | | border-bottom: 1px solid #ebeef5; |
| | | } |
| | | .no-bottom { |
| | | border-bottom: 0px; |
| | | border-bottom: 0; |
| | | } |
| | | } |
| | | li:last-child .name-view { |
| | | border-bottom: none; |
| | | } |
| | | .no-product { |
| | | height: 57px; |
| | | line-height: 57px; |
| | | height: 22px; |
| | | line-height: 22px; |
| | | } |
| | | } |
| | | } |
| | |
| | | height: 35px; |
| | | text-align: center; |
| | | } |
| | | ::v-deep .table-red.el-table th.el-table__cell>.cell{ |
| | | color:red; |
| | | } |
| | | ::v-deep{ |
| | | .el-table .cell .el-button--text.el-button--small{ |
| | | |
| | | ::v-deep { |
| | | .el-table .cell .el-button--text.el-button--small { |
| | | padding: 4px 0; |
| | | } |
| | | } |
| | | |
| | | ::v-deep .el-table .el-table__cell { |
| | | padding: 6px 0 !important; |
| | | height: 35px; |
| | | text-align: center; |
| | | } |
| | | |
| | | .overSpread1 { |
| | |
| | | // line-height: 26px; |
| | | // background: #06c062; |
| | | top: 0; |
| | | right: 2px; |
| | | z-index: 9999; |
| | | right: -6px; |
| | | z-index: 11; |
| | | .label { |
| | | position: absolute; |
| | | top: 6px; |
| | |
| | | } |
| | | .checkbox-group { |
| | | width: 160px; |
| | | height: 330px; |
| | | height: 300px; |
| | | overflow: auto; |
| | | display: flex; |
| | | flex-direction: column; |
| | |
| | | props: { |
| | | pageSizes: { |
| | | type: Array, |
| | | default: () => [5, 10, 20, 30, 40] |
| | | default: () =>[15, 30], |
| | | }, |
| | | layout: { |
| | | type: String, |
| | |
| | | default: () => { |
| | | return { |
| | | currPage: 1, |
| | | pageSize: 10, |
| | | pageSize: 15, |
| | | totalCount: 0 |
| | | } |
| | | } |
| | |
| | | <template> |
| | | <div class="container"></div> |
| | | <div class="silkRegister-form"> |
| | | <div class="filter"> |
| | | <div class="filter-card"> |
| | | <CommonSearch |
| | | :show-add="false" |
| | | :show-download="false" |
| | | :amount-view="false" |
| | | :show-action-btn="false" |
| | | placeholder="请输入关键词" |
| | | @searchClick="onFilterSearch" |
| | | > |
| | | <template slot="leftButton"> |
| | | <el-button size="small" type="primary" @click="exportClick">导入</el-button> |
| | | <el-button size="small" type="primary" @click="synchClick">同步</el-button> |
| | | </template> |
| | | </CommonSearch> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="body"> |
| | | <div class="body-card"> |
| | | <div class="list-view"> |
| | | <TableCommonView |
| | | ref="tableListRef" |
| | | v-loading="loading" |
| | | :table-list="tableList" |
| | | @selTableCol="selTableCol" |
| | | > |
| | | <template slot="tableButton"> |
| | | <el-table-column label="操作" width="90" fixed="right"> |
| | | <template slot-scope="scope"> |
| | | <el-button @click="delClick(scope.row.id)" type="text" size="small">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </template> |
| | | </TableCommonView> |
| | | </div> |
| | | <div class="btn-pager"> |
| | | <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getFollowRecordList, getDeleteFollowRecord } from "@/api/productManage/silkRegisterForm.js" |
| | | import pageMixin from "@/components/makepager/pager/mixin/pageMixin" |
| | | |
| | | export default { |
| | | name: "attendanceManage", |
| | | props: {}, |
| | | components: {}, |
| | | mixins: [], |
| | | computed: {}, |
| | | data() { |
| | | return {} |
| | | props: { |
| | | }, |
| | | created() {}, |
| | | methods: {} |
| | | mixins: [pageMixin], |
| | | components: { |
| | | }, |
| | | data() { |
| | | return { |
| | | tableList: {}, |
| | | loading: false, |
| | | searchOptions: [], |
| | | editConfig: { |
| | | visible: false, |
| | | title: "新建", |
| | | infomation: {} |
| | | }, |
| | | search_map: {}, |
| | | tableColumn: [ |
| | | { label: "日期", prop: "topic", min: 120, default: true }, |
| | | { label: "员工编号", prop: "client_name", min: 190,default: true}, |
| | | { label: "员工姓名", prop: "contact_name", min: 100, }, |
| | | { label: "上班打卡时间", prop: "client_status", min: 100 }, |
| | | { label: "下班打卡时间", prop: "contact_information_name", min: 100 }, |
| | | { label: "班次", prop: "follow_time", min: 100 }, |
| | | { label: "班次上班时间", prop: "next_follow_time", min: 110 }, |
| | | { label: "班次下班时间", prop: "member_name", min: 110 }, |
| | | { label: "添加时间", prop: "next_follow_time", min: 130 }, |
| | | { label: "添加人", prop: "member_name", min: 110 }, |
| | | ], |
| | | showCol: [ |
| | | "日期", |
| | | "员工编号", |
| | | "员工姓名", |
| | | "上班打卡时间", |
| | | "下班打卡时间", |
| | | "班次", |
| | | "班次上班时间", |
| | | "班次下班时间", |
| | | "添加时间", |
| | | "添加人", |
| | | ] |
| | | } |
| | | }, |
| | | created() { |
| | | this.setTable() |
| | | this.getData(this.search_map) |
| | | }, |
| | | computed: { |
| | | }, |
| | | methods: { |
| | | setTable() { |
| | | this.tableList = { |
| | | selectIndex: true, |
| | | tableInfomation: [], |
| | | allcol: [], |
| | | showcol: this.showCol, |
| | | tableColumn: this.setColumnVisible(this.showCol) |
| | | } |
| | | this.tableList.allcol = this.tableList.tableColumn.filter((ele) => !ele.default).map((ele) => ele.label) |
| | | this.searchOptions = [] |
| | | for (let i = 0; i < this.tableList.tableColumn.length; i++) { |
| | | const label = this.tableList.tableColumn[i].label |
| | | const value = this.tableList.tableColumn[i].prop |
| | | this.searchOptions.push({ value: value, label: label }) |
| | | } |
| | | }, |
| | | setColumnVisible(showCol) { |
| | | return this.tableColumn.map((ele) => { |
| | | return { |
| | | ...ele, |
| | | isShowColumn: showCol.includes(ele.label) |
| | | } |
| | | }) |
| | | }, |
| | | selTableCol(val) { |
| | | this.showcol = val |
| | | this.tableList.tableColumn = this.setColumnVisible(val) |
| | | }, |
| | | // 请求数据 |
| | | async getData() { |
| | | this.loading = true |
| | | await getFollowRecordList({ |
| | | search_map: this.search_map, |
| | | page: this.pagerOptions.currPage, |
| | | pageSize: this.pagerOptions.pageSize |
| | | }) |
| | | .then((res) => { |
| | | console.log(res) |
| | | if (res.code === 200) { |
| | | if (res.data.list && res.data.list.length > 0) { |
| | | const list = res.data.list.map((item) => { |
| | | return { |
| | | ...item, |
| | | client_name: item.client.name, |
| | | contact_name: item.contact.name, |
| | | client_status: item.client_status.name, |
| | | phone: item.contact.phone, |
| | | member_name: item.member.username, |
| | | contact_information_name: item.contact_information.name |
| | | } |
| | | }) |
| | | this.tableList.tableInfomation = list || [] |
| | | this.pagerOptions.totalCount = res.data.count |
| | | } else { |
| | | this.tableList.tableInfomation = [] |
| | | } |
| | | } else { |
| | | this.tableList.tableInfomation = [] |
| | | } |
| | | this.loading = false |
| | | }) |
| | | .catch((err) => { |
| | | console.log(err) |
| | | this.tableList.tableInfomation = [] |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | // 搜索 |
| | | onFilterSearch(searchText) { |
| | | this.search_map.client_name = searchText ?? "" |
| | | this.pagerOptions.currPage = 1 |
| | | this.getData() |
| | | }, |
| | | // 新建 |
| | | exportClick() { |
| | | |
| | | }, |
| | | // 打印 |
| | | synchClick(){ |
| | | |
| | | }, |
| | | |
| | | // 删除 |
| | | delClick(id) { |
| | | this.$confirm("是否确认删除?", "警告", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }) |
| | | .then(() => { |
| | | getDeleteFollowRecord({ ids: [id] }).then((response) => { |
| | | if (response.code === 200) { |
| | | this.$message.success("删除成功") |
| | | this.getData() |
| | | } else { |
| | | this.$message.warning("删除失败") |
| | | } |
| | | }) |
| | | }) |
| | | .catch(() => {}) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <!-- Add "scoped" attribute to limit CSS to this component only --> |
| | | <style lang="scss" scoped></style> |
| | | <style lang="scss" scoped> |
| | | .silkRegister-form { |
| | | height: 100%; |
| | | overflow: hidden; |
| | | .filter { |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 12px 20px 0 20px; |
| | | &-card { |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | box-sizing: border-box; |
| | | padding: 10px 20px; |
| | | flex: 1; |
| | | border-radius: 12px; |
| | | background-color: #fff; |
| | | } |
| | | } |
| | | .body { |
| | | box-sizing: border-box; |
| | | padding: 10px 20px; |
| | | border-radius: 12px; |
| | | height: calc(100% - 92px); |
| | | .body-card { |
| | | background-color: #fff; |
| | | border-radius: 12px; |
| | | height: 100%; |
| | | overflow: hidden; |
| | | } |
| | | .list-view { |
| | | height: calc(100% - 60px); |
| | | overflow: hidden; |
| | | } |
| | | .btn-pager { |
| | | display: flex; |
| | | margin-top: 10px; |
| | | .page { |
| | | margin-left: auto; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <el-dialog :close-on-click-modal="false" :visible.sync="islook" width="40rem" class="add-event-dialog" |
| | | @close="cancelMethod"> |
| | | <div slot="title" class="tac drawerHeader">{{ editRow.title }}</div> |
| | | <div class="dialog-content-box"> |
| | | <el-form class="form-box" ref="form" :rules="rules" :model="form" label-width="140px" label-position="right"> |
| | | <el-form-item label="员工姓名:" prop="id"> |
| | | {{ form.name }} |
| | | </el-form-item> |
| | | <el-form-item label="员工ID:" prop="isCore"> |
| | | {{ form.name }} |
| | | </el-form-item> |
| | | <el-form-item label="工种:" prop="id"> |
| | | {{ form.name }} |
| | | </el-form-item> |
| | | <el-form-item label="考勤日期:" prop="isCore"> |
| | | {{ form.name }} |
| | | </el-form-item> |
| | | <el-form-item label="状态:" prop="id"> |
| | | <template v-if="!isEditOne"> |
| | | <i class="el-icon-circle-check cursor_pointer font_size_20 color_67c23a"></i> |
| | | {{ form.name }} |
| | | <i @click="editOneClick" class="el-icon-edit-outline cursor_pointer font_size_20"></i> |
| | | </template> |
| | | <template v-else> |
| | | <el-select v-model="form.phoneNum" filterable placeholder="请选择" class="margin_right_15px" style="width: calc(100% - 80px)"> |
| | | <el-option v-for="item in DeviceList" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | <el-button type="text" @click="submitEditOneClick('form')">确定</el-button> |
| | | </template> |
| | | </el-form-item> |
| | | <el-form-item label="上班打卡时间:" prop="isCore"> |
| | | {{ form.name }} |
| | | </el-form-item> |
| | | <el-form-item label="下班打卡时间:" prop="id"> |
| | | {{ form.name }} |
| | | </el-form-item> |
| | | <el-form-item label="班次:" prop="isCore"> |
| | | {{ form.name }} |
| | | </el-form-item> |
| | | <el-form-item label="班次开始时间:" prop="id"> |
| | | {{ form.name }} |
| | | </el-form-item> |
| | | <el-form-item label="班次结束时间:" prop="isCore"> |
| | | {{ form.name }} |
| | | </el-form-item> |
| | | <el-form-item label="工作日加班时长:" prop="id"> |
| | | <template v-if="!isEditTwo"> |
| | | {{ form.name }} |
| | | <i @click="editTwoClick" class="el-icon-edit-outline cursor_pointer font_size_20"></i> |
| | | </template> |
| | | <template v-else> |
| | | <el-input |
| | | v-model.number="form.produceAheadDay" |
| | | maxlength="20" |
| | | style="width: calc(100% - 80px)" |
| | | clearable |
| | | placeholder="请输入" |
| | | class="margin_right_15px" |
| | | ></el-input> |
| | | <el-button type="text" @click="submitEditTwoClick('form')">确定</el-button> |
| | | </template> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div slot="footer" class="dialog-footer tac"> |
| | | <el-button type="cancel" @click="cancelMethod()">取消</el-button> |
| | | <el-button type="primary" @click="submitForm('form')">确定</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getDeleteFollowRecord } from "@/api/employeeManage/employeeInfo.js" |
| | | export default { |
| | | props: { |
| | | editRow: { |
| | | type: Object, |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | islook: true, |
| | | form: { |
| | | id: '', |
| | | isCore: '', |
| | | phoneNum: '', |
| | | }, |
| | | isEditOne:false, |
| | | isEditTwo:false, |
| | | DeviceList:[], |
| | | rules: { |
| | | id: [ |
| | | { |
| | | required: true, |
| | | message: "请输入人员姓名", |
| | | trigger: ["blur", "change"], |
| | | }, |
| | | ], |
| | | name: [ |
| | | { |
| | | required: true, |
| | | message: "请输入员工编码", |
| | | trigger: ["blur", "change"], |
| | | }, |
| | | ], |
| | | produceAheadDay: [ |
| | | { |
| | | required: false, |
| | | message: "请输入", |
| | | trigger: "blur", |
| | | }, |
| | | { |
| | | validator: this.validatorNum, |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }, |
| | | }; |
| | | }, |
| | | created() { |
| | | }, |
| | | watch: { |
| | | islook(newVal) { |
| | | if (newVal) { |
| | | this.formInfo() |
| | | } |
| | | }, |
| | | editRow() { |
| | | this.formInfo() |
| | | }, |
| | | }, |
| | | methods: { |
| | | editOneClick(){ |
| | | this.isEditOne=true |
| | | }, |
| | | submitEditOneClick(){ |
| | | this.isEditOne=false |
| | | }, |
| | | editTwoClick(){ |
| | | this.isEditTwo=true |
| | | }, |
| | | submitEditTwoClick(){ |
| | | this.isEditTwo=false |
| | | }, |
| | | formInfo() { |
| | | if (this.islook) { |
| | | this.form = { |
| | | isCore: "", |
| | | id: "", |
| | | }; |
| | | this.$nextTick(()=>{ |
| | | this.$refs["form"].resetFields(); |
| | | if (this.editRow.id) { |
| | | this.form = JSON.parse(JSON.stringify(this.editRow)); |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | validatorNum(rule, value, callback) { |
| | | if (value) { |
| | | if (value == undefined || value == null) { |
| | | callback(new Error("请输入有效数字")); |
| | | } else { |
| | | var reg = /^\+?[0-9]\d*$/; |
| | | if (!reg.test(value)) { |
| | | callback(new Error("请填写不小于0的数字")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | } |
| | | } else { |
| | | callback(); |
| | | } |
| | | }, |
| | | cancelMethod() { |
| | | this.$refs["form"].resetFields(); |
| | | this.islook = false; |
| | | }, |
| | | submitForm(formName) { |
| | | this.$refs[formName].validate((valid) => { |
| | | if (valid) { |
| | | let form = JSON.parse(JSON.stringify(this.form)); |
| | | if (this.editRow.type == "add") { |
| | | getDeleteFollowRecord(form).then((res) => { |
| | | if (res.code == 200) { |
| | | this.$message({ |
| | | message: "添加成功!", |
| | | type: "success", |
| | | }); |
| | | this.cancelMethod(); |
| | | } |
| | | }); |
| | | } else { |
| | | getDeleteFollowRecord(form).then((res) => { |
| | | if (res.code == 200) { |
| | | this.$message({ |
| | | message: "编辑成功!", |
| | | type: "success", |
| | | }); |
| | | this.cancelMethod(); |
| | | } |
| | | }); |
| | | } |
| | | } else { |
| | | console.log('error submit!!'); |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .dialog-content-box { |
| | | height: 28rem; |
| | | |
| | | .form-box { |
| | | width: 90%; |
| | | padding: 0 5%; |
| | | height: 100%; |
| | | overflow-y: auto; |
| | | |
| | | } |
| | | } |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <el-dialog :close-on-click-modal="false" :visible.sync="islook" width="35rem" class="add-rule-set-dialog" |
| | | @close="shutdown"> |
| | | <div slot="title" class="tac drawerHeader">规则设置</div> |
| | | <div class="dialog-content-box"> |
| | | <el-form ref="form" class="form-box" :rules="rules" :model="form" :inline="true" label-width="150px" |
| | | label-position="right"> |
| | | <el-form-item label="工作日加班规则:" prop="materialMatch"> |
| | | <el-radio-group v-model="form.materialMatch"> |
| | | <el-radio label="1"> |
| | | 不启用工作日加班 |
| | | </el-radio> |
| | | <el-radio label="2"> |
| | | 超过 |
| | | <el-input class="margin_left_10px margin_right_10px" style="width:120px" v-model.number="form.cycle" |
| | | placeholder="请输入"></el-input> |
| | | 小时算加班 |
| | | </el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="休息日加班规则:" prop="materialMatch"> |
| | | <el-radio-group v-model="form.materialMatch"> |
| | | <el-radio label="1"> |
| | | 不启用休息日加班 |
| | | </el-radio> |
| | | <el-radio label="2"> |
| | | 超过 |
| | | <el-input class="margin_left_10px margin_right_10px" style="width:120px" v-model.number="form.cycle" |
| | | placeholder="请输入"></el-input> |
| | | 小时算加班 |
| | | </el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div slot="footer" class="dialog-footer tac"> |
| | | <el-button @click="shutdown">取消</el-button> |
| | | <el-button type="primary" @click="onSubmit(form)">确定</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getMiniDictList, saveMiniDict } from "@/api/employeeSalary/attendanceStatistics.js" // 版本类型 |
| | | export default { |
| | | props: {}, |
| | | data() { |
| | | return { |
| | | islook: false, |
| | | form: { |
| | | warningDays: 3, |
| | | materialMatch: '1', |
| | | }, |
| | | rules: { |
| | | cycle: [ |
| | | { |
| | | required: true, |
| | | message: "请输入", |
| | | trigger: "blur", |
| | | }, |
| | | { |
| | | validator: this.validatorNum, |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }, |
| | | procedureIdsList: [], |
| | | }; |
| | | }, |
| | | mounted() { |
| | | // this.getMiniDictList(); |
| | | }, |
| | | watch: { |
| | | islook(newVal) { |
| | | if (newVal) { |
| | | this.getMiniDictList(); |
| | | this.$nextTick(() => { |
| | | this.$refs["form"].resetFields(); |
| | | }); |
| | | } |
| | | }, |
| | | }, |
| | | methods: { |
| | | validatorNum(rule, value, callback) { |
| | | if (value) { |
| | | if (value == undefined || value == null) { |
| | | callback(new Error("请输入有效数字")); |
| | | } else { |
| | | var reg = /^\+?[0-9]\d*$/; |
| | | if (!reg.test(value)) { |
| | | callback(new Error("请填写不小于0的数字")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | } |
| | | } else { |
| | | callback(); |
| | | } |
| | | }, |
| | | async getMiniDictList() { |
| | | await getMiniDictList({ type: 3 }).then((res) => { |
| | | if (res.code == 200) { |
| | | if (res.data) { |
| | | for (let i in res.data) { |
| | | if (res.data[i].value == '预警天数') { |
| | | this.form.warningDays = parseInt(res.data[i].name); |
| | | } else if (res.data[i].value == '物料匹配条件') { |
| | | this.form.materialMatch = res.data[i].name ? res.data[i].name : '1'; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | onSubmit() { |
| | | this.$refs.form.validate((valid) => { |
| | | if (valid) { |
| | | console.log(this.form); |
| | | let params = { |
| | | list: [ |
| | | { |
| | | name: "" + this.form.warningDays, |
| | | value: "预警天数" |
| | | }, |
| | | { |
| | | name: "" + this.form.materialMatch, |
| | | value: "物料匹配条件" |
| | | }, |
| | | ], |
| | | type: 3, |
| | | }; |
| | | |
| | | saveMiniDict(params).then((res) => { |
| | | if (res.code == 200) { |
| | | this.$message({ |
| | | message: "保存成功!", |
| | | type: "success", |
| | | }); |
| | | // 保存 |
| | | this.shutdown("save"); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | shutdown(val) { |
| | | this.islook = false; |
| | | this.$emit("closeClick", val); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .add-rule-set-dialog { |
| | | .form-box { |
| | | ::v-deep .el-form-item__content { |
| | | width: calc(100% - 150px); |
| | | } |
| | | |
| | | .el-form-item { |
| | | width: 100%; |
| | | .el-radio{ |
| | | height:40px; |
| | | line-height:40px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | ::v-deep .el-input__inner { |
| | | font-size: 13px !important; |
| | | color: rgba(0, 0, 0, 0.9); |
| | | text-align: left; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div class="container"></div> |
| | | <div class="silkRegister-form"> |
| | | <div class="filter"> |
| | | <div class="filter-card"> |
| | | <CommonSearch |
| | | :show-add="false" |
| | | :show-download="false" |
| | | :amount-view="false" |
| | | :show-action-btn="false" |
| | | placeholder="请输入关键词" |
| | | @searchClick="onFilterSearch" |
| | | > |
| | | <template slot="leftButton"> |
| | | <div class="margin_right_20px" style="width:200px;"> |
| | | <el-date-picker v-model="object.date" style="width:100%" type="month" placeholder="选择日期" |
| | | value-format="yyyy-MM"> |
| | | </el-date-picker> |
| | | </div> |
| | | <el-button size="small" type="primary" @click="ruleSettingClick">规则设置</el-button> |
| | | </template> |
| | | </CommonSearch> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="body"> |
| | | <div class="body-card"> |
| | | <div class="list-view"> |
| | | <TableCommonView |
| | | ref="tableListRef" |
| | | v-loading="loading" |
| | | :table-list="tableList" |
| | | @selTableCol="selTableCol" |
| | | > |
| | | <template slot="tableButton"> |
| | | <el-table-column label="操作" width="90" fixed="right"> |
| | | <template slot-scope="scope"> |
| | | <el-button @click="delClick(scope.row.id)" type="text" size="small">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </template> |
| | | </TableCommonView> |
| | | </div> |
| | | <div class="btn-pager"> |
| | | <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <AttendanceStatisticsDetails ref="attendanceStatisticsDetails" :editRow="editRow" @shutdown="getData" /> |
| | | <!-- 规则设置 --> |
| | | <RuleSettingDialog ref="RuleSettingDialog" :editRow="editRow" @closeClick="getData" /> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getFollowRecordList, getDeleteFollowRecord } from "@/api/employeeSalary/attendanceStatistics.js" |
| | | import pageMixin from "@/components/makepager/pager/mixin/pageMixin" |
| | | import AttendanceStatisticsDetails from "@/views/employeeSalary/attendanceStatistics/components/AttendanceStatisticsDetails" |
| | | import RuleSettingDialog from "@/views/employeeSalary/attendanceStatistics/components/RuleSettingDialog" |
| | | import Date from "@/api/date"; |
| | | const { getCurrentMonth } = Date; |
| | | export default { |
| | | name: "attendanceStatistics", |
| | | props: {}, |
| | | components: {}, |
| | | mixins: [], |
| | | computed: {}, |
| | | data() { |
| | | return {} |
| | | props: { |
| | | }, |
| | | created() {}, |
| | | methods: {} |
| | | mixins: [pageMixin], |
| | | components: { |
| | | AttendanceStatisticsDetails, |
| | | RuleSettingDialog |
| | | }, |
| | | data() { |
| | | return { |
| | | tableList: {}, |
| | | loading: false, |
| | | object:{ |
| | | date:getCurrentMonth() |
| | | }, |
| | | editRow:{ |
| | | |
| | | }, |
| | | searchOptions: [], |
| | | editConfig: { |
| | | visible: false, |
| | | title: "新建", |
| | | infomation: {} |
| | | }, |
| | | search_map: {}, |
| | | tableColumn: [ |
| | | { label: "姓名", prop: "topic", min: 120, default: true }, |
| | | { label: "人员ID", prop: "client_name", min: 190,default: true}, |
| | | { label: "工种", prop: "contact_name", min: 100, }, |
| | | { label: "月份", prop: "client_status", min: 100 }, |
| | | { label: "1/周一", prop: "client_status", min: 100 }, |
| | | { label: "工作日加班时长(小时)", prop: "contact_information_name", min: 180 }, |
| | | { label: "休息日加班时长(小时)", prop: "follow_time", min: 180 }, |
| | | { label: "应出勤天数", prop: "next_follow_time", min: 110 }, |
| | | { label: "实际出勤天数", prop: "member_name", min: 110 }, |
| | | ], |
| | | showCol: [ |
| | | "姓名", |
| | | "人员ID", |
| | | "工种", |
| | | "月份", |
| | | "工作日加班时长(小时)", |
| | | "休息日加班时长(小时)", |
| | | "应出勤天数", |
| | | "实际出勤天数", |
| | | ] |
| | | } |
| | | }, |
| | | created() { |
| | | this.setTable() |
| | | this.getData(this.search_map) |
| | | }, |
| | | computed: { |
| | | }, |
| | | methods: { |
| | | setTable() { |
| | | this.tableList = { |
| | | selectIndex: true, |
| | | tableInfomation: [], |
| | | allcol: [], |
| | | showcol: this.showCol, |
| | | tableColumn: this.setColumnVisible(this.showCol) |
| | | } |
| | | this.tableList.allcol = this.tableList.tableColumn.filter((ele) => !ele.default).map((ele) => ele.label) |
| | | this.searchOptions = [] |
| | | for (let i = 0; i < this.tableList.tableColumn.length; i++) { |
| | | const label = this.tableList.tableColumn[i].label |
| | | const value = this.tableList.tableColumn[i].prop |
| | | this.searchOptions.push({ value: value, label: label }) |
| | | } |
| | | }, |
| | | setColumnVisible(showCol) { |
| | | return this.tableColumn.map((ele) => { |
| | | return { |
| | | ...ele, |
| | | isShowColumn: showCol.includes(ele.label) |
| | | } |
| | | }) |
| | | }, |
| | | selTableCol(val) { |
| | | this.showcol = val |
| | | this.tableList.tableColumn = this.setColumnVisible(val) |
| | | }, |
| | | // 请求数据 |
| | | async getData() { |
| | | this.loading = true |
| | | await getFollowRecordList({ |
| | | search_map: this.search_map, |
| | | page: this.pagerOptions.currPage, |
| | | pageSize: this.pagerOptions.pageSize |
| | | }) |
| | | .then((res) => { |
| | | console.log(res) |
| | | if (res.code === 200) { |
| | | if (res.data.list && res.data.list.length > 0) { |
| | | const list = res.data.list.map((item) => { |
| | | return { |
| | | ...item, |
| | | client_name: item.client.name, |
| | | contact_name: item.contact.name, |
| | | client_status: item.client_status.name, |
| | | phone: item.contact.phone, |
| | | member_name: item.member.username, |
| | | contact_information_name: item.contact_information.name |
| | | } |
| | | }) |
| | | this.tableList.tableInfomation = list || [] |
| | | this.pagerOptions.totalCount = res.data.count |
| | | } else { |
| | | this.tableList.tableInfomation = [] |
| | | } |
| | | } else { |
| | | this.tableList.tableInfomation = [] |
| | | } |
| | | this.loading = false |
| | | }) |
| | | .catch((err) => { |
| | | console.log(err) |
| | | this.tableList.tableInfomation = [] |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | // 搜索 |
| | | onFilterSearch(searchText) { |
| | | this.search_map.client_name = searchText ?? "" |
| | | this.pagerOptions.currPage = 1 |
| | | this.getData() |
| | | }, |
| | | // 详情 |
| | | detailsClick(row) { |
| | | let config=JSON.parse(JSON.stringify(row)); |
| | | this.editRow = { ...config, title:'编辑',type:'add' } |
| | | this.$refs.addWorkKind.islook = true; |
| | | }, |
| | | // 打印 |
| | | ruleSettingClick(){ |
| | | this.$refs.RuleSettingDialog.islook = true; |
| | | }, |
| | | |
| | | // 删除 |
| | | delClick(id) { |
| | | this.$confirm("是否确认删除?", "警告", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }) |
| | | .then(() => { |
| | | getDeleteFollowRecord({ ids: [id] }).then((response) => { |
| | | if (response.code === 200) { |
| | | this.$message.success("删除成功") |
| | | this.getData() |
| | | } else { |
| | | this.$message.warning("删除失败") |
| | | } |
| | | }) |
| | | }) |
| | | .catch(() => {}) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <!-- Add "scoped" attribute to limit CSS to this component only --> |
| | | <style lang="scss" scoped></style> |
| | | <style lang="scss" scoped> |
| | | .silkRegister-form { |
| | | height: 100%; |
| | | overflow: hidden; |
| | | .filter { |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 12px 20px 0 20px; |
| | | &-card { |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | box-sizing: border-box; |
| | | padding: 10px 20px; |
| | | flex: 1; |
| | | border-radius: 12px; |
| | | background-color: #fff; |
| | | } |
| | | } |
| | | .body { |
| | | box-sizing: border-box; |
| | | padding: 10px 20px; |
| | | border-radius: 12px; |
| | | height: calc(100% - 92px); |
| | | .body-card { |
| | | background-color: #fff; |
| | | border-radius: 12px; |
| | | height: 100%; |
| | | overflow: hidden; |
| | | } |
| | | .list-view { |
| | | height: calc(100% - 60px); |
| | | overflow: hidden; |
| | | } |
| | | .btn-pager { |
| | | display: flex; |
| | | margin-top: 10px; |
| | | .page { |
| | | margin-left: auto; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | margin-left: 0px; |
| | | } |
| | | </style> |
| | | @/api/systemSetting/supplier |
| | |
| | | <el-button type="primary" size="small">放弃</el-button> |
| | | <el-button type="primary" size="small">保存</el-button> |
| | | <el-divider direction="vertical"></el-divider> |
| | | <el-button type="primary" size="small">退出</el-button> |
| | | <el-button type="primary" size="small" @click="quitClick">退出</el-button> |
| | | </div> |
| | | <div class="t-right"> |
| | | <div class="t-right-circle" :class="isDeviceConnectStatus ? 't-r-bg-green ' : 't-r-bg-red '"></div> |
| | |
| | | computed: {}, |
| | | data() { |
| | | return { |
| | | isDeviceConnectStatus: false, |
| | | isDeviceConnectStatus: true, |
| | | ruleForm: { |
| | | number: "", |
| | | productTime: "", |
| | |
| | | if (this.isDeviceConnectStatus) { |
| | | this.$refs.addProductDialog.editDialogVisible = true |
| | | } |
| | | }, |
| | | // 退出 |
| | | quitClick() { |
| | | this.$router.go(-1) |
| | | } |
| | | } |
| | | } |
| | |
| | | :close-on-click-modal="false" |
| | | :visible.sync="editDialogVisible" |
| | | width="533px" |
| | | class="add-event-dialog" |
| | | append-to-body |
| | | custom-class="add-event-dialog" |
| | | @close="handleClose" |
| | | > |
| | | <div class="dialog-content-box"> |
| | |
| | | color: #333; |
| | | font-weight: 700; |
| | | } |
| | | .add-event-dialog .el-dialog { |
| | | position: absolute; |
| | | right: 40px; |
| | | top: 40px; |
| | | } |
| | | } |
| | | </style> |
| | | <style> |
| | | .add-event-dialog .el-dialog { |
| | | /* .add-event-dialog.el-dialog { |
| | | position: absolute; |
| | | right: 40px; |
| | | top: 40px; |
| | | } |
| | | } */ |
| | | /* .add-event-dialog .el-dialog__header { |
| | | display: none; |
| | | } */ |
| | |
| | | <el-tab-pane label="纤度检验表" name="second"></el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | |
| | | <div class="filter"> |
| | | <div class="filter-card"> |
| | | <CommonSearch :show-add="false" :show-download="false" :amount-view="false" :show-action-btn="false" |
| | | placeholder="请输入关键词" @searchClick="onFilterSearch"> |
| | | <template slot="leftButton"> |
| | | <el-button size="small" type="primary" @click="cancelClick">放弃</el-button> |
| | | <el-button size="small" type="primary" @click="saveClick">保存</el-button> |
| | | </template> |
| | | </CommonSearch> |
| | | <template v-if="activeName == 'first'"> |
| | | <div class="filter"> |
| | | <div class="filter-card"> |
| | | <CommonSearch :show-add="false" :show-download="false" :amount-view="false" :show-action-btn="false" |
| | | placeholder="请输入关键词" @searchClick="onFilterSearch"> |
| | | <template slot="leftButton"> |
| | | <el-button size="small" type="primary" @click="cancelClickOne">放弃</el-button> |
| | | <el-button size="small" type="primary" @click="saveClickOne('form')">保存</el-button> |
| | | </template> |
| | | </CommonSearch> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="body" v-if="activeName == 'first'"> |
| | | <div class="body-l"> |
| | | <el-form ref="form" class="form-box" :model="form" :rules="rules" label-position="left" label-width="70px"> |
| | | <el-form-item label="编号" prop="clientName" class="form-item"> |
| | | <el-input v-model="form.clientName" placeholder="请输入"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="落丝时间" prop="signTime" class="form-item"> |
| | | <el-date-picker v-model="form.signTime" value-format="yyyy-MM-dd" type="date" placeholder="选择日期" |
| | | style="width:100%"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="庄口" prop="deliverType" class="form-item"> |
| | | <el-select v-model="form.deliverType" placeholder="请选择"> |
| | | <el-option v-for="item in deliveryTypeList" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="车间" prop="deliverType" class="form-item"> |
| | | <el-select v-model="form.deliverType" placeholder="请选择"> |
| | | <el-option v-for="item in deliveryTypeList" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="规格" prop="deliverType" class="form-item"> |
| | | <el-select v-model="form.deliverType" placeholder="请选择"> |
| | | <el-option v-for="item in deliveryTypeList" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="组别" prop="deliverType" class="form-item"> |
| | | <el-select v-model="form.deliverType" placeholder="请选择" style="width: 100%"> |
| | | <el-option v-for="item in deliveryTypeList" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="回数" prop="amount" class="form-item"> |
| | | <el-row> |
| | | <el-col :span="11"> |
| | | <el-input v-model.number="form.amount" placeholder="请输入" show-word-limit |
| | | style="width: 100%"></el-input> |
| | | </el-col> |
| | | <el-col :span="2" style="margin:0 auto;text-align:center;">-</el-col> |
| | | <el-col :span="11"> |
| | | <el-input v-model.number="form.amount" placeholder="请输入" show-word-limit |
| | | style="width: 100%"></el-input> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form-item> |
| | | <el-form-item label="车号" prop="clientName" class="form-item"> |
| | | <el-input v-model="form.clientName" placeholder="请输入"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <div class="body"> |
| | | <div class="body-l"> |
| | | <el-form ref="form" class="form-box" :model="form" :rules="rules" label-position="left" |
| | | label-width="80px"> |
| | | <el-form-item label="编号" prop="number" class="form-item"> |
| | | <el-input v-model="form.number" placeholder="请输入"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="落丝时间" prop="finishDate" class="form-item"> |
| | | <el-date-picker v-model="form.finishDate" value-format="yyyy-MM-dd" type="date" |
| | | placeholder="选择日期" class="select-width"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="庄口" prop="market" class="form-item"> |
| | | <el-select v-model="form.market" placeholder="请选择" class="select-width"> |
| | | <el-option v-for="item in marketList" :key="item.ID" :label="item.name" |
| | | :value="item.name"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="车间" prop="name" class="form-item"> |
| | | <el-select v-model="form.name" placeholder="请选择" class="select-width"> |
| | | <el-option v-for="item in nameList" :key="item.ID" :label="item.name" |
| | | :value="item.name"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="规格" prop="spec" class="form-item"> |
| | | <el-input v-model="form.spec" placeholder="请输入"> |
| | | </el-input> |
| | | <!-- <el-select v-model="form.spec" placeholder="请选择" class="select-width"> |
| | | <el-option v-for="item in deliveryTypeList" :key="item.id" :label="item.name" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> --> |
| | | </el-form-item> |
| | | <el-form-item label="组别" prop="workshopGroup" class="form-item"> |
| | | <el-select v-model="form.workshopGroup" placeholder="请选择" class="select-width"> |
| | | <el-option v-for="item in workshopGroupList" :key="item.ID" :label="item.name" |
| | | :value="item.ID"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="回数" prop='circle' class="form-item"> |
| | | <el-row> |
| | | <el-col :span="11"> |
| | | <el-form-item label="" @input="inputStart" label-width="0" prop="startCircle" class="select-width"> |
| | | <el-input v-model.number="form.startCircle" placeholder="请输入" show-word-limit |
| | | class="select-width"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="2" style="margin:0 auto;text-align:center;">-</el-col> |
| | | <el-col :span="11"> |
| | | <el-form-item label="" label-width="0" prop="endCircle" class="select-width"> |
| | | |
| | | <el-input v-model.number="form.endCircle" @input="inputStart" placeholder="请输入" show-word-limit |
| | | class="select-width"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form-item> |
| | | <el-form-item label="车号" prop="position" class="form-item"> |
| | | <el-input v-model="form.position" placeholder="请输入"> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div class="list-view"> |
| | | <TableCommonView ref="tableListRef" :colOpenShow="false" v-loading="loading" :table-list="tableList" |
| | | @selTableCol="selTableCol"> |
| | | </TableCommonView> |
| | | </div> |
| | | </div> |
| | | <div class="body-r"> |
| | | 纤度: |
| | | <p>{{ form.sumFineness }}</p> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <template v-if="activeName == 'second'"> |
| | | <!-- <div class="body-two body" v-if="activeName == 'second'"> |
| | | <div class="body-two-t">纤度检验表</div> |
| | | <el-form ref="form" class="form-box" :model="form" :rules="rules" label-position="right" label-width="60px"> |
| | | <div class="form-box-t"> |
| | | <el-form-item label="编号" prop="clientName" class="form-item"> |
| | | 1234546677 |
| | | </el-form-item> |
| | | <el-form-item label="车间" prop="deliverType" class="form-item"> |
| | | <el-select v-model="form.deliverType" placeholder="请选择"> |
| | | <el-option v-for="item in deliveryTypeList" :key="item.id" :label="item.name" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="组别" prop="deliverType" class="form-item"> |
| | | <el-select v-model="form.deliverType" placeholder="请选择" style="width: 100%"> |
| | | <el-option v-for="item in deliveryTypeList" :key="item.id" :label="item.name" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="回数" prop="amount" class="form-item"> |
| | | <el-input v-model.number="form.amount" placeholder="请输入" show-word-limit |
| | | style="width: 100%"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="规格" prop="clientName" class="form-item"> |
| | | <el-input v-model="form.clientName" placeholder="请输入"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="日期" prop="signTime" class="form-item"> |
| | | <el-date-picker v-model="form.signTime" value-format="yyyy-MM-dd" type="date" placeholder="选择日期" |
| | | style="width:100%"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="list-view"> |
| | | <el-table ref="multipleTable" :data="tableTwoList.tableInfomation" tooltip-effect="dark" |
| | | style="width: 100%"> |
| | | <el-table-column label="车号" prop="templateName" width="100"> |
| | | </el-table-column> |
| | | <el-table-column label="下差纤度" prop="name" width="100" align="center"> |
| | | <template v-for="(item, i) in tableTwoList.lower"> |
| | | <el-table-column align="center" :key="i" :prop="item.prop" :label="item.label" |
| | | :width="item.width" :min-width="item.min" show-overflow-tooltip |
| | | :sortable="item.sortable"> |
| | | </el-table-column> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="目的纤度" prop="name" width="100" align="center"> |
| | | <template v-for="(item, i) in tableTwoList.objective"> |
| | | <el-table-column align="center" :key="i" :prop="item.prop" :label="item.label" |
| | | :width="item.width" :min-width="item.min" show-overflow-tooltip |
| | | :sortable="item.sortable"> |
| | | </el-table-column> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="上差纤度" prop="name" width="100" align="center"> |
| | | <template v-for="(item, i) in tableTwoList.upper"> |
| | | <el-table-column align="center" :key="i" :prop="item.prop" :label="item.label" |
| | | :width="item.width" :min-width="item.min" show-overflow-tooltip |
| | | :sortable="item.sortable"> |
| | | </el-table-column> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="valueRange" label="偏差" width="120"> |
| | | </el-table-column> |
| | | <el-table-column prop="unit" label="总差" show-overflow-tooltip> |
| | | </el-table-column> |
| | | <el-table-column prop="valueRange" label="野纤" width="120"> |
| | | </el-table-column> |
| | | <el-table-column prop="unit" label="大野" show-overflow-tooltip> |
| | | </el-table-column> |
| | | <el-table-column prop="valueRange" label="特野" width="120"> |
| | | </el-table-column> |
| | | <el-table-column prop="unit" label="等级" show-overflow-tooltip> |
| | | </el-table-column> |
| | | <el-table-column prop="valueRange" label="II度" width="120"> |
| | | </el-table-column> |
| | | <el-table-column prop="unit" label="清洁" show-overflow-tooltip> |
| | | </el-table-column> |
| | | <el-table-column prop="valueRange" label="洁净" width="120"> |
| | | </el-table-column> |
| | | <el-table-column prop="unit" label="备注" show-overflow-tooltip> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <div class="form-box-b"> |
| | | <el-form-item label="平均纤度" prop="clientName" class="form-item-two" label-width="100px"> |
| | | 1234546677 |
| | | </el-form-item> |
| | | <el-form-item label="公量纤度" prop="deliverType" class="form-item" label-width="100px"> |
| | | <el-input v-model="form.clientName" placeholder="请输入"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="偏差" prop="clientName" class="form-item-two"> |
| | | 0.98 |
| | | </el-form-item> |
| | | <el-form-item label="总差" prop="clientName" class="form-item-two"> |
| | | 0.98 |
| | | </el-form-item> |
| | | <el-form-item label="车组等级" prop="deliverType" class="form-item-two" label-width="100px"> |
| | | 4A |
| | | </el-form-item> |
| | | <el-form-item label="II度" prop="amount" class="form-item"> |
| | | <el-input v-model="form.clientName" placeholder="请输入"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="清洁" prop="clientName" class="form-item"> |
| | | <el-input v-model="form.clientName" placeholder="请输入"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="洁净" prop="signTime" class="form-item"> |
| | | <el-input v-model="form.clientName" placeholder="请输入"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="庄口工艺单编号" prop="signTime" class="form-item" label-width="110px"> |
| | | <el-input v-model="form.clientName" placeholder="请输入"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="检验员" prop="signTime" class="form-item"> |
| | | <el-input v-model="form.clientName" placeholder="请输入"> |
| | | </el-input> |
| | | </el-form-item> |
| | | </div> |
| | | </el-form> |
| | | <div class="list-view"> |
| | | <TableCommonView ref="tableListRef" :colOpenShow="false" v-loading="loading" :table-list="tableList" |
| | | @selTableCol="selTableCol"> |
| | | </TableCommonView> |
| | | </div> |
| | | </div> |
| | | <div class="body-r"> |
| | | 纤度: |
| | | <p>19.00</p> |
| | | </div> |
| | | </div> |
| | | <div class="body-two body" v-if="activeName == 'second'"> |
| | | <div class="body-two-t">纤度检验表</div> |
| | | <el-form ref="form" class="form-box" :model="form" :rules="rules" label-position="right" label-width="60px"> |
| | | <div class="form-box-t"> |
| | | <el-form-item label="编号" prop="clientName" class="form-item"> |
| | | 1234546677 |
| | | </el-form-item> |
| | | <el-form-item label="车间" prop="deliverType" class="form-item"> |
| | | <el-select v-model="form.deliverType" placeholder="请选择"> |
| | | <el-option v-for="item in deliveryTypeList" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="组别" prop="deliverType" class="form-item"> |
| | | <el-select v-model="form.deliverType" placeholder="请选择" style="width: 100%"> |
| | | <el-option v-for="item in deliveryTypeList" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="回数" prop="amount" class="form-item"> |
| | | <el-input v-model.number="form.amount" placeholder="请输入" show-word-limit |
| | | style="width: 100%"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="规格" prop="clientName" class="form-item"> |
| | | <el-input v-model="form.clientName" placeholder="请输入"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="日期" prop="signTime" class="form-item"> |
| | | <el-date-picker v-model="form.signTime" value-format="yyyy-MM-dd" type="date" placeholder="选择日期" |
| | | style="width:100%"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="list-view"> |
| | | <el-table ref="multipleTable" :data="tableTwoList.tableInfomation" tooltip-effect="dark" |
| | | style="width: 100%"> |
| | | <el-table-column label="车号" prop="templateName" width="100"> |
| | | </el-table-column> |
| | | <el-table-column label="下差纤度" prop="name" width="100" align="center"> |
| | | <template v-for="(item, i) in tableTwoList.lower"> |
| | | <el-table-column align="center" :key="i" :prop="item.prop" :label="item.label" |
| | | :width="item.width" :min-width="item.min" show-overflow-tooltip |
| | | :sortable="item.sortable"> |
| | | </el-table-column> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="目的纤度" prop="name" width="100" align="center"> |
| | | <template v-for="(item, i) in tableTwoList.objective"> |
| | | <el-table-column align="center" :key="i" :prop="item.prop" :label="item.label" |
| | | :width="item.width" :min-width="item.min" show-overflow-tooltip |
| | | :sortable="item.sortable"> |
| | | </el-table-column> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="上差纤度" prop="name" width="100" align="center"> |
| | | <template v-for="(item, i) in tableTwoList.upper"> |
| | | <el-table-column align="center" :key="i" :prop="item.prop" :label="item.label" |
| | | :width="item.width" :min-width="item.min" show-overflow-tooltip |
| | | :sortable="item.sortable"> |
| | | </el-table-column> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="valueRange" label="偏差" width="120"> |
| | | </el-table-column> |
| | | <el-table-column prop="unit" label="总差" show-overflow-tooltip> |
| | | </el-table-column> |
| | | <el-table-column prop="valueRange" label="野纤" width="120"> |
| | | </el-table-column> |
| | | <el-table-column prop="unit" label="大野" show-overflow-tooltip> |
| | | </el-table-column> |
| | | <el-table-column prop="valueRange" label="特野" width="120"> |
| | | </el-table-column> |
| | | <el-table-column prop="unit" label="等级" show-overflow-tooltip> |
| | | </el-table-column> |
| | | <el-table-column prop="valueRange" label="II度" width="120"> |
| | | </el-table-column> |
| | | <el-table-column prop="unit" label="清洁" show-overflow-tooltip> |
| | | </el-table-column> |
| | | <el-table-column prop="valueRange" label="洁净" width="120"> |
| | | </el-table-column> |
| | | <el-table-column prop="unit" label="备注" show-overflow-tooltip> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <div class="form-box-b"> |
| | | <el-form-item label="平均纤度" prop="clientName" class="form-item-two" label-width="100px"> |
| | | 1234546677 |
| | | </el-form-item> |
| | | <el-form-item label="公量纤度" prop="deliverType" class="form-item" label-width="100px"> |
| | | <el-input v-model="form.clientName" placeholder="请输入"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="偏差" prop="clientName" class="form-item-two"> |
| | | 0.98 |
| | | </el-form-item> |
| | | <el-form-item label="总差" prop="clientName" class="form-item-two"> |
| | | 0.98 |
| | | </el-form-item> |
| | | <el-form-item label="车组等级" prop="deliverType" class="form-item-two" label-width="100px"> |
| | | 4A |
| | | </el-form-item> |
| | | <el-form-item label="II度" prop="amount" class="form-item"> |
| | | <el-input v-model="form.clientName" placeholder="请输入"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="清洁" prop="clientName" class="form-item"> |
| | | <el-input v-model="form.clientName" placeholder="请输入"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="洁净" prop="signTime" class="form-item"> |
| | | <el-input v-model="form.clientName" placeholder="请输入"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="庄口工艺单编号" prop="signTime" class="form-item" label-width="110px"> |
| | | <el-input v-model="form.clientName" placeholder="请输入"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="检验员" prop="signTime" class="form-item"> |
| | | <el-input v-model="form.clientName" placeholder="请输入"> |
| | | </el-input> |
| | | </el-form-item> |
| | | </div> |
| | | </el-form> |
| | | </div> |
| | | </div> --> |
| | | </template> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getFollowRecordList } from "@/api/productManage/silkRegisterForm.js" |
| | | import { getRegisterList,saveRegister,getDictList } from "@/api/productManage/silkRegisterForm.js" |
| | | import pageMixin from "@/components/makepager/pager/mixin/pageMixin" |
| | | export default { |
| | | name: "silkRegisterAddPage", |
| | |
| | | search_map: {}, |
| | | is_public: true, |
| | | tableColumn: [ |
| | | { label: "车号", prop: "name", min: 100, default: true }, // 客户名称 |
| | | { label: "纤度值", prop: "member_name", default: true }, // 销售负责人 |
| | | { label: "数量", prop: "client_level", default: true }, // 重要级别 |
| | | { label: "纤度合计", prop: "next_visit_time", min: 90, default: true }, // 下次回访日期 |
| | | { label: "车号", prop: "position", min: 100, default: true }, // 客户名称 |
| | | { label: "纤度值", prop: "fineness", default: true }, // 销售负责人 |
| | | { label: "数量", prop: "quantity", default: true }, // 重要级别 |
| | | { label: "纤度合计", prop: "sum", min: 90, default: true }, // 下次回访日期 |
| | | ], |
| | | showCol: ['车号', '纤度值', '数量', '纤度合计'], |
| | | marketList:[], //庄口 |
| | | nameList:[], //车间 |
| | | workshopGroupList:[], //组别 |
| | | deliveryTypeList: [], |
| | | form: {}, |
| | | form: { |
| | | number:'', |
| | | finishDate:'', |
| | | market:'', |
| | | name:'', |
| | | spec:'', |
| | | workshopGroup:'', |
| | | circle:'', |
| | | startCircle:'', |
| | | endCircle:'', |
| | | position:'', |
| | | }, |
| | | rules: { |
| | | clientName: [ |
| | | { required: true, message: "请选择客户名称", trigger: "change" }, |
| | | number: [ |
| | | { required: true, message: "请填写", trigger: ["change", 'blur'] }, |
| | | ], |
| | | finishDate: [ |
| | | { required: true, message: "请选择", trigger: ["change", 'blur'] }, |
| | | ], |
| | | name: [ |
| | | { required: true, message: "请选择", trigger: ["change", 'blur'] }, |
| | | ], |
| | | spec: [ |
| | | { required: true, message: "请填写", trigger: ["change", 'blur'] }, |
| | | ], |
| | | workshopGroup: [ |
| | | { required: true, message: "请选择", trigger: ["change", 'blur'] }, |
| | | ], |
| | | circle: [ |
| | | { required: true, message: "请填写", trigger: ["change", 'blur'] }, |
| | | ], |
| | | startCircle: [ |
| | | { required: true, message: "请填写", trigger: ["change", 'blur'] }, |
| | | ], |
| | | endCircle: [ |
| | | { required: true, message: "请填写", trigger: ["change", 'blur'] }, |
| | | ], |
| | | position: [ |
| | | { required: true, message: "请填写", trigger: ["change", 'blur'] }, |
| | | ], |
| | | }, |
| | | tableTwoList: { |
| | |
| | | this.activeName = query.activeName ? query.activeName : "first"; |
| | | } |
| | | this.setTable() |
| | | this.getSelectDataList() |
| | | this.search_map = { |
| | | is_public: this.is_public |
| | | } |
| | | this.getData() |
| | | }, |
| | | methods: { |
| | | getSelectDataList(){ |
| | | //车间 |
| | | getDictList({ |
| | | dictType: 0, |
| | | }).then((res) => { |
| | | if (res.code == 200) { |
| | | this.nameList=res.data||[] |
| | | } |
| | | }) |
| | | //组别 |
| | | getDictList({ |
| | | dictType: 1, |
| | | }).then((res) => { |
| | | if (res.code == 200) { |
| | | this.workshopGroupList=res.data||[] |
| | | } |
| | | }) |
| | | //庄口 |
| | | getDictList({ |
| | | dictType: 2, |
| | | }).then((res) => { |
| | | if (res.code == 200) { |
| | | this.marketList=res.data||[] |
| | | } |
| | | }) |
| | | }, |
| | | inputStart(){ |
| | | this.form.circle=this.form.startCircle+'-'+this.form.endCircle |
| | | }, |
| | | setTable() { |
| | | this.tableList = { |
| | | selectIndex: false, |
| | |
| | | // 请求数据 |
| | | async getData() { |
| | | this.loading = true |
| | | await getFollowRecordList({ |
| | | await getRegisterList({ |
| | | search_map: this.search_map, |
| | | page: this.pagerOptions.currPage, |
| | | pageSize: this.pagerOptions.pageSize |
| | |
| | | } |
| | | this.pagerOptions.currPage = 1 |
| | | this.getData() |
| | | }, |
| | | // 纤度登记表 |
| | | // 放弃 |
| | | cancelClickOne() { |
| | | |
| | | }, |
| | | // 保存 |
| | | saveClickOne(formName) { |
| | | this.$refs[formName].validate((valid) => { |
| | | if (valid) { |
| | | let form = JSON.parse(JSON.stringify(this.form)); |
| | | delete form.circle |
| | | let params = { |
| | | finenessList: this.tableList.tableInfomation, |
| | | ...form |
| | | } |
| | | saveRegister(params).then((res) => { |
| | | if (res.code == 200) { |
| | | this.$message({ |
| | | message: "保存成功!", |
| | | type: "success", |
| | | }); |
| | | } |
| | | }); |
| | | } else { |
| | | console.log('error submit!!'); |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | // 放弃 |
| | | cancelClick() { |
| | |
| | | &:nth-of-type(3n) { |
| | | margin-right: 0; |
| | | } |
| | | .select-width{ |
| | | width:100%; |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | max-height: calc(100% - 90px - 10px); |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .form-box-b { |
| | | width: 100%; |
| | | height: 60px; |
| | | margin-top:10px; |
| | | margin-top: 10px; |
| | | overflow: hidden; |
| | | .form-item-two{ |
| | | width:160px; |
| | | float:left; |
| | | |
| | | .form-item-two { |
| | | width: 160px; |
| | | float: left; |
| | | } |
| | | |
| | | .form-item { |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { getFollowRecordList, getDeleteFollowRecord } from "@/api/productManage/silkRegisterForm.js" |
| | | import { getRegisterList, getDeleteRegister } from "@/api/productManage/silkRegisterForm.js" |
| | | import pageMixin from "@/components/makepager/pager/mixin/pageMixin" |
| | | |
| | | export default { |
| | |
| | | }, |
| | | search_map: {}, |
| | | tableColumn: [ |
| | | { label: "编号", prop: "topic", min: 120, default: true }, // 主题 |
| | | { label: "落丝时间", prop: "client_name", min: 190, }, // 客户名称 |
| | | { label: "车组", prop: "contact_name", min: 100, }, // 联系人姓名 |
| | | { label: "规格", prop: "client_status", min: 100 }, // 客户状态 |
| | | { label: "车间", prop: "contact_information_name", min: 100 }, // 联系方式 |
| | | { label: "庄口", prop: "follow_time", min: 130 }, // 联系人日期 |
| | | { label: "开始回数", prop: "next_follow_time", min: 130 }, // 下次回访日期 |
| | | { label: "结束回数", prop: "member_name", min: 110 }, // 负责人 |
| | | { label: "编号", prop: "number", min: 120, default: true }, // 主题 |
| | | { label: "落丝时间", prop: "finishDate", min: 190, }, // 客户名称 |
| | | { label: "车组", prop: "workshopGroup", min: 100, }, // 联系人姓名 |
| | | { label: "规格", prop: "spec", min: 100 }, // 客户状态 |
| | | { label: "车间", prop: "name", min: 100 }, // 联系方式 |
| | | { label: "庄口", prop: "market", min: 130 }, // 联系人日期 |
| | | { label: "开始回数", prop: "startCircle", min: 130 }, // 下次回访日期 |
| | | { label: "结束回数", prop: "endCircle", min: 110 }, // 负责人 |
| | | ], |
| | | showCol: [ |
| | | "编号", |
| | |
| | | // 请求数据 |
| | | async getData() { |
| | | this.loading = true |
| | | await getFollowRecordList({ |
| | | await getRegisterList({ |
| | | search_map: this.search_map, |
| | | page: this.pagerOptions.currPage, |
| | | pageSize: this.pagerOptions.pageSize |
| | |
| | | type: "warning" |
| | | }) |
| | | .then(() => { |
| | | getDeleteFollowRecord({ ids: [id] }).then((response) => { |
| | | getDeleteRegister({ ids: id }).then((response) => { |
| | | if (response.code === 200) { |
| | | this.$message.success("删除成功") |
| | | this.getData() |
| | |
| | | <template> |
| | | <div class="container"></div> |
| | | <div class="payableSalaryReport-container"> |
| | | <div class="filter-card"> |
| | | <CommonSearch :show-add="false" :amount-view="false" placeholder="请输入关键词" @searchClick="onFilterSearch"> |
| | | <template slot="leftButton"> |
| | | <el-button size="small" type="primary" @click="exportBtnClick">导出</el-button> |
| | | <el-button size="small" type="primary" @click="refreshBtnClick">刷新</el-button> |
| | | </template> |
| | | </CommonSearch> |
| | | </div> |
| | | <div class="body-card"> |
| | | <div class="list-view"> |
| | | <TableCommonView |
| | | ref="tableListRef" |
| | | v-loading="loading" |
| | | :colOpenShow="false" |
| | | :table-list="tableList" |
| | | @selTableCol="selTableCol" |
| | | > |
| | | </TableCommonView> |
| | | </div> |
| | | <!-- <div class="btn-pager"> |
| | | <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" /> |
| | | </div> --> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import pageMixin from "@/components/makepager/pager/mixin/pageMixin" |
| | | export default { |
| | | name: "payableSalaryReport", |
| | | props: {}, |
| | | components: {}, |
| | | mixins: [], |
| | | mixins: [pageMixin], |
| | | computed: {}, |
| | | data() { |
| | | return {} |
| | | return { |
| | | loading: false, |
| | | tableList: {}, |
| | | tableColumn: [ |
| | | { label: "姓名", prop: "name", default: true, fixed: true }, |
| | | { label: "人员id", prop: "member_name" }, |
| | | { label: "手机号", prop: "client_level" }, |
| | | { label: "工种", prop: "next_visit_time" }, |
| | | { label: "生产工资", prop: "detail_address" }, |
| | | { label: "满勤", prop: "client_status" }, |
| | | { label: "超时工资", prop: "contact_name" }, |
| | | { label: "加班工资", prop: "contact_phone" }, |
| | | { label: "交通补贴", prop: "client_level" }, |
| | | { label: "带徒补贴", prop: "next_visit_time" }, |
| | | { label: "岗位补贴", prop: "detail_address" }, |
| | | { label: "社保补贴", prop: "client_status" }, |
| | | { label: "工龄补贴", prop: "contact_name" }, |
| | | { label: "不达保底", prop: "contact_phone" }, |
| | | { label: "质量奖", prop: "contact_phone" }, |
| | | { label: "奖罚1", prop: "client_level" }, |
| | | { label: "奖罚2/清凉补", prop: "next_visit_time", width: "110" }, |
| | | { label: "日常检查/奖罚3", prop: "detail_address", width: "110" }, |
| | | { label: "停机补贴", prop: "client_status" }, |
| | | { label: "应发工资", prop: "contact_name" }, |
| | | { label: "备注", prop: "contact_phone", width: "140" } |
| | | ], |
| | | showCol: [ |
| | | "姓名", |
| | | "人员id", |
| | | "手机号", |
| | | "工种", |
| | | "生产工资", |
| | | "满勤", |
| | | "超时工资", |
| | | "加班工资", |
| | | "交通补贴", |
| | | "带徒补贴", |
| | | "岗位补贴", |
| | | "社保补贴", |
| | | "工龄补贴", |
| | | "不达保底", |
| | | "质量奖", |
| | | "奖罚1", |
| | | "奖罚2/清凉补", |
| | | "日常检查/奖罚3", |
| | | "停机补贴", |
| | | "应发工资", |
| | | "备注" |
| | | ] |
| | | } |
| | | }, |
| | | created() {}, |
| | | methods: {} |
| | | created() { |
| | | this.setTable() |
| | | }, |
| | | methods: { |
| | | setTable() { |
| | | this.tableList = { |
| | | selectIndex: true, |
| | | fixed: true, |
| | | tableInfomation: [{ name: "张三" }, { name: "lisi" }, { name: "王五" }], |
| | | allcol: [], |
| | | showcol: this.showCol, |
| | | tableColumn: this.setColumnVisible(this.showCol) |
| | | } |
| | | this.tableList.allcol = this.tableList.tableColumn.filter((ele) => !ele.default).map((ele) => ele.label) |
| | | this.searchOptions = [] |
| | | for (let i = 0; i < this.tableList.tableColumn.length; i++) { |
| | | const label = this.tableList.tableColumn[i].label |
| | | const value = this.tableList.tableColumn[i].prop |
| | | this.searchOptions.push({ value: value, label: label }) |
| | | } |
| | | }, |
| | | setColumnVisible(showCol) { |
| | | return this.tableColumn.map((ele) => { |
| | | return { |
| | | ...ele, |
| | | isShowColumn: showCol.includes(ele.label) |
| | | } |
| | | }) |
| | | }, |
| | | selTableCol(val) { |
| | | this.showcol = val |
| | | this.tableList.tableColumn = this.setColumnVisible(val) |
| | | }, |
| | | // 搜索 |
| | | onFilterSearch(searchText) { |
| | | console.log(searchText) |
| | | }, |
| | | // 导出 |
| | | exportBtnClick() {}, |
| | | // 刷新 |
| | | refreshBtnClick() {} |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <!-- Add "scoped" attribute to limit CSS to this component only --> |
| | | <style lang="scss" scoped></style> |
| | | <style lang="scss" scoped> |
| | | .payableSalaryReport-container { |
| | | height: 100%; |
| | | .filter-card { |
| | | margin: 20px 30px; |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 0 20px 0 20px; |
| | | border-radius: 12px; |
| | | background-color: #fff; |
| | | } |
| | | .body-card { |
| | | margin: 0 30px; |
| | | background-color: #fff; |
| | | padding: 10px 15px; |
| | | height: calc(100% - 180px); |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div class="container"></div> |
| | | <div class="productionRreport-container"> |
| | | <div class="filter-card"> |
| | | <CommonSearch :show-add="false" :amount-view="false" placeholder="请输入关键词" @searchClick="onFilterSearch"> |
| | | <template slot="leftButton"> |
| | | <el-button size="small" type="primary" @click="exportBtnClick">导出</el-button> |
| | | </template> |
| | | </CommonSearch> |
| | | </div> |
| | | <div class="body-card"> |
| | | <div class="list-view"> |
| | | <TableCommonView ref="tableListRef" v-loading="loading" :table-list="tableList" @selTableCol="selTableCol"> |
| | | </TableCommonView> |
| | | </div> |
| | | <!-- <div class="btn-pager"> |
| | | <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" /> |
| | | </div> --> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import pageMixin from "@/components/makepager/pager/mixin/pageMixin" |
| | | export default { |
| | | name: "productionReport", |
| | | props: {}, |
| | | components: {}, |
| | | mixins: [], |
| | | mixins: [pageMixin], |
| | | computed: {}, |
| | | data() { |
| | | return {} |
| | | return { |
| | | loading: false, |
| | | tableList: {}, |
| | | tableColumn: [ |
| | | { label: "车间", prop: "name", default: true }, |
| | | { label: "机组", prop: "member_name" }, |
| | | { label: "Ⅱ度", prop: "client_level" }, |
| | | { label: "清洁", prop: "next_visit_time" }, |
| | | { label: "洁净", prop: "detail_address" }, |
| | | { label: "最大纤度", prop: "client_status" }, |
| | | { label: "最小纤度", prop: "contact_name" }, |
| | | { label: "平均纤度", prop: "contact_phone" }, |
| | | { label: "公量纤度", prop: "client_level" }, |
| | | { label: "最大偏差", prop: "next_visit_time" }, |
| | | { label: "纤度偏差", prop: "detail_address" }, |
| | | { label: "日产量", prop: "client_status" }, |
| | | { label: "等级", prop: "contact_name" }, |
| | | { label: "综合等级", prop: "contact_phone" } |
| | | ], |
| | | showCol: [ |
| | | "车间", |
| | | "机组", |
| | | "Ⅱ度", |
| | | "清洁", |
| | | "洁净", |
| | | "最大纤度", |
| | | "最小纤度", |
| | | "平均纤度", |
| | | "公量纤度", |
| | | "最大偏差", |
| | | "纤度偏差", |
| | | "日产量", |
| | | "等级", |
| | | "综合等级" |
| | | ] |
| | | } |
| | | }, |
| | | created() {}, |
| | | methods: {} |
| | | created() { |
| | | this.setTable() |
| | | }, |
| | | methods: { |
| | | setTable() { |
| | | this.tableList = { |
| | | selectIndex: true, |
| | | tableInfomation: [], |
| | | allcol: [], |
| | | showcol: this.showCol, |
| | | tableColumn: this.setColumnVisible(this.showCol) |
| | | } |
| | | this.tableList.allcol = this.tableList.tableColumn.filter((ele) => !ele.default).map((ele) => ele.label) |
| | | this.searchOptions = [] |
| | | for (let i = 0; i < this.tableList.tableColumn.length; i++) { |
| | | const label = this.tableList.tableColumn[i].label |
| | | const value = this.tableList.tableColumn[i].prop |
| | | this.searchOptions.push({ value: value, label: label }) |
| | | } |
| | | }, |
| | | setColumnVisible(showCol) { |
| | | return this.tableColumn.map((ele) => { |
| | | return { |
| | | ...ele, |
| | | isShowColumn: showCol.includes(ele.label) |
| | | } |
| | | }) |
| | | }, |
| | | selTableCol(val) { |
| | | this.showcol = val |
| | | this.tableList.tableColumn = this.setColumnVisible(val) |
| | | }, |
| | | // 搜索 |
| | | onFilterSearch(searchText) { |
| | | console.log(searchText) |
| | | }, |
| | | // 导出 |
| | | exportBtnClick() {} |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <!-- Add "scoped" attribute to limit CSS to this component only --> |
| | | <style lang="scss" scoped></style> |
| | | <style lang="scss" scoped> |
| | | .productionRreport-container { |
| | | height: 100%; |
| | | .filter-card { |
| | | margin: 20px 30px; |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 0 20px 0 20px; |
| | | border-radius: 12px; |
| | | background-color: #fff; |
| | | } |
| | | .body-card { |
| | | margin: 0 30px; |
| | | background-color: #fff; |
| | | padding: 10px 15px; |
| | | height: calc(100% - 180px); |
| | | } |
| | | } |
| | | </style> |
| | |
| | | :disabled="!isOperate" |
| | | @change=" |
| | | (val) => { |
| | | commonInputChange(val, item.prop, scope.row, scope) |
| | | commonInputChange(val, item.prop, scope) |
| | | } |
| | | " |
| | | ></el-input> |
| | |
| | | v-for="(item, index) in projectOptions" |
| | | :key="index" |
| | | :label="item.value" |
| | | :value="item.value" |
| | | :value="item.id" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | |
| | | " |
| | | ></el-input-number> |
| | | </el-form-item> |
| | | <div v-else-if="item.isCallMethod"> |
| | | <span :class="item.isClass ? item.getClassName(scope.row[item.prop], scope.row) : ''">{{ |
| | | item.getCallMethod(scope.row[item.prop], scope.row) |
| | | }}</span> |
| | | </div> |
| | | <span v-else style="text-align: right">{{ scope.row[item.prop] }}</span> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | |
| | | <script> |
| | | // import { getProductList } from "@/api/common/other" |
| | | import { getDataByType } from "@/api/data" |
| | | export default { |
| | | name: "CommmonFormTableView", |
| | | components: {}, |
| | |
| | | productList: [], |
| | | tableList: [], |
| | | projectIndex: 0, |
| | | projectOptions: [ |
| | | { id: 1, value: "纤度偏差" }, |
| | | { id: 2, value: "二次变化" }, |
| | | { id: 3, value: "清洁分" }, |
| | | { id: 4, value: "洁净分" }, |
| | | { id: 5, value: "最大偏差" } |
| | | ] |
| | | projectOptions: getDataByType("projectOptions") |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | this.$emit("addProjectClick") |
| | | } |
| | | }, |
| | | commonInputChange(val, prop, row, scope) { |
| | | this.$emit("inputContent", val, prop, row, scope) |
| | | commonInputChange(val, prop, scope) { |
| | | this.$emit("inputContent", val, prop, scope) |
| | | }, |
| | | // 删除 |
| | | deleteClick(scope) { |
| | |
| | | // 添加列头部标题输入 |
| | | addColumnInputChange(val, prop) { |
| | | console.log(val, prop, "添加列头部标题输入") |
| | | this.$emit("addColumnInputChange", val, prop) |
| | | }, |
| | | // 删除列 |
| | | clearupColumn(prop) { |
| | |
| | | <template slot="leftButton"> |
| | | <el-button size="small" type="primary" @click="addBtnClick">新增</el-button> |
| | | <el-button size="small" type="primary" @click="refreshClick">刷新</el-button> |
| | | <el-button size="small" type="primary" @click="printClick">打印</el-button> |
| | | <el-button size="small" type="primary" @click="printClick" disabled>打印</el-button> |
| | | </template> |
| | | </CommonSearch> |
| | | </div> |
| | |
| | | @addProjectClick="addBtnClick" |
| | | @clearupProject="clearupProject" |
| | | @deleteClick="clearupProject" |
| | | @addColumnInputChange="addColumnInputChange" |
| | | > |
| | | </SilkTableList> |
| | | </div> |
| | |
| | | |
| | | <script> |
| | | import SilkTableList from "@/views/systemSetting/silkStandardSetting/components/silkTableList" |
| | | import { getRankStandard, saveRankStandard } from "@/api/systemSetting/silkStandardSetting" |
| | | import { getDataByType } from "@/api/data" |
| | | export default { |
| | | name: "silkStandardSetting", |
| | | props: {}, |
| | |
| | | return { |
| | | isEdit: false, |
| | | silkTableList: {}, |
| | | tableData: [] |
| | | tableData: [], |
| | | defaultColumn: [ |
| | | { |
| | | label: "检查项目名称", |
| | | prop: "checkItem", |
| | | projectName: true, |
| | | isCallMethod: true, |
| | | getCallMethod: this.getCheckItemName |
| | | }, |
| | | { label: "开始纤度", prop: "startFineness", inputFloat: true }, |
| | | { label: "结束纤度", prop: "endFineness", inputFloat: true }, |
| | | { label: "野纤", prop: "rankA", inputFloat: true }, |
| | | { label: "大野", prop: "rankB", inputFloat: true }, |
| | | { label: "特野", prop: "rankC", inputFloat: true } |
| | | ], |
| | | tableColumn: [], |
| | | columnNum: 0, |
| | | dataObj: { |
| | | checkItem: 1, |
| | | startFineness: 0, |
| | | endFineness: 0, |
| | | rankA: 0, |
| | | rankB: 0, |
| | | rankC: 0 |
| | | }, |
| | | projectOptions: getDataByType("projectOptions"), |
| | | rankObj: {}, |
| | | columnInputList: [], |
| | | dynamicsRanks: [] |
| | | } |
| | | }, |
| | | created() { |
| | | this.setTableForm() |
| | | this.getData() |
| | | }, |
| | | methods: { |
| | | // 获取数据 |
| | | getData() { |
| | | getRankStandard().then((res) => { |
| | | console.log(res) |
| | | if (res.code === 200) { |
| | | if (res.data.length > 0) { |
| | | this.tableData = [] |
| | | this.tableColumn = this.defaultColumn |
| | | this.columnDataProcess(res.data[0].dynamicsRanks) |
| | | this.rankObj = {} |
| | | this.allDataProcess(res.data) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | // 整体数据处理 |
| | | allDataProcess(dataList) { |
| | | let rankList = dataList.map((ite) => { |
| | | for (let i = 0; i < ite.dynamicsRanks.length; i++) { |
| | | this.$set(this.rankObj, ite.dynamicsRanks[i].rankProp, ite.dynamicsRanks[i].rankValue) |
| | | this.$set(this.dataObj, ite.dynamicsRanks[i].rankProp, 0) |
| | | } |
| | | return { |
| | | ...ite, |
| | | ...this.rankObj |
| | | } |
| | | }) |
| | | this.tableData = rankList || [] |
| | | this.silkTableList.tableData = this.tableData |
| | | }, |
| | | // 列信息数据处理 |
| | | columnDataProcess(data) { |
| | | this.columnInputList = data.map((ite) => { |
| | | return { ...ite } |
| | | }) |
| | | let list = data.map((item) => { |
| | | return { |
| | | label: item.rankName, |
| | | prop: item.rankProp, |
| | | inputFloat: true |
| | | } |
| | | }) |
| | | this.columnNum = list.length + 1 |
| | | for (let j = 0; j < list.length; j++) { |
| | | this.tableColumn.splice(2, 0, list[j]) |
| | | } |
| | | console.log(this.tableColumn) |
| | | this.silkTableList.tableColumn = this.tableColumn |
| | | }, |
| | | setTableForm() { |
| | | this.silkTableList = { |
| | | tableData: this.tableData, |
| | |
| | | }) |
| | | }, |
| | | // 刷新 |
| | | refreshClick() {}, |
| | | refreshClick() { |
| | | this.getData() |
| | | }, |
| | | // 打印 |
| | | printClick() {}, |
| | | // 列表输入回调 |
| | | inputContent(val, prop, row) { |
| | | console.log(val, prop, row) |
| | | inputContent(val, prop, scope) { |
| | | console.log(val, prop, scope) |
| | | let list = this.tableData.map((item, index) => { |
| | | let dynamicsRanks = this.columnInputList.map((ite) => { |
| | | if (ite.rankProp == prop) { |
| | | ite.rankValue = val |
| | | } |
| | | return { |
| | | ...ite |
| | | } |
| | | }) |
| | | if (index === scope.$index) { |
| | | item[prop] = val |
| | | item.dynamicsRanks = dynamicsRanks |
| | | } |
| | | return { |
| | | ...item |
| | | } |
| | | }) |
| | | console.log(list) |
| | | this.tableData = list |
| | | }, |
| | | // 删除 |
| | | clearupProject(data, index) { |
| | |
| | | // 保存编辑按钮切换 |
| | | editSaveClick() { |
| | | this.isEdit = !this.isEdit |
| | | if (!this.isEdit) { |
| | | let params = this.saveParam() |
| | | saveRankStandard({ |
| | | rankStandard: params |
| | | }).then((res) => { |
| | | console.log(res) |
| | | if (res.code == 200) { |
| | | this.$message.success("保存成功") |
| | | this.getData() |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | saveParam() { |
| | | let saveList = this.tableData.map((item) => { |
| | | return { |
| | | checkItem: item.checkItem, |
| | | dynamicsRanks: item.dynamicsRanks, |
| | | endFineness: item.endFineness, |
| | | lineId: item.lineId || "", |
| | | rankA: item.rankA, |
| | | rankB: item.rankB, |
| | | rankC: item.rankC, |
| | | startFineness: item.startFineness |
| | | } |
| | | }) |
| | | return saveList |
| | | }, |
| | | // 添加列 |
| | | addColumnClick() { |
| | | let propStr = "prop" + this.columnNum |
| | | this.tableColumn.splice(2, 0, { label: "", prop: propStr, inputFloat: true, addColumn: true }) |
| | | this.$set(this.dataObj, propStr, 0) |
| | | this.$set(this.rankObj, propStr, 0) |
| | | console.log(this.columnInputList) |
| | | this.columnInputList.push({ rankProp: propStr, rankName: "", rankValue: 0 }) |
| | | console.log(this.tableColumn, this.dataObj, "32323", this.columnInputList) |
| | | this.silkTableList.tableColumn = this.tableColumn |
| | | this.columnNum += 1 |
| | | let allList = this.tableData.map((item) => { |
| | | return { |
| | | ...item, |
| | | [propStr]: 0 |
| | | } |
| | | }) |
| | | this.tableData = allList |
| | | this.silkTableList.tableData = allList |
| | | }, |
| | | // 删除列 |
| | | clearupColumn(prop) { |
| | | let currentIndex = 0 |
| | | this.tableColumn.map((item, index) => { |
| | | if (item.prop == prop) { |
| | | currentIndex = index |
| | | } |
| | | }) |
| | | this.tableColumn.splice(currentIndex, 1) |
| | | this.silkTableList.tableColumn = this.tableColumn |
| | | this.$delete(this.dataObj, prop) |
| | | }, |
| | | // 列表头输入回调 |
| | | addColumnInputChange(val, prop) { |
| | | console.log(val, prop, this.columnInputList) |
| | | this.columnInputList.forEach((item) => { |
| | | if (item.rankProp == prop) { |
| | | item.rankName = val |
| | | } |
| | | }) |
| | | console.log(this.columnInputList, "888") |
| | | }, |
| | | getCheckItemName(val) { |
| | | if (val) { |
| | | for (let i in this.projectOptions) { |
| | | if (this.projectOptions[i].id == val) { |
| | | return this.projectOptions[i].value |
| | | } |
| | | } |
| | | } else { |
| | | return "--" |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | devServer: { |
| | | proxy: { |
| | | "/api": { |
| | | |
| | | // target: "http://192.168.20.118:8889", // http://192.168.20.119:8002 http://fai365.com:30150/ |
| | | // target: "http://192.168.20.120:8004", |
| | | target: "http://192.168.20.119:8004", // http://192.168.20.119:8004 http://fai365.com:30150/ |
| | | // target: "http://192.168.20.120:8008", |
| | | // target: "http://192.168.20.120:8004", |
| | | target: "http://192.168.20.119:8008", // http://192.168.20.119:8004 http://fai365.com:30150/ |
| | | |
| | | ws: true, |
| | | changeOrigin: true |