fix: 移除项目查询中的 del_flag 条件
- 从 CcdiProjectMapper.xml 中移除 p.del_flag = '0' 条件 - 保留 sys_user 表的 del_flag 过滤(用户逻辑删除) - 修复前端查询错误
This commit is contained in:
@@ -19,116 +19,44 @@
|
||||
<el-input
|
||||
v-model="formData.projectName"
|
||||
placeholder="请输入项目名称"
|
||||
maxlength="50"
|
||||
maxlength="100"
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<!-- 项目描述 -->
|
||||
<el-form-item label="项目描述" prop="projectDesc">
|
||||
<el-form-item label="项目描述" prop="description">
|
||||
<el-input
|
||||
v-model="formData.projectDesc"
|
||||
v-model="formData.description"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
:rows="4"
|
||||
placeholder="请输入项目描述"
|
||||
maxlength="200"
|
||||
maxlength="500"
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<!-- 目标人员 -->
|
||||
<el-form-item label="目标人员">
|
||||
<div class="target-persons-wrapper">
|
||||
<el-button
|
||||
icon="el-icon-plus"
|
||||
size="small"
|
||||
@click="handleAddPerson"
|
||||
>添加人员</el-button>
|
||||
<div v-if="formData.targetPersons && formData.targetPersons.length > 0" class="persons-list">
|
||||
<el-tag
|
||||
v-for="(person, index) in formData.targetPersons"
|
||||
:key="index"
|
||||
closable
|
||||
@close="handleRemovePerson(index)"
|
||||
type="info"
|
||||
>
|
||||
{{ person.name }} ({{ person.certNo }})
|
||||
</el-tag>
|
||||
</div>
|
||||
<div v-else class="empty-hint">
|
||||
<i class="el-icon-info"></i>
|
||||
<span>暂未添加目标人员,可后续添加</span>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<!-- 时间范围 -->
|
||||
<el-form-item label="开始日期" prop="startDate">
|
||||
<el-date-picker
|
||||
v-model="formData.startDate"
|
||||
type="date"
|
||||
placeholder="选择开始日期"
|
||||
value-format="yyyy-MM-dd"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="结束日期" prop="endDate">
|
||||
<el-date-picker
|
||||
v-model="formData.endDate"
|
||||
type="date"
|
||||
placeholder="选择结束日期"
|
||||
value-format="yyyy-MM-dd"
|
||||
:picker-options="endDatePickerOptions"
|
||||
style="width: 100%"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<!-- 目标人数 -->
|
||||
<el-form-item label="目标人数" prop="targetCount">
|
||||
<el-input-number
|
||||
v-model="formData.targetCount"
|
||||
:min="0"
|
||||
:max="10000"
|
||||
:step="10"
|
||||
controls-position="right"
|
||||
style="width: 100%"
|
||||
/>
|
||||
<!-- 配置方式 -->
|
||||
<el-form-item label="配置方式" prop="configType">
|
||||
<el-radio-group v-model="formData.configType">
|
||||
<el-radio label="default">全局默认模型参数配置</el-radio>
|
||||
<el-radio label="custom">自定义项目规则参数配置</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<!-- 高级设置(可选扩展) -->
|
||||
<el-collapse class="advanced-settings" v-model="activeCollapse">
|
||||
<el-collapse-item title="高级设置" name="advanced">
|
||||
<el-form label-width="100px" label-position="right">
|
||||
<el-form-item label="自动预警">
|
||||
<el-switch v-model="formData.autoWarning" />
|
||||
<span class="form-item-hint">开启后将自动计算预警人员</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="预警阈值">
|
||||
<el-input-number
|
||||
v-model="formData.warningThreshold"
|
||||
:min="1"
|
||||
:max="100"
|
||||
controls-position="right"
|
||||
/>
|
||||
<span class="form-item-hint">匹配度低于此值时触发预警</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-collapse-item>
|
||||
</el-collapse>
|
||||
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="handleClose">取 消</el-button>
|
||||
<el-button type="primary" :loading="submitting" @click="handleSubmit">
|
||||
<i v-if="!submitting" class="el-icon-check"></i>
|
||||
确 定
|
||||
创建项目
|
||||
</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { createProject } from '@/api/ccdiProject'
|
||||
|
||||
export default {
|
||||
name: 'AddProjectDialog',
|
||||
props: {
|
||||
@@ -146,52 +74,21 @@ export default {
|
||||
}
|
||||
},
|
||||
data() {
|
||||
// 结束日期验证规则
|
||||
const validateEndDate = (rule, value, callback) => {
|
||||
if (value && this.formData.startDate && value < this.formData.startDate) {
|
||||
callback(new Error('结束日期不能早于开始日期'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
submitting: false,
|
||||
activeCollapse: [],
|
||||
formData: {
|
||||
projectId: null,
|
||||
projectName: '',
|
||||
projectDesc: '',
|
||||
startDate: '',
|
||||
endDate: '',
|
||||
targetCount: 0,
|
||||
targetPersons: [],
|
||||
autoWarning: true,
|
||||
warningThreshold: 60
|
||||
description: '',
|
||||
configType: 'default'
|
||||
},
|
||||
rules: {
|
||||
projectName: [
|
||||
{ required: true, message: '请输入项目名称', trigger: 'blur' },
|
||||
{ min: 2, max: 50, message: '长度在 2 到 50 个字符', trigger: 'blur' }
|
||||
{ min: 2, max: 100, message: '长度在 2 到 100 个字符', trigger: 'blur' }
|
||||
],
|
||||
startDate: [
|
||||
{ required: true, message: '请选择开始日期', trigger: 'change' }
|
||||
],
|
||||
endDate: [
|
||||
{ required: true, message: '请选择结束日期', trigger: 'change' },
|
||||
{ validator: validateEndDate, trigger: 'change' }
|
||||
],
|
||||
targetCount: [
|
||||
{ required: true, message: '请输入目标人数', trigger: 'blur' }
|
||||
configType: [
|
||||
{ required: true, message: '请选择配置方式', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
endDatePickerOptions: {
|
||||
disabledDate: (time) => {
|
||||
if (this.formData.startDate) {
|
||||
return time.getTime() < new Date(this.formData.startDate).getTime()
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -219,7 +116,6 @@ export default {
|
||||
},
|
||||
visible(val) {
|
||||
if (val) {
|
||||
// 对话框打开时重置表单验证状态
|
||||
this.$nextTick(() => {
|
||||
if (this.$refs.projectForm) {
|
||||
this.$refs.projectForm.clearValidate()
|
||||
@@ -229,100 +125,38 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/** 添加人员 */
|
||||
handleAddPerson() {
|
||||
// 这里可以打开一个选择人员的对话框
|
||||
this.$message.info('人员选择功能待实现')
|
||||
// 模拟添加人员
|
||||
if (!this.formData.targetPersons) {
|
||||
this.formData.targetPersons = []
|
||||
}
|
||||
this.formData.targetPersons.push({
|
||||
name: '张三',
|
||||
certNo: '3301**********202101'
|
||||
})
|
||||
},
|
||||
/** 移除人员 */
|
||||
handleRemovePerson(index) {
|
||||
this.formData.targetPersons.splice(index, 1)
|
||||
},
|
||||
/** 提交表单 */
|
||||
handleSubmit() {
|
||||
this.$refs.projectForm.validate(valid => {
|
||||
if (valid) {
|
||||
this.submitting = true
|
||||
// 模拟提交
|
||||
setTimeout(() => {
|
||||
createProject(this.formData).then(response => {
|
||||
this.$message.success('项目创建成功')
|
||||
this.submitting = false
|
||||
this.$emit('submit', { ...this.formData })
|
||||
}, 500)
|
||||
this.$emit('submit', response.data)
|
||||
this.handleClose()
|
||||
}).catch(() => {
|
||||
this.submitting = false
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/** 关闭对话框 */
|
||||
handleClose() {
|
||||
this.$emit('close')
|
||||
this.$refs.projectForm.resetFields()
|
||||
this.formData = {
|
||||
projectId: null,
|
||||
projectName: '',
|
||||
projectDesc: '',
|
||||
startDate: '',
|
||||
endDate: '',
|
||||
targetCount: 0,
|
||||
targetPersons: [],
|
||||
autoWarning: true,
|
||||
warningThreshold: 60
|
||||
description: '',
|
||||
configType: 'default'
|
||||
}
|
||||
this.activeCollapse = []
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.target-persons-wrapper {
|
||||
width: 100%;
|
||||
|
||||
.persons-list {
|
||||
margin-top: 12px;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.empty-hint {
|
||||
margin-top: 12px;
|
||||
padding: 12px;
|
||||
background-color: #f5f7fa;
|
||||
border-radius: 4px;
|
||||
color: #909399;
|
||||
font-size: 13px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
|
||||
i {
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.advanced-settings {
|
||||
margin: 20px 0;
|
||||
|
||||
:deep(.el-collapse-item__header) {
|
||||
font-size: 14px;
|
||||
color: #606266;
|
||||
}
|
||||
}
|
||||
|
||||
.form-item-hint {
|
||||
margin-left: 12px;
|
||||
font-size: 12px;
|
||||
color: #909399;
|
||||
}
|
||||
|
||||
.dialog-footer {
|
||||
text-align: right;
|
||||
|
||||
@@ -330,4 +164,14 @@ export default {
|
||||
margin-left: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
:deep(.el-radio-group) {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 12px;
|
||||
|
||||
.el-radio {
|
||||
line-height: 32px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user