|
@@ -189,151 +189,168 @@
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
<script>
|
|
|
-import PersonSelect from '@/components/CommomSelect/person-select.vue';
|
|
|
|
|
-import moment from 'moment';
|
|
|
|
|
|
|
+ import PersonSelect from '@/components/CommomSelect/person-select.vue';
|
|
|
|
|
+ import moment from 'moment';
|
|
|
|
|
|
|
|
-export default {
|
|
|
|
|
- name: 'base-form',
|
|
|
|
|
- components: { PersonSelect },
|
|
|
|
|
- props: {
|
|
|
|
|
- dialogType: {
|
|
|
|
|
- type: String,
|
|
|
|
|
- default: ''
|
|
|
|
|
- },
|
|
|
|
|
- dialogForm: {
|
|
|
|
|
- type: Object,
|
|
|
|
|
- default: () => {
|
|
|
|
|
- return {};
|
|
|
|
|
|
|
+ export default {
|
|
|
|
|
+ name: 'base-form',
|
|
|
|
|
+ components: { PersonSelect },
|
|
|
|
|
+ props: {
|
|
|
|
|
+ dialogType: {
|
|
|
|
|
+ type: String,
|
|
|
|
|
+ default: ''
|
|
|
|
|
+ },
|
|
|
|
|
+ dialogForm: {
|
|
|
|
|
+ type: Object,
|
|
|
|
|
+ default: () => {
|
|
|
|
|
+ return {};
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ deptList: {
|
|
|
|
|
+ type: Array,
|
|
|
|
|
+ default() {
|
|
|
|
|
+ return [];
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ userList: {
|
|
|
|
|
+ type: Array,
|
|
|
|
|
+ default() {
|
|
|
|
|
+ return [];
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ deptTreeList: {
|
|
|
|
|
+ type: Array,
|
|
|
|
|
+ default() {
|
|
|
|
|
+ return [];
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
- deptList: {
|
|
|
|
|
- type: Array,
|
|
|
|
|
- default() {
|
|
|
|
|
- return [];
|
|
|
|
|
|
|
+ watch: {
|
|
|
|
|
+ dialogForm: {
|
|
|
|
|
+ handler(val) {
|
|
|
|
|
+ for (const key in this.form) {
|
|
|
|
|
+ if (key == 'relationType') {
|
|
|
|
|
+ this.form[key] = this.dialogForm[key];
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.form[key] = this.dialogForm[key] || this.form[key];
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ deep: true
|
|
|
|
|
+ },
|
|
|
|
|
+ userList: {
|
|
|
|
|
+ handler(newList, oldList) {
|
|
|
|
|
+ if (this.dialogType === 'edit') {
|
|
|
|
|
+ if (this.isFirstEdit) {
|
|
|
|
|
+ // 首次进入修改操作,不做清空处理
|
|
|
|
|
+ this.isFirstEdit = false;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 非首次进入修改操作,正常清空
|
|
|
|
|
+ this.form.responsibleUserIds = [];
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 非修改操作,正常清空
|
|
|
|
|
+ this.form.responsibleUserIds = [];
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ deep: true
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
- userList: {
|
|
|
|
|
- type: Array,
|
|
|
|
|
- default() {
|
|
|
|
|
- return [];
|
|
|
|
|
|
|
+ computed: {
|
|
|
|
|
+ getCrcle() {
|
|
|
|
|
+ let result = '';
|
|
|
|
|
+ if (this.form['planEndDate'] && this.form['planStartDate']) {
|
|
|
|
|
+ const a = moment(this.form.planEndDate);
|
|
|
|
|
+ const b = moment(this.form.planStartDate);
|
|
|
|
|
+ result = a.diff(b, 'days') + 1 + ' 天'; // 1
|
|
|
|
|
+ this.form.budget = result;
|
|
|
|
|
+ return result;
|
|
|
|
|
+ }
|
|
|
|
|
+ return result;
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
- deptTreeList: {
|
|
|
|
|
- type: Array,
|
|
|
|
|
- default() {
|
|
|
|
|
- return [];
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- watch: {
|
|
|
|
|
- dialogForm: {
|
|
|
|
|
- handler(val) {
|
|
|
|
|
- for (const key in this.form) {
|
|
|
|
|
- if (key == 'relationType') {
|
|
|
|
|
- this.form[key] = this.dialogForm[key];
|
|
|
|
|
- } else {
|
|
|
|
|
- this.form[key] = this.dialogForm[key] || this.form[key];
|
|
|
|
|
|
|
+ data() {
|
|
|
|
|
+ return {
|
|
|
|
|
+ isFirstEdit: true,
|
|
|
|
|
+ form: {
|
|
|
|
|
+ beforeTaskId: '',
|
|
|
|
|
+ code: '',
|
|
|
|
|
+ budget: '',
|
|
|
|
|
+ responsibleUserIds: [],
|
|
|
|
|
+ remark: '',
|
|
|
|
|
+ milepost: '0',
|
|
|
|
|
+ planStartDate: '',
|
|
|
|
|
+ planEndDate: '',
|
|
|
|
|
+ proportion: '',
|
|
|
|
|
+ cost: '',
|
|
|
|
|
+ type: '',
|
|
|
|
|
+ name: '',
|
|
|
|
|
+ responsibleDeptId: '',
|
|
|
|
|
+ taskFilesList: []
|
|
|
|
|
+ },
|
|
|
|
|
+ rules: {
|
|
|
|
|
+ type: {
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ message: '请选择任务类型',
|
|
|
|
|
+ trigger: 'change'
|
|
|
|
|
+ },
|
|
|
|
|
+ name: { required: true, message: '请输入任务名称', trigger: 'blur' },
|
|
|
|
|
+ code: { required: true, message: '请输入任务编码', trigger: 'blur' },
|
|
|
|
|
+ planStartDate: {
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ message: '请选择计划开始日期',
|
|
|
|
|
+ trigger: 'change'
|
|
|
|
|
+ },
|
|
|
|
|
+ planEndDate: {
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ message: '请选择计划完成日期',
|
|
|
|
|
+ trigger: 'change'
|
|
|
|
|
+ },
|
|
|
|
|
+ responsibleUserIds: {
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ message: '请选择执行人',
|
|
|
|
|
+ trigger: 'change'
|
|
|
|
|
+ },
|
|
|
|
|
+ responsibleDeptId: {
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ message: '请选择负责部门',
|
|
|
|
|
+ trigger: 'change'
|
|
|
|
|
+ },
|
|
|
|
|
+ proportion: {
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ message: '请输入权重占比',
|
|
|
|
|
+ trigger: ['change', 'blur']
|
|
|
|
|
+ },
|
|
|
|
|
+ cost: {
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ message: '请输入费用',
|
|
|
|
|
+ trigger: ['change', 'blur']
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- deep: true
|
|
|
|
|
|
|
+ },
|
|
|
|
|
+ usersList: []
|
|
|
|
|
+ };
|
|
|
},
|
|
},
|
|
|
- userList: {
|
|
|
|
|
- handler(val) {
|
|
|
|
|
- // this.form.responsibleUserIds = [];
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- computed: {
|
|
|
|
|
- getCrcle() {
|
|
|
|
|
- let result = '';
|
|
|
|
|
- if (this.form['planEndDate'] && this.form['planStartDate']) {
|
|
|
|
|
|
|
+ methods: {
|
|
|
|
|
+ setCycleValue(val, prop) {
|
|
|
|
|
+ if (!this.form[prop] || !val) return (this.form.budget = '');
|
|
|
const a = moment(this.form.planEndDate);
|
|
const a = moment(this.form.planEndDate);
|
|
|
const b = moment(this.form.planStartDate);
|
|
const b = moment(this.form.planStartDate);
|
|
|
- result = a.diff(b, 'days') + 1 + ' 天'; // 1
|
|
|
|
|
- this.form.budget = result;
|
|
|
|
|
- return result;
|
|
|
|
|
- }
|
|
|
|
|
- return result;
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- data() {
|
|
|
|
|
- return {
|
|
|
|
|
- form: {
|
|
|
|
|
- beforeTaskId: '',
|
|
|
|
|
- code: '',
|
|
|
|
|
- budget: '',
|
|
|
|
|
- responsibleUserIds: [],
|
|
|
|
|
- remark: '',
|
|
|
|
|
- milepost: '0',
|
|
|
|
|
- planStartDate: '',
|
|
|
|
|
- planEndDate: '',
|
|
|
|
|
- proportion: '',
|
|
|
|
|
- cost: '',
|
|
|
|
|
- type: '',
|
|
|
|
|
- name: '',
|
|
|
|
|
- responsibleDeptId: '',
|
|
|
|
|
- taskFilesList: []
|
|
|
|
|
|
|
+ this.form.budget = a.diff(b, 'days') + 1 + ' 天'; // 1
|
|
|
},
|
|
},
|
|
|
- rules: {
|
|
|
|
|
- type: { required: true, message: '请选择任务类型', trigger: 'change' },
|
|
|
|
|
- name: { required: true, message: '请输入任务名称', trigger: 'blur' },
|
|
|
|
|
- code: { required: true, message: '请输入任务编码', trigger: 'blur' },
|
|
|
|
|
- planStartDate: {
|
|
|
|
|
- required: true,
|
|
|
|
|
- message: '请选择计划开始日期',
|
|
|
|
|
- trigger: 'change'
|
|
|
|
|
- },
|
|
|
|
|
- planEndDate: {
|
|
|
|
|
- required: true,
|
|
|
|
|
- message: '请选择计划完成日期',
|
|
|
|
|
- trigger: 'change'
|
|
|
|
|
- },
|
|
|
|
|
- responsibleUserIds: {
|
|
|
|
|
- required: true,
|
|
|
|
|
- message: '请选择执行人',
|
|
|
|
|
- trigger: 'change'
|
|
|
|
|
- },
|
|
|
|
|
- responsibleDeptId: {
|
|
|
|
|
- required: true,
|
|
|
|
|
- message: '请选择负责部门',
|
|
|
|
|
- trigger: 'change'
|
|
|
|
|
- },
|
|
|
|
|
- proportion: {
|
|
|
|
|
- required: true,
|
|
|
|
|
- message: '请输入权重占比',
|
|
|
|
|
- trigger: ['change', 'blur']
|
|
|
|
|
- },
|
|
|
|
|
- cost: {
|
|
|
|
|
- required: true,
|
|
|
|
|
- message: '请输入费用',
|
|
|
|
|
- trigger: ['change', 'blur']
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- };
|
|
|
|
|
- },
|
|
|
|
|
- methods: {
|
|
|
|
|
- setCycleValue(val, prop) {
|
|
|
|
|
- if (!this.form[prop] || !val) return (this.form.budget = '');
|
|
|
|
|
- const a = moment(this.form.planEndDate);
|
|
|
|
|
- const b = moment(this.form.planStartDate);
|
|
|
|
|
- this.form.budget = a.diff(b, 'days') + 1 + ' 天'; // 1
|
|
|
|
|
- },
|
|
|
|
|
- validForm() {
|
|
|
|
|
- return new Promise((resolve, reject) => {
|
|
|
|
|
- this.$refs.form.validate((valid) => {
|
|
|
|
|
- if (!valid) {
|
|
|
|
|
- this.$message.warning('有必填项未填,请检查');
|
|
|
|
|
- reject('有必填项未填,请检查');
|
|
|
|
|
- } else {
|
|
|
|
|
- resolve(this.form);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ validForm() {
|
|
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
|
|
+ this.$refs.form.validate((valid) => {
|
|
|
|
|
+ if (!valid) {
|
|
|
|
|
+ this.$message.warning('有必填项未填,请检查');
|
|
|
|
|
+ reject('有必填项未填,请检查');
|
|
|
|
|
+ } else {
|
|
|
|
|
+ resolve(this.form);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
});
|
|
});
|
|
|
- });
|
|
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
-};
|
|
|
|
|
|
|
+ };
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
-<style scoped lang="scss">
|
|
|
|
|
-</style>
|
|
|
|
|
|
|
+<style scoped lang="scss"></style>
|