Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev

This commit is contained in:
guoyue 2022-08-08 10:47:44 +08:00
commit b90e3377a2
45 changed files with 1409 additions and 965 deletions

View File

@ -762,11 +762,15 @@ export default {
this.notFilled.push('部门联系人电话') this.notFilled.push('部门联系人电话')
} }
if (this.radio === '智能算法' && !this.submitFrom.apiUrl) { if (this.radio === '智能算法' && !this.submitFrom.apiUrl) {
if ((this.submitFrom.infoList.filter(val => val.attrType === '使用方式')[0].attrValue === '调用接口')) {
this.notFilled.push('服务接口') this.notFilled.push('服务接口')
} }
}
if (this.radio === '智能算法' && !this.submitFrom.apiMethodType) { if (this.radio === '智能算法' && !this.submitFrom.apiMethodType) {
if ((this.submitFrom.infoList.filter(val => val.attrType === '使用方式')[0].attrValue === '调用接口')) {
this.notFilled.push('接口请求方式') this.notFilled.push('接口请求方式')
} }
}
if (this.radio === '智能算法' && (!this.submitFrom.infoList.filter(val => val.attrType === '算法类别')[0] || !this.submitFrom.infoList.filter(val => val.attrType === '算法类别')[0].attrValue)) { if (this.radio === '智能算法' && (!this.submitFrom.infoList.filter(val => val.attrType === '算法类别')[0] || !this.submitFrom.infoList.filter(val => val.attrType === '算法类别')[0].attrValue)) {
this.notFilled.push('算法类别') this.notFilled.push('算法类别')
} }

View File

@ -271,8 +271,7 @@
v-if=" v-if="
item.attrType != '应用领域' && item.attrType != '应用领域' &&
item.attrType != '应用类型' && item.attrType != '应用类型' &&
item.attrType != '发布端' && item.attrType != '发布端'
item.attrType != '应用状态'
" "
></el-input> ></el-input>
<el-select <el-select
@ -368,30 +367,30 @@
</template> </template>
<script> <script>
import debounce from "lodash/debounce"; import debounce from 'lodash/debounce'
import dictionaries from "@/utils/dictionaries"; import dictionaries from '@/utils/dictionaries'
import { mapState } from "vuex"; import { mapState } from 'vuex'
import { getIconList } from "@/utils"; import { getIconList } from '@/utils'
import Cookies from "js-cookie"; import Cookies from 'js-cookie'
import upload from "./upload.vue"; import upload from './upload.vue'
import bus from "@/views/bus.js"; import bus from '@/views/bus.js'
import qs from "qs"; import qs from 'qs'
import Vue from "vue"; import Vue from 'vue'
export default { export default {
components: { components: {
upload, upload
}, },
data () { data () {
return { return {
checkList: [], checkList: [],
dialogVisibleImg: false, dialogVisibleImg: false,
previewImg: "", // previewImg: '', //
dialogVisible: false, dialogVisible: false,
fileUploadUrl: window.SITE_CONFIG.apiURL + "/upload", fileUploadUrl: window.SITE_CONFIG.apiURL + '/upload',
uploadUrl: uploadUrl:
window.SITE_CONFIG.apiURL + window.SITE_CONFIG.apiURL +
"/sys/oss/upload?token=" + '/sys/oss/upload?token=' +
Cookies.get("ucsToken"), Cookies.get('ucsToken'),
companyArr: dictionaries.companyArr, companyArr: dictionaries.companyArr,
visible: false, visible: false,
sceneArr: dictionaries.sceneArr, sceneArr: dictionaries.sceneArr,
@ -403,579 +402,579 @@ export default {
menuListVisible: false, menuListVisible: false,
UpdateState: false, UpdateState: false,
dataForm: { dataForm: {
id: "", id: '',
deptId: "", deptId: '',
deptContacts: "", deptContacts: '',
deptPhone: "", deptPhone: '',
dataVolume: "", dataVolume: '',
shareCondition: "", shareCondition: '',
shareType: "", shareType: '',
shareMode: "", shareMode: '',
delFlag: 0, delFlag: 0,
description: "", description: '',
downloads: 0, downloads: 0,
image: "", image: '',
showList: [], showList: [],
infoList: [], infoList: [],
link: "", link: '',
name: "", name: '',
note1: "", note1: '',
note2: "", note2: '',
note3: "", note3: '',
note4: "", note4: '',
note5: "", note5: '',
score: "", score: '',
type: "应用资源", type: '应用资源',
apiMethodType: "", apiMethodType: '',
apiUrl: "", apiUrl: '',
visits: 0, visits: 0
}, },
deptId: "", deptId: '',
fangwendizhi: "", fangwendizhi: '',
mingzi: "", mingzi: '',
dataFormUpdate: {}, dataFormUpdate: {},
dataFormShowDetails: {}, dataFormShowDetails: {},
infoList2: [], infoList2: [],
infoList3: [], infoList3: [],
typeOptions: [ typeOptions: [
{ value: "有条件共享", label: "有条件共享" }, { value: '有条件共享', label: '有条件共享' },
{ value: "无条件共享", label: "无条件共享" }, { value: '无条件共享', label: '无条件共享' }
], ],
conditionOptions: [ conditionOptions: [
{ value: "申请", label: "申请" }, { value: '申请', label: '申请' },
{ value: "免批申请", label: "免批申请" }, { value: '免批申请', label: '免批申请' }
], ],
rules: { rules: {
name: [ name: [
{ {
required: true, required: true,
message: "请输入应用名称", message: '请输入应用名称',
trigger: "change", trigger: 'change'
}, }
], ],
description: [ description: [
{ {
required: true, required: true,
message: "请输入应用描述", message: '请输入应用描述',
trigger: "change", trigger: 'change'
}, }
], ],
deptContacts: [ deptContacts: [
{ {
required: true, required: true,
message: "请输入部门联系人", message: '请输入部门联系人',
trigger: "change", trigger: 'change'
}, }
], ],
deptPhone: [ deptPhone: [
{ {
required: true, required: true,
message: "请输入部门联系人电话", message: '请输入部门联系人电话',
trigger: "change", trigger: 'change'
}, }
], ],
shareCondition: [ shareCondition: [
{ {
required: true, required: true,
message: "请选择共享条件", message: '请选择共享条件',
trigger: "change", trigger: 'change'
}, }
], ],
shareType: [ shareType: [
{ {
required: true, required: true,
message: "请选择请输入共享类型", message: '请选择请输入共享类型',
trigger: "change", trigger: 'change'
}, }
], ],
shareMode: [ shareMode: [
{ {
required: true, required: true,
message: "请输入共享方式", message: '请输入共享方式',
trigger: "change", trigger: 'change'
}, }
], ]
}, }
}; }
}, },
props: { props: {
disabled: { disabled: {
type: Boolean, type: Boolean,
default: false, default: false
}, }
}, },
computed: { computed: {
...mapState(["catalogueTree"]), ...mapState(['catalogueTree']),
...mapState(["departmentSelects"]), ...mapState(['departmentSelects']),
dataRule () { dataRule () {
return { return {
name: [ name: [
{ {
required: true, required: true,
message: this.$t("validate.required"), message: this.$t('validate.required'),
trigger: "blur", trigger: 'blur'
}, }
], ],
version: [ version: [
{ {
required: true, required: true,
message: this.$t("validate.required"), message: this.$t('validate.required'),
trigger: "blur", trigger: 'blur'
}, }
], ],
visitUrl: [ visitUrl: [
{ {
required: true, required: true,
message: this.$t("validate.required"), message: this.$t('validate.required'),
trigger: "blur", trigger: 'blur'
}, }
], ],
type: [ type: [
{ {
required: true, required: true,
message: this.$t("validate.required"), message: this.$t('validate.required'),
trigger: "blur", trigger: 'blur'
}, }
], ],
shareType: [ shareType: [
{ {
required: true, required: true,
message: this.$t("validate.required"), message: this.$t('validate.required'),
trigger: "blur", trigger: 'blur'
}, }
], ],
shareForm: [ shareForm: [
{ {
required: true, required: true,
message: this.$t("validate.required"), message: this.$t('validate.required'),
trigger: "blur", trigger: 'blur'
}, }
], ],
field: [ field: [
{ {
required: true, required: true,
message: this.$t("validate.required"), message: this.$t('validate.required'),
trigger: "blur", trigger: 'blur'
}, }
], ],
scene: [ scene: [
{ {
required: true, required: true,
message: this.$t("validate.required"), message: this.$t('validate.required'),
trigger: "blur", trigger: 'blur'
}, }
], ],
deptId: [ deptId: [
{ {
required: true, required: true,
message: this.$t("validate.required"), message: this.$t('validate.required'),
trigger: "blur", trigger: 'blur'
}, }
], ],
content: [ content: [
{ {
required: true, required: true,
message: this.$t("validate.required"), message: this.$t('validate.required'),
trigger: "blur", trigger: 'blur'
}, }
], ],
rank: [ rank: [
{ {
required: true, required: true,
message: this.$t("validate.required"), message: this.$t('validate.required'),
trigger: "blur", trigger: 'blur'
}, }
], ],
useInfo: [ useInfo: [
{ {
required: true, required: true,
message: this.$t("validate.required"), message: this.$t('validate.required'),
trigger: "blur", trigger: 'blur'
}, }
], ],
remarks: [ remarks: [
{ {
required: true, required: true,
message: this.$t("validate.required"), message: this.$t('validate.required'),
trigger: "blur", trigger: 'blur'
}, }
], ],
isUp: [ isUp: [
{ {
required: true, required: true,
message: this.$t("validate.required"), message: this.$t('validate.required'),
trigger: "blur", trigger: 'blur'
}, }
], ]
}; }
}, }
}, },
methods: { methods: {
// //
handleAvatarSuccess (res, file) { handleAvatarSuccess (res, file) {
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error("上传图片失败"); return this.$message.error('上传图片失败')
} }
debugger; debugger
this.dataForm.infoList.map((item, index) => { this.dataForm.infoList.map((item, index) => {
if (item.attrType == "应用图片") { if (item.attrType == '应用图片') {
if (!this.dataForm.infoList[index].attrValue) { if (!this.dataForm.infoList[index].attrValue) {
this.dataForm.infoList[index].attrValue = res.data; this.dataForm.infoList[index].attrValue = res.data
} else { } else {
this.dataForm.infoList[index].attrValue += ";" + res.data; this.dataForm.infoList[index].attrValue += ';' + res.data
} }
console.log("上传图片", this.dataForm.infoList[index]); console.log('上传图片', this.dataForm.infoList[index])
} }
}); })
// this.imageUrl = URL.createObjectURL(file.raw); // this.imageUrl = URL.createObjectURL(file.raw);
}, },
handleAvatarSuccessone (res, file) { handleAvatarSuccessone (res, file) {
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error("上传图片失败"); return this.$message.error('上传图片失败')
} }
debugger; debugger
this.dataForm.infoList.map((item, index) => { this.dataForm.infoList.map((item, index) => {
if (item.attrType == "子系统一图片") { if (item.attrType == '子系统一图片') {
if (!this.dataForm.infoList[index].attrValue) { if (!this.dataForm.infoList[index].attrValue) {
this.dataForm.infoList[index].attrValue = res.data; this.dataForm.infoList[index].attrValue = res.data
} else { } else {
this.dataForm.infoList[index].attrValue = ""; this.dataForm.infoList[index].attrValue = ''
this.dataForm.infoList[index].attrValue = res.data; this.dataForm.infoList[index].attrValue = res.data
} }
console.log("上传图片", this.dataForm.infoList[index]); console.log('上传图片', this.dataForm.infoList[index])
} }
}); })
// this.imageUrl = URL.createObjectURL(file.raw); // this.imageUrl = URL.createObjectURL(file.raw);
}, },
handleAvatarSuccesstwo (res, file) { handleAvatarSuccesstwo (res, file) {
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error("上传图片失败"); return this.$message.error('上传图片失败')
} }
debugger; debugger
this.dataForm.infoList.map((item, index) => { this.dataForm.infoList.map((item, index) => {
if (item.attrType == "子系统二图片") { if (item.attrType == '子系统二图片') {
if (!this.dataForm.infoList[index].attrValue) { if (!this.dataForm.infoList[index].attrValue) {
this.dataForm.infoList[index].attrValue = res.data; this.dataForm.infoList[index].attrValue = res.data
} else { } else {
this.dataForm.infoList[index].attrValue = ""; this.dataForm.infoList[index].attrValue = ''
this.dataForm.infoList[index].attrValue = res.data; this.dataForm.infoList[index].attrValue = res.data
} }
console.log("上传图片", this.dataForm.infoList[index]); console.log('上传图片', this.dataForm.infoList[index])
} }
}); })
// this.imageUrl = URL.createObjectURL(file.raw); // this.imageUrl = URL.createObjectURL(file.raw);
}, },
handleAvatarSuccessthree (res, file) { handleAvatarSuccessthree (res, file) {
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error("上传图片失败"); return this.$message.error('上传图片失败')
} }
debugger; debugger
this.dataForm.infoList.map((item, index) => { this.dataForm.infoList.map((item, index) => {
if (item.attrType == "子系统三图片") { if (item.attrType == '子系统三图片') {
if (!this.dataForm.infoList[index].attrValue) { if (!this.dataForm.infoList[index].attrValue) {
this.dataForm.infoList[index].attrValue = res.data; this.dataForm.infoList[index].attrValue = res.data
} else { } else {
this.dataForm.infoList[index].attrValue = ""; this.dataForm.infoList[index].attrValue = ''
this.dataForm.infoList[index].attrValue = res.data; this.dataForm.infoList[index].attrValue = res.data
} }
console.log("上传图片", this.dataForm.infoList[index]); console.log('上传图片', this.dataForm.infoList[index])
} }
}); })
// this.imageUrl = URL.createObjectURL(file.raw); // this.imageUrl = URL.createObjectURL(file.raw);
}, },
beforeAvatarUpload (file) { beforeAvatarUpload (file) {
const isImage = const isImage =
file.type === "image/jpeg" || file.type === 'image/jpeg' ||
file.type === "image/jpg" || file.type === 'image/jpg' ||
file.type === "image/png"; file.type === 'image/png'
const isLt2M = file.size / 1024 / 1024 < 9999; const isLt2M = file.size / 1024 / 1024 < 9999
if (!isImage) { if (!isImage) {
this.$message.error("上传头像图片只能是 JPG 格式!"); this.$message.error('上传头像图片只能是 JPG 格式!')
} }
if (!isLt2M) { if (!isLt2M) {
this.$message.error("上传头像图片大小不能超过 2MB!"); this.$message.error('上传头像图片大小不能超过 2MB!')
} }
return isImage && isLt2M; return isImage && isLt2M
}, },
addUploadRemoveFile (file, fileList) { addUploadRemoveFile (file, fileList) {
this.$refs.addUpload.clearFiles(); this.$refs.addUpload.clearFiles()
this.addDataFrom.imageUrl = ""; this.addDataFrom.imageUrl = ''
}, },
showView (file) { showView (file) {
this.previewImg = file.url; this.previewImg = file.url
this.dialogVisibleImg = true; this.dialogVisibleImg = true
}, },
// //
getUserInfo () { getUserInfo () {
this.$http.get("/sys/user/info").then(({ data: res }) => { this.$http.get('/sys/user/info').then(({ data: res }) => {
this.dataForm.deptId = res.data.deptId; this.dataForm.deptId = res.data.deptId
this.deptId = res.data.deptId; this.deptId = res.data.deptId
console.log("depid", this.dataForm); console.log('depid', this.dataForm)
}); })
}, },
guanbi () { guanbi () {
this.dataForm = { this.dataForm = {
id: "", id: '',
deptId: "", deptId: '',
deptContacts: "", deptContacts: '',
deptPhone: "", deptPhone: '',
dataVolume: "", dataVolume: '',
shareCondition: "", shareCondition: '',
shareType: "", shareType: '',
shareMode: "", shareMode: '',
delFlag: 0, delFlag: 0,
description: "", description: '',
downloads: 0, downloads: 0,
image: "", image: '',
showList: [], showList: [],
infoList: [], infoList: [],
link: "", link: '',
name: "", name: '',
note1: "", note1: '',
note2: "", note2: '',
note3: "", note3: '',
note4: "", note4: '',
note5: "", note5: '',
score: "", score: '',
type: "应用资源", type: '应用资源',
apiMethodType: "", apiMethodType: '',
apiUrl: "", apiUrl: '',
visits: 0, visits: 0
}; }
}, },
handleRemove (file, fileList) { handleRemove (file, fileList) {
console.log(file, fileList); console.log(file, fileList)
}, },
handlePictureCardPreview (file) { handlePictureCardPreview (file) {
this.dialogImageUrl = file.url; this.dialogImageUrl = file.url
this.dialogVisible = true; this.dialogVisible = true
}, },
// //
uploadBeforeUploadHandle (file) { uploadBeforeUploadHandle (file) {
if ( if (
file.type !== "image/jpg" && file.type !== 'image/jpg' &&
file.type !== "image/jpeg" && file.type !== 'image/jpeg' &&
file.type !== "image/png" && file.type !== 'image/png' &&
file.type !== "image/gif" file.type !== 'image/gif'
) { ) {
this.$message.error("只支持jpg、png、gif格式的图片"); this.$message.error('只支持jpg、png、gif格式的图片')
return false; return false
} }
}, },
imgUploadSuccess (res, file, fileList) { imgUploadSuccess (res, file, fileList) {
console.log("zzzzzzz", res, file, fileList); console.log('zzzzzzz', res, file, fileList)
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error(res.msg); return this.$message.error(res.msg)
} }
}, },
init () { init () {
this.getInfoList(); this.getInfoList()
this.visible = true; this.visible = true
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.dataForm && this.$refs.dataForm.resetFields(); this.$refs.dataForm && this.$refs.dataForm.resetFields()
this.iconList = getIconList(); this.iconList = getIconList()
if (this.dataForm.id) { if (this.dataForm.id) {
this.getInfo(); this.getInfo()
} }
}); })
}, },
// //
getInfoList () { getInfoList () {
const parms = { const parms = {
topCategoryName: "应用资源", topCategoryName: '应用资源'
}; }
this.infoList2 = []; this.infoList2 = []
this.$http this.$http
.get("/category/getAllFiledByTopCategory" + "?" + qs.stringify(parms)) .get('/category/getAllFiledByTopCategory' + '?' + qs.stringify(parms))
.then(({ data: res }) => { .then(({ data: res }) => {
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error(res.msg); return this.$message.error(res.msg)
} }
res.data.map((item, index) => { res.data.map((item, index) => {
if ( if (
item.name.search("应用名称") == -1 && item.name.search('应用名称') == -1 &&
item.name.search("地址") == -1 && item.name.search('地址') == -1 &&
// item.name.search("") == -1 && // item.name.search("") == -1 &&
item.name !== "组件描述" && item.name !== '组件描述' &&
item.name !== "组件名称" && item.name !== '组件名称' &&
item.name !== "服务接口" && item.name !== '服务接口' &&
item.name !== "共享类型" && item.name !== '共享类型' &&
item.name !== "共享条件" && item.name !== '共享条件' &&
item.name !== "共享方式" && item.name !== '共享方式' &&
item.name !== "部门联系人电话" && item.name !== '部门联系人电话' &&
item.name !== "部门统一社会代码" && item.name !== '部门统一社会代码' &&
item.name !== "部门联系人" && item.name !== '部门联系人' &&
item.name !== "服务商统一社会信用代码" && item.name !== '服务商统一社会信用代码' &&
item.name !== "服务接口请求方式" && item.name !== '服务接口请求方式' &&
item.name !== "部门名称" item.name !== '部门名称'
) { ) {
const duixiang = { const duixiang = {
attrType: item.name, attrType: item.name,
attrValue: "", attrValue: '',
delFlag: 0, delFlag: 0
}; }
this.infoList2.push(item); this.infoList2.push(item)
if (item.isLinkToDic != "false") { if (item.isLinkToDic != 'false') {
const xinxi = { const xinxi = {
page: 1, page: 1,
limit: 99, limit: 99,
dictTypeId: item.linkValue, dictTypeId: item.linkValue,
dictLabel: "", dictLabel: '',
dictValue: "", dictValue: ''
}; }
this.$http this.$http
.get("/sys/dict/data/page" + "?" + qs.stringify(xinxi)) .get('/sys/dict/data/page' + '?' + qs.stringify(xinxi))
.then(({ data: res2 }) => { .then(({ data: res2 }) => {
// this.infoList2[index - 1].children = res2.data.list // this.infoList2[index - 1].children = res2.data.list
this.infoList2.map((item3, index3) => { this.infoList2.map((item3, index3) => {
if (item3.name == item.name) { if (item3.name == item.name) {
Vue.set( Vue.set(
this.infoList2[index3], this.infoList2[index3],
"children", 'children',
res2.data.list res2.data.list
); )
} }
}); })
this.dataFormUpdate.infoList.map((item3, index3) => { this.dataFormUpdate.infoList.map((item3, index3) => {
if (item3.attrType == item.name) { if (item3.attrType == item.name) {
Vue.set( Vue.set(
this.dataFormUpdate.infoList[index3], this.dataFormUpdate.infoList[index3],
"children", 'children',
res2.data.list res2.data.list
); )
} }
});
console.log(
"11111111111111111111111111110",
this.dataFormUpdate
);
});
}
this.dataForm.infoList.push(duixiang);
}
});
console.log("this.infoList", this.dataFormUpdate);
}) })
.catch(() => {}); console.log(
'11111111111111111111111111110',
this.dataFormUpdate
)
})
}
this.dataForm.infoList.push(duixiang)
}
})
console.log('this.infoList', this.dataFormUpdate)
})
.catch(() => {})
this.$http this.$http
.get("/sys/dict/data/page" + "?" + qs.stringify(parms)) .get('/sys/dict/data/page' + '?' + qs.stringify(parms))
.then(({ data: res }) => { .then(({ data: res }) => {
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error(res.msg); return this.$message.error(res.msg)
} }
console.log("this.infoList", this.dataForm); console.log('this.infoList', this.dataForm)
}) })
.catch(() => {}); .catch(() => {})
}, },
// , // ,
iconListCurrentChangeHandle (icon) { iconListCurrentChangeHandle (icon) {
this.dataForm.imgurl = icon; this.dataForm.imgurl = icon
this.iconListVisible = false; this.iconListVisible = false
}, },
// , // ,
menuListTreeCurrentChangeHandle (data) { menuListTreeCurrentChangeHandle (data) {
this.dataForm.pid = data.id; this.dataForm.pid = data.id
this.dataForm.type = data.name; this.dataForm.type = data.name
this.menuListVisible = false; this.menuListVisible = false
}, },
// , // ,
deptListTreeSetDefaultHandle () { deptListTreeSetDefaultHandle () {
this.dataForm.pid = "0"; this.dataForm.pid = '0'
this.dataForm.type = "目录级别"; this.dataForm.type = '目录级别'
}, },
// //
getInfo () { getInfo () {
this.$http this.$http
.get("/ability/bsabilityai/" + this.dataForm.id) .get('/ability/bsabilityai/' + this.dataForm.id)
.then(({ data: res }) => { .then(({ data: res }) => {
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error(res.msg); return this.$message.error(res.msg)
} }
this.dataForm = { this.dataForm = {
...this.dataForm, ...this.dataForm,
...res.data, ...res.data
}; }
}) })
.catch(() => {}); .catch(() => {})
}, },
// //
dataFormSubmitHandle: debounce( dataFormSubmitHandle: debounce(
function () { function () {
this.$refs.dataForm.validate((valid) => { this.$refs.dataForm.validate((valid) => {
this.getUserInfo(); this.getUserInfo()
this.dataForm.deptId = this.deptId; this.dataForm.deptId = this.deptId
if (!valid) { if (!valid) {
this.$message.error("请检查表单是否填写完整"); this.$message.error('请检查表单是否填写完整')
return false; return false
} }
console.log("表单数据=======================》", this.dataForm); console.log('表单数据=======================》', this.dataForm)
if (!this.UpdateState) { if (!this.UpdateState) {
this.dataForm.infoList = []; this.dataForm.infoList = []
this.dataForm.showListAll.forEach((val) => { this.dataForm.showListAll.forEach((val) => {
if (val.name !== "必填信息") { if (val.name !== '必填信息') {
if (val.name === "服务接口信息") { if (val.name === '服务接口信息') {
val.children.forEach((item) => { val.children.forEach((item) => {
if (item.name === "服务接口") { if (item.name === '服务接口') {
this.dataForm.apiUrl = item.note1; this.dataForm.apiUrl = item.note1
} }
if (item.name === "接口请求方式") { if (item.name === '接口请求方式') {
this.dataForm.apiMethodType = item.note1; this.dataForm.apiMethodType = item.note1
} }
if (item.name === "访问地址") { if (item.name === '访问地址') {
this.dataForm.link = item.note1; this.dataForm.link = item.note1
} }
}); })
} else { } else {
val.children.forEach((item) => { val.children.forEach((item) => {
this.dataForm.infoList.push({ this.dataForm.infoList.push({
attrType: item.name, attrType: item.name,
attrValue: item.note1, attrValue: item.note1,
delFlag: 0, delFlag: 0
}); })
}); })
} }
} }
}); })
this.$http this.$http
.post("/resource/insert?source= b", this.dataForm) .post('/resource/insert?source= b', this.dataForm)
.then(({ data: res }) => { .then(({ data: res }) => {
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error(res.msg); return this.$message.error(res.msg)
} }
this.$message({ this.$message({
message: this.$t("prompt.success"), message: this.$t('prompt.success'),
type: "success", type: 'success',
duration: 500, duration: 500,
onClose: () => { onClose: () => {
this.visible = false; this.visible = false
this.$emit("refreshDataList"); this.$emit('refreshDataList')
}, }
});
}) })
.catch(() => {}); })
.catch(() => {})
} else { } else {
this.$http this.$http
.put("/resource/update", this.dataFormUpdate) .put('/resource/update', this.dataFormUpdate)
.then(({ data: res }) => { .then(({ data: res }) => {
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error(res.msg); return this.$message.error(res.msg)
} }
this.$message({ this.$message({
message: this.$t("prompt.success"), message: this.$t('prompt.success'),
type: "success", type: 'success',
duration: 500, duration: 500,
onClose: () => { onClose: () => {
this.visible = false; this.visible = false
this.$emit("refreshDataList"); this.$emit('refreshDataList')
},
});
})
.catch(() => {});
} }
}); })
})
.catch(() => {})
}
})
}, },
1000, 1000,
{ leading: true, trailing: false } { leading: true, trailing: false }
@ -983,22 +982,22 @@ export default {
showListChagne () { showListChagne () {
this.dataForm.showList = this.dataForm.showListAll.filter( this.dataForm.showList = this.dataForm.showListAll.filter(
(item) => this.checkList.indexOf(item.name) > -1 (item) => this.checkList.indexOf(item.name) > -1
); )
console.log( console.log(
"属性变更===================>", '属性变更===================>',
this.checkList, this.checkList,
this.dataForm.showList, this.dataForm.showList,
this.dataForm.showListAll this.dataForm.showListAll
); )
}, }
}, },
mounted () { mounted () {
this.getUserInfo(); this.getUserInfo()
}, },
beforeDestroy () { beforeDestroy () {
console.log("销毁~~~~~~~~~~~~~~~~~~~~"); console.log('销毁~~~~~~~~~~~~~~~~~~~~')
}, }
}; }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@ -233,7 +233,7 @@ export default {
mixins: [mixinViewModule], mixins: [mixinViewModule],
data () { data () {
return { return {
required: ['归属部门', '部门联系人', '部门联系人电话', '应用领域', '共享条件', '应用名称', '应用描述', '应用状态', '应用类型'], required: ['归属部门', '部门联系人', '部门联系人电话', '应用领域', '共享条件', '应用名称', '应用描述', '应用类型'],
notFilled: [], notFilled: [],
mixinViewModuleOptions: { mixinViewModuleOptions: {
getDataListURL: '/resource/page', getDataListURL: '/resource/page',
@ -692,9 +692,9 @@ export default {
if (!this.submitFrom.infoList.filter(val => val.attrType == '应用领域')[0] || !this.submitFrom.infoList.filter(val => val.attrType == '应用领域')[0].attrValue) { if (!this.submitFrom.infoList.filter(val => val.attrType == '应用领域')[0] || !this.submitFrom.infoList.filter(val => val.attrType == '应用领域')[0].attrValue) {
this.notFilled.push('应用领域') this.notFilled.push('应用领域')
} }
if (!this.submitFrom.infoList.filter(val => val.attrType == '应用状态')[0] || !this.submitFrom.infoList.filter(val => val.attrType == '应用状态')[0].attrValue) { // if (!this.submitFrom.infoList.filter(val => val.attrType == '')[0] || !this.submitFrom.infoList.filter(val => val.attrType == '')[0].attrValue) {
this.notFilled.push('应用状态') // this.notFilled.push('')
} // }
if (!this.submitFrom.infoList.filter(val => val.attrType == '应用类型')[0] || !this.submitFrom.infoList.filter(val => val.attrType == '应用类型')[0].attrValue) { if (!this.submitFrom.infoList.filter(val => val.attrType == '应用类型')[0] || !this.submitFrom.infoList.filter(val => val.attrType == '应用类型')[0].attrValue) {
this.notFilled.push('应用类型') this.notFilled.push('应用类型')
} }

View File

@ -2,7 +2,7 @@
* @Author: hisense.liangjunhua * @Author: hisense.liangjunhua
* @Date: 2022-06-29 15:59:51 * @Date: 2022-06-29 15:59:51
* @LastEditors: hisense.liangjunhua * @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-08-02 16:06:20 * @LastEditTime: 2022-08-04 14:34:45
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
--> -->
<!-- 流程业务表单 --> <!-- 流程业务表单 -->
@ -55,7 +55,7 @@
></span ></span
> >
</p> </p>
<p v-if="dataForm.content.enclosure"> <p v-if="dataForm.content.enclosure" class="lastP">
<span> <span>
申请附件<span> 申请附件<span>
{{ dataForm.content.enclosure || '--' {{ dataForm.content.enclosure || '--'
@ -291,6 +291,7 @@ export default {
if (val.cameraList) { if (val.cameraList) {
flag = true flag = true
obj.describe += val.system obj.describe += val.system
obj.describe += ''
} else { } else {
this.$http.get('/resource/' + val.resourceId).then((res1) => { this.$http.get('/resource/' + val.resourceId).then((res1) => {
// console.log(res1.data.data, '1111111111111111111111111111111111') // console.log(res1.data.data, '1111111111111111111111111111111111')
@ -518,7 +519,7 @@ export default {
width: 500px; width: 500px;
} }
} }
p:last-of-type { .lastP {
margin-top: 16px; margin-top: 16px;
width: 100%; width: 100%;
span { span {

View File

@ -9,7 +9,14 @@
<el-form-item> <el-form-item>
<el-input <el-input
v-model="dataForm.username" v-model="dataForm.username"
:placeholder="$t('user.username')" placeholder="用户名"
clearable
></el-input>
</el-form-item>
<el-form-item>
<el-input
v-model="dataForm.real_name"
placeholder="真实姓名"
clearable clearable
></el-input> ></el-input>
</el-form-item> </el-form-item>
@ -44,7 +51,7 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="getDataList()">{{ <el-button type="primary" @click="getDataList()">{{
$t("query") $t('query')
}}</el-button> }}</el-button>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
@ -52,7 +59,7 @@
v-if="$hasPermission('sys:user:save')" v-if="$hasPermission('sys:user:save')"
type="primary" type="primary"
@click="addOrUpdateHandle()" @click="addOrUpdateHandle()"
>{{ $t("add") }}</el-button >{{ $t('add') }}</el-button
> >
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
@ -60,7 +67,7 @@
v-if="$hasPermission('sys:user:delete')" v-if="$hasPermission('sys:user:delete')"
type="danger" type="danger"
@click="deleteHandle()" @click="deleteHandle()"
>{{ $t("deleteBatch") }}</el-button >{{ $t('deleteBatch') }}</el-button
> >
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
@ -68,7 +75,7 @@
v-if="$hasPermission('sys:user:export')" v-if="$hasPermission('sys:user:export')"
type="info" type="info"
@click="exportHandle()" @click="exportHandle()"
>{{ $t("export") }}</el-button >{{ $t('export') }}</el-button
> >
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
@ -96,6 +103,12 @@
header-align="center" header-align="center"
align="center" align="center"
></el-table-column> ></el-table-column>
<el-table-column
prop="realName"
label="真实姓名"
header-align="center"
align="center"
></el-table-column>
<el-table-column <el-table-column
prop="deptName" prop="deptName"
:label="$t('user.deptName')" :label="$t('user.deptName')"
@ -123,7 +136,7 @@
align="center" align="center"
> >
<template slot-scope="scope"> <template slot-scope="scope">
{{ $getDictLabel("gender", scope.row.gender) }} {{ $getDictLabel('gender', scope.row.gender) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
@ -135,10 +148,10 @@
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag v-if="scope.row.status === 0" size="small" type="danger">{{ <el-tag v-if="scope.row.status === 0" size="small" type="danger">{{
$t("user.status0") $t('user.status0')
}}</el-tag> }}</el-tag>
<el-tag v-else size="small" type="success">{{ <el-tag v-else size="small" type="success">{{
$t("user.status1") $t('user.status1')
}}</el-tag> }}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
@ -163,14 +176,14 @@
type="text" type="text"
size="small" size="small"
@click="addOrUpdateHandle(scope.row.id)" @click="addOrUpdateHandle(scope.row.id)"
>{{ $t("update") }}</el-button >{{ $t('update') }}</el-button
> >
<el-button <el-button
v-if="$hasPermission('sys:user:delete')" v-if="$hasPermission('sys:user:delete')"
type="text" type="text"
size="small" size="small"
@click="deleteHandle(scope.row.id)" @click="deleteHandle(scope.row.id)"
>{{ $t("delete") }}</el-button >{{ $t('delete') }}</el-button
> >
</template> </template>
</el-table-column> </el-table-column>
@ -196,86 +209,87 @@
</template> </template>
<script> <script>
import mixinViewModule from "@/mixins/view-module"; import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from "./user-add-or-update"; import AddOrUpdate from './user-add-or-update'
import qs from "qs"; import qs from 'qs'
export default { export default {
mixins: [mixinViewModule], mixins: [mixinViewModule],
data () { data () {
return { return {
mixinViewModuleOptions: { mixinViewModuleOptions: {
getDataListURL: "/sys/user/page", getDataListURL: '/sys/user/page',
getDataListIsPage: true, getDataListIsPage: true,
deleteURL: "/sys/user", deleteURL: '/sys/user',
deleteIsBatch: true, deleteIsBatch: true,
exportURL: "/sys/user/export", exportURL: '/sys/user/export'
}, },
postList: [], postList: [],
dataForm: { dataForm: {
username: "", username: '',
deptId: "", deptId: '',
postId: "", postId: '',
gender: "", gender: ''
}, }
}; }
}, },
components: { components: {
AddOrUpdate, AddOrUpdate
}, },
created () { created () {
this.getPostList(); this.getPostList()
}, },
methods: { methods: {
reset () { reset () {
this.$http this.$http
.get( .get(
this.mixinViewModuleOptions.getDataListURL + this.mixinViewModuleOptions.getDataListURL +
"?" + '?' +
qs.stringify({ qs.stringify({
page: 1, page: 1,
limit: 10, limit: 10,
username: "", username: '',
deptId: "", deptId: '',
postId: "", postId: '',
gender: "", gender: ''
}) })
) )
.then(({ data: res }) => { .then(({ data: res }) => {
this.dataForm.username = ""; this.dataForm.username = ''
this.dataForm.deptId = ""; this.dataForm.real_name = ''
this.dataForm.postId = ""; this.dataForm.deptId = ''
this.dataForm.gender = ""; this.dataForm.postId = ''
this.dataForm.gender = ''
if (res.code !== 0) { if (res.code !== 0) {
this.dataList = []; this.dataList = []
this.total = 0; this.total = 0
return this.$message.error(res.msg); return this.$message.error(res.msg)
} }
this.dataList = this.mixinViewModuleOptions.getDataListIsPage this.dataList = this.mixinViewModuleOptions.getDataListIsPage
? res.data.list ? res.data.list
: res.data; : res.data
this.total = this.mixinViewModuleOptions.getDataListIsPage this.total = this.mixinViewModuleOptions.getDataListIsPage
? res.data.total ? res.data.total
: 0; : 0
if (this.mixinViewModuleOptions.requestCallback) { if (this.mixinViewModuleOptions.requestCallback) {
this.mixinViewModuleOptions.requestCallback(res.data); this.mixinViewModuleOptions.requestCallback(res.data)
} }
this.dataListLoading = false; this.dataListLoading = false
}) })
.catch(() => { .catch(() => {
this.dataListLoading = false; this.dataListLoading = false
}); })
}, },
getPostList () { getPostList () {
this.$http this.$http
.get("/sys/post/list") .get('/sys/post/list')
.then(({ data: res }) => { .then(({ data: res }) => {
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error(res.msg); return this.$message.error(res.msg)
} }
this.postList = res.data; this.postList = res.data
}) })
.catch(() => {}); .catch(() => {})
}, }
}, }
}; }
</script> </script>

View File

@ -87,7 +87,8 @@ export default {
this.noData = true this.noData = true
return return
} }
for (let i = 0; i < 3; i++) { const num = _arr.length < 3 ? _arr.length : 3
for (let i = 0; i < num; i++) {
const k = i + 1 const k = i + 1
this[`no${k}Obj`].name = _arr[i].name this[`no${k}Obj`].name = _arr[i].name
this[`no${k}Obj`].count = _arr[i].count this[`no${k}Obj`].count = _arr[i].count

View File

@ -45,7 +45,7 @@
"three.meshline": "^1.1.0", "three.meshline": "^1.1.0",
"vue": "^3.1.4", "vue": "^3.1.4",
"vue-router": "^4.0.10", "vue-router": "^4.0.10",
"vue3-video-play": "^1.3.1-beta.6", "vue3-video-play-emiyagm": "^1.3.1-beta.6.1",
"vuex": "^4.0.2" "vuex": "^4.0.2"
}, },
"devDependencies": { "devDependencies": {
@ -75,6 +75,7 @@
"svg-sprite-loader": "^6.0.9", "svg-sprite-loader": "^6.0.9",
"swiper": "^8.0.0", "swiper": "^8.0.0",
"vab-config": "0.0.8", "vab-config": "0.0.8",
"vue3-video-play-emiyagm": "^1.3.1-beta.6.1",
"webpackbar": "^5.0.0-3" "webpackbar": "^5.0.0-3"
}, },
"gitHooks": { "gitHooks": {

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2022-03-29 16:45:25 * @Date: 2022-03-29 16:45:25
* @LastEditors: hisense.liangjunhua * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-02 11:59:30 * @LastEditTime: 2022-08-06 10:42:44
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
--> -->
<!DOCTYPE html> <!DOCTYPE html>
@ -48,18 +48,18 @@
// window.SITE_CONFIG['websocketURL'] = '15.2.21.243:8888/renren-admin'; // window.SITE_CONFIG['websocketURL'] = '15.2.21.243:8888/renren-admin';
// window.SITE_CONFIG['POI_URL'] = 'http://15.2.21.238:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address'; // window.SITE_CONFIG['POI_URL'] = 'http://15.2.21.238:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address';
// 西海岸版本 // 西海岸版本
// window.SITE_CONFIG['backUrl'] = 'http://10.134.135.9:9797'; window.SITE_CONFIG['backUrl'] = 'http://10.134.135.9:9797';
// window.SITE_CONFIG['previewUrl'] = 'http://10.134.135.9:9796/'; window.SITE_CONFIG['previewUrl'] = 'http://10.134.135.9:9796/';
// window.SITE_CONFIG['frontUrl'] = 'http://10.134.135.9:9796/document/#/devModelFile/'; window.SITE_CONFIG['frontUrl'] = 'http://10.134.135.9:9796/document/#/devModelFile/';
// window.SITE_CONFIG['apiURL'] = 'http://10.134.135.9:8888/renren-admin'; window.SITE_CONFIG['apiURL'] = 'http://10.134.135.9:8888/renren-admin';
// 开发 // 开发
// window.SITE_CONFIG['backUrl'] = 'http://15.2.21.238:9797'; // window.SITE_CONFIG['backUrl'] = 'http://15.2.21.238:9797';
window.SITE_CONFIG['backUrl'] = 'http://localhost:8001'; // window.SITE_CONFIG['backUrl'] = 'http://localhost:8001';
window.SITE_CONFIG['previewUrl'] = 'http://192.168.124.236:9796/'; // window.SITE_CONFIG['previewUrl'] = 'http://192.168.124.236:9796/';
window.SITE_CONFIG['frontUrl'] = 'http://192.168.124.236:9796/document/#/devModelFile/'; // window.SITE_CONFIG['frontUrl'] = 'http://192.168.124.236:9796/document/#/devModelFile/';
window.SITE_CONFIG['apiURL'] = 'http://192.168.124.236:8888/renren-admin'; // window.SITE_CONFIG['apiURL'] = 'http://192.168.124.236:8888/renren-admin';
window.SITE_CONFIG['websocketURL'] = '192.168.124.236:8888/renren-admin'; // window.SITE_CONFIG['websocketURL'] = '192.168.124.236:8888/renren-admin';
window.SITE_CONFIG['POI_URL'] = 'http://192.168.124.236:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address'; // window.SITE_CONFIG['POI_URL'] = 'http://192.168.124.236:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address';
// 穿透版本 // 穿透版本
// window.SITE_CONFIG['backUrl'] = 'http://124.222.94.39:9797'; // window.SITE_CONFIG['backUrl'] = 'http://124.222.94.39:9797';
// window.SITE_CONFIG['previewUrl'] = 'http://124.222.94.39:9796/'; // window.SITE_CONFIG['previewUrl'] = 'http://124.222.94.39:9796/';

View File

@ -1,11 +1,11 @@
/* /*
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2020-07-07 16:03:23 * @Date: 2020-07-07 16:03:23
* @LastEditors: hisense.liangjunhua * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-01 11:02:21 * @LastEditTime: 2022-08-06 10:43:53
* @Description: 数据资源参数配置 * @Description: 数据资源参数配置
*/ */
const newLocation = 'qingdao' const newLocation = 'xihaian'
// const newLocation = 'baotou' // const newLocation = 'baotou'
// const newLocation = 'xihaian' // const newLocation = 'xihaian'

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2020-07-07 16:03:23 * @Date: 2020-07-07 16:03:23
* @LastEditors: hisense.wuhongjian * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-07-26 14:34:24 * @LastEditTime: 2022-08-02 18:19:32
* @Description: 地图静态参数配置 * @Description: 地图静态参数配置
*/ */
var _mapConfig = {} var _mapConfig = {}
@ -12,7 +12,7 @@ var _mapConfig = {}
// // // //
// ********************************************** // **********************************************
var CONFIGKEY = 'qingdao' var CONFIGKEY = 'qingdao_highgo'
// var CONFIGKEY = 'dev'; // var CONFIGKEY = 'dev';
// *********************************************** // ***********************************************
var BASECONFIGITEM = { var BASECONFIGITEM = {

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2022-05-06 11:12:00 * @Date: 2022-05-06 11:12:00
* @LastEditors: hisense.liangjunhua * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-07-26 11:27:50 * @LastEditTime: 2022-08-03 10:13:59
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
--> -->
<template> <template>
@ -68,4 +68,7 @@
position: relative; position: relative;
background-color: #fff; background-color: #fff;
} }
body {
font-size: 0.14rem;
}
</style> </style>

View File

@ -97,7 +97,7 @@ export function callTheTrendPort(start, end, params) {
export function totalCallsSnum(params) { export function totalCallsSnum(params) {
return request({ return request({
url: url:
`/metrics/api/v1/query?time=${params}&query=sum(apigateway_http_status)`, `/gateway-monitor/getCallCount`,
method: 'get', method: 'get',
}) })
} }

View File

@ -1,8 +1,8 @@
/* /*
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2022-03-29 17:48:03 * @Date: 2022-03-29 17:48:03
* @LastEditors: hisense.liangjunhua * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-07-22 16:03:23 * @LastEditTime: 2022-08-06 15:00:49
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
*/ */
import { createApp } from 'vue' import { createApp } from 'vue'
@ -16,8 +16,8 @@ import 'ant-design-vue/dist/antd.css'
import '@/vab' import '@/vab'
import * as echarts from 'echarts' import * as echarts from 'echarts'
import * as moment from 'moment' import * as moment from 'moment'
import vue3videoPlay from 'vue3-video-play' // import vue3videoPlay from 'vue3-video-play-emiyagm' //
import 'vue3-video-play/dist/style.css' // css import 'vue3-video-play-emiyagm/dist/style.css' // css
import ElementPlus from 'element-plus' import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css' import 'element-plus/dist/index.css'
import * as ElementPlusIconsVue from '@element-plus/icons-vue' import * as ElementPlusIconsVue from '@element-plus/icons-vue'

View File

@ -13,10 +13,16 @@
backgroundImage: `url(${item.photo}) `, backgroundImage: `url(${item.photo}) `,
}" }"
></div> ></div>
<a-tooltip>
<template #title>{{ item.demandSubject }}</template>
<div class="name">{{ item.demandSubject }}</div> <div class="name">{{ item.demandSubject }}</div>
</a-tooltip>
<a-tooltip>
<template #title>{{ item.demandDetails }}</template>
<div class="text"> <div class="text">
{{ item.demandDetails }} {{ item.demandDetails }}
</div> </div>
</a-tooltip>
<div class="reply">回复量:{{ item.commentCount }}</div> <div class="reply">回复量:{{ item.commentCount }}</div>
<div class="view-details" @click="viewDetails(item.id)">查看详情</div> <div class="view-details" @click="viewDetails(item.id)">查看详情</div>
</div> </div>
@ -165,6 +171,10 @@
font-size: 16px; font-size: 16px;
color: #212121; color: #212121;
margin-bottom: 24px; margin-bottom: 24px;
width: 226px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
} }
.text { .text {
width: 100%; width: 100%;
@ -175,6 +185,10 @@
font-size: 14px; font-size: 14px;
color: #666; color: #666;
text-align: center; text-align: center;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
} }
.view-details { .view-details {
width: 75px; width: 75px;

View File

@ -64,14 +64,14 @@
</div> </div>
<div class="pagination"> <div class="pagination">
<!-- 分页 --> <!-- 分页 -->
<span>{{ resourceTotal }}</span> <!-- <span>{{ resourceTotal }}</span>
<a-pagination <a-pagination
v-model:current="currentPage" v-model:current="currentPage"
v-model:pageSize="currentPageSize" v-model:pageSize="currentPageSize"
show-quick-jumper show-quick-jumper
:total="resourceTotal" :total="resourceTotal"
@change="pageChange" @change="pageChange"
/> /> -->
</div> </div>
</main> </main>
</div> </div>
@ -215,7 +215,7 @@
orderField: 'create_date', orderField: 'create_date',
orderType: 'DESC', orderType: 'DESC',
pageNum: currentPage.value, pageNum: currentPage.value,
pageSize: 3, pageSize: 100,
type: '赋能案例', type: '赋能案例',
} }
pageWithAttrs(params).then((res) => { pageWithAttrs(params).then((res) => {
@ -367,14 +367,15 @@
.content { .content {
width: 100%; width: 100%;
display: flex; display: flex;
justify-content: center; justify-content: space-around;
padding-top: 40px; flex-wrap: wrap;
padding: 40px 300px 0;
overflow: hidden; overflow: hidden;
.contenBox { .contenBox {
// width: 430px; // width: 430px;
padding: 30px; padding: 30px;
border: 1px solid #e4e6f5; border: 1px solid #e4e6f5;
margin-right: 30px; margin-bottom: 20px;
background: #ffffff; background: #ffffff;
border-radius: 6px; border-radius: 6px;
box-shadow: 5px 5px 20px 0 #f2f3fb; box-shadow: 5px 5px 20px 0 #f2f3fb;

View File

@ -2,7 +2,7 @@
* @Author: hisense.liangjunhua * @Author: hisense.liangjunhua
* @Date: 2022-06-19 10:15:33 * @Date: 2022-06-19 10:15:33
* @LastEditors: hisense.wuhongjian * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-06-19 18:19:58 * @LastEditTime: 2022-08-06 16:21:24
* @Description: 能力云图-组件服务 * @Description: 能力云图-组件服务
--> -->
<template> <template>
@ -409,11 +409,16 @@
const TotalCallsAPI = () => { const TotalCallsAPI = () => {
const end = Date.parse(new Date()) / 1000 const end = Date.parse(new Date()) / 1000
totalCallsSnum(end).then((res) => { totalCallsSnum(end).then((res) => {
debugger snum.value[1].num = Number(res.data.data)
snum.value[1].num = res.data.data.result[0].value[1]
totalCallsSnum2(end).then((resSon) => { totalCallsSnum2(end).then((resSon) => {
if (snum.value[1].num === 0) {
num.value[2].num = '100%'
} else {
snum.value[2].num = snum.value[2].num =
(resSon.data.data.result[0].value[1] / snum.value[1].num) * 100 + '%' parseInt(
(resSon.data.data.result[0].value[1] / snum.value[1].num) * 100
) + '%'
}
}) })
}) })
} }
@ -421,8 +426,11 @@
timeSwitch(timeSwitchindex.value) timeSwitch(timeSwitchindex.value)
NumberOfComponentServices() NumberOfComponentServices()
ranking(dataclick.value) ranking(dataclick.value)
// 西API
if (!xinhaianIsShow) {
TotalCallsAPI() TotalCallsAPI()
} }
}
onMounted(() => { onMounted(() => {
init() init()
callTheTrend(callTheTrendData.value) callTheTrend(callTheTrendData.value)

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: hisense.liangjunhua * @Author: hisense.liangjunhua
* @Date: 2022-06-13 10:22:27 * @Date: 2022-06-13 10:22:27
* @LastEditors: hisense.liangjunhua * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-02 11:28:00 * @LastEditTime: 2022-08-03 10:40:28
* @Description: 算法上架 * @Description: 算法上架
--> -->
<template> <template>
@ -841,25 +841,25 @@
<style lang="less" scoped> <style lang="less" scoped>
.box { .box {
position: relative; position: relative;
top: 64px; top: 0.64rem;
margin: 15px 400px; margin: 0.15rem 4rem;
padding: 10px; padding: 0.1rem;
background: #fff; background: #fff;
.header { .header {
font-size: 28px; font-size: 0.28rem;
font-weight: 600; font-weight: 600;
} }
.vue-box { .vue-box {
padding: 0 100px; padding: 0 1rem;
} }
.top { .top {
margin: 10px 20px 0; margin: 0.1rem 0.2rem 0;
padding: 15px 30px; padding: 0.15rem 0.3rem;
background: #edf4fc; background: #edf4fc;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
div { div {
font-size: 18px; font-size: 0.18rem;
color: #999; color: #999;
display: flex; display: flex;
justify-content: center; justify-content: center;
@ -868,26 +868,26 @@
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
width: 45px; width: 0.45rem;
height: 45px; height: 0.45rem;
border-radius: 50%; border-radius: 50%;
border: 1px solid rgb(214, 214, 214); border: 0.01rem solid rgb(214, 214, 214);
margin-right: 10px; margin-right: 0.1rem;
transition: all 0.3s ease; transition: all 0.3s ease;
span { span {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
width: 30px; width: 0.3rem;
height: 30px; height: 0.3rem;
border-radius: 50%; border-radius: 50%;
border: 1px solid #999; border: 0.01rem solid #999;
} }
} }
.line { .line {
margin-left: 10px; margin-left: 0.1rem;
width: 130px; width: 1.3rem;
height: 1px; height: 0.01rem;
background: #999; background: #999;
} }
} }
@ -896,10 +896,10 @@
.bg-box { .bg-box {
background: #9ccefa; background: #9ccefa;
color: #fff; color: #fff;
border: 1px solid #9ccefa; border: 0.01rem solid #9ccefa;
span { span {
background: #0087ff; background: #0087ff;
border: 1px solid #0087ff; border: 0.01rem solid #0087ff;
} }
} }
.line { .line {
@ -909,17 +909,18 @@
.btn { .btn {
display: flex; display: flex;
justify-content: space-around; justify-content: space-around;
padding: 10px 350px 0; padding: 0.1rem 3.5rem 0;
button { button {
cursor: pointer; cursor: pointer;
width: 80px; font-size: 0.14rem;
height: 35px; width: 0.8rem;
height: 0.35rem;
text-align: center; text-align: center;
color: #fff; color: #fff;
border: 1px solid #9ccefa; border: 0.01rem solid #9ccefa;
span { span {
background: #0087ff; background: #0087ff;
border: 1px solid #0087ff; border: 0.01rem solid #0087ff;
} }
} }
.line { .line {
@ -940,15 +941,16 @@
.btn { .btn {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
padding: 10px 350px 0; padding: 0.1rem 3.5rem 0;
button { button {
cursor: pointer; cursor: pointer;
width: 80px; font-size: 0.14rem;
height: 35px; width: 0.8rem;
height: 0.35rem;
text-align: center; text-align: center;
color: #fff; color: #fff;
border: none; border: none;
border-radius: 6px; border-radius: 0.06rem;
background: #0087ff; background: #0087ff;
} }
button:nth-of-type(1) { button:nth-of-type(1) {

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: hisense.liangjunhua * @Author: hisense.liangjunhua
* @Date: 2022-06-13 10:22:27 * @Date: 2022-06-13 10:22:27
* @LastEditors: hisense.liangjunhua * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-02 11:40:41 * @LastEditTime: 2022-08-04 16:11:50
* @Description: 应用上架 * @Description: 应用上架
--> -->
<template> <template>
@ -67,7 +67,7 @@
v-else-if="showView === '部署与应用'" v-else-if="showView === '部署与应用'"
:refData="refData" :refData="refData"
:dataFrom="dataFrom" :dataFrom="dataFrom"
:externalField="['共享类型']" :externalField="['共享类型', '访问地址']"
:configure="bs" :configure="bs"
@submit="submit()" @submit="submit()"
@back="back()" @back="back()"
@ -299,7 +299,6 @@
'共享条件', '共享条件',
'应用名称', '应用名称',
'应用描述', '应用描述',
'应用状态',
'应用类型', '应用类型',
]) ])
const notFilled = ref([]) const notFilled = ref([])
@ -347,15 +346,15 @@
) { ) {
notFilled.value.push('应用领域') notFilled.value.push('应用领域')
} }
if ( // if (
!dataFrom.value.infoList.filter( // !dataFrom.value.infoList.filter(
(val) => val.attrType === '应用状态' // (val) => val.attrType === ''
)[0] || // )[0] ||
!dataFrom.value.infoList.filter((val) => val.attrType === '应用状态')[0] // !dataFrom.value.infoList.filter((val) => val.attrType === '')[0]
.attrValue // .attrValue
) { // ) {
notFilled.value.push('应用状态') // notFilled.value.push('')
} // }
if ( if (
!dataFrom.value.infoList.filter( !dataFrom.value.infoList.filter(
(val) => val.attrType === '应用类型' (val) => val.attrType === '应用类型'

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: hisense.liangjunhua * @Author: hisense.liangjunhua
* @Date: 2022-06-17 14:11:08 * @Date: 2022-06-17 14:11:08
* @LastEditors: hisense.liangjunhua * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-02 11:31:43 * @LastEditTime: 2022-08-03 11:47:41
* @Description: 上架 * @Description: 上架
--> -->
<template> <template>
@ -86,6 +86,7 @@
<template v-if="attr.type == 'input2'"> <template v-if="attr.type == 'input2'">
<a-input <a-input
disabled disabled
:maxLength="1000"
v-model:value="val[attr.field]" v-model:value="val[attr.field]"
:placeholder="'请填写' + attr.name" :placeholder="'请填写' + attr.name"
/> />
@ -144,6 +145,7 @@
/> />
<template v-if="val.type == 'input2'"> <template v-if="val.type == 'input2'">
<a-input <a-input
:maxLength="1000"
v-model:value="val.note1" v-model:value="val.note1"
:placeholder="'请填写' + val.name" :placeholder="'请填写' + val.name"
/> />
@ -228,6 +230,7 @@
{{ item.name }} {{ item.name }}
</div> </div>
<a-input <a-input
:maxLength="1000"
v-if="item.type == 'input' && item.name.indexOf('名称') == -1" v-if="item.type == 'input' && item.name.indexOf('名称') == -1"
v-model:value="item.note1" v-model:value="item.note1"
:placeholder="'请输入' + item.name" :placeholder="'请输入' + item.name"
@ -246,9 +249,11 @@
v-else-if="item.type == 'radio'" v-else-if="item.type == 'radio'"
v-model:value="item.note1" v-model:value="item.note1"
:options="item.options" :options="item.options"
@change="changeIiem(item.name, item.note1)"
/> />
<a-input <a-input
v-else-if="item.type == 'AbilityType'" v-else-if="item.type == 'AbilityType'"
:maxLength="1000"
v-model:value="item.note1" v-model:value="item.note1"
:placeholder="'请输入' + item.name" :placeholder="'请输入' + item.name"
:disabled="true" :disabled="true"
@ -256,6 +261,7 @@
<a-input <a-input
v-else-if="item.type == 'ComponentType'" v-else-if="item.type == 'ComponentType'"
v-model:value="item.note1" v-model:value="item.note1"
:maxLength="1000"
:placeholder="'请输入' + item.name" :placeholder="'请输入' + item.name"
:disabled="true" :disabled="true"
/> />
@ -1222,6 +1228,7 @@
.submit { .submit {
margin-top: 0.4rem; margin-top: 0.4rem;
font-size: 0.14rem;
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;

View File

@ -9,7 +9,7 @@
<div class="algorithm-advantage" v-if="flag"> <div class="algorithm-advantage" v-if="flag">
<detals-title title="算法优势" type="ADVANTGE"></detals-title> <detals-title title="算法优势" type="ADVANTGE"></detals-title>
<div class="main"> <div class="main">
<div class="top"> <div class="top" v-if="data.length < 3">
<div v-for="val in data" :key="val.id" class="item"> <div v-for="val in data" :key="val.id" class="item">
<div class="icon" :class="val.icon"></div> <div class="icon" :class="val.icon"></div>
<a-tooltip> <a-tooltip>
@ -22,17 +22,44 @@
</a-tooltip> </a-tooltip>
</div> </div>
</div> </div>
<div class="top" v-else>
<swiper
:slidesPerView="3"
:spaceBetween="30"
:pagination="{ clickable: true }"
:modules="modules"
class="mySwiper2"
@swiper="onSwiper"
@slideChange="onSlideChange"
>
<swiper-slide v-for="val in data" :key="val.id" class="item">
<div class="icon" :class="val.icon"></div>
<a-tooltip>
<template #title>{{ val.title }}</template>
<div class="title">{{ val.title }}</div>
</a-tooltip>
<a-tooltip>
<template #title>{{ val.text }}</template>
<div class="text">{{ val.text }}</div>
</a-tooltip>
</swiper-slide>
</swiper>
</div>
<div class="bottom"></div> <div class="bottom"></div>
</div> </div>
</div> </div>
</template> </template>
<script setup> <script setup>
import { ref, defineProps, watch } from 'vue' import { ref, defineProps, watch } from 'vue'
import { Navigation, Pagination, Scrollbar, A11y } from 'swiper'
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle.vue' import DetalsTitle from '@/views/detailsAll/components/DetalsTitle.vue'
import { Swiper, SwiperSlide } from 'swiper/vue/swiper-vue.js'
import 'swiper/swiper-bundle.min.css'
const data = ref([]) const data = ref([])
const props = defineProps({ const props = defineProps({
dataList: { type: Object, default: null }, dataList: { type: Object, default: null },
}) })
const modules = ref([Pagination])
const flag = ref(true) const flag = ref(true)
if (props.dataList.infoList) { if (props.dataList.infoList) {
let obj = props.dataList.infoList.filter( let obj = props.dataList.infoList.filter(
@ -43,10 +70,10 @@
} else { } else {
data.value = [] data.value = []
let arr = JSON.parse(obj.attrValue) let arr = JSON.parse(obj.attrValue)
if (arr.length > 3) { // if (arr.length > 3) {
// // //
arr = arr.splice(0, 3) // arr = arr.splice(0, 3)
} // }
arr.forEach((item, index) => { arr.forEach((item, index) => {
data.value.push({ data.value.push({
title: item.name, title: item.name,
@ -67,10 +94,10 @@
} else { } else {
data.value = [] data.value = []
let arr = JSON.parse(obj.attrValue) let arr = JSON.parse(obj.attrValue)
if (arr.length > 3) { // if (arr.length > 3) {
// // //
arr = arr.splice(0, 3) // arr = arr.splice(0, 3)
} // }
arr.forEach((item, index) => { arr.forEach((item, index) => {
data.value.push({ data.value.push({
title: item.name, title: item.name,
@ -90,6 +117,7 @@
.main { .main {
margin-top: 40px; margin-top: 40px;
.top { .top {
width: 13.14rem;
display: flex; display: flex;
justify-content: space-around; justify-content: space-around;
align-items: center; align-items: center;

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="application-associated-ability" v-if="flag"> <div class="application-associated-ability" v-if="flag">
<detals-title title="关联应用" type="ASSOCIATED"></detals-title> <detals-title title="来源应用" type="ASSOCIATED"></detals-title>
<div <div
class="application-associated-ability-main" class="application-associated-ability-main"
v-if="dataFrom[0].dataList.length < 4" v-if="dataFrom[0].dataList.length < 4"

View File

@ -64,18 +64,18 @@
}, },
]) ])
const list = ref([]) const list = ref([])
// id // id
if (keyId) { if (keyId) {
queryPartAppByKeyId2({ keyId: keyId }).then((res) => { queryPartAppByKeyId2({ keyId: keyId }).then((res) => {
console.log('ressssssss', res) console.log('ressssssss', res)
if (res.data.data.length > 0) { if (res.data.data.length > 0) {
// //
navList.value.unshift({ navList.value.unshift({
name: '关联应用', name: '来源应用',
key: 'algorithm-associated-ability', key: 'algorithm-associated-ability',
show: true, show: true,
}) })
// list.value.push('') // list.value.push('')
console.log('navList', navList) console.log('navList', navList)
} }
}) })
@ -130,7 +130,7 @@
if (list.value.length > 0) { if (list.value.length > 0) {
if (navList.value.filter((item) => item.name === list.value[0])[0]) { if (navList.value.filter((item) => item.name === list.value[0])[0]) {
select.value = navList.value.filter( select.value = navList.value.filter(
(item) => (item.name === '关联应用') | (item.name === list.value[0]) (item) => (item.name === '来源应用') | (item.name === list.value[0])
)[0].key )[0].key
} }
} }
@ -171,7 +171,7 @@
list.value.push('使用方式') list.value.push('使用方式')
} }
}) })
list.value.unshift('关联应用') list.value.unshift('来源应用')
navList.value.forEach((item) => { navList.value.forEach((item) => {
console.log(item) console.log(item)
if (list.value.indexOf(item.name) > -1) { if (list.value.indexOf(item.name) > -1) {

View File

@ -10,7 +10,7 @@
<div <div
v-for="(itemSonTitle, indexSonTitle) in dataFrom.attrValue" v-for="(itemSonTitle, indexSonTitle) in dataFrom.attrValue"
:key="itemSonTitle.name" :key="itemSonTitle.name"
@click="tabSwitch(itemSonTitle.name)" @click="tabSwitch(itemSonTitle.name, indexSonTitle)"
class="tab-son" class="tab-son"
:class=" :class="
tabIndexClass(indexSonTitle, dataFrom.name, dataFrom.attrValue) tabIndexClass(indexSonTitle, dataFrom.name, dataFrom.attrValue)
@ -21,7 +21,8 @@
<div <div
class="tab-top" class="tab-top"
:class=" :class="
tabInitialize() == itemSonTitle.name ? 'tab-top-down' : '' (tabInitialize() == itemSonTitle.name ? 'tab-top-down' : '') &&
dataIndex == indexSonTitle
" "
> >
{{ itemSonTitle.name }} {{ itemSonTitle.name }}
@ -29,12 +30,20 @@
</a-tooltip> </a-tooltip>
<div <div
class="tab-bottom" class="tab-bottom"
v-if="tabInitialize() == itemSonTitle.name" v-if="
tabInitialize() == itemSonTitle.name && dataIndex == indexSonTitle
"
></div> ></div>
</div> </div>
</div> </div>
<template v-for="itemSonTitle in dataFrom.attrValue" :key="itemSonTitle"> <template
<div class="content" v-if="tabindex == itemSonTitle.name"> v-for="(itemSonTitle, indexSonTitle) in dataFrom.attrValue"
:key="itemSonTitle"
>
<div
class="content"
v-if="tabindex == itemSonTitle.name && dataIndex == indexSonTitle"
>
<div class="content-left"> <div class="content-left">
<div class="content-left-scene" v-if="!itemSonTitle.img"></div> <div class="content-left-scene" v-if="!itemSonTitle.img"></div>
<a-image <a-image
@ -60,6 +69,7 @@
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle' import DetalsTitle from '@/views/detailsAll/components/DetalsTitle'
import { ref, defineProps, watch } from 'vue' import { ref, defineProps, watch } from 'vue'
const flag = ref(true) const flag = ref(true)
let dataIndex = ref(0)
let dataFrom = ref([]) let dataFrom = ref([])
// tab // tab
let tabindex = ref('场景说明一') let tabindex = ref('场景说明一')
@ -105,8 +115,9 @@
return tabindex.value return tabindex.value
} }
//tab //tab
function tabSwitch(name) { function tabSwitch(name, index) {
tabindex.value = name tabindex.value = name
dataIndex.value = index
return tabindex.value return tabindex.value
} }
</script> </script>

View File

@ -66,7 +66,7 @@
}) })
const select = ref('application-associated-ability') const select = ref('application-associated-ability')
const list = ref([]) const list = ref([])
// id // id
if (keyId) { if (keyId) {
let params = { let params = {
keyId: keyId, keyId: keyId,
@ -75,7 +75,7 @@
queryPartAppByKeyId(params).then((res) => { queryPartAppByKeyId(params).then((res) => {
console.log('ressssssss', res) console.log('ressssssss', res)
if (res.data.data.length != 0) { if (res.data.data.length != 0) {
// //
navList.value.unshift({ navList.value.unshift({
name: '关联组件', name: '关联组件',
key: 'application-associated-ability', key: 'application-associated-ability',

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="application-associated-ability" v-if="flag"> <div class="application-associated-ability" v-if="flag">
<detals-title title="关联应用" type="ASSOCIATED"></detals-title> <detals-title title="来源应用" type="ASSOCIATED"></detals-title>
<div <div
class="application-associated-ability-main" class="application-associated-ability-main"
v-if="dataFrom[0].dataList.length < 4" v-if="dataFrom[0].dataList.length < 4"

View File

@ -62,18 +62,18 @@
}) })
const select = ref('business-associated-ability') const select = ref('business-associated-ability')
const list = ref([]) const list = ref([])
// id // id
if (keyId) { if (keyId) {
queryPartAppByKeyId2({ keyId: keyId }).then((res) => { queryPartAppByKeyId2({ keyId: keyId }).then((res) => {
console.log('ressssssss', res) console.log('ressssssss', res)
if (res.data.data.length > 0) { if (res.data.data.length > 0) {
// //
navList.value.unshift({ navList.value.unshift({
name: '关联应用', name: '来源应用',
key: 'business-associated-ability', key: 'business-associated-ability',
show: true, show: true,
}) })
// list.value.push('') // list.value.push('')
console.log('navList', navList) console.log('navList', navList)
} }
}) })
@ -85,7 +85,7 @@
if (props.dataList.infoList) { if (props.dataList.infoList) {
list.value = [] list.value = []
let arr = [ let arr = [
'关联应用', '来源应用',
'组件视频介绍', '组件视频介绍',
'功能介绍', '功能介绍',
'应用场景', '应用场景',
@ -110,12 +110,12 @@
list.value.push('组件展示') list.value.push('组件展示')
} }
}) })
list.value.unshift('关联应用') list.value.unshift('来源应用')
list.value.push('使用方式') list.value.push('使用方式')
navList.value.forEach((item) => { navList.value.forEach((item) => {
console.log(item) console.log(item)
if (list.value.indexOf(item.name) > -1) { if (list.value.indexOf(item.name) > -1) {
if (item.name == '关联应用') { if (item.name == '来源应用') {
if (props.associatedComponents[0].dataList.length != 0) { if (props.associatedComponents[0].dataList.length != 0) {
item.show = true item.show = true
} }
@ -127,7 +127,7 @@
if (list.value.length > 0) { if (list.value.length > 0) {
if (navList.value.filter((item) => item.name === list.value[0])[0]) { if (navList.value.filter((item) => item.name === list.value[0])[0]) {
select.value = navList.value.filter( select.value = navList.value.filter(
(item) => (item.name === '关联应用') | (item.name === list.value[0]) (item) => (item.name === '来源应用') | (item.name === list.value[0])
)[0].key )[0].key
} }
} }
@ -145,7 +145,7 @@
if (val) { if (val) {
list.value = [] list.value = []
let arr = [ let arr = [
'关联应用', '来源应用',
'组件视频介绍', '组件视频介绍',
'功能介绍', '功能介绍',
'应用场景', '应用场景',
@ -171,12 +171,12 @@
list.value.push('组件展示') list.value.push('组件展示')
} }
}) })
list.value.unshift('关联应用') list.value.unshift('来源应用')
list.value.push('使用方式') list.value.push('使用方式')
navList.value.forEach((item) => { navList.value.forEach((item) => {
console.log(item) console.log(item)
if (list.value.indexOf(item.name) > -1) { if (list.value.indexOf(item.name) > -1) {
if (item.name == '关联应用') { if (item.name == '来源应用') {
if (props.associatedComponents[0].dataList.length != 0) { if (props.associatedComponents[0].dataList.length != 0) {
item.show = true item.show = true
} }
@ -189,7 +189,7 @@
if (navList.value.filter((item) => item.name === list.value[0])[0]) { if (navList.value.filter((item) => item.name === list.value[0])[0]) {
select.value = navList.value.filter( select.value = navList.value.filter(
(item) => (item) =>
(item.name === '关联应用') | (item.name === list.value[0]) (item.name === '来源应用') | (item.name === list.value[0])
)[0].key )[0].key
} }
} }

View File

@ -210,7 +210,6 @@
let obj = props.dataList.infoList.filter( let obj = props.dataList.infoList.filter(
(item) => item.attrType === '使用手册' (item) => item.attrType === '使用手册'
)[0] )[0]
console.log('dataFrom.value.link', obj.attrValue)
if (obj) { if (obj) {
window.open( window.open(
window.SITE_CONFIG.previewUrl + window.SITE_CONFIG.previewUrl +
@ -221,7 +220,7 @@
message.config({ message.config({
top: '100px', // top: '100px', //
}) })
message.error('暂未上传使用手册') message.error('暂未开放新手指引')
} }
} }
</script> </script>

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="application-associated-ability" v-if="flag"> <div class="application-associated-ability" v-if="flag">
<detals-title title="关联应用" type="ASSOCIATED"></detals-title> <detals-title title="来源应用" type="ASSOCIATED"></detals-title>
<div <div
class="application-associated-ability-main" class="application-associated-ability-main"
v-if="dataFrom[0].dataList.length < 4" v-if="dataFrom[0].dataList.length < 4"

View File

@ -65,18 +65,18 @@
}) })
const select = ref('developer-associated-ability') const select = ref('developer-associated-ability')
const list = ref([]) const list = ref([])
// id // id
if (keyId) { if (keyId) {
queryPartAppByKeyId2({ keyId: keyId }).then((res) => { queryPartAppByKeyId2({ keyId: keyId }).then((res) => {
console.log('ressssssss', res) console.log('ressssssss', res)
if (res.data.data.length > 0) { if (res.data.data.length > 0) {
// //
navList.value.unshift({ navList.value.unshift({
name: '关联应用', name: '来源应用',
key: 'developer-associated-ability', key: 'developer-associated-ability',
show: true, show: true,
}) })
// list.value.push('') // list.value.push('')
console.log('navList', navList) console.log('navList', navList)
} }
}) })
@ -101,12 +101,12 @@
list.value.push('组件试用') list.value.push('组件试用')
} }
}) })
list.value.unshift('关联应用') list.value.unshift('来源应用')
list.value.push('使用方式') list.value.push('使用方式')
navList.value.forEach((item) => { navList.value.forEach((item) => {
console.log(item) console.log(item)
if (list.value.indexOf(item.name) > -1) { if (list.value.indexOf(item.name) > -1) {
// if (item.name == '') { // if (item.name == '') {
// if (props.associatedComponents[0].dataList.length != 0) { // if (props.associatedComponents[0].dataList.length != 0) {
// item.show = true // item.show = true
// } // }
@ -117,7 +117,7 @@
}) })
if (navList.value.filter((item) => item.name === list.value[0])[0]) { if (navList.value.filter((item) => item.name === list.value[0])[0]) {
select.value = navList.value.filter( select.value = navList.value.filter(
(item) => (item.name === '关联应用') | (item.name === list.value[0]) (item) => (item.name === '来源应用') | (item.name === list.value[0])
// (item) => item.name === list.value[0] // (item) => item.name === list.value[0]
)[0].key )[0].key
} }
@ -151,13 +151,13 @@
list.value.push('组件试用') list.value.push('组件试用')
} }
}) })
list.value.unshift('关联应用') list.value.unshift('来源应用')
// list.value.push('') // list.value.push('')
list.value.push('使用方式') list.value.push('使用方式')
navList.value.forEach((item) => { navList.value.forEach((item) => {
console.log(item) console.log(item)
if (list.value.indexOf(item.name) > -1) { if (list.value.indexOf(item.name) > -1) {
// if (item.name == '') { // if (item.name == '') {
// if (props.associatedComponents[0].dataList.length != 0) { // if (props.associatedComponents[0].dataList.length != 0) {
// item.show = true // item.show = true
// } // }
@ -170,7 +170,7 @@
if (navList.value.filter((item) => item.name === list.value[0])[0]) { if (navList.value.filter((item) => item.name === list.value[0])[0]) {
select.value = navList.value.filter( select.value = navList.value.filter(
(item) => (item) =>
(item.name === '关联应用') | (item.name === list.value[0]) (item.name === '来源应用') | (item.name === list.value[0])
)[0].key )[0].key
} }
} }

View File

@ -173,7 +173,7 @@
message.config({ message.config({
top: '100px', // top: '100px', //
}) })
message.error('暂未上传使用手册') message.error('暂未开放新手指引')
} }
} }
watch( watch(

View File

@ -17,7 +17,12 @@
</div> </div>
<div class="main-center"> <div class="main-center">
<p>{{ dataFrom.numberName }}</p> <p>{{ dataFrom.numberName }}</p>
<p>{{ dataFrom.number }}</p> <a-tooltip>
<template #title>{{ dataFrom.number }}</template>
<p class="main-center-number">
{{ dataFrom.number }}
</p>
</a-tooltip>
<div @click="copyFunction(dataFrom.number, '复制账号')">复制账号</div> <div @click="copyFunction(dataFrom.number, '复制账号')">复制账号</div>
</div> </div>
<div class="main-right"> <div class="main-right">
@ -40,9 +45,9 @@
}) })
const dataFrom = ref({ const dataFrom = ref({
linkName: '试用地址', linkName: '试用地址',
link: 'http://localhost:8080/#/detailsfdddffffffffffffffdfgdfgdfdgdfgdfg', link: '',
numberName: '试用账号', numberName: '试用账号',
number: 'zhangfeihu', number: '',
passwordName: '试用密码', passwordName: '试用密码',
password: '**************************', password: '**************************',
password2: '', password2: '',
@ -144,6 +149,13 @@
.main-center { .main-center {
padding-left: 1rem; padding-left: 1rem;
padding-right: 1rem; padding-right: 1rem;
.main-center-number {
display: inline-block;
width: 2.4rem;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
} }
.main-right { .main-right {
padding-right: 0.7rem; padding-right: 0.7rem;

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="application-associated-ability" v-if="flag"> <div class="application-associated-ability" v-if="flag">
<detals-title title="关联应用" type="ASSOCIATED"></detals-title> <detals-title title="来源应用" type="ASSOCIATED"></detals-title>
<div <div
class="application-associated-ability-main" class="application-associated-ability-main"
v-if="dataFrom[0].dataList.length < 4" v-if="dataFrom[0].dataList.length < 4"

View File

@ -64,18 +64,18 @@
associatedComponents: { type: Array, default: null }, associatedComponents: { type: Array, default: null },
}) })
const list = ref([]) const list = ref([])
// id // id
if (keyId) { if (keyId) {
queryPartAppByKeyId2({ keyId: keyId }).then((res) => { queryPartAppByKeyId2({ keyId: keyId }).then((res) => {
console.log('ressssssss', res) console.log('ressssssss', res)
if (res.data.data.length > 0) { if (res.data.data.length > 0) {
// //
navList.value.unshift({ navList.value.unshift({
name: '关联应用', name: '来源应用',
key: 'layer-service-associated-ability', key: 'layer-service-associated-ability',
show: true, show: true,
}) })
list.value.unshift('关联应用') list.value.unshift('来源应用')
} }
}) })
} }
@ -137,7 +137,7 @@
list.value.push('使用方式') list.value.push('使用方式')
} }
}) })
list.value.unshift('关联应用') list.value.unshift('来源应用')
navList.value.forEach((item) => { navList.value.forEach((item) => {
console.log(item) console.log(item)
if (list.value.indexOf(item.name) > -1) { if (list.value.indexOf(item.name) > -1) {
@ -146,7 +146,7 @@
}) })
if (navList.value.filter((item) => item.name === list.value[0])[0]) { if (navList.value.filter((item) => item.name === list.value[0])[0]) {
select.value = navList.value.filter( select.value = navList.value.filter(
(item) => (item.name === '关联应用') | (item.name === list.value[0]) (item) => (item.name === '来源应用') | (item.name === list.value[0])
// (item) => item.name === list.value[0] // (item) => item.name === list.value[0]
)[0].key )[0].key
} }
@ -215,7 +215,7 @@
list.value.push('使用方式') list.value.push('使用方式')
} }
}) })
list.value.unshift('关联应用') list.value.unshift('来源应用')
navList.value.forEach((item) => { navList.value.forEach((item) => {
console.log(item) console.log(item)
if (list.value.indexOf(item.name) > -1) { if (list.value.indexOf(item.name) > -1) {

View File

@ -12,14 +12,14 @@
<div class="left"> <div class="left">
<a-tooltip> <a-tooltip>
<template #title>{{ item.linkValue }}</template> <template #title>{{ item.linkValue }}</template>
<p> <p @click="ServiceAddressFunction(item.linkValue)">
服务地址 服务地址
{{ item.linkValue }} {{ item.linkValue }}
</p> </p>
</a-tooltip> </a-tooltip>
<a-tooltip> <a-tooltip>
<template #title>{{ item.csslinkValue }}</template> <template #title>{{ item.csslinkValue }}</template>
<p> <p @click="ServiceAddressFunction(item.csslinkValue)">
样式服务地址 样式服务地址
{{ item.csslinkValue }} {{ item.csslinkValue }}
</p> </p>
@ -186,6 +186,10 @@
} }
} }
) )
//
function ServiceAddressFunction(link) {
window.open(link)
}
function technical() { function technical() {
// //
// const type = pinyin(props.dataList.type, { // const type = pinyin(props.dataList.type, {
@ -280,6 +284,7 @@
color: #212956; color: #212956;
line-height: 26px; line-height: 26px;
margin-top: 0.3rem; margin-top: 0.3rem;
cursor: pointer;
} }
p:first-child { p:first-child {
margin-top: 0.2rem; margin-top: 0.2rem;

View File

@ -772,7 +772,7 @@
type: Cardsname.value, type: Cardsname.value,
name: '', name: '',
infoList: [], infoList: [],
orderField: 'total', // total visits 访 applyCount score collectCount orderField: 'visits', // total visits 访 applyCount score collectCount
orderType: 'DESC', // ASC DESC orderType: 'DESC', // ASC DESC
} }
//西 //西

View File

@ -37,7 +37,9 @@
{{ `共选取${selectedRowKeys.length}个算法` }} {{ `共选取${selectedRowKeys.length}个算法` }}
</div> </div>
<div class="td" v-for="(item, k) in detailArray" :key="k"> <div class="td" v-for="(item, k) in detailArray" :key="k">
<span v-if="item">{{ item.name || '--' }}</span> <span v-if="item" style="line-height: 14px">
{{ item.name || '--' }}
</span>
<span <span
v-if="item" v-if="item"
@click="deleteList(k)" @click="deleteList(k)"

View File

@ -249,7 +249,7 @@
relaunch, relaunch,
selectOne, selectOne,
} from '@/api/home' } from '@/api/home'
import { getCategoryTreePage } from '@/api/personalCenter' import { getCategoryTreePage, endProcess } from '@/api/personalCenter'
import mybus from '@/myplugins/mybus' import mybus from '@/myplugins/mybus'
import { sgcDel, getApplyForm } from '@/api/personalCenter' import { sgcDel, getApplyForm } from '@/api/personalCenter'
import { pageWithAttrs } from '@/api/home' import { pageWithAttrs } from '@/api/home'
@ -327,6 +327,30 @@
enclosureName: '', // enclosureName: '', //
}) })
const dataList = ref([]) const dataList = ref([])
const id = router.currentRoute.value.query.id
const taskId = router.currentRoute.value.query.taskId
const businessKey = ref(router.currentRoute.value.query.id)
if (id) {
getApplyForm(id).then((res) => {
console.log('修改==============>', res.data.data)
// formName.id = res.data.data.id || ''
formName.applicationSystem = res.data.data.applicationSystem || ''
formName.applicationScene = res.data.data.applicationScene || []
formName.applicationBackground =
res.data.data.applicationBackground || ''
formName.effectWish = res.data.data.effectWish || ''
formName.phone = res.data.data.phone || ''
// formName.system = res.data.data.system || []
formName.enclosure = res.data.data.enclosure || ''
formName.enclosureName = res.data.data.enclosureName || ''
if (res.data.data.enclosure) {
fileList.value.push({
name: res.data.data.enclosureName,
url: res.data.data.enclosure,
})
}
})
}
getUser().then((res) => { getUser().then((res) => {
formName.user = res.data.data.realName formName.user = res.data.data.realName
formName.userId = res.data.data.id formName.userId = res.data.data.id
@ -338,18 +362,6 @@
}) })
}) })
// console.log('====================', list.value) // console.log('====================', list.value)
const businessKey = ref(router.currentRoute.value.query.id)
const taskId = ref(router.currentRoute.value.query.taskId)
if (businessKey.value) {
getApplyForm(businessKey.value).then((res) => {
formName.id = res.data.data.id
formName.phone = res.data.data.phone
formName.scene = res.data.data.scene
formName.basis = res.data.data.basis
formName.enclosure = res.data.data.enclosure
// console.log('================>', res, formName.phone)
})
}
const applicationSceneOpthion = ref([]) const applicationSceneOpthion = ref([])
getCategoryTreePage({ getCategoryTreePage({
page: 1, page: 1,
@ -385,34 +397,6 @@
window.history.go(-1) window.history.go(-1)
} }
const processStartHandle = () => { const processStartHandle = () => {
if (businessKey.value) {
const obj = ref({})
for (const key in formName) {
if (key !== 'formNameSystem') {
obj.value[key] = formName[key]
}
}
obj.value.system = formName.system[0].resourceName
tabilityapplication(obj.value).then((upres) => {
if (upres.data.code == 0) {
relaunch({ data: obj.value, taskId: taskId.value }).then(
(res) => {
// console.log('================>', res)
if (res.data.code == 0) {
message.success('重新发起流程成功!')
window.setTimeout(() => {
window.history.go(-1)
}, 1000)
} else {
message.error('重新发起流程失败!')
}
}
)
} else {
message.error('数据更新失败!')
}
})
} else {
formRef.value.validate().then(() => { formRef.value.validate().then(() => {
if (!formUrl) { if (!formUrl) {
return message.error('请设置保存表单的URL') return message.error('请设置保存表单的URL')
@ -420,6 +404,139 @@
if (!formName) { if (!formName) {
return message.error('请设置表单名称') return message.error('请设置表单名称')
} }
if (id) {
endProcess({ instanceId: taskId }).then((end) => {
if (end.data.code == 0) {
let ids = []
let falgNum = 0
let sxt = true
formName.system = []
console.log('list==================', list.value)
list.value.map((val) => {
val.arr.map((item) => {
if (item.type !== '基础设施') {
falgNum++
}
})
})
list.value.map((val) => {
val.arr.map((item) => {
if (item.type !== '基础设施') {
formName.system.push({
resourceId: item.resourceId,
resourceName: item.resourceName,
})
falgNum++
console.log(item.id)
if (item.id) {
ids.push(item.id)
}
} else {
let obj = {}
Object.assign(obj, formName)
console.log('摄像头===============>', obj, item)
obj.system = []
item.note1 = JSON.parse(item.note1)
item.note1.map((sxt) => {
obj.system.push({
resourceId: sxt.idtCameraChannel + '',
resourceName: sxt.channelName,
cameraId: sxt.channelId, //
channelCode: sxt.channelCode,
channelId: sxt.channelId,
channelName: sxt.channelName,
checkStatus: sxt.checkStatus + '',
gpsX: sxt.gpsX,
gpsY: sxt.gpsY,
idtCameraChannel: sxt.idtCameraChannel + '',
nodeName: sxt.nodeName,
parentId: sxt.parentId,
status: sxt.status + '',
})
})
submitApply(obj).then((res) => {
// applySuccess.value = false
console.log('摄像头申请================>', res)
if (item.id) {
sgcDel({ ids: [item.id] }).then((res1) => {
if (res1.data.msg === 'success') {
if (falgNum == 0 && sxt) {
message.success(
'申请提交成功,请到消息中心查看!'
)
sxt = false
}
mybus.emit('getSgcNum')
router.push({
path: '/DetailsPageconetent',
query: {
select: '组件服务',
},
})
}
})
} else {
if (
res.data.msg === 'success' &&
falgNum == 0 &&
sxt
) {
message.success('申请提交成功,请到消息中心查看!')
sxt = false
}
router.push({
path: '/DetailsPageconetent',
query: {
select: '组件服务',
},
})
}
})
}
})
})
console.log(
'提交数据==========================>',
formName,
ids
)
if (formName.system.length !== 0) {
if (formName.applicationSystem.length == 0) {
formName.applicationSystem = ''
}
submitApply(formName).then((res) => {
// applySuccess.value = false
message.success('申请提交成功,请到消息中心查看!')
console.log('能力申请================>', res)
if (res.data.code == 0) {
if (ids && ids.length > 0) {
sgcDel({ ids: ids }).then((res) => {
if (res.data.msg === 'success') {
mybus.emit('getSgcNum')
router.push({
path: '/DetailsPageconetent',
query: {
select: '组件服务',
},
})
}
})
} else {
router.push({
path: '/DetailsPageconetent',
query: {
select: '组件服务',
},
})
}
} else {
message.error('申请失败!')
}
})
}
}
})
} else {
if (!applyAll) { if (!applyAll) {
console.log(list.value[0].arr[0]) console.log(list.value[0].arr[0])
// //
@ -576,8 +693,8 @@
} }
}) })
} }
})
} }
})
} }
// //
const startProcess = (processDefinitionKey, businessKey, formData) => { const startProcess = (processDefinitionKey, businessKey, formData) => {

View File

@ -447,13 +447,15 @@
height: 0.24rem; height: 0.24rem;
width: 0.24rem; width: 0.24rem;
background: url('~@/assets/home/shenqing.png') no-repeat; background: url('~@/assets/home/shenqing.png') no-repeat;
background-size: cover; background-size: contain;
background-position: center; background-position: center;
} }
.fixedmount div:nth-child(2) p:nth-child(1) { .fixedmount div:nth-child(2) p:nth-child(1) {
height: 0.24rem; height: 0.24rem;
width: 0.24rem; width: 0.24rem;
background: url('~@/assets/home/shangjia.png') no-repeat; background: url('~@/assets/home/shangjia.png') no-repeat;
background-size: contain;
background-position: center;
} }
.ability-to-recommend-bottom { .ability-to-recommend-bottom {
width: 100%; width: 100%;

View File

@ -48,6 +48,9 @@
</div> </div>
<span v-if="item.title !== '区级'">{{ val.total }}</span> <span v-if="item.title !== '区级'">{{ val.total }}</span>
<span v-else> <span v-else>
<span style="display: inline-block; margin-right: 4px">
{{ val.total }}
</span>
<down-outlined v-show="!val.show" /> <down-outlined v-show="!val.show" />
<up-outlined v-show="val.show" /> <up-outlined v-show="val.show" />
</span> </span>

View File

@ -67,6 +67,10 @@
</a-button> </a-button>
</div> </div>
<i class="boundary"></i> <i class="boundary"></i>
<!-- 批量预览 -->
<a-button type="primary" @click="batchPreview" class="buttonAdd">
批量预览
</a-button>
<!-- 添加至申购车 --> <!-- 添加至申购车 -->
<a-button type="primary" @click="addShoppingCart" class="buttonAdd"> <a-button type="primary" @click="addShoppingCart" class="buttonAdd">
添加至申购车 添加至申购车
@ -143,6 +147,7 @@
</template> </template>
</a-table> </a-table>
</div> </div>
<!-- 单个预览弹窗 -->
<a-modal <a-modal
v-model:visible="visible" v-model:visible="visible"
title="视频预览" title="视频预览"
@ -156,6 +161,26 @@
</div> </div>
</div> </div>
</a-modal> </a-modal>
<!-- 批量预览弹窗 -->
<a-modal
wrapClassName="batch-preview-modal"
v-model:visible="batchVisible"
title="视频批量预览"
:width="1250"
destroyOnClose
@cancel="videoClean"
>
<template #footer></template>
<div class="batch-video">
<div
v-for="item in videoList"
:key="item.id"
style="width: 100%; height: 100%"
>
<vue3VideoPlay v-bind="item.options" />
</div>
</div>
</a-modal>
<a-modal <a-modal
wrapClassName="wrj" wrapClassName="wrj"
v-model:visible="wrjVisible" v-model:visible="wrjVisible"
@ -233,7 +258,7 @@
const router = useRouter() const router = useRouter()
const whoShow1 = ref(whoShow) const whoShow1 = ref(whoShow)
const options = reactive({ const options = reactive({
width: '700px', // width: '900px', //
height: '400px', // height: '400px', //
color: '#409eff', // color: '#409eff', //
title: '', // title: '', //
@ -259,14 +284,16 @@
'fullScreen', 'fullScreen',
], //, ], //,
}) })
const videoList = ref([])
let visible = ref(false) let visible = ref(false)
let batchVisible = ref(false)
const jcssType = ref(router.currentRoute.value.query.type) const jcssType = ref(router.currentRoute.value.query.type)
const pagination = ref({ const pagination = ref({
total: 0, total: 0,
current: 1, current: 1,
pageSize: 10, //10 pageSize: 10, //10
showSizeChanger: true, showSizeChanger: true,
pageSizeOptions: ['5', '10', '15', '20'], // pageSizeOptions: ['10', '30', '50', '100', '1000'], //
}) })
const mapSearchParam = ref({ const mapSearchParam = ref({
// //
@ -552,6 +579,56 @@
} }
} }
} }
const batchPreview = async function () {
if (selectedList.value.length > 0) {
const list = selectedList.value.splice(0, 4)
const length = list.length
videoList.value = []
for (let index = 0; index < length; index++) {
const param = {
key: list[index].channelId,
}
let ob = {
options: {
width: '600px', //
height: '350px', //
color: '#409eff', //
title: '', //
src: '', //
type: 'm3u8', //
muted: false, //
webFullScreen: false,
speedRate: ['0.75', '1.0', '1.25', '1.5', '2.0'], //
autoPlay: false, //
loop: false, //
mirror: false, //
ligthOff: false, //
volume: 0.3, //
control: true, //
controlBtns: [
'audioTrack',
'quality',
'speedRate',
'volume',
'setting',
'pip',
'pageFullScreen',
'fullScreen',
], //,
},
}
await getStreamByChannelCode(param).then((res) => {
ob.options.src = res.data.data
console.log('监测ob的变化', ob)
videoList.value.push(ob)
})
}
console.log('验证数据的准确性', videoList)
batchVisible.value = true
} else {
message.error('请选择需要预览的数据')
}
}
// //
const nullClick = () => { const nullClick = () => {
clickList.value[1].content = [] clickList.value[1].content = []
@ -562,8 +639,19 @@
// //
const clean = () => { const clean = () => {
mapSearchParam.value.cameraName = '' mapSearchParam.value.cameraName = ''
selectedList.value = []
selectedRowKeys.value = []
videoList.value = []
pagination.value.current = 1
mapSearchParam.value.pageNum = 1
pagination.value.pageSize = 10
getCamera() getCamera()
} }
const videoClean = () => {
selectedList.value = []
selectedRowKeys.value = []
videoList.value = []
}
// //
const dept = reactive({}) const dept = reactive({})
// eslint-disable-next-line no-undef // eslint-disable-next-line no-undef
@ -709,8 +797,8 @@
const onSelectChange = (record, selected, selectedRows, nativeEvent) => { const onSelectChange = (record, selected, selectedRows, nativeEvent) => {
console.log('hahhahah', record, selected, selectedRows, nativeEvent) console.log('hahhahah', record, selected, selectedRows, nativeEvent)
if (selected) { if (selected) {
if (selectedRowKeys.value.length == 10) { if (selectedRowKeys.value.length == 1000) {
message.warning('最多只能添加10个摄像头!') message.warning('最多只能添加1000个摄像头!')
} else { } else {
selectedList.value.push(record) selectedList.value.push(record)
selectedRowKeys.value.push(record.channelCode || record.channelId) selectedRowKeys.value.push(record.channelCode || record.channelId)
@ -734,8 +822,8 @@
selectedList.value.push(val) selectedList.value.push(val)
selectedRowKeys.value.push(val.channelCode || val.channelId) selectedRowKeys.value.push(val.channelCode || val.channelId)
}) })
if (selectedRowKeys.value.length > 10) { if (selectedRowKeys.value.length > 1000) {
message.warning('最多只能添加10个摄像头!') message.warning('最多只能添加1000个摄像头!')
changeRows.map((val) => { changeRows.map((val) => {
selectedList.value = selectedList.value.filter( selectedList.value = selectedList.value.filter(
(item) => item.idtCameraChannel !== val.idtCameraChannel (item) => item.idtCameraChannel !== val.idtCameraChannel
@ -912,4 +1000,15 @@
overflow-y: scroll !important; overflow-y: scroll !important;
} }
} }
.batch-preview-modal {
.batch-video {
width: 100%;
display: grid;
grid-template-columns: 50% 50%;
grid-template-rows: 50% 50%;
justify-content: center;
grid-row-gap: 14px;
grid-column-gap: 20px;
}
}
</style> </style>

View File

@ -14,10 +14,15 @@
{{ item.name }} {{ item.name }}
</div> </div>
<div class="name-box"> <div class="name-box">
<div class="item-v" v-for="(v, j) in item.list" :key="j" :style="{ <div
class="item-v"
v-for="(v, j) in item.list"
:key="j"
:style="{
'background-image': `url(${item.imgBG || ''})`, 'background-image': `url(${item.imgBG || ''})`,
width: `${item.width || ''}`, width: `${item.width || ''}`,
}"> }"
>
{{ v }} {{ v }}
</div> </div>
</div> </div>
@ -32,8 +37,11 @@
<div class="text">{{ item.name }}</div> <div class="text">{{ item.name }}</div>
<div class="line"></div> <div class="line"></div>
</div> </div>
<div class="img-bg" :class="item.className" :style="{ 'background-image': `url(${item.bgImg || ''})` }"> <div
</div> class="img-bg"
:class="item.className"
:style="{ 'background-image': `url(${item.bgImg || ''})` }"
></div>
<div v-if="item.btnText" class="btn" @click="toWhere(item.name)"> <div v-if="item.btnText" class="btn" @click="toWhere(item.name)">
{{ item.btnText }} >> {{ item.btnText }} >>
</div> </div>
@ -56,7 +64,12 @@
</div> --> </div> -->
</div> </div>
<!-- 能力上架弹窗 --> <!-- 能力上架弹窗 -->
<a-modal v-model:visible="visible" @ok="handleOk" class="shangjia-class" @cancel="handlecancel"> <a-modal
v-model:visible="visible"
@ok="handleOk"
class="shangjia-class"
@cancel="handlecancel"
>
<div class="ant-modal-title" id="vcDialogTitle1"> <div class="ant-modal-title" id="vcDialogTitle1">
<div class="showBg"></div> <div class="showBg"></div>
能力上架申请 能力上架申请
@ -64,19 +77,31 @@
<div class="ability-to-type"> <div class="ability-to-type">
<div class="title">能力类型选择</div> <div class="title">能力类型选择</div>
<div class="ability-to-type-content"> <div class="ability-to-type-content">
<div v-for="item in abilityToType" :key="item" @click="abilityToTypeFunction(item)" :class=" <div
v-for="item in abilityToType"
:key="item"
@click="abilityToTypeFunction(item)"
:class="
abilityToTypeFunctionData == item ? 'ability-to-type-down' : '' abilityToTypeFunctionData == item ? 'ability-to-type-down' : ''
"> "
>
{{ item }} {{ item }}
</div> </div>
</div> </div>
</div> </div>
<div class="component-type" v-if="abilityToTypeFunctionData == '组件服务'"> <div
class="component-type"
v-if="abilityToTypeFunctionData == '组件服务'"
>
<div class="title">组件类型选择</div> <div class="title">组件类型选择</div>
<div class="component-type-content"> <div class="component-type-content">
<a-radio-group v-model:value="componentTypeValue"> <a-radio-group v-model:value="componentTypeValue">
<a-radio @click="componentTypeValueFunction(item)" v-for="item in componentType" :key="item" <a-radio
:value="item"> @click="componentTypeValueFunction(item)"
v-for="item in componentType"
:key="item"
:value="item"
>
{{ item }} {{ item }}
</a-radio> </a-radio>
</a-radio-group> </a-radio-group>
@ -227,11 +252,6 @@ const toWhere = (data) => {
if (data === '能力上架') { if (data === '能力上架') {
visible.value = true visible.value = true
} else if (data === '能力申请') { } else if (data === '能力申请') {
const newpage = router.resolve({
path: '/addApplication', //
})
window.open(newpage.href, '_blank')
} else if (data === '需求发布') {
const newpage = router.resolve({ const newpage = router.resolve({
path: '/DetailsPageconetent', path: '/DetailsPageconetent',
query: { query: {
@ -239,6 +259,11 @@ const toWhere = (data) => {
}, },
}) })
window.location.href = newpage.href window.location.href = newpage.href
} else if (data === '需求发布') {
const newpage = router.resolve({
path: '/addApplication', //
})
window.open(newpage.href, '_blank')
} else if (data === '资源下架') { } else if (data === '资源下架') {
window.sessionStorage.setItem('type', JSON.stringify('PurchaseVehicle')) window.sessionStorage.setItem('type', JSON.stringify('PurchaseVehicle'))
const newpage = router.resolve({ const newpage = router.resolve({

View File

@ -7,7 +7,7 @@
@click="changeName({ name: '技术文档' })"> @click="changeName({ name: '技术文档' })">
技术文档 技术文档
</div> </div>
<abilityDocTree style="max-height:400px;overflow-y:auto" :dataList="treeArray" @treeClick="treeClick" <abilityDocTree style="max-height:320px;overflow-y:auto" :dataList="treeArray" @treeClick="treeClick"
:clickData="clickData"></abilityDocTree> :clickData="clickData"></abilityDocTree>
</div> </div>

View File

@ -560,7 +560,7 @@
height: 0.24rem; height: 0.24rem;
width: 0.24rem; width: 0.24rem;
background: url('~@/assets/home/shenqing.png') no-repeat; background: url('~@/assets/home/shenqing.png') no-repeat;
background-size: cover; background-size: contain;
background-position: center; background-position: center;
} }
@ -568,5 +568,7 @@
height: 0.24rem; height: 0.24rem;
width: 0.24rem; width: 0.24rem;
background: url('~@/assets/home/shangjia.png') no-repeat; background: url('~@/assets/home/shangjia.png') no-repeat;
background-size: contain;
background-position: center;
} }
</style> </style>

View File

@ -2,7 +2,7 @@
* @Author: hisense.liangjunhua * @Author: hisense.liangjunhua
* @Date: 2022-07-12 09:42:44 * @Date: 2022-07-12 09:42:44
* @LastEditors: hisense.liangjunhua * @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-08-02 16:34:42 * @LastEditTime: 2022-08-04 10:41:06
* @Description:我的申请 能力申请 查看详情 * @Description:我的申请 能力申请 查看详情
--> -->
<template> <template>
@ -61,7 +61,11 @@
> >
<div class="oddNumbers">子单号{{ item.instanceId }}</div> <div class="oddNumbers">子单号{{ item.instanceId }}</div>
<div style="display: flex; align-items: center"> <div style="display: flex; align-items: center">
<a-button type="primary" @click="modify(item.instanceId)"> <a-button
type="primary"
@click="modify(props.refObj.id, item)"
v-if="item.backToFirst"
>
修改 修改
</a-button> </a-button>
<a-popconfirm <a-popconfirm
@ -183,14 +187,24 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import { ref, defineProps } from 'vue' import { ref, defineProps, reactive } from 'vue'
import mybus from '@/myplugins/mybus' import mybus from '@/myplugins/mybus'
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
import { endProcess } from '@/api/personalCenter.js' import { endProcess, getApplyForm } from '@/api/personalCenter.js'
import { useRouter } from 'vue-router'
const router = useRouter()
const backUrl = ref(window.SITE_CONFIG.apiURL + '/') const backUrl = ref(window.SITE_CONFIG.apiURL + '/')
const props = defineProps({ const props = defineProps({
refObj: { type: Object, default: null }, refObj: { type: Object, default: null },
}) })
const dept = reactive({})
// eslint-disable-next-line no-undef
if (infrastructure) {
// eslint-disable-next-line no-undef
dept.deptId = infrastructure.deptId
// eslint-disable-next-line no-undef
dept.deptName = infrastructure.deptName
}
const showThis = () => { const showThis = () => {
window.open( window.open(
window.SITE_CONFIG.previewUrl + window.SITE_CONFIG.previewUrl +
@ -210,8 +224,69 @@
} }
}) })
} }
const modify = (instanceId) => { const modify = (id, item) => {
console.log('修改==============>', instanceId) getApplyForm(id).then((res) => {
console.log('修改==============>', res.data.data, item)
if (item.list.length > 0) {
let arr = []
item.list.map((val) => {
arr.push({
delFlag: val.delFlag,
description: val.description,
resourceId: val.id,
resourceName: val.name,
time: val.createDate,
type: val.type,
componentType:
(val.infoList.filter((val) => val.attrType == '组件类型')[0] &&
val.infoList.filter((val) => val.attrType == '组件类型')[0]
.attrValue) ||
'',
})
})
localStorage.setItem(
'applyList',
JSON.stringify([
{
arr: arr,
deptId: item.name,
deptName: item.name,
},
])
)
router.push({
path: '/apply',
query: {
id: id,
taskId: item.instanceId,
},
})
} else if (item.list2.length > 0) {
let arr = [
{
arr: [
{
description: '',
note1: JSON.stringify(item.list2),
resourceId: '1522550195055828996',
resourceName: '摄像头列表',
type: '基础设施',
},
],
deptId: dept.deptId,
deptName: dept.deptName,
},
]
localStorage.setItem('applyList', JSON.stringify(arr))
router.push({
path: '/apply',
query: {
id: id,
taskId: item.instanceId,
},
})
}
})
} }
if (props.refObj.resourceApplication) { if (props.refObj.resourceApplication) {
showArr.value = [] showArr.value = []
@ -221,6 +296,7 @@
obj.name = key obj.name = key
props.refObj.resourceApplication[key].map((item) => { props.refObj.resourceApplication[key].map((item) => {
obj.instanceId = item.instanceId obj.instanceId = item.instanceId
obj.backToFirst = item.backToFirst
obj.ended = item.ended obj.ended = item.ended
obj.approveStatus = item.approveStatus obj.approveStatus = item.approveStatus
if (item.resources.length > 0) { if (item.resources.length > 0) {

View File

@ -98,7 +98,16 @@
label="应用领域" label="应用领域"
name="detailsField" name="detailsField"
style="width: 6.93rem" style="width: 6.93rem"
:rules="[{ required: true, message: '请选择应用领域' }]" :rules="[
{
required:
formName.detailsType === '应用资源' ||
formName.detailsType === '组件服务'
? true
: false,
message: '请选择应用领域',
},
]"
> >
<a-select <a-select
:disabled=" :disabled="