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>
|