|
@@ -13,13 +13,13 @@
|
|
:icon="Document"
|
|
:icon="Document"
|
|
size="small"
|
|
size="small"
|
|
@click="saveFlow"
|
|
@click="saveFlow"
|
|
- >保存</el-button
|
|
|
|
|
|
+ >保存</el-button
|
|
>
|
|
>
|
|
</el-space>
|
|
</el-space>
|
|
</div>
|
|
</div>
|
|
<div class="binContainer">
|
|
<div class="binContainer">
|
|
<div class="processTree">
|
|
<div class="processTree">
|
|
- <el-scrollbar >
|
|
|
|
|
|
+ <el-scrollbar>
|
|
<el-collapse v-model="activeNames">
|
|
<el-collapse v-model="activeNames">
|
|
<el-collapse-item
|
|
<el-collapse-item
|
|
v-for="(pProcess, pIndex) in list1"
|
|
v-for="(pProcess, pIndex) in list1"
|
|
@@ -53,32 +53,32 @@
|
|
</el-scrollbar>
|
|
</el-scrollbar>
|
|
</div>
|
|
</div>
|
|
<div class="flowBox">
|
|
<div class="flowBox">
|
|
- <el-scrollbar style="padding-bottom: 20px;">
|
|
|
|
- <VueDraggable
|
|
|
|
- v-model="list2"
|
|
|
|
- :animation="150"
|
|
|
|
- group="people"
|
|
|
|
- @update="onUpdate"
|
|
|
|
- style="min-width: 400px"
|
|
|
|
- @add="onClone"
|
|
|
|
- >
|
|
|
|
- <div
|
|
|
|
- v-for="(item, index) in list2"
|
|
|
|
- :key="item.uuid"
|
|
|
|
- class="flowItem"
|
|
|
|
- @click="clickFlowItem(item, index)"
|
|
|
|
|
|
+ <el-scrollbar style="padding-bottom: 20px">
|
|
|
|
+ <VueDraggable
|
|
|
|
+ v-model="list2"
|
|
|
|
+ :animation="150"
|
|
|
|
+ group="people"
|
|
|
|
+ @update="onUpdate"
|
|
|
|
+ style="min-width: 400px"
|
|
|
|
+ @add="onClone"
|
|
>
|
|
>
|
|
- <div class="indexLabel">工序 {{ index + 1 }}</div>
|
|
|
|
- <div :class="getFlowNameClass(index)">
|
|
|
|
- {{ item?.operationVO?.operationName }}
|
|
|
|
- </div>
|
|
|
|
- <div>
|
|
|
|
- <Delete class="flowDelete" @click.stop="clickDelete(index)" />
|
|
|
|
|
|
+ <div
|
|
|
|
+ v-for="(item, index) in list2"
|
|
|
|
+ :key="item.uuid"
|
|
|
|
+ class="flowItem"
|
|
|
|
+ @click="clickFlowItem(item, index)"
|
|
|
|
+ >
|
|
|
|
+ <div class="indexLabel">工序 {{ index + 1 }}</div>
|
|
|
|
+ <div :class="getFlowNameClass(index)">
|
|
|
|
+ {{ item?.operationVO?.operationName }}
|
|
|
|
+ </div>
|
|
|
|
+ <div>
|
|
|
|
+ <Delete class="flowDelete" @click.stop="clickDelete(index)" />
|
|
|
|
+ </div>
|
|
|
|
+ <Bottom class="arrow" v-show="index < list2.length - 1" />
|
|
</div>
|
|
</div>
|
|
- <Bottom class="arrow" v-show="index < list2.length - 1" />
|
|
|
|
- </div>
|
|
|
|
- </VueDraggable>
|
|
|
|
- </el-scrollbar>
|
|
|
|
|
|
+ </VueDraggable>
|
|
|
|
+ </el-scrollbar>
|
|
</div>
|
|
</div>
|
|
<div class="detailInfo">
|
|
<div class="detailInfo">
|
|
<div v-if="selectIndex > -1 && !isChanged">
|
|
<div v-if="selectIndex > -1 && !isChanged">
|
|
@@ -87,10 +87,14 @@
|
|
:option="formOption"
|
|
:option="formOption"
|
|
v-model="currentProcess"
|
|
v-model="currentProcess"
|
|
style="padding: 10px; background-color: white"
|
|
style="padding: 10px; background-color: white"
|
|
- />
|
|
|
|
|
|
+ >
|
|
|
|
+ <template #tbomUrl>
|
|
|
|
+ <FilesUpload v-model:src="currentProcess.tbomUrl" />
|
|
|
|
+ </template>
|
|
|
|
+ </avue-form>
|
|
<div class="editProcces">
|
|
<div class="editProcces">
|
|
<el-button type="primary" :icon="Grid" @click="editProComponent"
|
|
<el-button type="primary" :icon="Grid" @click="editProComponent"
|
|
- >编辑工序组件</el-button
|
|
|
|
|
|
+ >编辑工序组件</el-button
|
|
>
|
|
>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -100,310 +104,310 @@
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
<script setup>
|
|
<script setup>
|
|
- import {
|
|
|
|
- Back,
|
|
|
|
- Download,
|
|
|
|
- Document,
|
|
|
|
- Delete,
|
|
|
|
- Bottom,
|
|
|
|
- Grid,
|
|
|
|
- } from "@element-plus/icons-vue";
|
|
|
|
- import { VueDraggable } from "vue-draggable-plus";
|
|
|
|
- import { processTreeList } from "@/api/craft/process/index";
|
|
|
|
- import { useCommonStoreHook, useDictionaryStore } from "@/store";
|
|
|
|
- import {
|
|
|
|
- processesByRouteId,
|
|
|
|
- saveProcessInRoute,
|
|
|
|
- updateProcess,
|
|
|
|
- } from "@/api/craft/route/index";
|
|
|
|
- import { v4 as uuidv4 } from "uuid";
|
|
|
|
- import { formOption } from "./bindConfig";
|
|
|
|
- import { ElMessage } from "element-plus";
|
|
|
|
|
|
+import {
|
|
|
|
+ Back,
|
|
|
|
+ Download,
|
|
|
|
+ Document,
|
|
|
|
+ Delete,
|
|
|
|
+ Bottom,
|
|
|
|
+ Grid,
|
|
|
|
+} from "@element-plus/icons-vue";
|
|
|
|
+import { VueDraggable } from "vue-draggable-plus";
|
|
|
|
+import { processTreeList } from "@/api/craft/process/index";
|
|
|
|
+import { useCommonStoreHook, useDictionaryStore } from "@/store";
|
|
|
|
+import {
|
|
|
|
+ processesByRouteId,
|
|
|
|
+ saveProcessInRoute,
|
|
|
|
+ updateProcess,
|
|
|
|
+} from "@/api/craft/route/index";
|
|
|
|
+import { v4 as uuidv4 } from "uuid";
|
|
|
|
+import { formOption } from "./bindConfig";
|
|
|
|
+import { ElMessage } from "element-plus";
|
|
|
|
|
|
- const router = useRouter();
|
|
|
|
- const route = useRoute();
|
|
|
|
|
|
+const router = useRouter();
|
|
|
|
+const route = useRoute();
|
|
|
|
|
|
- // 数据字典相关
|
|
|
|
- const { dicts } = useDictionaryStore();
|
|
|
|
|
|
+// 数据字典相关
|
|
|
|
+const { dicts } = useDictionaryStore();
|
|
|
|
|
|
- // 顶部====================
|
|
|
|
- const back = () => {
|
|
|
|
- router.back();
|
|
|
|
- };
|
|
|
|
|
|
+// 顶部====================
|
|
|
|
+const back = () => {
|
|
|
|
+ router.back();
|
|
|
|
+};
|
|
|
|
|
|
- const download = () => {};
|
|
|
|
|
|
+const download = () => {};
|
|
|
|
|
|
- // 左侧工序树====================
|
|
|
|
- const activeNames = ref([0]);
|
|
|
|
- const handleChange = (val) => {};
|
|
|
|
|
|
+// 左侧工序树====================
|
|
|
|
+const activeNames = ref([0]);
|
|
|
|
+const handleChange = (val) => {};
|
|
|
|
|
|
- const list1 = ref([]);
|
|
|
|
|
|
+const list1 = ref([]);
|
|
|
|
|
|
- // 由于工序和(工序-工艺)模型字段不同,需要自定义克隆
|
|
|
|
- const clone = (origin) => {
|
|
|
|
- const data = JSON.parse(JSON.stringify(origin));
|
|
|
|
- return {
|
|
|
|
- created: "",
|
|
|
|
- creator: "",
|
|
|
|
- deleted: 0,
|
|
|
|
- deptId: "",
|
|
|
|
- id: null,
|
|
|
|
- uuid: uuidv4(),
|
|
|
|
- nextOperationId: "", //下一工序id
|
|
|
|
- operationId: "", // 当前工序id
|
|
|
|
- operationSort: 0, //当前工序排序号
|
|
|
|
- operationVO: data,
|
|
|
|
- orgId: "",
|
|
|
|
- processRouteId: route.params.id, //工艺路线id
|
|
|
|
- updated: "",
|
|
|
|
- updator: "",
|
|
|
|
- virtualCode: "",
|
|
|
|
- };
|
|
|
|
|
|
+// 由于工序和(工序-工艺)模型字段不同,需要自定义克隆
|
|
|
|
+const clone = (origin) => {
|
|
|
|
+ const data = JSON.parse(JSON.stringify(origin));
|
|
|
|
+ return {
|
|
|
|
+ created: "",
|
|
|
|
+ creator: "",
|
|
|
|
+ deleted: 0,
|
|
|
|
+ deptId: "",
|
|
|
|
+ id: null,
|
|
|
|
+ uuid: uuidv4(),
|
|
|
|
+ nextOperationId: "", //下一工序id
|
|
|
|
+ operationId: "", // 当前工序id
|
|
|
|
+ operationSort: 0, //当前工序排序号
|
|
|
|
+ operationVO: data,
|
|
|
|
+ orgId: "",
|
|
|
|
+ processRouteId: route.params.id, //工艺路线id
|
|
|
|
+ updated: "",
|
|
|
|
+ updator: "",
|
|
|
|
+ virtualCode: "",
|
|
};
|
|
};
|
|
|
|
+};
|
|
|
|
|
|
- // 保存中间的工序列表
|
|
|
|
- const saveFlow = async () => {
|
|
|
|
- for (let i = 0; i < list2.value.length; i++) {
|
|
|
|
- list2.value[i].operationSort = i;
|
|
|
|
- list2.value[i].operationId = list2.value[i]?.operationVO?.id;
|
|
|
|
- list2.value[i].operation = list2.value[i]?.operationVO; //后端入参和返回不一样,在这里处理一下。
|
|
|
|
- if (i === list2.value.length - 1) {
|
|
|
|
- list2.value[i].nextOperationId = null;
|
|
|
|
- } else {
|
|
|
|
- list2.value[i].nextOperationId = list2.value[i + 1]?.operationVO?.id;
|
|
|
|
- }
|
|
|
|
|
|
+// 保存中间的工序列表
|
|
|
|
+const saveFlow = async () => {
|
|
|
|
+ for (let i = 0; i < list2.value.length; i++) {
|
|
|
|
+ list2.value[i].operationSort = i;
|
|
|
|
+ list2.value[i].operationId = list2.value[i]?.operationVO?.id;
|
|
|
|
+ list2.value[i].operation = list2.value[i]?.operationVO; //后端入参和返回不一样,在这里处理一下。
|
|
|
|
+ if (i === list2.value.length - 1) {
|
|
|
|
+ list2.value[i].nextOperationId = null;
|
|
|
|
+ } else {
|
|
|
|
+ list2.value[i].nextOperationId = list2.value[i + 1]?.operationVO?.id;
|
|
}
|
|
}
|
|
- let p = {
|
|
|
|
- processRouteId: route.params.id,
|
|
|
|
- routeOpList: list2.value,
|
|
|
|
- };
|
|
|
|
- let res = await saveProcessInRoute(p);
|
|
|
|
- // Elmessage.success("保存成功");
|
|
|
|
- loadProcessesFlow();
|
|
|
|
|
|
+ }
|
|
|
|
+ let p = {
|
|
|
|
+ processRouteId: route.params.id,
|
|
|
|
+ routeOpList: list2.value,
|
|
};
|
|
};
|
|
|
|
+ let res = await saveProcessInRoute(p);
|
|
|
|
+ // Elmessage.success("保存成功");
|
|
|
|
+ loadProcessesFlow();
|
|
|
|
+};
|
|
|
|
|
|
- const loadTreeData = () => {
|
|
|
|
- processTreeList().then((res) => {
|
|
|
|
- list1.value = res.data ?? [];
|
|
|
|
- });
|
|
|
|
- };
|
|
|
|
|
|
+const loadTreeData = () => {
|
|
|
|
+ processTreeList().then((res) => {
|
|
|
|
+ list1.value = res.data ?? [];
|
|
|
|
+ });
|
|
|
|
+};
|
|
|
|
|
|
- // 中间列表====================
|
|
|
|
- const list2 = ref([]);
|
|
|
|
- const selectIndex = ref(-1);
|
|
|
|
- const isChanged = ref(true); //如果中间列表发生了改变则不显示右侧信息
|
|
|
|
- // 点击中间列表事件,需要设置index和值
|
|
|
|
- const clickFlowItem = (item, index) => {
|
|
|
|
- if (isChanged.value) {
|
|
|
|
- ElMessage.warning("请先保存工序列表");
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- selectIndex.value = index;
|
|
|
|
- currentProcess.value = item.operationVO;
|
|
|
|
- };
|
|
|
|
|
|
+// 中间列表====================
|
|
|
|
+const list2 = ref([]);
|
|
|
|
+const selectIndex = ref(-1);
|
|
|
|
+const isChanged = ref(true); //如果中间列表发生了改变则不显示右侧信息
|
|
|
|
+// 点击中间列表事件,需要设置index和值
|
|
|
|
+const clickFlowItem = (item, index) => {
|
|
|
|
+ if (isChanged.value) {
|
|
|
|
+ ElMessage.warning("请先保存工序列表");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ selectIndex.value = index;
|
|
|
|
+ currentProcess.value = item.operationVO;
|
|
|
|
+};
|
|
|
|
|
|
- const clickDelete = (index) => {
|
|
|
|
- list2.value.splice(index, 1);
|
|
|
|
- onUpdate();
|
|
|
|
- };
|
|
|
|
|
|
+const clickDelete = (index) => {
|
|
|
|
+ list2.value.splice(index, 1);
|
|
|
|
+ onUpdate();
|
|
|
|
+};
|
|
|
|
|
|
- const onClone = () => {
|
|
|
|
- isChanged.value = true;
|
|
|
|
- tipContent.value = "请先保存工序列表,再选择工序进行编辑";
|
|
|
|
- };
|
|
|
|
|
|
+const onClone = () => {
|
|
|
|
+ isChanged.value = true;
|
|
|
|
+ tipContent.value = "请先保存工序列表,再选择工序进行编辑";
|
|
|
|
+};
|
|
|
|
|
|
- const onUpdate = () => {
|
|
|
|
- // 中间发生了改变调用
|
|
|
|
- selectIndex.value = -1;
|
|
|
|
- isChanged.value = true;
|
|
|
|
- tipContent.value = "请先保存工序列表,再选择工序进行编辑";
|
|
|
|
- };
|
|
|
|
|
|
+const onUpdate = () => {
|
|
|
|
+ // 中间发生了改变调用
|
|
|
|
+ selectIndex.value = -1;
|
|
|
|
+ isChanged.value = true;
|
|
|
|
+ tipContent.value = "请先保存工序列表,再选择工序进行编辑";
|
|
|
|
+};
|
|
|
|
|
|
- const getFlowNameClass = (index) => {
|
|
|
|
- return index === selectIndex.value ? "nameLabelSelect" : "nameLabelCommon";
|
|
|
|
- };
|
|
|
|
|
|
+const getFlowNameClass = (index) => {
|
|
|
|
+ return index === selectIndex.value ? "nameLabelSelect" : "nameLabelCommon";
|
|
|
|
+};
|
|
|
|
|
|
- const loadProcessesFlow = async () => {
|
|
|
|
- const res = await processesByRouteId(route.params.id);
|
|
|
|
|
|
+const loadProcessesFlow = async () => {
|
|
|
|
+ const res = await processesByRouteId(route.params.id);
|
|
|
|
|
|
- list2.value = res.data ?? [];
|
|
|
|
- isChanged.value = false;
|
|
|
|
- tipContent.value = "请选择需要编辑的工序";
|
|
|
|
- };
|
|
|
|
|
|
+ list2.value = res.data ?? [];
|
|
|
|
+ isChanged.value = false;
|
|
|
|
+ tipContent.value = "请选择需要编辑的工序";
|
|
|
|
+};
|
|
|
|
|
|
- // 右侧具体信息====================
|
|
|
|
- const formRef = ref(null);
|
|
|
|
- const currentProcess = ref({});
|
|
|
|
- const tipContent = ref("");
|
|
|
|
- const handleSubmit = () => {};
|
|
|
|
|
|
+// 右侧具体信息====================
|
|
|
|
+const formRef = ref(null);
|
|
|
|
+const currentProcess = ref({});
|
|
|
|
+const tipContent = ref("");
|
|
|
|
+const handleSubmit = () => {};
|
|
|
|
|
|
- const editProComponent = async () => {
|
|
|
|
- // saveFlow();
|
|
|
|
- let res = await updateProcess(currentProcess.value);
|
|
|
|
- ElMessage.success("保存成功");
|
|
|
|
- router.push({
|
|
|
|
- path: `/base/craftManagement/processCom/${currentProcess.value.id}`,
|
|
|
|
- query: { prodtCode: route.query.prodtCode, routeId: route.query.routeId },
|
|
|
|
- });
|
|
|
|
- };
|
|
|
|
|
|
+const editProComponent = async () => {
|
|
|
|
+ // saveFlow();
|
|
|
|
+ let res = await updateProcess(currentProcess.value);
|
|
|
|
+ ElMessage.success("保存成功");
|
|
|
|
+ router.push({
|
|
|
|
+ path: `/base/craftManagement/processCom/${currentProcess.value.id}`,
|
|
|
|
+ query: { prodtCode: route.query.prodtCode, routeId: route.query.routeId },
|
|
|
|
+ });
|
|
|
|
+};
|
|
|
|
|
|
- // 全局=======
|
|
|
|
|
|
+// 全局=======
|
|
|
|
|
|
- onMounted(() => {
|
|
|
|
- loadTreeData();
|
|
|
|
- loadProcessesFlow();
|
|
|
|
- });
|
|
|
|
|
|
+onMounted(() => {
|
|
|
|
+ loadTreeData();
|
|
|
|
+ loadProcessesFlow();
|
|
|
|
+});
|
|
|
|
|
|
- const getNameByDictType = (dictValue) => {
|
|
|
|
- let str = "";
|
|
|
|
- dicts?.workshop_section?.forEach((element) => {
|
|
|
|
- if (element?.dictValue === dictValue) {
|
|
|
|
- str = element?.dictLabel ?? "===";
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- return str;
|
|
|
|
- };
|
|
|
|
|
|
+const getNameByDictType = (dictValue) => {
|
|
|
|
+ let str = "";
|
|
|
|
+ dicts?.workshop_section?.forEach((element) => {
|
|
|
|
+ if (element?.dictValue === dictValue) {
|
|
|
|
+ str = element?.dictLabel ?? "===";
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ return str;
|
|
|
|
+};
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
- .binContainer {
|
|
|
|
- height: calc(100vh - 165px);
|
|
|
|
- background-color: #f5f7f9;
|
|
|
|
- overflow-y: scroll;
|
|
|
|
- // background-color: white;
|
|
|
|
- padding: 0;
|
|
|
|
- display: flex;
|
|
|
|
- }
|
|
|
|
|
|
+.binContainer {
|
|
|
|
+ height: calc(100vh - 165px);
|
|
|
|
+ background-color: #f5f7f9;
|
|
|
|
+ overflow-y: scroll;
|
|
|
|
+ // background-color: white;
|
|
|
|
+ padding: 0;
|
|
|
|
+ display: flex;
|
|
|
|
+}
|
|
|
|
|
|
- .header {
|
|
|
|
- height: 50px;
|
|
|
|
- display: flex;
|
|
|
|
- background-color: #f5f7f9;
|
|
|
|
- justify-content: space-between;
|
|
|
|
- align-items: center;
|
|
|
|
- border-bottom: 1px solid rgba(0, 0, 0, 0.1);
|
|
|
|
- }
|
|
|
|
|
|
+.header {
|
|
|
|
+ height: 50px;
|
|
|
|
+ display: flex;
|
|
|
|
+ background-color: #f5f7f9;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ align-items: center;
|
|
|
|
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
|
|
|
|
+}
|
|
|
|
|
|
- .processTree {
|
|
|
|
- width: 220px;
|
|
|
|
- height: 100%;
|
|
|
|
- border-right: 1px solid rgba(0, 0, 0, 0.1);
|
|
|
|
- .treeChild {
|
|
|
|
- background: #f2f2f2;
|
|
|
|
- padding: 20px 8px 10px 8px;
|
|
|
|
- .childItem {
|
|
|
|
- width: 100%;
|
|
|
|
- height: 28px;
|
|
|
|
- background: #ffffff;
|
|
|
|
- border-radius: 4px 4px 4px 4px;
|
|
|
|
- border: 1px solid rgba(35, 32, 50, 0.1);
|
|
|
|
- margin-bottom: 10px;
|
|
|
|
- text-align: center;
|
|
|
|
- }
|
|
|
|
|
|
+.processTree {
|
|
|
|
+ width: 220px;
|
|
|
|
+ height: 100%;
|
|
|
|
+ border-right: 1px solid rgba(0, 0, 0, 0.1);
|
|
|
|
+ .treeChild {
|
|
|
|
+ background: #f2f2f2;
|
|
|
|
+ padding: 20px 8px 10px 8px;
|
|
|
|
+ .childItem {
|
|
|
|
+ width: 100%;
|
|
|
|
+ height: 28px;
|
|
|
|
+ background: #ffffff;
|
|
|
|
+ border-radius: 4px 4px 4px 4px;
|
|
|
|
+ border: 1px solid rgba(35, 32, 50, 0.1);
|
|
|
|
+ margin-bottom: 10px;
|
|
|
|
+ text-align: center;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+}
|
|
|
|
|
|
- .flowBox {
|
|
|
|
- flex: 1;
|
|
|
|
- display: flex;
|
|
|
|
- justify-content: center;
|
|
|
|
- overflow-y: auto;
|
|
|
|
- padding-top: 47px;
|
|
|
|
- padding-bottom: 47px;
|
|
|
|
- .flowContain {
|
|
|
|
- width: 400px;
|
|
|
|
|
|
+.flowBox {
|
|
|
|
+ flex: 1;
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: center;
|
|
|
|
+ overflow-y: auto;
|
|
|
|
+ padding-top: 47px;
|
|
|
|
+ padding-bottom: 47px;
|
|
|
|
+ .flowContain {
|
|
|
|
+ width: 400px;
|
|
|
|
|
|
- min-height: 200px;
|
|
|
|
- }
|
|
|
|
- .flowItem {
|
|
|
|
- height: 50px;
|
|
|
|
- width: 400px;
|
|
|
|
- margin-bottom: 20px;
|
|
|
|
- display: flex;
|
|
|
|
- justify-content: space-between;
|
|
|
|
- position: relative;
|
|
|
|
- .indexLabel {
|
|
|
|
- line-height: 50px;
|
|
|
|
|
|
+ min-height: 200px;
|
|
|
|
+ }
|
|
|
|
+ .flowItem {
|
|
|
|
+ height: 50px;
|
|
|
|
+ width: 400px;
|
|
|
|
+ margin-bottom: 20px;
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ position: relative;
|
|
|
|
+ .indexLabel {
|
|
|
|
+ line-height: 50px;
|
|
|
|
|
|
- font-size: 14px;
|
|
|
|
- color: #6e7993;
|
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
+ color: #6e7993;
|
|
|
|
|
|
- text-align: left;
|
|
|
|
- }
|
|
|
|
- .nameLabelCommon {
|
|
|
|
- width: 299px;
|
|
|
|
- line-height: 50px;
|
|
|
|
- background: #ffffff;
|
|
|
|
- box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.5);
|
|
|
|
- border-radius: 4px 4px 4px 4px;
|
|
|
|
- border: 1px solid #232032;
|
|
|
|
- text-align: center;
|
|
|
|
- }
|
|
|
|
- .nameLabelSelect {
|
|
|
|
- width: 299px;
|
|
|
|
- line-height: 50px;
|
|
|
|
- background: rgba(10, 89, 247, 0.2);
|
|
|
|
- box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.5);
|
|
|
|
- border-radius: 4px 4px 4px 4px;
|
|
|
|
- border: 2px solid #0a59f7;
|
|
|
|
- text-align: center;
|
|
|
|
- }
|
|
|
|
- .flowDelete {
|
|
|
|
- width: 1em;
|
|
|
|
- height: 1em;
|
|
|
|
- color: red;
|
|
|
|
- visibility: hidden;
|
|
|
|
- }
|
|
|
|
- .arrow {
|
|
|
|
- position: absolute;
|
|
|
|
- width: 10px;
|
|
|
|
- height: 18px;
|
|
|
|
- top: 50px;
|
|
|
|
- left: 50%;
|
|
|
|
- }
|
|
|
|
|
|
+ text-align: left;
|
|
|
|
+ }
|
|
|
|
+ .nameLabelCommon {
|
|
|
|
+ width: 299px;
|
|
|
|
+ line-height: 50px;
|
|
|
|
+ background: #ffffff;
|
|
|
|
+ box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.5);
|
|
|
|
+ border-radius: 4px 4px 4px 4px;
|
|
|
|
+ border: 1px solid #232032;
|
|
|
|
+ text-align: center;
|
|
}
|
|
}
|
|
- .flowItem:hover {
|
|
|
|
- .flowDelete {
|
|
|
|
- visibility: visible;
|
|
|
|
- }
|
|
|
|
|
|
+ .nameLabelSelect {
|
|
|
|
+ width: 299px;
|
|
|
|
+ line-height: 50px;
|
|
|
|
+ background: rgba(10, 89, 247, 0.2);
|
|
|
|
+ box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.5);
|
|
|
|
+ border-radius: 4px 4px 4px 4px;
|
|
|
|
+ border: 2px solid #0a59f7;
|
|
|
|
+ text-align: center;
|
|
|
|
+ }
|
|
|
|
+ .flowDelete {
|
|
|
|
+ width: 1em;
|
|
|
|
+ height: 1em;
|
|
|
|
+ color: red;
|
|
|
|
+ visibility: hidden;
|
|
|
|
+ }
|
|
|
|
+ .arrow {
|
|
|
|
+ position: absolute;
|
|
|
|
+ width: 10px;
|
|
|
|
+ height: 18px;
|
|
|
|
+ top: 50px;
|
|
|
|
+ left: 50%;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
- .detailInfo {
|
|
|
|
- width: 320px;
|
|
|
|
- height: 100%;
|
|
|
|
- border-left: 1px solid rgba(0, 0, 0, 0.1);
|
|
|
|
- .editProcces {
|
|
|
|
- display: flex;
|
|
|
|
- justify-content: center;
|
|
|
|
- margin-top: 15px;
|
|
|
|
|
|
+ .flowItem:hover {
|
|
|
|
+ .flowDelete {
|
|
|
|
+ visibility: visible;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+}
|
|
|
|
|
|
- .title {
|
|
|
|
- line-height: 44px;
|
|
|
|
- color: #6f7991;
|
|
|
|
- font-size: 14px;
|
|
|
|
- font-weight: bold;
|
|
|
|
- text-align: left;
|
|
|
|
- margin-left: 20px;
|
|
|
|
- }
|
|
|
|
- .title2 {
|
|
|
|
- color: #232032;
|
|
|
|
- font-size: 14px;
|
|
|
|
- text-align: left;
|
|
|
|
- margin-left: 19px;
|
|
|
|
- }
|
|
|
|
- .tipContent {
|
|
|
|
- width: 100%;
|
|
|
|
- text-align: center;
|
|
|
|
- margin-top: 20px;
|
|
|
|
- color: #e6a23c;
|
|
|
|
|
|
+.detailInfo {
|
|
|
|
+ width: 320px;
|
|
|
|
+ height: 100%;
|
|
|
|
+ border-left: 1px solid rgba(0, 0, 0, 0.1);
|
|
|
|
+ .editProcces {
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: center;
|
|
|
|
+ margin-top: 15px;
|
|
}
|
|
}
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.title {
|
|
|
|
+ line-height: 44px;
|
|
|
|
+ color: #6f7991;
|
|
|
|
+ font-size: 14px;
|
|
|
|
+ font-weight: bold;
|
|
|
|
+ text-align: left;
|
|
|
|
+ margin-left: 20px;
|
|
|
|
+}
|
|
|
|
+.title2 {
|
|
|
|
+ color: #232032;
|
|
|
|
+ font-size: 14px;
|
|
|
|
+ text-align: left;
|
|
|
|
+ margin-left: 19px;
|
|
|
|
+}
|
|
|
|
+.tipContent {
|
|
|
|
+ width: 100%;
|
|
|
|
+ text-align: center;
|
|
|
|
+ margin-top: 20px;
|
|
|
|
+ color: #e6a23c;
|
|
|
|
+}
|
|
</style>
|
|
</style>
|
|
|
|
|
|
<style>
|
|
<style>
|
|
- .el-collapse-item__content {
|
|
|
|
- padding: 0;
|
|
|
|
- }
|
|
|
|
|
|
+.el-collapse-item__content {
|
|
|
|
+ padding: 0;
|
|
|
|
+}
|
|
</style>
|
|
</style>
|