419 lines
12 KiB
Vue
419 lines
12 KiB
Vue
<template>
|
||
<div>
|
||
<base-right-dialog
|
||
size="1000px"
|
||
ref="baseRightDialog"
|
||
:footerShow="true"
|
||
:dialogVisible.sync="dialogVisible"
|
||
:title="dialogTitle + ' 集成前台任务'"
|
||
@handleClose="handleDialogClose"
|
||
:type="dialogType"
|
||
:submitShow="submitShow"
|
||
@handleConfirmClick="handleConfirmClick"
|
||
>
|
||
<base-form
|
||
ref="basicsForm"
|
||
:formRow="formRow"
|
||
:isFunBtn="false"
|
||
:rules="basicsRules"
|
||
class="dialog_form"
|
||
:spanWidth="`120px`"
|
||
:loading="vLoading"
|
||
|
||
>
|
||
<template #plugName="{row}">
|
||
<div>
|
||
<baseNewSelect
|
||
:lookflag="false"
|
||
:ruleForm="row"
|
||
:disabled="!submitShow"
|
||
v-model="row['plugName']"
|
||
@selectChangeHandle="selectChangeHandle"
|
||
></baseNewSelect>
|
||
</div>
|
||
</template>
|
||
</base-form>
|
||
<base-table
|
||
:border="true"
|
||
:showIndex="true"
|
||
:tableColumn="tableVersionColumn"
|
||
:tableData="tableVersionData"
|
||
:funWidth="80"
|
||
:funData="funData"
|
||
@onFunc="onFunc"
|
||
>
|
||
<!-- 编码-->
|
||
<template v-slot:argName="{ row }">
|
||
<div style="width: 100%">
|
||
{{row.argName}}
|
||
</div>
|
||
</template>
|
||
<template v-slot:argValue="{ row }">
|
||
<div style="width: 100%">
|
||
<!-- 若参数类型为1 (字符串) 否则为2 (日期)-->
|
||
<template v-if="row.argType==1">
|
||
<template v-if="!submitShow">{{row.argValue}}</template>
|
||
<el-input
|
||
v-else
|
||
v-model="row.argValue"
|
||
clearable
|
||
type="text"
|
||
:disabled="!submitShow"
|
||
></el-input>
|
||
</template>
|
||
<template v-else>
|
||
<template v-if="!submitShow">{{row.startDate}}-{{row.endDate}}</template>
|
||
<template v-else>
|
||
<el-date-picker
|
||
v-model="row.startDate"
|
||
type="date"
|
||
placeholder="选择开始日期"
|
||
:disabled="!submitShow"
|
||
format="yyyy 年 MM 月 dd 日"
|
||
value-format="yyyy-MM-dd">
|
||
</el-date-picker>
|
||
<el-date-picker
|
||
v-model="row.endDate"
|
||
type="date"
|
||
placeholder="选择结束日期"
|
||
:disabled="!submitShow"
|
||
format="yyyy 年 MM 月 dd 日"
|
||
value-format="yyyy-MM-dd">
|
||
</el-date-picker>
|
||
</template>
|
||
|
||
</template>
|
||
</div>
|
||
</template>
|
||
<template v-slot:argType="{ row }">
|
||
<div style="width: 100%">
|
||
<el-radio-group v-model="row.argType" :disabled="true">
|
||
<el-radio label="1">字符串</el-radio>
|
||
<el-radio label="2">日期</el-radio>
|
||
</el-radio-group>
|
||
</div>
|
||
</template>
|
||
<template v-slot:remark="{ row }">
|
||
<div style="width: 100%">
|
||
<template v-if="!submitShow">{{row.remark}}</template>
|
||
<el-input
|
||
v-else
|
||
v-model="row.remark"
|
||
clearable
|
||
type="text"
|
||
:disabled="!submitShow"
|
||
></el-input>
|
||
</div>
|
||
</template>
|
||
</base-table>
|
||
</base-right-dialog>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import baseRightDialog from "@/components/base/baseRightDialog";
|
||
import baseNewSelect from "./baseNewSelect.vue"
|
||
import baseForm from "@/components/base/baseNewForm";
|
||
import baseTable from "@/components/base/baseTable";
|
||
import configData from "./configData";
|
||
import { authApi } from "@/api/apis/auth";
|
||
export default {
|
||
components: {
|
||
baseRightDialog,
|
||
baseForm,
|
||
baseTable,
|
||
baseNewSelect
|
||
},
|
||
data() {
|
||
return {
|
||
dialogVisible: false,
|
||
dialogTitle: "",
|
||
dialogType: "",
|
||
formRow: configData.formRow,
|
||
basicsRules: configData.basicsRules,
|
||
vLoading: false,
|
||
newMarryOptions: [],
|
||
submitShow: true,
|
||
loadingType: true,
|
||
tableVersionData: [],
|
||
tableVersionColumn: configData.tableVersionColumn,
|
||
funData: [],
|
||
isEdit: false,
|
||
select_dist:{},
|
||
plugNameOptions:[],
|
||
};
|
||
},
|
||
mounted() {
|
||
this.initSelect()
|
||
},
|
||
methods: {
|
||
// 插件下拉
|
||
async initSelect(){
|
||
let res = await authApi(
|
||
"pluginService",
|
||
"plugins",
|
||
"queryPluginsByType",
|
||
"",
|
||
{
|
||
"pluginType": "1"
|
||
}
|
||
);
|
||
if(res.status == 200){
|
||
console.log(res.attribute)
|
||
res.attribute.forEach(item=>{
|
||
this.$set(this.select_dist,item.pluginId,item)
|
||
})
|
||
this.formRow[0].elCol[0].options = res.attribute
|
||
}
|
||
},
|
||
//下拉改变事件
|
||
selectChangeHandle(val, options){
|
||
if(!val){
|
||
this.tableVersionData=[]
|
||
return
|
||
}
|
||
//找到这条
|
||
let obj = options.find(item=>{
|
||
return item.plugName === val
|
||
})
|
||
console.log(obj)
|
||
this.$set(this.$refs.basicsForm.ruleForm,'plugId',obj.plugId)
|
||
this.$set(this.$refs.basicsForm.ruleForm,'plugName',obj.plugName)
|
||
this.searchInfo(obj.plugId)
|
||
},
|
||
//下拉后查询单据详情
|
||
async searchInfo(plugId){
|
||
let params = {
|
||
plugId
|
||
};
|
||
let res = await authApi(
|
||
"sysPlugArgService",
|
||
"integrationTaskService",
|
||
"getPlugArgByPlugId",
|
||
"",
|
||
params
|
||
);
|
||
console.log(res,'res')
|
||
if(res.status ==200){
|
||
//数据处理
|
||
let arr = []
|
||
res.attribute.forEach(item=>{
|
||
arr.push({
|
||
startDate:"",
|
||
endDate:"",
|
||
remark:"",
|
||
argValue:"",
|
||
argName:item.argName,
|
||
argCode:item.argCode,
|
||
argType:item.argType,
|
||
})
|
||
|
||
})
|
||
this.tableVersionData = arr
|
||
}
|
||
},
|
||
openDialog(type, row) {
|
||
this.queryProductClassfy();
|
||
this.formRow = configData.formRow;
|
||
this.submitShow = true;
|
||
this.isEdit = false
|
||
this.funData = [
|
||
]
|
||
// 新增
|
||
if (type == "add") {
|
||
this.dialogTitle = "新增";
|
||
this.dialogType = "add";
|
||
}
|
||
// 编辑
|
||
if (type == "edit") {
|
||
this.isEdit = true
|
||
this.dialogTitle = "编辑";
|
||
this.dialogType = "edit";
|
||
this.productGetById(row.id);
|
||
}
|
||
// 查看
|
||
if (type == "show") {
|
||
this.funData = Object.assign([],[])
|
||
this.submitShow = false;
|
||
this.formRow = configData.formRowShow;
|
||
this.dialogTitle = "查看";
|
||
this.dialogType = "show";
|
||
this.productGetById(row.id);
|
||
|
||
}
|
||
this.dialogVisible = true;
|
||
},
|
||
// 编辑详情
|
||
async productGetById(id) {
|
||
let params = {
|
||
id: id,
|
||
};
|
||
let res = await authApi(
|
||
"sysIntegratedForegroundTaskService",
|
||
"integrationTaskService",
|
||
"getIntegratedForegroundTask",
|
||
"",
|
||
params
|
||
);
|
||
if (res.status == "200") {
|
||
this.$nextTick(() => {
|
||
this.$refs.basicsForm.incomingParameters(res.attribute);
|
||
this.tableVersionData=res.attribute.sysIntegratedForegroundTaskDetailEntityList
|
||
this.tableVersionData.forEach(item=>{
|
||
if(item.argType ==2){
|
||
//日期处理
|
||
this.$set(item,'startDate',item.argValue.split("/")[0])
|
||
this.$set(item,'endDate',item.argValue.split("/")[1])
|
||
}
|
||
})
|
||
// let result = [];
|
||
// this.tableVersionData = Object.assign([], result);
|
||
});
|
||
}
|
||
},
|
||
addVersionDialog() {
|
||
let obj = {
|
||
argName:"",
|
||
argCode:"",
|
||
argType:"1",
|
||
remark:"",
|
||
};
|
||
this.tableVersionData.push(obj);
|
||
},
|
||
// 删除
|
||
onFunc(index, row) {
|
||
if (index == 0) {
|
||
this.$delConfirm().then(() => {
|
||
this.tableVersionData.forEach((item, itemIndex) => {
|
||
if (item.id === row.id) {
|
||
this.tableVersionData.splice(itemIndex, 1);
|
||
}
|
||
});
|
||
});
|
||
}
|
||
},
|
||
// 弹窗关闭
|
||
handleDialogClose() {
|
||
this.tableVersionData = Object.assign([], []);
|
||
this.$refs.basicsForm.resetFields();
|
||
this.dialogVisible = false;
|
||
},
|
||
// 弹窗确认按钮
|
||
handleConfirmClick() {
|
||
this.$refs.basicsForm.$refs["ruleForm"].validate((valid) => {
|
||
if (!valid) {
|
||
return;
|
||
} else {
|
||
let flag = this.tableVersionData.some((item,index)=>{
|
||
//日期特别处理 例:2024-12-13/2024-12-14
|
||
if(item.argType ==2){
|
||
//判断开始时间和结束时间
|
||
let startDate = new Date(item.startDate); // 开始日期
|
||
let endDate = new Date(item.endDate); // 结束日期
|
||
if(startDate > endDate){
|
||
this.$vmNews(`第${index+1}行结束时间不能大于开始时间`)
|
||
return true
|
||
}
|
||
this.$set(item,'argValue',item.startDate + "/" +item.endDate)
|
||
}
|
||
})
|
||
if(flag) return
|
||
let params = {
|
||
...this.$refs.basicsForm.ruleForm,
|
||
sysIntegratedForegroundTaskDetailEntityList: this.tableVersionData,
|
||
};
|
||
if (this.dialogType == "add") {
|
||
this.openLoading("submit");
|
||
this.productSaveDto(params);
|
||
}
|
||
if (this.dialogType == "edit") {
|
||
this.openLoading("submit");
|
||
this.productUpdateDto(params);
|
||
}
|
||
}
|
||
});
|
||
},
|
||
// 新增保存
|
||
async productSaveDto(params) {
|
||
let res = await authApi(
|
||
"sysIntegratedForegroundTaskService",
|
||
"integrationTaskService",
|
||
"saveIntegratedForegroundTask",
|
||
"",
|
||
params
|
||
);
|
||
if (res.status == "200") {
|
||
this.handleDialogClose();
|
||
this.$vmNews("新增成功", "success");
|
||
this.$emit("resetTable");
|
||
}
|
||
},
|
||
// 编辑保存
|
||
async productUpdateDto(params) {
|
||
let res = await authApi(
|
||
"sysIntegratedForegroundTaskService",
|
||
"integrationTaskService",
|
||
"updateIntegratedForegroundTask",
|
||
"",
|
||
params
|
||
);
|
||
if (res.status == "200") {
|
||
this.handleDialogClose();
|
||
this.$vmNews("更新成功", "success");
|
||
this.$emit("resetTable");
|
||
}
|
||
},
|
||
// 获取所有产品分类
|
||
async queryProductClassfy() {
|
||
let params = {
|
||
tab_name: "sys_product",
|
||
column_name: "classify",
|
||
};
|
||
let res = await authApi(
|
||
"generalServiceImpl",
|
||
"dictionaryshop",
|
||
"selectDictionaryshop",
|
||
"",
|
||
params
|
||
);
|
||
if (res.status == "200") {
|
||
this.formRow[1].elCol[0].options = res.attribute;
|
||
}
|
||
},
|
||
},
|
||
};
|
||
</script>
|
||
|
||
<style scoped lang="scss">
|
||
.dialogList {
|
||
padding: 16px 0;
|
||
border-top: 1px solid #dcdfe6;
|
||
display: flex;
|
||
flex-direction: column;
|
||
}
|
||
|
||
.updateBtn {
|
||
border: 1px solid #ebedf1;
|
||
padding: 5px 0;
|
||
border-radius: 3px;
|
||
text-align: center;
|
||
font-size: 14px;
|
||
cursor: pointer;
|
||
width: 100px;
|
||
}
|
||
|
||
.updateBtn:hover {
|
||
color: #1890ff;
|
||
border-color: #badeff;
|
||
background-color: #e8f4ff;
|
||
}
|
||
|
||
::v-deep .el-table__body-wrapper.is-scrolling-none {
|
||
height: auto !important;
|
||
}
|
||
|
||
::v-deep .app-container {
|
||
height: auto !important;
|
||
}
|
||
</style>
|