<template>
|
<div>
|
<!-- 列表页面 -->
|
<div class="page-container" v-if="showEdit == 0">
|
<!-- 查询条件 -->
|
<div class="search-section">
|
<el-form :inline="true" :model="queryForm" label-width="80">
|
<el-form-item label="所属项目" prop="project_id">
|
<el-select
|
v-model="queryForm.project_id"
|
placeholder="所属项目"
|
clearable
|
filterable
|
size="small"
|
@change="handleProjectChange"
|
>
|
<el-option v-for="item in projectInfoArr" :key="item.id" :label="item.project_name" :value="item.id" />
|
</el-select>
|
</el-form-item>
|
|
<!-- <el-form-item label="项目模块" prop="module_id">
|
<el-select v-model="queryForm.module_id" placeholder="项目模块" clearable filterable>
|
<el-option v-for="item in projectModuleArr" :key="item.id" :label="item.module_name" :value="item.id" />
|
</el-select>
|
</el-form-item> -->
|
|
<el-form-item label="项目模块" prop="module_id">
|
<el-cascader
|
v-model="queryForm.module_ids"
|
:options="projectModuleTreeArr"
|
clearable
|
filterable
|
:props="moduleCascaderProps"
|
:show-all-levels="false"
|
@change="handleModuleChange"
|
size="small"
|
/>
|
</el-form-item>
|
|
<el-form-item label="关键字">
|
<el-input v-model="queryForm.keyword" placeholder="任务名称/描述" clearable size="small" />
|
</el-form-item>
|
|
<el-form-item label="任务类型">
|
<el-select v-model="queryForm.type" placeholder="任务类型" clearable filterable size="small">
|
<el-option v-for="item in projectTaskTypeArr" :key="item.value" :label="item.label" :value="item.value" />
|
</el-select>
|
</el-form-item>
|
<el-form-item label="排配状态">
|
<el-select v-model="queryForm.assign_status" placeholder="排配状态" clearable filterable size="small">
|
<el-option
|
v-for="item in projectTaskAssignStatus"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
/>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="任务状态">
|
<el-select
|
v-model="queryForm.status_list"
|
placeholder="任务状态"
|
clearable
|
filterable
|
:multiple="true"
|
size="small"
|
>
|
<el-option
|
v-for="item in projectTaskStatusArr"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
/>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="优先级">
|
<el-select v-model="queryForm.priority" placeholder="优先级" clearable filterable size="small">
|
<el-option
|
v-for="item in projectTaskPriorityArr"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
/>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="计划开发" prop="plan_user_id" class="selectClass">
|
<el-select
|
v-model="queryForm.evaluator_users"
|
placeholder="请选择开发"
|
clearable
|
filterable
|
:multiple="true"
|
size="small"
|
>
|
<el-option v-for="item in userList" :key="item.id" :label="item.nickname" :value="item.id" />
|
</el-select>
|
</el-form-item>
|
<el-form-item label="实际开发" prop="actual_user_id" class="selectClass">
|
<el-select
|
v-model="queryForm.developer_users"
|
placeholder="请选择开发"
|
clearable
|
filterable
|
:multiple="true"
|
size="small"
|
>
|
<el-option v-for="item in userList" :key="item.id" :label="item.nickname" :value="item.id" />
|
</el-select>
|
</el-form-item>
|
<el-form-item label="计划时间">
|
<!-- <el-date-picker v-model="queryForm.start_time" type="date" placeholder="任务开始时间" clearable /> -->
|
<el-date-picker
|
v-model="queryForm.plan_date"
|
type="daterange"
|
range-separator="-"
|
start-placeholder="计划开始时间"
|
end-placeholder="计划结束时间"
|
format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD HH:mm:ss"
|
size="small"
|
/>
|
</el-form-item>
|
<!-- <el-form-item label="实际时间">
|
<el-date-picker
|
v-model="queryForm.actual_date"
|
type="daterange"
|
range-separator="-"
|
start-placeholder="实际开始时间"
|
end-placeholder="实际结束时间"
|
format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD HH:mm:ss"
|
size="small"
|
/>
|
</el-form-item> -->
|
|
<el-form-item>
|
<el-button type="primary" @click="search" size="small">查询</el-button>
|
<el-button type="primary" @click="add" size="small">新增</el-button>
|
<el-button type="primary" @click="addBatch" size="small">批量新增</el-button>
|
</el-form-item>
|
</el-form>
|
</div>
|
<!-- 表格 -->
|
<div class="table-section">
|
<el-table :data="tableData" v-loading="loading" stripe style="width: 100%" fit height="450px">
|
<!-- <el-table-column prop="project_name" label="项目名称" fixed="left" width="180px"></el-table-column>
|
<el-table-column prop="module_name" label="模块名称" width="120px" fixed="left"></el-table-column> -->
|
<el-table-column prop="project_name_src" label="项目名称" fixed="left" width="180px"></el-table-column>
|
<el-table-column prop="module_name_src" label="模块名称" width="200px"></el-table-column>
|
<el-table-column prop="name" label="任务名称" width="200px"></el-table-column>
|
<el-table-column prop="description" label="任务描述" width="400px"></el-table-column>
|
<el-table-column prop="type" label="任务类型" width="90px">
|
<template #default="scope">
|
<el-tag type="primary">
|
{{ getDictLabel(projectTaskTypeArr, scope.row.type) }}
|
</el-tag>
|
</template>
|
</el-table-column>
|
<el-table-column prop="priority" label="优先级" width="80px">
|
<template #default="scope">
|
<el-tag type="primary">
|
{{ getDictLabel(projectTaskPriorityArr, scope.row.priority) }}
|
</el-tag>
|
</template>
|
</el-table-column>
|
<el-table-column prop="status" label="任务状态" width="90px">
|
<template #default="scope">
|
<el-tag type="primary">
|
{{ getDictLabel(projectTaskStatusArr, scope.row.status) }}
|
</el-tag>
|
</template>
|
</el-table-column>
|
<el-table-column prop="assign_status" label="排配状态" width="90px">
|
<template #default="scope">
|
<el-tag type="primary">
|
{{ getDictLabel(projectTaskAssignStatus, scope.row.assign_status) }}
|
</el-tag>
|
</template>
|
</el-table-column>
|
<el-table-column prop="evaluator_users" label="评估人" width="120px">
|
<template #default="scope">
|
<el-tag type="primary" v-for="item in scope.row.evaluator_users" :key="item.id">
|
{{ item.evaluator_name }}
|
</el-tag>
|
</template>
|
</el-table-column>
|
<el-table-column prop="developer_users" label="开发者" width="200px">
|
<template #default="scope">
|
<el-tag type="primary" v-for="item in scope.row.developer_users" :key="item.id">
|
{{ item.developer_name }}
|
</el-tag>
|
</template>
|
</el-table-column>
|
<el-table-column prop="plan_hour" label="计划工时" width="150px"></el-table-column>
|
<el-table-column prop="actual_hour" label="实际工时" width="150px"></el-table-column>
|
<el-table-column prop="plan_begin_date" label="计划开始时间" width="220px"></el-table-column>
|
<el-table-column prop="plan_end_date" label="计划结束时间" width="220px"></el-table-column>
|
<el-table-column prop="actual_begin_date" label="实际开始时间" width="220px"></el-table-column>
|
<el-table-column prop="actual_end_date" label="实际结束时间" width="220px"></el-table-column>
|
<el-table-column prop="compute_left_hour" label="剩余工时" width="150px"></el-table-column>
|
<el-table-column prop="process" label="进度" width="150px">
|
<template #default="scope">
|
<el-tag :type="scope.row.process <= 100 ? 'primary' : 'danger'">
|
{{ scope.row.process || '0' }} %
|
</el-tag>
|
</template>
|
</el-table-column>
|
<el-table-column prop="file_list" label="文件" width="300px">
|
<template #default="scope">
|
<div
|
v-for="file in scope.row.file_list"
|
:key="file.id"
|
style="width: 300px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis"
|
>
|
<a :href="file.path" :download="file.name" target="_blank" style="color: blue">
|
{{ file.name }}
|
</a>
|
</div>
|
|
<!-- <a v-for="file in scope.row.file_list" :key="file.id" :href="file.path" :download="file.name" target="_blank" style="color:blue;">
|
{{ file.name }}
|
</a> -->
|
</template>
|
</el-table-column>
|
<el-table-column prop="create_user_name" label="创建人" width="150px"></el-table-column>
|
<el-table-column prop="create_time" label="创建时间" width="220px"></el-table-column>
|
<el-table-column prop="remark" label="备注" width="200px"></el-table-column>
|
|
<el-table-column label="操作栏" fixed="right" width="320px">
|
<template #default="scope">
|
<el-button v-if="scope.row.assign_status === 'AN'" type="text" size="small" @click="handleEdit(scope.row)"
|
>编辑</el-button
|
>
|
<el-button
|
v-if="scope.row.assign_status === 'AN'"
|
type="text"
|
size="small"
|
@click="handleDelete(scope.row)"
|
>删除</el-button
|
>
|
<el-button type="text" size="small" @click="handleAssign(scope.row)">排配</el-button>
|
<!-- <el-button type="text" size="small" @click="handleProcess(scope.row)">进度填写</el-button> -->
|
<el-button v-if="scope.row.status === 'T'" type="text" size="small" @click="handleTF(scope.row)"
|
>测试通过</el-button
|
>
|
<el-button v-if="scope.row.status === 'T'" type="text" size="small" @click="handleTN(scope.row)"
|
>测试不通过</el-button
|
>
|
<el-button v-if="scope.row.status === 'TY'" type="text" size="small" @click="handleConfirm(scope.row)"
|
>确认</el-button
|
>
|
|
<!-- <el-button type="text" size="small" @click="handleProjectStatistics(scope.row)">详情</el-button> -->
|
</template>
|
</el-table-column>
|
</el-table>
|
|
<div class="demo-pagination-block">
|
<!-- <div class="demonstration">All combined</div> -->
|
<el-pagination
|
v-model:current-page="currentPage"
|
v-model:page-size="pageSize"
|
:page-sizes="[10, 20, 30]"
|
:small="small"
|
:disabled="disabled"
|
:background="background"
|
layout="total, sizes, prev, pager, next, jumper"
|
:total="totalSize"
|
@size-change="handleSizeChange"
|
@current-change="handleCurrentChange"
|
/>
|
</div>
|
</div>
|
</div>
|
<!-- 编辑页面 -->
|
<project-task-add v-if="showEdit == 1" @editClose="editClose" :editId="editId"></project-task-add>
|
<!-- 批量新增 -->
|
<project-task-add-batch v-if="showEdit == 2" @editClose="editClose" :editId="editId"></project-task-add-batch>
|
<!-- 任务分配 -->
|
<project-task-assign v-if="showEdit == 3" @editClose="editClose" :editId="editId"></project-task-assign>
|
<!-- 弹框 -->
|
<el-dialog v-model="dialogVisible" title="填写进度" width="400px" class="dialog-form-container">
|
<el-form :model="processForm" ref="processFormRef" label-width="80px">
|
<!-- 进度输入框 -->
|
<el-form-item
|
label="进度"
|
prop="process"
|
:rules="[{ required: true, message: '进度不能为空', trigger: 'blur' }]"
|
>
|
<el-input-number
|
v-model="processForm.process"
|
placeholder="请输入进度"
|
min="0"
|
max="100"
|
style="width: 300px"
|
></el-input-number>
|
</el-form-item>
|
|
<!-- 备注输入框 -->
|
<el-form-item label="备注" prop="remark">
|
<el-input
|
type="textarea"
|
v-model="processForm.remark"
|
placeholder="请输入备注"
|
style="width: 300px"
|
></el-input>
|
</el-form-item>
|
</el-form>
|
|
<!-- 弹框底部按钮 -->
|
<template #footer>
|
<div style="display: flex; justify-content: center">
|
<el-button @click="handleProcessFormCancel">取消</el-button>
|
<el-button type="primary" @click="handleSubmitProcessForm">提交</el-button>
|
</div>
|
</template>
|
</el-dialog>
|
</div>
|
</template>
|
|
<script>
|
import { ref, reactive, onMounted } from 'vue'
|
import { ElMessageBox, ElMessage } from 'element-plus'
|
|
import projectInfo from '@/model/projectInfo'
|
import sysDictItemModel from '@/model/sysDictItem'
|
|
import ProjectModuleInfo from '@/model/projectModuleInfo'
|
import AdminInfo from '@/lin/model/admin'
|
import ProjectTaskInfo from '@/model/projectTaskInfo'
|
import ProjectTaskAdd from '@/view/project-task/project-task-add'
|
import ProjectTaskAddBatch from '@/view/project-task/project-task-add-batch'
|
import ProjectTaskAssign from '@/view/project-task/project-task-assign'
|
|
export default {
|
components: {
|
ProjectTaskAdd,
|
ProjectTaskAddBatch,
|
ProjectTaskAssign,
|
},
|
|
setup() {
|
const loading = ref(false)
|
// 弹框的显示状态
|
const dialogVisible = ref(false)
|
|
const currentPage = ref(1)
|
const pageSize = ref(10)
|
const totalSize = ref(100)
|
const projectTaskStatusArr = ref([])
|
const projectTaskAssignStatus = ref([])
|
const projectTaskTypeArr = ref([])
|
const projectTaskPriorityArr = ref([])
|
const userList = ref([])
|
|
const showEdit = ref(0)
|
const editId = ref(1)
|
|
const projectInfoArr = ref([])
|
const projectModuleArr = ref([])
|
const projectModuleTreeArr = ref([])
|
const moduleCascaderProps = {
|
value: 'id', // 设置 value 字段
|
label: 'name', // 设置 label 字段
|
children: 'children', // 设置子项的字段
|
checkStrictly: true, // 设置任意节点的子节点是否可以勾选
|
}
|
|
const queryForm = reactive({
|
project_id: '',
|
module_ids: [],
|
module_id: '',
|
keyword: '',
|
type: '',
|
assign_status: '',
|
status_list: [],
|
priority: '',
|
evaluator_users: '',
|
developer_users: '',
|
plan_date: [],
|
plan_begin_date: '',
|
plan_end_date: '',
|
actual_date: [],
|
actual_begin_date: '',
|
actual_end_date: '',
|
page: 1,
|
count: 10,
|
})
|
|
const resultPage = ref({})
|
|
const tableData = ref([])
|
|
// 表单数据
|
const processForm = ref({
|
process: '', // 进度
|
remark: '', // 备注
|
})
|
|
// 表单引用
|
const processFormRef = ref(null)
|
|
onMounted(() => {
|
// 列出所有项目信息
|
getPage()
|
loadDictDitems()
|
})
|
|
const getPage = async () => {
|
try {
|
queryForm.page = currentPage.value
|
queryForm.count = pageSize.value
|
|
queryForm.module_id = queryForm.module_ids == null ? '' : queryForm.module_ids[queryForm.module_ids.length - 1]
|
|
queryForm.plan_begin_date = ''
|
queryForm.plan_end_date = ''
|
if (queryForm.plan_date) {
|
queryForm.plan_begin_date = queryForm.plan_date[0]
|
queryForm.plan_end_date = queryForm.plan_date[1]
|
}
|
queryForm.actual_begin_date = ''
|
queryForm.actual_end_date = ''
|
if (queryForm.actual_date) {
|
queryForm.actual_begin_date = queryForm.actual_date[0]
|
queryForm.actual_end_date = queryForm.actual_date[1]
|
}
|
|
loading.value = true
|
resultPage.value = await ProjectTaskInfo.getPage(queryForm)
|
tableData.value = resultPage.value.items
|
totalSize.value = resultPage.value.total
|
currentPage.value = resultPage.value.page
|
pageSize.value = resultPage.value.count
|
|
loading.value = false
|
} catch (error) {
|
loading.value = false
|
if (error.code === 10020) {
|
tableData.value = []
|
}
|
}
|
}
|
|
const search = () => {
|
// 执行查询操作,更新表格数据
|
// 列出所有项目信息
|
getPage()
|
}
|
|
// 根据字典类型查询字典
|
const loadDictDitems = async () => {
|
projectTaskStatusArr.value = await sysDictItemModel.getSysDictItemListByType('project_task_status')
|
projectTaskAssignStatus.value = await sysDictItemModel.getSysDictItemListByType('project_task_assign_status')
|
projectTaskTypeArr.value = await sysDictItemModel.getSysDictItemListByType('project_task_type')
|
projectTaskPriorityArr.value = await sysDictItemModel.getSysDictItemListByType('project_task_priority')
|
|
projectInfoArr.value = await projectInfo.getProjectInfoList('')
|
projectModuleArr.value = await ProjectModuleInfo.getProjectModuleInfoList({})
|
projectModuleTreeArr.value = await ProjectModuleInfo.getProjectModuleTree({})
|
|
// const res = await AdminInfo.getAdminUsers({groupId:7,count:30})
|
const res = await AdminInfo.getAdminUsers({ count: 30 })
|
if (res && res.items) {
|
userList.value = res.items
|
}
|
}
|
|
const handleProjectChange = async e => {
|
// 编辑操作
|
console.log(e)
|
// projectModuleArr.value = await ProjectModuleInfo.getProjectModuleInfoList({ projectId: e })
|
projectModuleTreeArr.value = await ProjectModuleInfo.getProjectModuleTree({ projectId: e })
|
}
|
|
const getDictLabel = (dictList, dictValue) => {
|
const dictItem = dictList.find(item => item.value === dictValue)
|
return dictItem ? dictItem.label : ''
|
}
|
|
const handleEdit = row => {
|
// 编辑操作
|
editId.value = row.id
|
showEdit.value = 1
|
}
|
|
const handleDelete = row => {
|
// 删除操作
|
ElMessageBox.confirm('此操作将永久删除该记录, 是否继续?', '提示', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning',
|
})
|
.then(async () => {
|
const res = await ProjectTaskInfo.delete(row.id)
|
if (res.code < window.MAX_SUCCESS_CODE) {
|
getPage()
|
ElMessage.success(`${res.message}`)
|
}
|
})
|
.catch(() => {
|
// 用户点击取消按钮时执行的操作
|
// 可以选择不做任何事情,也可以显示取消消息
|
// ElMessage.info('操作已取消'); // 如果需要显示取消消息,可以取消注释
|
})
|
}
|
|
const handleAssign = row => {
|
// 编辑操作
|
editId.value = row.id
|
showEdit.value = 3
|
}
|
|
/**
|
* 项目测试通过
|
*/
|
const handleTF = row => {
|
ElMessageBox.confirm('确定测试通过嘛?', '提示', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning',
|
})
|
.then(async () => {
|
const res = await ProjectTaskInfo.testPass(row.id)
|
if (res.code < window.MAX_SUCCESS_CODE) {
|
getPage()
|
ElMessage.success(`${res.message}`)
|
}
|
})
|
.catch(() => {
|
// 用户点击取消按钮时执行的操作
|
// 可以选择不做任何事情,也可以显示取消消息
|
// ElMessage.info('操作已取消'); // 如果需要显示取消消息,可以取消注释
|
})
|
}
|
|
/**
|
* 项目测试通过
|
*/
|
const handleTN = row => {
|
ElMessageBox.confirm('确定测试不通过嘛?', '提示', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning',
|
})
|
.then(async () => {
|
const res = await ProjectTaskInfo.testUnpass(row.id)
|
if (res.code < window.MAX_SUCCESS_CODE) {
|
getPage()
|
ElMessage.success(`${res.message}`)
|
}
|
})
|
.catch(() => {
|
// 用户点击取消按钮时执行的操作
|
// 可以选择不做任何事情,也可以显示取消消息
|
// ElMessage.info('操作已取消'); // 如果需要显示取消消息,可以取消注释
|
})
|
}
|
|
const handleProcess = row => {
|
processForm.value.id = row.id
|
processForm.value.process = row.process ? row.process : '' // 清空进度输入框
|
processForm.value.remark = row.remark ? row.remark : '' // 清空备注
|
dialogVisible.value = true
|
}
|
/**
|
*
|
* @param row 进度按钮取消
|
*/
|
const handleProcessFormCancel = () => {
|
processFormRef.value.resetFields() // 重置表单字段
|
dialogVisible.value = false
|
}
|
|
const handleSubmitProcessForm = () => {
|
ElMessageBox.confirm('确定修改进度嘛?', '提示', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning',
|
})
|
.then(async () => {
|
processFormRef.value.validate(async valid => {
|
if (valid) {
|
// 处理提交逻辑
|
const res = await ProjectTaskInfo.editProcess(processForm.value)
|
if (res.code < window.MAX_SUCCESS_CODE) {
|
getPage()
|
ElMessage.success(`${res.message}`)
|
}
|
// 提交成功后关闭弹框
|
dialogVisible.value = false
|
} else {
|
console.log('表单验证失败')
|
return false
|
}
|
})
|
})
|
.catch(() => {
|
// 用户点击取消按钮时执行的操作
|
// 可以选择不做任何事情,也可以显示取消消息
|
// ElMessage.info('操作已取消'); // 如果需要显示取消消息,可以取消注释
|
})
|
}
|
|
/**
|
*
|
* @param row 确认
|
*/
|
const handleConfirm = row => {
|
ElMessageBox.confirm('确定确认嘛?', '提示', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning',
|
})
|
.then(async () => {
|
const res = await ProjectTaskInfo.confirm(row.id)
|
if (res.code < window.MAX_SUCCESS_CODE) {
|
getPage()
|
ElMessage.success(`${res.message}`)
|
}
|
})
|
.catch(() => {
|
// 用户点击取消按钮时执行的操作
|
// 可以选择不做任何事情,也可以显示取消消息
|
// ElMessage.info('操作已取消'); // 如果需要显示取消消息,可以取消注释
|
})
|
}
|
|
const handleSizeChange = val => {
|
pageSize.value = val
|
getPage()
|
}
|
|
const handleCurrentChange = val => {
|
currentPage.value = val
|
getPage()
|
}
|
|
const editClose = () => {
|
showEdit.value = 0
|
getPage()
|
}
|
|
const add = () => {
|
showEdit.value = 1
|
editId.value = ''
|
}
|
|
const addBatch = () => {
|
showEdit.value = 2
|
editId.value = ''
|
}
|
return {
|
loading,
|
|
projectTaskStatusArr,
|
projectTaskAssignStatus,
|
projectTaskTypeArr,
|
projectTaskPriorityArr,
|
userList,
|
|
queryForm,
|
tableData,
|
search,
|
handleEdit,
|
handleDelete,
|
handleAssign,
|
handleTF,
|
handleTN,
|
handleConfirm,
|
handleProjectChange,
|
getDictLabel,
|
|
currentPage,
|
pageSize,
|
totalSize,
|
|
handleSizeChange,
|
handleCurrentChange,
|
|
editClose,
|
add,
|
addBatch,
|
editId,
|
showEdit,
|
|
projectInfoArr,
|
projectModuleArr,
|
projectModuleTreeArr,
|
moduleCascaderProps,
|
dialogVisible,
|
handleProcess,
|
processForm,
|
processFormRef,
|
|
handleProcessFormCancel,
|
handleSubmitProcessForm,
|
}
|
},
|
}
|
</script>
|
|
<style scoped>
|
.page-container {
|
padding: 10px;
|
}
|
|
.search-section {
|
margin-bottom: 10px;
|
padding: 20px;
|
/* background-color: #f5f5f5; */
|
border-radius: 4px;
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
}
|
|
.table-section {
|
padding: 20px;
|
background-color: #fff;
|
border-radius: 4px;
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
}
|
|
.demo-pagination-block {
|
margin-top: 10px;
|
}
|
|
.demo-pagination-block .demonstration {
|
margin-bottom: 16px;
|
}
|
|
.icon_btn_class {
|
width: 1em;
|
height: 1em;
|
margin-left: 4px;
|
margin-right: 4px;
|
}
|
|
.el-form-item {
|
width: 220px;
|
}
|
|
.i-s-w {
|
width: 150px;
|
}
|
|
.dialog-form-container .el-form-item {
|
width: 90%;
|
}
|
</style>
|