| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <GlobalWindow |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | :confirm-working="isWorking" |
| | | @confirm="confirm" |
| | | > |
| | | <el-form :model="form" ref="form" :rules="rules"> |
| | | <el-form-item label="计价æ¹å¼" prop="type"> |
| | | <el-select v-model="form.type" placeholder="è¯·éæ©è®¡ä»·æ¹å¼" clearable> |
| | | <el-option |
| | | v-for="item in type" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="å·¥å" prop="departId"> |
| | | <el-select v-model="form.departId" placeholder="è¯·éæ©å·¥å" :disabled="isEdit" clearable @change="selectFactoey"> |
| | | <el-option |
| | | v-for="item in factories" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="ç©æ" prop="materialId"> |
| | | <el-select v-model="form.materialId" placeholder="è¯·éæ©ç©æ" :disabled="isEdit" clearable @change="selectMaterial"> |
| | | <el-option |
| | | v-for="item in materials" |
| | | :key="item.realMaterialId" |
| | | :label="item.mmodel.name" |
| | | :value="item.realMaterialId" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="å·¥åº" prop="procedureId"> |
| | | <el-select v-model="form.procedureId" placeholder="è¯·éæ©å·¥åº" :disabled="isEdit" clearable> |
| | | <el-option |
| | | v-for="item in productes" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="å·¥èµåä»·ï¼å
)" prop="salary"> |
| | | <el-input v-model="form.salary" placeholder="请è¾å
¥å·¥èµåä»·ï¼å
)" @input="inputZAction(form, 'salary')" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="æ åæç" prop="num"> |
| | | <div style="display: flex;"> |
| | | <el-input v-model="form.num" v-trim/>/ |
| | | <el-input v-model="form.hours" v-trim/><div class="unit">å°æ¶</div> |
| | | <el-input v-model="form.minute" v-trim/><div class="unit">åé</div> |
| | | <el-input v-model="form.second" v-trim/><div>ç§</div> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="ä¸è¯åæ¯å¦è®¡å
¥" prop="unqualified"> |
| | | <el-switch v-model="form.unqualified" :inactive-value="0" :active-value="1"></el-switch> |
| | | <!-- <el-input v-model="form.unqualified" placeholder="请è¾å
¥ä¸è¯åæ¯å¦è®¡å
¥ 0å¦ 1æ¯" v-trim/> --> |
| | | </el-form-item> |
| | | |
| | | </el-form> |
| | | </GlobalWindow> |
| | | </template> |
| | | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import { getDepartmentListByConditon } from '@/api/ext/departmentExt' |
| | | import { getBomMaterialList } from '@/api/ext/bomExt' |
| | | import { routeExt as proceList } from '@/api/ext/routeProcedureExt' |
| | | import { numRule } from '@/utils/form' |
| | | export default { |
| | | name: 'OperaSalaryParamWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow }, |
| | | data () { |
| | | return { |
| | | // è¡¨åæ°æ® |
| | | form: { |
| | | id: null, |
| | | materialId: '', |
| | | createUser: '', |
| | | createTime: '', |
| | | updateUser: '', |
| | | updateTime: '', |
| | | remark: '', |
| | | rootDepartId: '', |
| | | departId: '', |
| | | procedureId: '', |
| | | bomId: '', |
| | | salary: '', |
| | | num: '', |
| | | times: '', |
| | | hours: '', |
| | | minute: '', |
| | | second: '', |
| | | unqualified: 0, |
| | | type: '' |
| | | }, |
| | | isEdit: false, |
| | | type: [ |
| | | { label: '计件', value: 0 }, |
| | | { label: '计æ¶', value: 1 }, |
| | | ], |
| | | factories: [], |
| | | materials: [], |
| | | productes: [], |
| | | // éªè¯è§å |
| | | rules: { |
| | | departId: [ |
| | | { required: true, validator: numRule, message: 'è¯·éæ©å·¥å', tigger: 'change' } |
| | | ], |
| | | materialId: [ |
| | | { required: true, validator: numRule, message: 'è¯·éæ©ç©æ', tigger: 'change' } |
| | | ], |
| | | procedureId: [ |
| | | { required: true, validator: numRule, message: 'è¯·éæ©å·¥åº', tigger: 'change' } |
| | | ], |
| | | salary: [ |
| | | { required: true, validator: numRule, message: '请è¾å
¥å·¥èµåä»·', tigger: 'blur' } |
| | | ], |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | api: '/business/salaryParam', |
| | | 'field.id': 'id' |
| | | }) |
| | | this.initData() |
| | | }, |
| | | methods: { |
| | | open (title, target) { |
| | | this.title = title |
| | | this.visible = true |
| | | this.isEdit = false |
| | | // æ°å»º |
| | | if (target == null) { |
| | | this.$nextTick(() => { |
| | | this.$refs.form.resetFields() |
| | | this.form[this.configData['field.id']] = null |
| | | this.form.times = '' |
| | | this.form.second = '' |
| | | this.form.minute = '' |
| | | this.form.hours = '' |
| | | this.form.departId = this.factories[0]?this.factories[0].id:'' |
| | | this.selectFactoey(this.form.departId) |
| | | }) |
| | | return |
| | | } |
| | | // ç¼è¾ |
| | | this.$nextTick(() => { |
| | | this.isEdit = true |
| | | for (const key in this.form) { |
| | | this.form[key] = target[key] |
| | | } |
| | | let { times } = target |
| | | this.form.second = +times%60 |
| | | let lesMin = Math.floor(+times/60) |
| | | this.form.minute = lesMin%60 |
| | | this.form.hours = Math.floor(lesMin/60) |
| | | this.selectFactoey(this.form.departId, true) |
| | | |
| | | }) |
| | | }, |
| | | initData() { |
| | | getDepartmentListByConditon({ type: 1 }) |
| | | .then(res => { |
| | | this.factories = res |
| | | }) |
| | | .catch(err => { |
| | | console.log(err) |
| | | }) |
| | | }, |
| | | selectFactoey (v, isEdit=false) { |
| | | |
| | | // console.log(v) |
| | | if (!isEdit) { |
| | | this.materials = [] |
| | | this.form.materialId = '' |
| | | this.form.procedureId = '' |
| | | this.productes = [] |
| | | } |
| | | getBomMaterialList({ departId: v }) |
| | | .then(res => { |
| | | // console.log(res) |
| | | this.materials = res |
| | | // if (!isEdit) { |
| | | // this.form.materialId = res[0]?res[0].materialId:'' |
| | | // } |
| | | // this.selectMaterial(this.form.materialId) |
| | | }) |
| | | .catch(err => { |
| | | console.log(err) |
| | | }) |
| | | }, |
| | | selectMaterial (id, isEdit) { |
| | | |
| | | let routeId; |
| | | for (const item of this.materials) { |
| | | if (item.realMaterialId === id) { |
| | | routeId = item.routeId |
| | | } |
| | | } |
| | | proceList(routeId) |
| | | .then(res => { |
| | | // console.log(res) |
| | | this.productes = res.proceList |
| | | if (!isEdit) { |
| | | // debugger |
| | | this.form.procedureId = this.productes[0]?this.productes[0].id:'' |
| | | } |
| | | }).catch(err => { |
| | | console.log(err) |
| | | }) |
| | | }, |
| | | // 2使æéå®ï¼æ£ï¼ |
| | | inputZAction(item, key) { |
| | | item[key] = item[key].replace(/[^\d.]/g, '') |
| | | .replace(/\.{2,}/g, '.') |
| | | .replace('.', '$#$') |
| | | .replace(/\./g, '') |
| | | .replace('$#$', '.') |
| | | .replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3') |
| | | .replace(/^\./g, '') |
| | | }, |
| | | confirm () { |
| | | // console.log((+this.form.hours) * 3600); |
| | | // console.log((+this.form.minute) * 60); |
| | | // console.log(this.form.second); |
| | | this.form.times = (+this.form.hours) * 3600 + (+this.form.minute)* 60 + (+this.form.second) |
| | | if (this.form.id == null || this.form.id === '') { |
| | | this.__confirmCreate() |
| | | return |
| | | } |
| | | this.__confirmEdit() |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | .unit { |
| | | white-space: nowrap; |
| | | } |
| | | </style> |