|
|
@@ -0,0 +1,567 @@
|
|
|
+<template>
|
|
|
+ <el-dialog
|
|
|
+ title="派单"
|
|
|
+ :visible.sync="addPatrolPlanDialog"
|
|
|
+ :before-close="handleClose"
|
|
|
+ :close-on-click-modal="false"
|
|
|
+ :close-on-press-escape="false"
|
|
|
+ custom-class="ele-dialog-form"
|
|
|
+ width="90%"
|
|
|
+ v-loading="editLoading"
|
|
|
+ >
|
|
|
+ <div class="dialog_body">
|
|
|
+ <el-form
|
|
|
+ :model="addForm"
|
|
|
+ ref="addFormRef"
|
|
|
+ :rules="addFormRules"
|
|
|
+ label-width="120px"
|
|
|
+ >
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="工单编号" prop="code">
|
|
|
+ <el-input
|
|
|
+ v-model="addForm.code"
|
|
|
+ placeholder="自动带出"
|
|
|
+ disabled
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="关联计划" prop="name">
|
|
|
+ <el-input v-model="addForm.name" placeholder="请输入"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="执行部门" prop="groupId">
|
|
|
+ <deptSelect
|
|
|
+ v-model="addForm.groupId"
|
|
|
+ @change="searchDeptNodeClick"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item
|
|
|
+ label="执行人"
|
|
|
+ prop="executorId"
|
|
|
+ :rules="[{ required: true, message: '请选择执行人' }]"
|
|
|
+ >
|
|
|
+ <personSelect
|
|
|
+ ref="executorRef"
|
|
|
+ v-model="addForm.executorId"
|
|
|
+ :init="false"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ <!-- 设备分类 -->
|
|
|
+ <div class="equipment_box">
|
|
|
+ <div class="left_aside">
|
|
|
+ <div class="equipment_list_title">设备列表</div>
|
|
|
+ <div class="equipment_tree">
|
|
|
+ <el-tree
|
|
|
+ :data="planDeviceList"
|
|
|
+ :props="defaultProps"
|
|
|
+ ref="equiListTree"
|
|
|
+ highlight-current
|
|
|
+ node-key="id"
|
|
|
+ @node-click="handleNodeClick"
|
|
|
+ show-checkbox
|
|
|
+ ></el-tree>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="right_aside">
|
|
|
+ <div class="equipment_info">
|
|
|
+ <div class="item_info">
|
|
|
+ <span class="item_label">设备编码</span>
|
|
|
+ <span class="item_value">{{ equipmentInfo.equiCode }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="item_info">
|
|
|
+ <span class="item_label">设备名称</span>
|
|
|
+ <span class="item_value">{{ equipmentInfo.equiName }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="item_info">
|
|
|
+ <span class="item_label">设备型号</span>
|
|
|
+ <span class="item_value">{{ equipmentInfo.equiModel }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="item_info">
|
|
|
+ <span class="item_label">设备位置</span>
|
|
|
+ <span class="item_value">{{ equipmentInfo.equiLocation }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 操作事项 -->
|
|
|
+ <div>
|
|
|
+ <span type="text">操作事项</span>
|
|
|
+ <el-table
|
|
|
+ :data="
|
|
|
+ planDeviceList[currentEquItemIndex] &&
|
|
|
+ planDeviceList[currentEquItemIndex].workItems
|
|
|
+ "
|
|
|
+ border
|
|
|
+ >
|
|
|
+ <el-table-column label="序号" align="center" width="60">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span>{{ scope.$index + 1 }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="事项" align="center" prop="name">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="内容" align="center" prop="content">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="标准" align="center" prop="norm">
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 添加备品备件 -->
|
|
|
+ <div v-if="type === '保养'">
|
|
|
+ <span type="text">所需备件</span>
|
|
|
+ <el-table
|
|
|
+ :data="
|
|
|
+ planDeviceList[currentEquItemIndex] &&
|
|
|
+ planDeviceList[currentEquItemIndex].sparePart
|
|
|
+ "
|
|
|
+ height="300"
|
|
|
+ :key="currentEquItemIndex"
|
|
|
+ border
|
|
|
+ >
|
|
|
+ <el-table-column label="序号" align="center" width="60">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span>{{ scope.$index + 1 }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="备件名称" align="center" prop="name">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="规格型号" align="center" prop="modelType">
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ <span>{{ row.specification }}/{{ row.modelType }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="所需数量" align="center" prop="num">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="单位" align="center" prop="measuringUnit">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="费用" align="center" prop="univalence">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ scope.row.num * scope.row.univalence
|
|
|
+ }}{{ scope.row.univalenceUnit == 'wanyuan' ? '万元' : '元' }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <div style="text-align: center"
|
|
|
+ >备件总费用:
|
|
|
+ {{
|
|
|
+ planDeviceList[currentEquItemIndex] &&
|
|
|
+ planDeviceList[currentEquItemIndex].totalCost
|
|
|
+ ? planDeviceList[currentEquItemIndex].totalCost
|
|
|
+ : '-'
|
|
|
+ }}
|
|
|
+ 元
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div slot="footer" class="dialog_footer">
|
|
|
+ <el-button type="primary" @click="submit">提交</el-button>
|
|
|
+ <el-button @click="handleClose">关闭</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+ import equipmentSelect from '@/components/CommomSelect/equipment-select.vue';
|
|
|
+ import personSelect from '@/components/CommomSelect/person-select.vue';
|
|
|
+ import deptSelect from '@/components/CommomSelect/dept-select.vue';
|
|
|
+ import RuleItemSelection from '@/components/ruleItemSelection';
|
|
|
+ import AddSpareDialog from '@/components/addSpareDialog';
|
|
|
+ import {
|
|
|
+ getRule,
|
|
|
+ getCategory,
|
|
|
+ getAssetList,
|
|
|
+ getInfoById
|
|
|
+ } from '@/api/ruleManagement/plan';
|
|
|
+ import { getDetail, getCode } from '@/api/ruleManagement/matter';
|
|
|
+ import { saveOrUpdate } from '@/api/maintenance/patrol_maintenance';
|
|
|
+ import { deepClone } from '@/utils';
|
|
|
+ import { getById } from '@/api/maintenance/patrol_maintenance';
|
|
|
+ export default {
|
|
|
+ name: 'addPatrolPlanDialog',
|
|
|
+ components: {
|
|
|
+ // SelectTree,
|
|
|
+ personSelect,
|
|
|
+ deptSelect
|
|
|
+ },
|
|
|
+ props: {
|
|
|
+ type: {
|
|
|
+ type: String,
|
|
|
+ default: '巡点检'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ data () {
|
|
|
+ return {
|
|
|
+ defaultProps: {
|
|
|
+ label: 'showName'
|
|
|
+ },
|
|
|
+ addPatrolPlanDialog: false,
|
|
|
+ equipmentInfo: {},
|
|
|
+ clickedTreeNode: false,
|
|
|
+ selectedMatter: [],
|
|
|
+ selectedSpare: [],
|
|
|
+ uerList: [],
|
|
|
+ deptList: [],
|
|
|
+ executorList: [],
|
|
|
+ currentEquItemIndex: 0,
|
|
|
+ formLabel: '',
|
|
|
+ planRuleTypeObj: {
|
|
|
+ 1: 'PATROL',
|
|
|
+ 2: 'MAINTAIN',
|
|
|
+ 4: 'INVENTORY'
|
|
|
+ },
|
|
|
+ addForm: {
|
|
|
+ assetDict: '1',
|
|
|
+ assetsName: '生产设备',
|
|
|
+ // code: getRuleNo('PL'), // 计划单号
|
|
|
+ cycleType: 0,
|
|
|
+ name: '', // 计划名称
|
|
|
+ autoOrder: 1, // 自动派单
|
|
|
+ ruleId: '', // 规则id
|
|
|
+ ruleName: '', // 规则名称
|
|
|
+ duration: '', // 计划完成时长
|
|
|
+ categoryLevelId: '', // 设备分类Id
|
|
|
+ bizTypeName: '', // 设备分类name
|
|
|
+ verifyUserId: '', // 审核人id
|
|
|
+ verifyUserName: '', // 审核人name
|
|
|
+ groupId: '', // 巡点检部门code
|
|
|
+ executorId: '', // 巡点检人员id
|
|
|
+ remark: '', // 备注
|
|
|
+ categoryId: '', //
|
|
|
+ planType: 'PATROL' // 计划规则类型 巡点检: 'PATROL', 保养: 'MAINTAIN', 盘点: 'INVENTORY'
|
|
|
+ },
|
|
|
+ // 计划规则设备列表
|
|
|
+ planDeviceList: [
|
|
|
+ // {
|
|
|
+ // equiTypeId: '', // 设备分类Id
|
|
|
+ // equiTypeName: '', // 设备分类名字
|
|
|
+ // equiCode: '', // 设备编码 equCode
|
|
|
+ // equiName: '', // 设备名称 name
|
|
|
+ // equiModel: '', // 设备型号 specifications
|
|
|
+ // equiLocation: '', // 设备位置
|
|
|
+ // equiLocationCode: '', // 设备位置code
|
|
|
+ // // 设备备品备件 - 巡点检不需要备品备件,保养需要
|
|
|
+ // sparePart: [],
|
|
|
+ // totalCost: 0
|
|
|
+ // }
|
|
|
+ ],
|
|
|
+ addFormRules: {
|
|
|
+ categoryLevelId: [
|
|
|
+ { required: true, message: '请选择设备分类', trigger: 'change' }
|
|
|
+ ],
|
|
|
+ groupId: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请选择选择执行部门',
|
|
|
+ trigger: 'change'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ executorId: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请选择选择执行人',
|
|
|
+ trigger: 'change'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ ruleNameList: [],
|
|
|
+ equipmentList: [],
|
|
|
+ currentNode: null,
|
|
|
+ rootId: null,
|
|
|
+ editLoading: false
|
|
|
+ };
|
|
|
+ },
|
|
|
+ computed: {},
|
|
|
+ async created () {},
|
|
|
+ methods: {
|
|
|
+ open (row) {
|
|
|
+ this.addForm.id = row.id;
|
|
|
+ this.getInfo(this.addForm.id);
|
|
|
+ this.addPatrolPlanDialog = true;
|
|
|
+ },
|
|
|
+ // 编辑详情
|
|
|
+ async getInfo (id) {
|
|
|
+ this.editLoading = true;
|
|
|
+ const res = await getById(id).catch(() => {
|
|
|
+ this.editLoading = false;
|
|
|
+ });
|
|
|
+ this.editLoading = false;
|
|
|
+ if (res?.data) {
|
|
|
+ const data = res.data;
|
|
|
+
|
|
|
+ this.addForm = data;
|
|
|
+
|
|
|
+ this.planDeviceList = this.addForm.planDeviceList.map((item) => ({
|
|
|
+ ...item,
|
|
|
+ ...item.substance
|
|
|
+ }));
|
|
|
+
|
|
|
+ const item = this.planDeviceList[0];
|
|
|
+
|
|
|
+ // const { equiLocation, equiLocationCode } = this.getEquiLocation(item);
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs.equiListTree.setCurrentKey(item.id);
|
|
|
+ this.equipmentInfo = {
|
|
|
+ equiTypeId: this.addForm.categoryId,
|
|
|
+ equiCode: item.code,
|
|
|
+ equiName: item.name
|
|
|
+ // equiModel: item.category.modelType
|
|
|
+ // equiLocation: equiLocation,
|
|
|
+ // equiLocationCode: equiLocationCode
|
|
|
+ };
|
|
|
+ this.currentEquItemIndex = 0;
|
|
|
+ // this.planDeviceList[0]['equiLocation'] = equiLocation;
|
|
|
+ // this.planDeviceList[0]['equiLocationCode'] = equiLocationCode;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleClose () {
|
|
|
+ this.addPatrolPlanDialog = false;
|
|
|
+ this.$refs.addFormRef.resetFields();
|
|
|
+ this.currentEquItemIndex = 0;
|
|
|
+ this.equipmentInfo = {};
|
|
|
+ this.addForm = {};
|
|
|
+ },
|
|
|
+ // 设备列表树点击
|
|
|
+ handleNodeClick (data, node) {
|
|
|
+ const { equiLocation, equiLocationCode } = this.getEquiLocation(data);
|
|
|
+ this.equipmentInfo = {
|
|
|
+ equiCode: data.code,
|
|
|
+ equiName: data.name,
|
|
|
+ deviceId: data.id,
|
|
|
+ equiModel: data.category.modelType,
|
|
|
+ equiLocation: equiLocation,
|
|
|
+ equiLocationCode: equiLocationCode
|
|
|
+ };
|
|
|
+ // 保存当前点击的设备列表某节点的index,在添加操作事项的时候,可以将事项list放到对应的节点对象中,以及切换节点的时候回显事项list
|
|
|
+ this.currentEquItemIndex = this.planDeviceList.findIndex(
|
|
|
+ (item) => item.code === data.code
|
|
|
+ );
|
|
|
+ this.clickedTreeNode = true;
|
|
|
+ this.planDeviceList[this.currentEquItemIndex]['equiLocation'] =
|
|
|
+ equiLocation;
|
|
|
+ this.planDeviceList[this.currentEquItemIndex]['equiLocationCode'] =
|
|
|
+ equiLocationCode;
|
|
|
+ },
|
|
|
+ // 封装 - 获取设备分类列表
|
|
|
+ async _getEquipmentList (val) {
|
|
|
+ const params = {
|
|
|
+ pageNum: 1,
|
|
|
+ size: -1,
|
|
|
+ categoryId: val || this.addForm.categoryId,
|
|
|
+ rootCategoryLevelId: this.rootId
|
|
|
+ };
|
|
|
+ try {
|
|
|
+ const res = await getAssetList(params);
|
|
|
+ this.planDeviceList = res.list;
|
|
|
+ this.planDeviceList.map((item) => {
|
|
|
+ item.showName = item.name + '(' + item.code + ')';
|
|
|
+ });
|
|
|
+ this.currentEquItemIndex = 0;
|
|
|
+ const item = this.planDeviceList[0];
|
|
|
+ const { equiLocation, equiLocationCode } = this.getEquiLocation(item);
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs.equiListTree.setCurrentKey(item.id);
|
|
|
+ this.equipmentInfo = {
|
|
|
+ equiTypeId: this.addForm.categoryId,
|
|
|
+ equiCode: item.code,
|
|
|
+ equiName: item.name,
|
|
|
+ equiModel: item.category.modelType,
|
|
|
+ equiLocation: equiLocation,
|
|
|
+ equiLocationCode: equiLocationCode
|
|
|
+ };
|
|
|
+ this.currentEquItemIndex = 0;
|
|
|
+ this.planDeviceList[0]['equiLocation'] = equiLocation;
|
|
|
+ this.planDeviceList[0]['equiLocationCode'] = equiLocationCode;
|
|
|
+
|
|
|
+ // 对比详情返回的数据和设备分类下面所有的设备列表,将sparePart同步过去
|
|
|
+ if (this.addForm.planDeviceList) {
|
|
|
+ for (let i = 0; i < this.planDeviceList.length; i++) {
|
|
|
+ for (let j = 0; j < this.addForm.planDeviceList.length; j++) {
|
|
|
+ if (
|
|
|
+ this.planDeviceList[i].id ===
|
|
|
+ this.addForm.planDeviceList[j].deviceId
|
|
|
+ ) {
|
|
|
+ this.$refs.equiListTree.setChecked(
|
|
|
+ this.planDeviceList[i].id,
|
|
|
+ true
|
|
|
+ );
|
|
|
+ this.planDeviceList[i]['workItems'] =
|
|
|
+ this.addForm.planDeviceList[j]['workItems'];
|
|
|
+ this.planDeviceList[i]['sparePart'] =
|
|
|
+ this.addForm.planDeviceList[j]['sparePart'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } catch (error) {
|
|
|
+ this.planDeviceList = [];
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //选择部门(搜索)
|
|
|
+ searchDeptNodeClick (info) {
|
|
|
+ // 根据部门获取人员
|
|
|
+ const params = { groupId: info };
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs.executorRef.getList(params);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 封装 - 获取设备位置名称和code方法
|
|
|
+ getEquiLocation (data) {
|
|
|
+ // 设备位置编码
|
|
|
+ const equiLocationCode = data.position[0].pathIds;
|
|
|
+ // 设备位置名称
|
|
|
+ const equiLocation = data.position[0].pathName;
|
|
|
+ return { equiLocation, equiLocationCode };
|
|
|
+ },
|
|
|
+ // 提交
|
|
|
+ submit () {
|
|
|
+ console.log(this.planDeviceList);
|
|
|
+ this.$refs.addFormRef.validate(async (valid) => {
|
|
|
+ if (valid) {
|
|
|
+ try {
|
|
|
+ let workItemsChecked = true;
|
|
|
+ const selectList = this.$refs.equiListTree.getCheckedNodes();
|
|
|
+ if (!selectList.length) {
|
|
|
+ this.$message.warning('请选择设备!');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ const planDeviceList = selectList.map((item) => {
|
|
|
+ const obj = this.planDeviceList.find(
|
|
|
+ (itm) => itm.id === item.id
|
|
|
+ );
|
|
|
+ if (!obj.workItems?.length) {
|
|
|
+ workItemsChecked = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ const { equiLocation, equiLocationCode } =
|
|
|
+ this.getEquiLocation(item);
|
|
|
+ return {
|
|
|
+ equiCode: item.code,
|
|
|
+ equiName: item.name,
|
|
|
+ deviceId: item.id,
|
|
|
+ equiModel: item.modelType,
|
|
|
+ equiLocation: equiLocation,
|
|
|
+ equiLocationCode: equiLocationCode,
|
|
|
+ workItems: obj.workItems ? obj.workItems : [],
|
|
|
+ sparePart: obj.sparePart ? obj.sparePart : []
|
|
|
+ };
|
|
|
+ });
|
|
|
+
|
|
|
+ if (!workItemsChecked || !selectList.length) {
|
|
|
+ this.$message.warning('请添加操作事项!');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (this.addForm.planType instanceof Object) {
|
|
|
+ this.addForm.planType =
|
|
|
+ this.planRuleTypeObj[this.addForm.planType.code];
|
|
|
+ }
|
|
|
+
|
|
|
+ // 将newData拼接成一个新数组赋值给后端接收字段
|
|
|
+ const params = this.addForm;
|
|
|
+ params.planDeviceList = planDeviceList;
|
|
|
+
|
|
|
+ params.type = this.dialogTitle.includes('巡点检')
|
|
|
+ ? 1
|
|
|
+ : this.dialogTitle.includes('保养')
|
|
|
+ ? 2
|
|
|
+ : 3;
|
|
|
+ await saveOrUpdate(params);
|
|
|
+ const type = this.dialogTitle.includes('新增') ? '新增' : '编辑';
|
|
|
+ this.handleClose();
|
|
|
+ this.$message.success(type + '成功!');
|
|
|
+ this.$emit('refreshList');
|
|
|
+ } catch (error) {
|
|
|
+ console.log(error);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+ ::v-deep .el-form {
|
|
|
+ .el-form-item {
|
|
|
+ margin-bottom: 14px;
|
|
|
+ }
|
|
|
+ .el-form-item__error {
|
|
|
+ padding-top: 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .equipment_box {
|
|
|
+ display: flex;
|
|
|
+ .left_aside {
|
|
|
+ width: 300px;
|
|
|
+ border: 1px solid #797979;
|
|
|
+ margin-right: 5px;
|
|
|
+ .equipment_list_title {
|
|
|
+ height: 24px;
|
|
|
+ line-height: 24px;
|
|
|
+ text-align: center;
|
|
|
+ background-color: #d7d7d7;
|
|
|
+ color: #000;
|
|
|
+ font-weight: 700;
|
|
|
+ }
|
|
|
+ .equipment_tree {
|
|
|
+ height: 510px;
|
|
|
+ overflow: auto;
|
|
|
+ }
|
|
|
+ ::v-deep .el-tree-node__expand-icon.el-icon-caret-right {
|
|
|
+ padding: 0;
|
|
|
+ }
|
|
|
+ ::v-deep
|
|
|
+ .el-tree--highlight-current
|
|
|
+ .el-tree-node.is-current
|
|
|
+ > .el-tree-node__content {
|
|
|
+ background-color: #d7f1fd !important;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .right_aside {
|
|
|
+ flex: 1;
|
|
|
+ border: 1px solid #797979;
|
|
|
+ padding: 10px;
|
|
|
+ .equipment_info {
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ border: 1px solid #ddd;
|
|
|
+ .item_info {
|
|
|
+ width: 33%;
|
|
|
+ height: 24px;
|
|
|
+ line-height: 24px;
|
|
|
+ display: flex;
|
|
|
+ .item_label {
|
|
|
+ width: 90px;
|
|
|
+ text-align: center;
|
|
|
+ background-color: #f2f2f2;
|
|
|
+ font-weight: 700;
|
|
|
+ }
|
|
|
+ .item_value {
|
|
|
+ border-bottom: 1px solid #f2f2f2;
|
|
|
+ flex: 1;
|
|
|
+ padding-left: 5px;
|
|
|
+ }
|
|
|
+ &:last-child {
|
|
|
+ width: 100%;
|
|
|
+ .item_value {
|
|
|
+ border: 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .dialog_footer {
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+</style>
|