5 changed files with 2 additions and 305 deletions
-
9src/apis/ore.ts
-
90src/components/home/SelectCraft/index.vue
-
14src/components/home/SetTemperature/index.vue
-
2src/components/system/Check/index.vue
-
192src/views/ore/index.vue
@ -1,9 +0,0 @@ |
|||||
import http from 'libs/http' |
|
||||
|
|
||||
export const getOreList = (): Promise<System.PageResponse<Ore.OreItem>> => http.get(`/ores/list`) |
|
||||
|
|
||||
export const saveOre = (params: { name: string }): Promise<null> => http.post(`/ores`, params) |
|
||||
|
|
||||
export const editOre = (params: { id: number, name: string }): Promise<null> => http.put(`/ores`, params) |
|
||||
|
|
||||
export const delOre = (ids: string): Promise<null> => http.delete(`/ores/${ids}`) |
|
@ -1,90 +0,0 @@ |
|||||
<script setup lang="ts"> |
|
||||
import { setCraft } from 'apis/crafts' |
|
||||
import { getOreList } from 'apis/ore' |
|
||||
import { FtMessage } from 'libs/message' |
|
||||
import { useHomeStore } from 'stores/homeStore' |
|
||||
import { onMounted, ref } from 'vue' |
|
||||
|
|
||||
const emits = defineEmits(['ok', 'cancel']) |
|
||||
|
|
||||
const homeStore = useHomeStore() |
|
||||
|
|
||||
onMounted(() => { |
|
||||
getOres() |
|
||||
}) |
|
||||
|
|
||||
const form = ref({ |
|
||||
craftId: undefined, |
|
||||
}) |
|
||||
const formRef = ref() |
|
||||
|
|
||||
const rules = { |
|
||||
craftId: [ |
|
||||
{ required: true, message: '请选择工艺', trigger: 'change' }, |
|
||||
], |
|
||||
} |
|
||||
|
|
||||
const okHandle = async () => { |
|
||||
try { |
|
||||
const valid = await formRef.value.validate() |
|
||||
if (!valid) { |
|
||||
return |
|
||||
} |
|
||||
for (let i = 0; i < homeStore.heatAreaList.filter(item => item.selected).length; i++) { |
|
||||
await setCraft({ |
|
||||
heatId: homeStore.heatAreaList.filter(item => item.selected)[i].value, |
|
||||
craftId: form.value.craftId, |
|
||||
}) |
|
||||
} |
|
||||
FtMessage.success('工艺已设定') |
|
||||
emits('ok') |
|
||||
} |
|
||||
catch (error) { |
|
||||
console.log(error) |
|
||||
} |
|
||||
} |
|
||||
const cancel = () => { |
|
||||
emits('cancel') |
|
||||
} |
|
||||
|
|
||||
const oreList = ref<Ore.OreItem[]>([]) |
|
||||
|
|
||||
const getOres = async () => { |
|
||||
const res = await getOreList() |
|
||||
oreList.value = res.list |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<template> |
|
||||
<FtDialog visible title="选择工艺" width="40%" :ok-handle="okHandle" @cancel="cancel"> |
|
||||
<el-form ref="formRef" label-width="auto" :model="form" :rules="rules"> |
|
||||
<el-form-item label="加热区"> |
|
||||
<el-tag v-for="item in homeStore.heatAreaList.filter(item => item.selected)" :key="item.value" class="mask-tag"> |
|
||||
{{ item.label }} |
|
||||
</el-tag> |
|
||||
</el-form-item> |
|
||||
<el-form-item label="工艺" prop="craftId"> |
|
||||
<el-select v-model="form.craftId" placeholder="请选择工艺"> |
|
||||
<el-option-group |
|
||||
v-for="group in oreList" |
|
||||
:key="group.id" |
|
||||
:label="group.oresName" |
|
||||
> |
|
||||
<el-option |
|
||||
v-for="item in group.craftsList" |
|
||||
:key="item.id" |
|
||||
:label="item.name" |
|
||||
:value="item.id" |
|
||||
/> |
|
||||
</el-option-group> |
|
||||
</el-select> |
|
||||
</el-form-item> |
|
||||
</el-form> |
|
||||
</FtDialog> |
|
||||
</template> |
|
||||
|
|
||||
<style scoped lang="scss"> |
|
||||
.el-tag { |
|
||||
margin-right: 5px; |
|
||||
} |
|
||||
</style> |
|
@ -1,192 +0,0 @@ |
|||||
<script lang="ts" setup> |
|
||||
import { ElMessage, ElMessageBox } from 'element-plus' |
|
||||
import { onMounted, ref, watch } from 'vue' |
|
||||
import { useRoute, useRouter } from 'vue-router' |
|
||||
import { delOre, editOre, getOreList, saveOre } from '@/apis/ore' |
|
||||
|
|
||||
onMounted(() => { |
|
||||
queryOresList() |
|
||||
}) |
|
||||
const tableData = ref<Ore.OreItem[]>([]) |
|
||||
const visible = ref(false) |
|
||||
const oreForm = ref() |
|
||||
const name = ref() |
|
||||
const loading = ref(false) |
|
||||
const selectedList = ref<Ore.OreItem[]>([]) |
|
||||
const showCraftCommponent = ref(false) |
|
||||
const router = useRouter() |
|
||||
const route = useRoute() |
|
||||
const queryOresList = () => { |
|
||||
getOreList().then((res) => { |
|
||||
if (res && res.list) { |
|
||||
tableData.value = res.list |
|
||||
} |
|
||||
}) |
|
||||
} |
|
||||
|
|
||||
watch(() => route.path, (newVal) => { |
|
||||
if (newVal === '/ore') { |
|
||||
queryOresList() |
|
||||
} |
|
||||
}) |
|
||||
const onSelectionChange = (rows: Ore.OreItem[]) => { |
|
||||
selectedList.value = rows |
|
||||
} |
|
||||
|
|
||||
const onAddOre = () => { |
|
||||
visible.value = true |
|
||||
} |
|
||||
|
|
||||
const onEditOre = () => { |
|
||||
if (!selectedList.value.length) { |
|
||||
ElMessage.warning('请选择要编辑的数据') |
|
||||
return |
|
||||
} |
|
||||
if (selectedList.value.length !== 1) { |
|
||||
ElMessage.warning('只能编辑一条数据') |
|
||||
return |
|
||||
} |
|
||||
const editItem = selectedList.value[0] |
|
||||
oreForm.value = { ...editItem } |
|
||||
name.value = editItem.oresName |
|
||||
visible.value = true |
|
||||
} |
|
||||
|
|
||||
const onDelOre = () => { |
|
||||
if (!selectedList.value.length) { |
|
||||
ElMessage.warning('请选择要删除的数据') |
|
||||
return |
|
||||
} |
|
||||
ElMessageBox.confirm( |
|
||||
'确认删除选中的数据吗?', |
|
||||
'确认提示', |
|
||||
{ |
|
||||
confirmButtonText: '确认', |
|
||||
cancelButtonText: '取消', |
|
||||
type: 'warning', |
|
||||
}, |
|
||||
).then(() => { |
|
||||
const ids = selectedList.value.map(item => item.id) |
|
||||
delOre(ids.join(',')).then(() => { |
|
||||
ElMessage.success('删除成功') |
|
||||
queryOresList() |
|
||||
}) |
|
||||
}) |
|
||||
} |
|
||||
|
|
||||
const closeDialog = () => { |
|
||||
visible.value = false |
|
||||
} |
|
||||
|
|
||||
const onConfirm = () => { |
|
||||
if (!name.value) { |
|
||||
ElMessage.warning('请输入矿石名称') |
|
||||
return |
|
||||
} |
|
||||
loading.value = true |
|
||||
const params = { |
|
||||
...oreForm.value, |
|
||||
} |
|
||||
let apiFn = null |
|
||||
if (oreForm.value && oreForm.value.id) { |
|
||||
params.id = oreForm.value.id |
|
||||
apiFn = editOre |
|
||||
} |
|
||||
else { |
|
||||
apiFn = saveOre |
|
||||
} |
|
||||
params.oresName = name.value |
|
||||
params.name = name.value |
|
||||
apiFn(params).then(() => { |
|
||||
loading.value = false |
|
||||
visible.value = false |
|
||||
name.value = '' |
|
||||
oreForm.value = {} |
|
||||
queryOresList() |
|
||||
}).catch((e) => { |
|
||||
console.error('操作失败==', e) |
|
||||
loading.value = true |
|
||||
}) |
|
||||
} |
|
||||
|
|
||||
const onShowCraft = () => { |
|
||||
if (!selectedList.value.length) { |
|
||||
ElMessage.warning('请选择要查看的数据') |
|
||||
return |
|
||||
} |
|
||||
if (selectedList.value.length !== 1) { |
|
||||
ElMessage.warning('只能查看一条数据的工艺') |
|
||||
return |
|
||||
} |
|
||||
const editItem = selectedList.value[0] |
|
||||
showCraftCommponent.value = true |
|
||||
router.push({ |
|
||||
path: '/ore/craft', |
|
||||
query: { oreId: editItem.id }, |
|
||||
}) |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<template> |
|
||||
<div v-if="route.path === '/ore/craft'"> |
|
||||
<router-view /> |
|
||||
</div> |
|
||||
<div v-else> |
|
||||
<div> |
|
||||
<FtButton type="primary" @click="onAddOre"> |
|
||||
添加矿石 |
|
||||
</FtButton> |
|
||||
<FtButton type="primary" @click="onEditOre"> |
|
||||
编辑矿石 |
|
||||
</FtButton> |
|
||||
<FtButton @click="onDelOre"> |
|
||||
删除矿石 |
|
||||
</FtButton> |
|
||||
<FtButton @click="onShowCraft"> |
|
||||
查看工艺 |
|
||||
</FtButton> |
|
||||
</div> |
|
||||
<div> |
|
||||
<el-table :data="tableData" stripe style="width: 100%" @selection-change="onSelectionChange"> |
|
||||
<el-table-column type="selection" width="55" /> |
|
||||
<el-table-column type="index" width="50" /> |
|
||||
<el-table-column prop="oresName" label="矿石名称" /> |
|
||||
<el-table-column prop="craftNames" label="工艺名称"> |
|
||||
<template #default="scoped"> |
|
||||
<div class="craft-tag"> |
|
||||
<el-tag v-for="item in scoped.row.craftsList" :key="item.id" type="info" style="margin-left: 5px;"> |
|
||||
{{ item.name }} |
|
||||
</el-tag> |
|
||||
</div> |
|
||||
</template> |
|
||||
</el-table-column> |
|
||||
<el-table-column prop="createTime" label="创建时间" /> |
|
||||
<el-table-column prop="updateTime" label="更新时间" /> |
|
||||
</el-table> |
|
||||
<!-- <FtTable :columns="columns" has-header :btn-list="btnList" :get-data-fn="queryOresList" /> --> |
|
||||
</div> |
|
||||
<FtDialog v-model="visible" title="添加矿石" width="30%" :ok-handle="onConfirm" @cancel="closeDialog"> |
|
||||
<div class="add-content"> |
|
||||
<label>矿石名称:</label> |
|
||||
<span><el-input v-model="name" placeholder="矿石名称" style="width:200px" /></span> |
|
||||
</div> |
|
||||
</FtDialog> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<style scoped> |
|
||||
.add-content{ |
|
||||
height: 50px; |
|
||||
display: flex; |
|
||||
align-items: center; |
|
||||
} |
|
||||
.footer{ |
|
||||
display: flex; |
|
||||
justify-content: center; |
|
||||
align-items: center; |
|
||||
height: 4rem; |
|
||||
} |
|
||||
.craft-tag{ |
|
||||
display: flex; |
|
||||
} |
|
||||
</style> |
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue