| | |
| | | size="mini" |
| | | v-hasPermi="['system:contract:add']" |
| | | @click="handleImport" |
| | | >新增</el-button |
| | | >新增 |
| | | </el-button |
| | | > |
| | | </el-col> |
| | | </el-row> |
| | |
| | | <div style="padding: 14px"> |
| | | <span>{{ item.name }}</span> |
| | | <span class="time" style="margin-left: 10px">{{ |
| | | item.unitName |
| | | }}</span> |
| | | item.unitName |
| | | }}</span> |
| | | <div class="bottom clearfix"> |
| | | <time class="time" |
| | | >{{ item.startTime }} — {{ item.endTime }}</time |
| | | >{{ item.startTime }} — {{ item.endTime }} |
| | | </time |
| | | > |
| | | <el-button type="text" class="button" @click="handleDetail(item)" |
| | | >查看详情</el-button |
| | | >查看详情 |
| | | </el-button |
| | | > |
| | | </div> |
| | | </div> |
| | |
| | | <el-empty v-else description="暂无数据"></el-empty> |
| | | |
| | | <!-- 合同详情 --> |
| | | <el-dialog |
| | | :title="detailName" |
| | | :visible.sync="detail" |
| | | width="800px" |
| | | append-to-body |
| | | > |
| | | <el-form label-position="left" inline class="table-expand"> |
| | | <el-collapse v-model="activeNames"> |
| | | <el-collapse-item |
| | | v-for="(name, index) in ruleName" |
| | | :key="index" |
| | | :title="name" |
| | | > |
| | | <div |
| | | class="inline-input-container" |
| | | v-for="(item, index) in ruleData" |
| | | :key="index" |
| | | <!-- <el-dialog--> |
| | | <!-- :title="detailName"--> |
| | | <!-- :visible.sync="detail"--> |
| | | <!-- width="800px"--> |
| | | <!-- append-to-body--> |
| | | <!-- >--> |
| | | |
| | | <el-drawer |
| | | title="合同详情" |
| | | :visible.sync="drawer" |
| | | :direction="direction" |
| | | :before-close="handleClose" |
| | | size="40%"> |
| | | <div style="margin-left: 20px;"> |
| | | <el-form :inline = "true" :model="form" class="table-expand" > |
| | | <el-form-item label="合同名称" prop="name" > |
| | | <el-input v-model="form.name" style="width: 600px;"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="公司名称" prop="unitId"> |
| | | <el-select v-model="form.unitId" placeholder="请选择"> |
| | | <el-option |
| | | v-for="item in unitList" |
| | | :key="item.id" |
| | | :label="item.value" |
| | | :value="item.id" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="合同时间" prop="timezone"> |
| | | <el-date-picker |
| | | v-model="form.timezone" |
| | | type="daterange" |
| | | value-format="yyyy-MM-dd" |
| | | range-separator="至" |
| | | start-placeholder="开始时间" |
| | | end-placeholder="结束时间" |
| | | > |
| | | <el-tooltip :content=" |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-divider content-position="left">合同规则</el-divider> |
| | | <el-collapse v-model="activeNames"> |
| | | <el-collapse-item |
| | | v-for="(name, index) in ruleName" |
| | | :key="index" |
| | | :title="name" |
| | | > |
| | | <div |
| | | class="inline-input-container" |
| | | v-for="(item, index) in ruleData" |
| | | :key="index" |
| | | > |
| | | <el-tooltip :content=" |
| | | item.deductCategory == '分数乘以数量' |
| | | ? '扣' + item.calcFraction + '分*数量 ' |
| | | : item.deductCategory == '除以数量后乘以分数' |
| | | ? '扣' + item.calcFraction + '分/' + item.calcUnit + '小时' |
| | | : '扣' + item.calcFraction + '分'"> |
| | | <b v-if="item.ruleName === name">{{ item.ruleCondition }}<br /></b> |
| | | </el-tooltip> |
| | | </div> |
| | | </el-collapse-item> |
| | | <el-collapse-item title="考核结果应用规则" :name="ruleData.length"> |
| | | <div class="inline-input-container"> |
| | | <b v-if="item.ruleName === name">{{ item.ruleCondition }}<br/></b> |
| | | </el-tooltip> |
| | | </div> |
| | | </el-collapse-item> |
| | | <el-collapse-item title="考核结果应用规则" :name="ruleData.length"> |
| | | <div class="inline-input-container"> |
| | | <span v-for="(item, index) in moneyRules" :key="index"> |
| | | <div> |
| | | <span>{{ item.scoreCondition }}</span> |
| | |
| | | placement="top" |
| | | > |
| | | <span style="margin-left: 20px">{{ |
| | | item.description |
| | | }}</span> |
| | | item.description |
| | | }}</span> |
| | | </el-tooltip> |
| | | </div> |
| | | </span> |
| | | <el-empty v-if="moneyRules.length == 0" :image-size="100" /> |
| | | </div> |
| | | </el-collapse-item> |
| | | <el-form-item label="合同附件" prop="attachment" class="top"> |
| | | <file-upload v-model="form.attachment" /> |
| | | </el-form-item> |
| | | <el-link |
| | | class="top" |
| | | v-for="item in contractInfo.attachment != null |
| | | <el-empty v-if="moneyRules.length == 0" :image-size="100"/> |
| | | </div> |
| | | </el-collapse-item> |
| | | <el-form-item label="合同附件" prop="attachment" class="top"> |
| | | <file-upload v-model="form.attachment"/> |
| | | </el-form-item> |
| | | <el-link |
| | | class="top" |
| | | v-for="item in contractInfo.attachment != null |
| | | ? contractInfo.attachment.split(',') |
| | | : contractInfo.attachment" |
| | | :underline="false" |
| | | :key="item" |
| | | @click="handleDownload(item)" |
| | | >{{ item.substring(item.lastIndexOf("/") + 1) }}</el-link |
| | | > |
| | | <div style="text-align: right; margin-top: 10px"> |
| | | <el-button type="primary" @click="submitForm">提交</el-button> |
| | | </div> |
| | | </el-collapse> |
| | | </el-form> |
| | | </el-dialog> |
| | | :underline="false" |
| | | :key="item" |
| | | @click="handleDownload(item)" |
| | | >{{ item.substring(item.lastIndexOf("/") + 1) }} |
| | | </el-link |
| | | > |
| | | <div style="text-align: right; margin-top: 10px"> |
| | | <el-button type="primary" @click="submitForm">提交</el-button> |
| | | </div> |
| | | </el-collapse> |
| | | </el-form> |
| | | </div> |
| | | </el-drawer> |
| | | |
| | | <!-- 合同导入对话框 --> |
| | | <el-dialog |
| | |
| | | <div class="row-left"> |
| | | <div class="block"> |
| | | <el-form-item label="合同名称" prop="name"> |
| | | <el-input v-model="upload.name" /> |
| | | <el-input v-model="upload.name"/> |
| | | </el-form-item> |
| | | <el-form-item label="公司名称" prop="unitId"> |
| | | <el-select v-model="upload.unitId" placeholder="请选择"> |
| | |
| | | :underline="false" |
| | | style="font-size: 12px; vertical-align: baseline" |
| | | @click="importTemplate" |
| | | >下载模板</el-link |
| | | >下载模板 |
| | | </el-link |
| | | > |
| | | </div> |
| | | </el-upload> |
| | |
| | | getContract, |
| | | updateContract, |
| | | } from "@/api/platform/contract"; |
| | | import { getRuleListByContractId } from "../../../../api/platform/calculate-rule"; |
| | | import { getMoneyRulesByContractId } from "../../../../api/platform/calculate-money-rule"; |
| | | import { unitSelect } from "../../../../api/platform/unit"; |
| | | import { deptSelect } from "../../../../api/system/dept"; |
| | | import { getToken } from "@/utils/auth"; |
| | | import { ImagePreview } from "@/components/ImagePreview"; |
| | | import {getRuleListByContractId} from "../../../../api/platform/calculate-rule"; |
| | | import {getMoneyRulesByContractId} from "../../../../api/platform/calculate-money-rule"; |
| | | import {unitSelect} from "../../../../api/platform/unit"; |
| | | import {deptSelect} from "../../../../api/system/dept"; |
| | | import {getToken} from "@/utils/auth"; |
| | | import {ImagePreview} from "@/components/ImagePreview"; |
| | | |
| | | export default { |
| | | name: "Contract", |
| | | comments: { ImagePreview }, |
| | | comments: {ImagePreview}, |
| | | data() { |
| | | return { |
| | | queryParams: { |
| | | name: '', |
| | | status: '' |
| | | }, |
| | | drawer: false, |
| | | direction: 'rtl', |
| | | loading: false, |
| | | contractInfo: {}, |
| | | // 合同导入参数 |
| | |
| | | // 是否禁用上传 |
| | | isUploading: false, |
| | | // 设置上传的请求头部 |
| | | headers: { Authorization: "Bearer " + getToken() }, |
| | | headers: {Authorization: "Bearer " + getToken()}, |
| | | // 上传的地址 |
| | | url: process.env.VUE_APP_BASE_API + "/system/contract/importData", |
| | | ruleList: [], |
| | |
| | | ruleName: [], |
| | | moneyRules: [], |
| | | // 表单参数 |
| | | form: {}, |
| | | form: { |
| | | timezone: [] |
| | | }, |
| | | // 表单校验 |
| | | rules: { |
| | | name: [ |
| | | { required: true, message: "合同名称不能为空", trigger: "blur" }, |
| | | {required: true, message: "合同名称不能为空", trigger: "blur"}, |
| | | ], |
| | | unitId: [ |
| | | { required: true, message: "运维单位不能为空", trigger: "change" }, |
| | | {required: true, message: "运维单位不能为空", trigger: "change"}, |
| | | ], |
| | | timezone: [ |
| | | { |
| | |
| | | this.selectDept(); |
| | | }, |
| | | methods: { |
| | | handleClose(done) { |
| | | this.$confirm('确认关闭?') |
| | | .then(_ => { |
| | | done(); |
| | | }) |
| | | .catch(_ => { |
| | | }); |
| | | }, |
| | | addRule() { |
| | | this.upload.ruleList.push({ |
| | | scoreCondition: "", |
| | |
| | | this.upload.ruleList.splice(index, 1); |
| | | }, |
| | | submitForm() { |
| | | this.form.startTime = this.form.timezone[0] |
| | | this.form.endTime = this.form.timezone[1] |
| | | updateContract(this.form).then((response) => { |
| | | this.detail = false; |
| | | if (response.code != 200) { |
| | | this.$message.error("操作失败"); |
| | | } else { |
| | | this.drawer = false |
| | | this.getList() |
| | | this.$message.success("操作成功"); |
| | | } |
| | | }); |
| | |
| | | }, |
| | | /** 详情按钮操作 */ |
| | | handleDetail(item) { |
| | | this.detail = true; |
| | | this.form = { |
| | | } |
| | | this.form.name = item.name |
| | | this.form.unitId = item.unitId |
| | | this.form.startTime = item.startTime |
| | | this.form.endTime = item.endTime |
| | | this.$set(this.form, 'timezone', [item.startTime, item.endTime]) |
| | | // 这样有bug改成上面的方式 |
| | | // this.form.timezone = [item.startTime,item.endTime] |
| | | this.drawer = true; |
| | | this.detailName = item.name; |
| | | this.getRuleList(item); |
| | | }, |
| | |
| | | } |
| | | |
| | | .table-expand { |
| | | width: 100%; |
| | | width: 95%; |
| | | color: #99a9bf; |
| | | } |
| | | |
| | |
| | | .margin-5 { |
| | | margin-left: 5px; |
| | | } |
| | | |
| | | .row-warp { |
| | | display: flex; |
| | | flex-direction: column; |
| | | } |
| | | |
| | | .row { |
| | | display: flex; |
| | | flex-direction: row; |
| | |
| | | justify-content: center; |
| | | margin: 5px 0; |
| | | } |
| | | |
| | | .row-left { |
| | | flex: 1; |
| | | display: flex; |
| | | flex-direction: row; |
| | | } |
| | | |
| | | .row-right { |
| | | flex: 1; |
| | | display: flex; |
| | |
| | | .el-cascader-node { |
| | | max-width: 300px; |
| | | } |
| | | |
| | | .el-divider--horizontal { |
| | | margin-top: 50px; |
| | | margin-bottom: 50px; |