Commit 4359873e by 裴梁博

Merge branch 'feature/plb' into 'master'

Feature/plb

See merge request !1
parents 71856626 440e9806
# 页面标题
VUE_APP_TITLE = RuoYi-Vue-Plus后台管理系统
VUE_APP_TITLE = 新人力后台管理系统
# 开发环境配置
ENV = 'development'
# 若依管理系统/开发环境
VUE_APP_BASE_API = '/dev-api'
VUE_APP_BASE_API = '/api'
# 应用访问路径 例如使用前缀 /admin/
VUE_APP_CONTEXT_PATH = '/'
......
# 页面标题
VUE_APP_TITLE = RuoYi-Vue-Plus后台管理系统
VUE_APP_TITLE = 新人力后台管理系统
# 生产环境配置
ENV = 'production'
......@@ -14,4 +14,4 @@ VUE_APP_MONITRO_ADMIN = '/admin/login'
VUE_APP_XXL_JOB_ADMIN = '/xxl-job-admin'
# 若依管理系统/生产环境
VUE_APP_BASE_API = '/prod-api'
VUE_APP_BASE_API = '/api'
# 页面标题
VUE_APP_TITLE = 康巴赫智能终端系统
NODE_ENV = production
# 测试环境配置
ENV = 'staging'
# 康巴赫智能终端系统/测试环境
VUE_APP_BASE_API = '/stage-api'
# 应用访问路径 例如使用前缀 /admin/
VUE_APP_CONTEXT_PATH = '/'
{
"name": "ruoyi-vue-plus",
"version": "4.5.0",
"description": "RuoYi-Vue-Plus后台管理系统",
"description": "新人力后台管理系统",
"author": "LionLi",
"license": "MIT",
"scripts": {
"dev": "vue-cli-service serve",
"build:prod": "vue-cli-service build",
"build:stage": "vue-cli-service build --mode staging",
"preview": "node build/index.js --preview",
"lint": "eslint --ext .js,.vue src"
},
......@@ -76,6 +77,7 @@
"sass-loader": "10.1.1",
"script-ext-html-webpack-plugin": "2.1.5",
"svg-sprite-loader": "5.1.1",
"vue-quill-editor": "^3.0.6",
"vue-template-compiler": "2.6.12"
},
"engines": {
......
No preview for this file type
......@@ -31,13 +31,13 @@ export function register(data) {
}
// 获取用户详细信息
export function getInfo() {
export function getInfo(query) {
return request({
url: '/getInfo',
method: 'get'
method: 'get',
params: query
})
}
// 退出方法
export function logout() {
return request({
......
import request from '@/utils/request'
// 订单列表列表
export function listGET(query) {
return request({
url: '/xinrenli/order/list',
method: 'get',
params: query
})
}
// 生成支付订单
export function createPayPOST(data) {
return request({
url: '/xinrenli/order/createPay',
method: 'post',
data: data
})
}
// 生成退款订单
export function refundGET(query) {
return request({
url: '/xinrenli/order/refund',
method: 'get',
params: query
})
}
// 订单列表详情
export function particularsGET(query) {
return request({
url: '/xinrenli/order/particulars',
method: 'get',
params: query
})
}
// 修改订单
export function editPOST(data) {
return request({
url: '/xinrenli/order/edit',
method: 'post',
data: data
})
}
// 用户反馈列表
export function userFeedbackGET(query) {
return request({
url: '/xinrenli/userFeedback/list',
method: 'get',
params: query
})
}
// 动态列表列表
export function articleGET(query) {
return request({
url: '/xinrenli/article/list',
method: 'get',
params: query
})
}
// 动态列表新增
export function articlePOST(data) {
return request({
url: '/xinrenli/article',
method: 'post',
data: data
})
}
// 动态列表详情
export function articlesGET(query) {
return request({
url: `/xinrenli/article/${query}`,
method: 'get',
// params: query
})
}
// 动态列表修改
export function articlePUT(data) {
return request({
url: '/xinrenli/article',
method: 'put',
data: data
})
}
// 报表导出
export function exportReportFormsPOST(data) {
return request({
url: '/xinrenli/order/exportReportForms',
method: 'post',
data: data
})
}
// 报表接口
export function reportFormsGET(query) {
return request({
url: `/xinrenli/order/reportForms?startTime=${query.startTime}&endTime=${query.endTime}`,
method: 'get',
// params: query
})
}
// 营销活动列表
export function couponGET(query) {
return request({
url: '/xinrenli/coupon/list',
method: 'get',
params: query
})
}
// 新增优惠卷
export function couponPOST(data) {
return request({
url: '/xinrenli/coupon',
method: 'post',
data: data
})
}
// 删除优惠卷
export function coupontGET(query) {
return request({
url: `/xinrenli/coupon/${query}`,
method: 'DELETE',
// params: query
})
}
// 优惠卷详情
export function coupontsGET(query) {
return request({
url: `/xinrenli/coupon/${query}`,
method: 'get',
// params: query
})
}
//优惠卷修改
export function couponlePUT(data) {
return request({
url: '/xinrenli/coupon',
method: 'put',
data: data
})
}
// 累计成交额
export function accumulatedTransactionVolumeGET(query) {
return request({
url: `/xinrenli/order/accumulatedTransactionVolume?year=${query.year}`,
method: 'get',
// params: query
})
}
\ No newline at end of file

5.53 KB | W: | H:

16.8 KB | W: | H:

src/assets/logo/logo.png
src/assets/logo/logo.png
src/assets/logo/logo.png
src/assets/logo/logo.png
  • 2-up
  • Swipe
  • Onion skin
<template>
<div class="component-upload-image">
<el-upload
multiple
:action="uploadImgUrl"
list-type="picture-card"
:on-success="handleUploadSuccess"
:before-upload="handleBeforeUpload"
:limit="limit"
:on-error="handleUploadError"
:on-exceed="handleExceed"
ref="imageUpload"
:on-remove="handleDelete"
:show-file-list="true"
:headers="headers"
:file-list="fileList"
:on-preview="handlePictureCardPreview"
:class="{hide: this.fileList.length >= this.limit}"
>
<div class="component-upload-image" style="display: flex;">
<el-upload multiple :action="uploadImgUrl" list-type="picture-card" :on-success="handleUploadSuccess"
:before-upload="handleBeforeUpload" :limit="limit" :on-error="handleUploadError" :on-exceed="handleExceed"
ref="imageUpload" :on-remove="handleDelete" :show-file-list="true" :headers="headers" :file-list="fileVos"
:on-preview="handlePictureCardPreview" :class="{ hide: this.fileVos.length >= this.limit }" :disabled="disabled">
<i class="el-icon-plus"></i>
</el-upload>
<!-- 上传提示 -->
<div class="el-upload__tip" slot="tip" v-if="showTip">
<!-- <div class="el-upload__tip" slot="tip" v-if="showTip">
请上传
<template v-if="fileSize"> 大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b> </template>
<template v-if="fileType"> 格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>
的文件
</div>
</div> -->
<el-dialog
:visible.sync="dialogVisible"
title="预览"
width="800"
append-to-body
>
<img
:src="dialogImageUrl"
style="display: block; max-width: 100%; margin: 0 auto"
/>
<el-dialog :visible.sync="dialogVisible" title="预览" width="800" append-to-body>
<img :src="dialogImageUrl" style="display: block; max-width: 100%; margin: 0 auto" />
</el-dialog>
</div>
</template>
......@@ -56,7 +35,7 @@ export default {
},
// 大小限制(MB)
fileSize: {
type: Number,
type: Number,
default: 5,
},
// 文件类型, 例如['png', 'jpg', 'jpeg']
......@@ -68,6 +47,11 @@ export default {
isShowTip: {
type: Boolean,
default: true
},
// 是否显示提示
disabled: {
type: Boolean,
default: false
}
},
data() {
......@@ -78,11 +62,11 @@ export default {
dialogVisible: false,
hideUpload: false,
baseUrl: process.env.VUE_APP_BASE_API,
uploadImgUrl: process.env.VUE_APP_BASE_API + "/system/oss/upload", // 上传的图片服务器地址
uploadImgUrl: "http://xinrenli.nyinhong.com/api/xinrenli/file/upload", // 上传的图片服务器地址
headers: {
Authorization: "Bearer " + getToken(),
},
fileList: []
fileVos: []
};
},
watch: {
......@@ -99,13 +83,13 @@ export default {
})
}
// 然后将数组转为对象数组
this.fileList = list.map(item => {
this.fileVos = list.map(item => {
// 此处name使用ossId 防止删除出现重名
item = { name: item.ossId, url: item.url, ossId: item.ossId };
return item;
});
} else {
this.fileList = [];
this.fileVos = [];
return [];
}
},
......@@ -158,7 +142,7 @@ export default {
// 上传成功回调
handleUploadSuccess(res, file) {
if (res.code === 200) {
this.uploadList.push({ name: res.data.fileName, url: res.data.url, ossId: res.data.ossId });
this.uploadList.push({ url: res.data.url });
this.uploadedSuccessfully();
} else {
this.number--;
......@@ -170,13 +154,22 @@ export default {
},
// 删除图片
handleDelete(file) {
const findex = this.fileList.map(f => f.name).indexOf(file.name);
if(findex > -1) {
let ossId = this.fileList[findex].ossId;
delOss(ossId);
this.fileList.splice(findex, 1);
this.$emit("input", this.listToString(this.fileList));
}
console.log(file)
console.log(this.fileVos, 'this.fileVos')
let obj = []
this.fileVos.forEach(element => {
if (element.url != file.url) {
obj.push(element)
}
});
this.fileVos = obj
// const findex = this.fileVos.map(f => f.name).indexOf(file.name);
// if(findex > -1) {
// let ossId = this.fileVos[findex].ossId;
// // delOss(ossId);
// this.fileVos.splice(findex, 1);
// this.$emit("input", this.listToString(this.fileVos));
// }
},
// 上传失败
handleUploadError(res) {
......@@ -186,10 +179,20 @@ export default {
// 上传结束处理
uploadedSuccessfully() {
if (this.number > 0 && this.uploadList.length === this.number) {
this.fileList = this.fileList.concat(this.uploadList);
this.fileVos = this.fileVos.concat(this.uploadList);
let list = []
this.fileVos.forEach((res)=>{
let obj = {
fileType:"picture",
deletestatus:0,
url:res.url
}
list.push(obj)
})
this.fileVos = list
this.uploadList = [];
this.number = 0;
this.$emit("input", this.listToString(this.fileList));
this.$emit("input", this.listToString(this.fileVos));
this.$modal.closeLoading();
}
},
......@@ -215,15 +218,21 @@ export default {
<style scoped lang="scss">
// .el-upload--picture-card 控制加号部分
::v-deep.hide .el-upload--picture-card {
display: none;
display: none;
}
// 去掉动画效果
::v-deep .el-list-enter-active,
::v-deep .el-list-leave-active {
transition: all 0s;
transition: all 0s;
}
::v-deep .el-upload-list--picture-card {
display: flex;
}
::v-deep .el-list-enter, .el-list-leave-active {
::v-deep .el-list-enter,
.el-list-leave-active {
opacity: 0;
transform: translateY(0);
}
......
<template>
<div class="top-right-btn" :style="style">
<el-row>
<el-tooltip class="item" effect="dark" :content="showSearch ? '隐藏搜索' : '显示搜索'" placement="top" v-if="search">
<!-- <el-tooltip class="item" effect="dark" :content="showSearch ? '隐藏搜索' : '显示搜索'" placement="top" v-if="search">
<el-button size="mini" circle icon="el-icon-search" @click="toggleSearch()" />
</el-tooltip>
<el-tooltip class="item" effect="dark" content="刷新" placement="top">
......@@ -9,7 +9,7 @@
</el-tooltip>
<el-tooltip class="item" effect="dark" content="显隐列" placement="top" v-if="columns">
<el-button size="mini" circle icon="el-icon-menu" @click="showColumn()" />
</el-tooltip>
</el-tooltip> -->
</el-row>
<el-dialog :title="title" :visible.sync="open" append-to-body>
<el-transfer
......
<template>
<div class="vue-quill-editor">
<quill-editor ref="mwQuillEditor" v-model="html" :options="editorOption" />
</div>
</template>
<script>
import { quillEditor, Quill } from 'vue-quill-editor'
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
// import SelectImages from '@/components/SelectImages/index'
// 设置字体大小
const fontSizeStyle = Quill.import('attributors/style/size') // 引入这个后会把样式写在style上
fontSizeStyle.whitelist = [
'12px',
'14px',
'16px',
'18px',
'20px',
'24px',
'28px',
'32px',
'36px',
]
Quill.register(fontSizeStyle, true)
// 设置字体样式
const Font = Quill.import('attributors/style/font') // 引入这个后会把样式写在style上
const fonts = ['SimSun', 'SimHei', 'Microsoft-YaHei', 'KaiTi', 'FangSong']
Font.whitelist = fonts // 将字体加入到白名单
Quill.register(Font, true)
// 工具栏
const toolbarOptions = [
['bold', 'italic', 'underline', 'strike'], // 加粗 斜体 下划线 删除线 -----['bold', 'italic', 'underline', 'strike']
[{ color: [] }, { background: [] }], // 字体颜色、字体背景颜色-----[{ color: [] }, { background: [] }]
[{ align: [] }], // 对齐方式-----[{ align: [] }]
[{ size: fontSizeStyle.whitelist }], // 字体大小-----[{ size: ['small', false, 'large', 'huge'] }]
[{ font: fonts }], // 字体种类-----[{ font: [] }]
[{ header: [1, 2, 3, 4, 5, 6, false] }], // 标题
[{ direction: 'ltl' }], // 文本方向-----[{'direction': 'rtl'}]
[{ direction: 'rtl' }], // 文本方向-----[{'direction': 'rtl'}]
[{ indent: '-1' }, { indent: '+1' }], // 缩进-----[{ indent: '-1' }, { indent: '+1' }]
[{ list: 'ordered' }, { list: 'bullet' }], // 有序、无序列表-----[{ list: 'ordered' }, { list: 'bullet' }]
[{ script: 'sub' }, { script: 'super' }], // 上标/下标-----[{ script: 'sub' }, { script: 'super' }]
['blockquote', 'code-block'], // 引用 代码块-----['blockquote', 'code-block']
['clean'], // 清除文本格式-----['clean']
['link', 'image', 'video'], // 链接、图片、视频-----['link', 'image', 'video']
]
export default {
name: 'VueQuillEditor',
components: {
quillEditor,
},
props: {
value: {
type: [Number, Object, Array, String],
default:
'<p><strong>手术费吧is打工皇帝固定工会的观点是</strong>否VS大哥大哥大哥的股份规范化发过</p>',
},
},
data() {
return {
html: this.value,
editorOption: {
modules: {
toolbar: {
container: toolbarOptions,
handlers: {
image: this.handleImgUpload,
},
},
},
},
isShow: false,
}
},
watch: {
html: {
handler(newValue) {
console.log(newValue)
this.$emit('input', newValue)
},
deep: true,
},
value: {
handler(newValue, oldValue) {
if (newValue !== oldValue) this.html = newValue
},
deep: true,
},
},
mounted() {
this.initMounted()
},
methods: {
initMounted() {
setTimeout(() => {
this.isShow = true
}, 100)
},
handleImgUpload() {
const { quill } = this.$refs.mwQuillEditor
SelectImages({
visible: true,
multi: true,
showButton: true,
maxMulti: 18,
success: (data, filPath) => {
for (const item of data) {
const length = quill.getSelection(true).index
// 获取光标所在位置
// 插入图片,res为服务器返回的图片链接地址
quill.insertEmbed(length, 'image', filPath + item)
// 调整光标到最后
quill.setSelection(length + 1)
}
},
})
},
},
}
</script>
<style lang="scss" scoped>
.vue-quill-editor {
.quill-editor {
line-height: normal;
.ql-container.ql-snow {
line-height: normal !important;
height: 550px !important;
font-size: 14px;
}
.ql-snow {
.ql-tooltip[data-mode='link']::before {
content: '请输入链接地址:';
}
.ql-tooltip.ql-editing a.ql-action::after {
border-right: 0px;
content: '保存';
padding-right: 0px;
}
.ql-tooltip[data-mode='video']::before {
content: '请输入视频地址:';
}
.ql-picker.ql-size {
.ql-picker-label[data-value='12px']::before,
.ql-picker-item[data-value='12px']::before {
content: '12px';
}
.ql-picker-label[data-value='14px']::before,
.ql-picker-item[data-value='14px']::before {
content: '14px';
}
.ql-picker-label[data-value='16px']::before,
.ql-picker-item[data-value='16px']::before {
content: '16px';
}
.ql-picker-label[data-value='18px']::before,
.ql-picker-item[data-value='18px']::before {
content: '18px';
}
.ql-picker-label[data-value='20px']::before,
.ql-picker-item[data-value='20px']::before {
content: '20px';
}
.ql-picker-label[data-value='24px']::before,
.ql-picker-item[data-value='24px']::before {
content: '24px';
}
.ql-picker-label[data-value='28px']::before,
.ql-picker-item[data-value='28px']::before {
content: '28px';
}
.ql-picker-label[data-value='32px']::before,
.ql-picker-item[data-value='32px']::before {
content: '32px';
}
.ql-picker-label[data-value='36px']::before,
.ql-picker-item[data-value='36px']::before {
content: '36px';
}
}
.ql-picker.ql-header {
.ql-picker-label::before,
.ql-picker-item::before {
content: '文本';
}
.ql-picker-label[data-value='1']::before,
.ql-picker-item[data-value='1']::before {
content: '标题1';
}
.ql-picker-label[data-value='2']::before,
.ql-picker-item[data-value='2']::before {
content: '标题2';
}
.ql-picker-label[data-value='3']::before,
.ql-picker-item[data-value='3']::before {
content: '标题3';
}
.ql-picker-label[data-value='4']::before,
.ql-picker-item[data-value='4']::before {
content: '标题4';
}
.ql-picker-label[data-value='5']::before,
.ql-picker-item[data-value='5']::before {
content: '标题5';
}
.ql-picker-label[data-value='6']::before,
.ql-picker-item[data-value='6']::before {
content: '标题6';
}
}
.ql-picker.ql-font {
.ql-picker-label[data-value='SimSun']::before,
.ql-picker-item[data-value='SimSun']::before {
content: '宋体';
font-family: 'SimSun' !important;
}
.ql-picker-label[data-value='SimHei']::before,
.ql-picker-item[data-value='SimHei']::before {
content: '黑体';
font-family: 'SimHei';
}
.ql-picker-label[data-value='Microsoft-YaHei']::before,
.ql-picker-item[data-value='Microsoft-YaHei']::before {
content: '微软雅黑';
font-family: 'Microsoft YaHei';
}
.ql-picker-label[data-value='KaiTi']::before,
.ql-picker-item[data-value='KaiTi']::before {
content: '楷体';
font-family: 'KaiTi' !important;
}
.ql-picker-label[data-value='FangSong']::before,
.ql-picker-item[data-value='FangSong']::before {
content: '仿宋';
font-family: 'FangSong';
}
}
}
.ql-align-center {
text-align: center;
}
.ql-align-right {
text-align: right;
}
.ql-align-left {
text-align: left;
}
}
}
</style>
......@@ -6,7 +6,7 @@
<top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/>
<div class="right-menu">
<template v-if="device!=='mobile'">
<!-- <template v-if="device!=='mobile'">
<search id="header-search" class="right-menu-item" />
<el-tooltip content="源码地址" effect="dark" placement="bottom">
......@@ -23,7 +23,7 @@
<size-select id="size-select" class="right-menu-item hover-effect" />
</el-tooltip>
</template>
</template> -->
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
<div class="avatar-wrapper">
......@@ -31,12 +31,12 @@
<i class="el-icon-caret-bottom" />
</div>
<el-dropdown-menu slot="dropdown">
<router-link to="/user/profile">
<!-- <router-link to="/user/profile">
<el-dropdown-item>个人中心</el-dropdown-item>
</router-link>
<el-dropdown-item @click.native="setting = true">
<span>布局设置</span>
</el-dropdown-item>
</el-dropdown-item> -->
<el-dropdown-item divided @click.native="logout">
<span>退出登录</span>
</el-dropdown-item>
......
......@@ -35,7 +35,7 @@ export default {
},
data() {
return {
title: 'RuoYi-Vue-Plus',
title: '新人力后台管理系统',
logo: logoImg
}
}
......
......@@ -3,7 +3,7 @@
<template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow">
<app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path, onlyOneChild.query)">
<el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
<item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />
<item :title="onlyOneChild.meta.title" />
</el-menu-item>
</app-link>
</template>
......
......@@ -25,6 +25,8 @@ import Pagination from "@/components/Pagination";
import RightToolbar from "@/components/RightToolbar"
// 富文本组件
import Editor from "@/components/Editor"
// 富文本组件
import quillEditor from "@/components/quillEditor"
// 文件上传组件
import FileUpload from "@/components/FileUpload"
// 图片上传组件
......@@ -56,6 +58,7 @@ Vue.component('Pagination', Pagination)
Vue.component('RightToolbar', RightToolbar)
Vue.component('Editor', Editor)
Vue.component('FileUpload', FileUpload)
Vue.component('quillEditor', quillEditor)
Vue.component('ImageUpload', ImageUpload)
Vue.component('ImagePreview', ImagePreview)
......
......@@ -49,7 +49,8 @@ const user = {
// 获取用户信息
GetInfo({ commit, state }) {
return new Promise((resolve, reject) => {
getInfo().then(res => {
console.log('111111111')
getInfo({adminTag:'adminTag'}).then(res => {
const user = res.data.user
const avatar = (user.avatar == "" || user.avatar == null) ? require("@/assets/images/profile.jpg") : user.avatar;
if (res.data.roles && res.data.roles.length > 0) { // 验证返回的roles是否是一个非空数组
......
<template>
<div class="app-container">
<el-dialog :title=title :visible.sync="dialogVisibl" width="30%" :before-close="dialog" center>
<!-- 图片说明 -->
<el-image style="width:100%; " :src="control" >
</el-image>
</el-dialog>
</div>
</template>
<script>
import comvideo from './video.vue'
export default {
name: "orderform",
components: {
comvideo
},
props: {
dialogVisibl: {
type: Boolean
},
control: {
type: String,
default: "",
}
},
data() {
return {
url: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
srcList: [
'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg',
'https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg'
],
form: {
name: ''
},
title: ''
};
},
created() { },
methods: {
dialog() {
this.$emit('visivie')
}
}
};
</script>
<template>
<div class="app-container">
<el-dialog :title='title' :visible.sync="dialogVisibl" width="60%" :before-close="dialog">
<el-form ref="form" :model="form" label-width="80px" :rules="rules">
<el-form-item label="动态标题" class="customer" prop="title">
<el-input v-model="form.title" :disabled="disabled"></el-input>
</el-form-item>
<el-form-item label="动态内容" prop="content">
<Editor v-model="form.content" :height="300" :disabled="disabled"></Editor>
</el-form-item>
<el-form-item label="添加图片" class="customer" prop="name">
<ImageUpload :disabled="disabled" ref="refUpload"></ImageUpload>
</el-form-item>
<el-form-item>
</el-form-item>
<!-- <quillEditor></quillEditor> -->
</el-form>
<el-button type="primary" @click="onSubmit">{{btn}}</el-button>
</el-dialog>
</div>
</template>
<script>
import comvideo from './video.vue'
import { articlesGET } from '@/api/orderform/index'
export default {
name: "modify",
components: {
comvideo
},
props: {
dialogVisibl: {
type: Boolean
},
title: {
type: String
},
btn: {
type: String
},
disabled:{
type:Boolean,
default:false
}
},
data() {
return {
width: '30%',
url: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
srcList: [
'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg',
'https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg'
],
value1: '',
form: {
title: '',
content: '',
fileVos:[]
},
currentInfo:{},
rules: {
title: [
{ required: true, message: '请输入活动名称', trigger: 'blur' }
],
content: [
{ required: true, message: '请填写活动形式', trigger: 'blur' }
]
}
};
},
created() { },
watch:{
currentInfo(sta,val){
console.log(sta,val,'kllllllllllllll')
},
title(sta,val){
this.$refs['refUpload'].fileVos = []
},
dialogVisibl(sta,val){
if(this.title == '新增订单'){
this.$refs['refUpload'].fileVos = []
}
}
},
methods: {
dialog() {
this.$emit('diaisibl')
},
// 详情
articles(val) {
articlesGET(val).then((res) => {
this.form = res.data
if(res.data.fileVos != null){
this.$refs['refUpload'].fileVos = res.data.fileVos
}else{
this.$refs['refUpload'].fileVos = []
}
})
},
onSubmit() {
this.form.fileVos = this.$refs['refUpload'].fileVos
this.$emit('onSubmit', this.form.fileVos)
}
}
};
</script>
<style lang="scss" scoped>
.description {
font-size: 25px;
margin-top: 10px;
}
.customer {
width: 33%;
}
.imgdiv {
margin-top: 20px;
display: flex;
flex-wrap: wrap;
&-img {
width: 120px;
}
}
</style>
\ No newline at end of file
<template>
<div class="m-video" :style="`width: ${width}px; `">
<video
ref="veo"
:style="`object-fit: ${zoom};`"
:src="videoUrl"
:poster="videoCover"
:width="width"
:autoplay="autoplay"
:controls="!originPlay&&controls"
:loop="loop"
:muted="autoplay || muted"
:preload="preload"
@click.prevent.once="onPlay">
</video>
</div>
</template>
<script>
export default {
name: 'Video',
props: {
videoUrl: { // 视频文件url,必传,支持网络地址 https 和相对地址 require('@/assets/files/Bao.mp4')
type: String,
required: true,
default: '../void/lh.mp4'
},
videoCover: { // 视频封面url,支持网络地址 https 和相对地址 require('@/assets/images/Bao.jpg')
type: String,
default: 'https://img2.baidu.com/it/u=3202947311,1179654885&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500'
},
width: { // 视频播放器宽度
type: String,
default: '100%'
},
// height: { // 视频播放器高度
// type: Number,
// default: 150
// },
/*
由于目前在最新版的Chrome浏览器(以及所有以Chromium为内核的浏览器)中,
已不再允许自动播放音频和视频。就算你为video或audio标签设置了autoplay
属性也一样不能自动播放!
本组件解决方法:设置视频 autoplay 时,自动将视频设置为静音 muted: true 即可实现自
动播放,然后用户可以使用控制栏开启声音,类似某宝商品自动播放的宣传视频逻辑
*/
autoplay: { // 视频就绪后是否马上播放
type: Boolean,
default: false
},
controls: { // 是否向用户显示控件,比如进度条,全屏
type: Boolean,
default: true
},
loop: { // 视频播放完成后,是否循环播放
type: Boolean,
default: false
},
muted: { // 是否静音
type: Boolean,
default: false
},
preload: { // 是否在页面加载后载入视频,如果设置了autoplay属性,则preload将被忽略;
type: String,
default: 'auto' // auto:一旦页面加载,则开始加载视频; metadata:当页面加载后仅加载视频的元数据 none:页面加载后不应加载视频
},
showPlay: { // 播放暂停时是否显示播放器中间的暂停图标
type: Boolean,
default: false
},
playWidth: { // 中间播放暂停按钮的边长
type: Number,
default: 96
},
zoom: { // video的poster默认图片和视频内容缩放规则
type: String,
default: 'none' // none:(默认)保存原有内容,不进行缩放; fill:不保持原有比例,内容拉伸填充整个内容容器; contain:保存原有比例,内容以包含方式缩放; cover:保存原有比例,内容以覆盖方式缩放
}
},
data () {
return {
originPlay: true,
vplay: false
}
},
mounted () {
if (this.showPlay) {
this.$refs.veo.addEventListener('pause', this.onPause)
this.$refs.veo.addEventListener('playing', this.onPlaying)
}
if (this.autoplay) {
this.vplay = true
this.originPlay = false
}
// 自定义设置播放速度
// this.$refs.veo.playbackRate = 2
},
methods: {
onPlay () {
console.log('click')
if (!this.autoplay) {
this.vplay = true
this.originPlay = false
this.$refs.veo.play()
} else {
this.$refs.veo.pause()
}
},
onPause () {
this.vplay = false
console.log('pause')
this.$once('hook:beforeDestroy', function () {
removeEventListener('pause', this.onPause)
})
},
onPlaying () {
this.vplay = true
console.log('playing')
// 自动清理自己,避免内存泄漏
this.$once('hook:beforeDestroy', function () {
removeEventListener('playing', this.onPlaying)
})
}
}
}
</script>
<style lang="sass" scoped>
</style>
\ No newline at end of file
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="94px">
<el-form-item label="动态标题" prop="dataName">
<el-input v-model="queryParams.title" placeholder="请输入联系人姓名" clearable />
</el-form-item>
<!-- <el-form-item label="联系电话" prop="tableName">
<el-input v-model="queryParams.tableName" placeholder="请输入联系电话" clearable />
</el-form-item>
<el-form-item label="维修时间" prop="tableComment">
<el-date-picker v-model="value1" type="date" value-format="yyyy-MM-dd" placeholder="选择日期">
</el-date-picker>
</el-form-item>
<el-form-item label="订单状态" prop="tableComment">
<el-select v-model="value" placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item> -->
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" plain icon="el-icon-download" size="mini" @click="handleGenTable">导出</el-button>
<el-button type="primary" plain size="mini" @click="modify(0, '3')">新增发布</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" border style="width: 100%">
<el-table-column type="index" width="50" label="序号" align="center">
</el-table-column>
<el-table-column prop="title" label="动态标题" :show-overflow-tooltip="true" align="center">
</el-table-column>
<el-table-column prop="content" label="动态内容" :show-overflow-tooltip="true" align="center">
</el-table-column>
<el-table-column prop="address" label="图片展示" :show-overflow-tooltip="true" align="center">
<template slot-scope="scope">
<el-button type="text" size="small" @click="imageCaption(scope.row)">查看详情</el-button>
</template>
</el-table-column>
<el-table-column label="操作" width="150">
<template slot-scope="scope">
<el-button type="text" size="small" @click="modify(scope.row, '1')">修改</el-button>
<el-button type="text" size="small" @click="modify(scope.row, '2')">详情</el-button>
</template>
</el-table-column>
</el-table>
<!-- 其他 -->
<comindex :dialogVisibl="dialogVisible" @visivie='visivie' :control="control"></comindex>
<!-- 修改 详情 -->
<commodify ref="refModify" :disabled="disabled" :title="title" :btn="btn" :dialogVisibl="dialogVi" @diaisibl="diaisibl"
@onSubmit="onSubmit">
</commodify>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
</div>
</template>
<script>
import comindex from './components/index'
import commodify from './components/modify'
import { articleGET, articlePOST, articlesGET, articlePUT } from '@/api/orderform/index'
export default {
name: "orderform",
data() {
return {
dialogVisible: false,
dialogVi: false,
disabled: false,
control: '',
total: 0,
value1: '',
title: '动态发布',
btn:'确认发布',
options: [{
value: '选项1',
label: '黄金糕'
}, {
value: '选项2',
label: '双皮奶'
}, {
value: '选项3',
label: '蚵仔煎'
}, {
value: '选项4',
label: '龙须面'
}, {
value: '选项5',
label: '北京烤鸭'
}],
value: '',
tableData: [{
date: '2016-05-02',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1518 弄',
zip: 200333
}, {
date: '2016-05-04',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1517 弄',
zip: 200333
}, {
date: '2016-05-01',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1519 弄',
zip: 200333
}, {
date: '2016-05-03',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1516 弄',
zip: 200333
}],
// 日期范围
dateRange: "",
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
tableName: undefined,
tableComment: undefined,
title: ""
},
// 预览参数
preview: {
open: false,
title: "代码预览",
data: {},
activeName: "domain.java"
}
};
},
components: {
comindex,
commodify
},
created() {
this.artic()
},
methods: {
// 搜索
handleQuery() {
this.artic()
},
//列表接口
artic() {
articleGET({ ...this.queryParams }).then((res) => {
this.total = res.total
this.tableData = res.rows
})
},
// 重置
resetQuery() {
this.queryParams.title = '';
this.queryParams.pageNum = 1;
this.queryParams.pageSize = 10;
this.artic()
},
// 导出订单
handleGenTable() {
this.download('/xinrenli/article/export', {
...this.queryParams
}, `role_${new Date().getTime()}.xlsx`)
},
// 页码切换
getList() {
this.artic()
},
// 打开查看详情
imageCaption(sta) {
this.control = sta.fileVos[0].url
this.dialogVisible = true
},
// 修改详情
modify(sta, val) {
if (val == '1') {
this.title = '动态修改'
this.btn = '确定修改'
this.$refs['refModify'].articles(sta.id)
this.disabled = false
} else if (val == '2') {
this.$refs['refModify'].articles(sta.id)
this.disabled = true
this.title = '动态详情'
this.btn = '返回'
} else if (val == '3') {
this.$refs['refModify'].form = {}
this.title = '动态发布'
this.btn = '确认发布'
}
this.dialogVi = true
},
// articles(val) {
// articlesGET(val).then((res) => {
// this.$refs['refModify'].form.content = res.data.content
// this.$refs['refModify'].form.title = res.data.title
// })
// },
// 其他 弹窗关闭
visivie() {
this.dialogVisible = false
},
// 详情 修改 弹窗关闭
diaisibl() {
this.$refs['refModify'].form.content = ''
this.$refs['refModify'].form.title = ''
this.dialogVi = false
},
// 详情 修改 确认修改
onSubmit(val) {
console.log(val, 'val=========')
console.log(this.title,'ppppppppppppppp')
if (this.title == '动态发布') {
articlePOST({ ...this.$refs['refModify'].form }).then((res) => {
this.$refs['refModify'].form.content = ''
this.$refs['refModify'].form.title = ''
this.$refs['refModify'].form.fileVos = []
this.dialogVi = false
this.artic()
})
} else if (this.title == '动态修改') {
articlePUT({ ...this.$refs['refModify'].form }).then((res) => {
this.$refs['refModify'].form.content = ''
this.$refs['refModify'].form.title = ''
this.$refs['refModify'].form.fileVos = []
this.dialogVi = false
this.artic()
})
}else if(this.title == '动态详情'){
this.dialogVi = false
}
}
}
};
</script>
<template>
<div>
<el-table :data="tableData" border style="width: 100%">
<el-table-column type="index" width="50" label="序号" align="center">
</el-table-column>
<el-table-column prop="title" label="标题" :show-overflow-tooltip="true" align="center" width="300px">
</el-table-column>
<el-table-column prop="content" label="描述" :show-overflow-tooltip="true" width="300" align="center">
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
</div>
</template>
<script>
import { userFeedbackGET } from '@/api/orderform/index'
export default {
data() {
return {
queryParams: {
pageNum: 1,
pageSize: 10,
},
total: 0,
tableData: [
{
title: "不断实现人民对美好生活的向往",
describe:
"春日暖阳中,陕西省延安市甘泉县桥镇乡桥镇村村民正忙着大棚升级改造,温室里各种蔬菜青翠欲滴。“人民幸福安康是推动高质量发展的最终目的,总书记的话说到了我们心坎里。”樊九平说,“靠着大力发展特色产业,这些年我们的日子就像种下的山地苹果,越来越红火!春日暖阳中,陕西省延安市甘泉县桥镇乡桥镇村村民正忙着大棚升级改造,温室里各种蔬菜青翠欲滴。“人民幸福安康是推动高质量发展的最终目的,总书记的话说到了我们心坎里。”樊九平说,“靠着大力发展特色产业,这些年我们的日子就像种下的山地苹果,越来越红火”",
},
],
};
},
created() {
this.getList()
},
methods: {
getList() {
userFeedbackGET({ ...this.queryParams }).then((res) => {
this.total = res.total
this.tableData = res.rows
console.log(res, 'ppppppppppppppppppppp')
})
}
}
};
</script>
<style lang="scss" scoped></style>
<style lang="css">
.el-tooltip__popper {
max-width: 30%;
line-height: 20px;
}
</style>
<template>
<div class="login">
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
<h3 class="title">RuoYi-Vue-Plus后台管理系统</h3>
<h3 class="title">新人力后台管理系统</h3>
<el-form-item prop="username">
<el-input
v-model="loginForm.username"
......
<template>
<div class="app-container">
<el-dialog :title="title" :visible.sync="dialogVisible" width="60%" :before-close="handleCancle">
<el-form :model="form" :rules="rules" ref="form" label-width="100px" class="demo-form">
<el-form-item label="券类型" prop="couponType">
<el-select :disabled="disableds" v-model="form.couponType" placeholder="请选择">
<el-option v-for="item in activeAreaList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="优惠内容" prop="fullSubtraction">
<div class="d-flex a-center custom-input">
<div class="margin-right">减免</div>
<el-input :disabled="disabled" type="number" class="delInput flex-1" min="1" placeholder="减免金额>0且<99999"
v-model="form.fullSubtraction">
</el-input>
<div class="margin-left"></div>
</div>
</el-form-item>
<el-form-item label="优惠门槛" prop="minUsed">
<div class="d-flex a-center custom-input">
<div class="margin-right">最低消费,满</div>
<el-input :disabled="disabled" type="number" class="delInput flex-1" min="0" v-model="form.minUsed" />
<div class="margin-left">元,可用</div>
</div>
</el-form-item>
<el-form-item label="生效时间" prop="effectiveTime">
<el-date-picker :disabled="disabled" v-model="form.effectiveTime" type="date" placeholder="选择日期"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item label="失效时间" prop="failureTime">
<el-date-picker :disabled="disabled" v-model="form.failureTime" type="date" placeholder="选择日期"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
</el-form>
<el-button @click="handleCancle">取消</el-button>
<el-button v-if="isEdit" type="primary" @click="onSubmit">{{
form.id ? "保存修改" : "保存添加"
}}</el-button>
</el-dialog>
</div>
</template>
<script>
import { coupontsGET } from '@/api/orderform/index'
export default {
props: {
dialogVisible: {
type: Boolean,
},
title: {
type: String,
},
isEdit: Boolean,
disabled: {
type: Boolean,
default: false,
},
disableds:{
type:Boolean,
default:false,
}
},
data() {
return {
width: "30%",
value1: "",
form: {
couponType: "", // 卷类型
fullSubtraction: "", // 减免
minUsed: "", // 最低消费
effectiveTime: '', // 生效时间
failureTime: '', // 失效时间
},
rules: {
fullSubtraction: [
{ required: true, message: "请输入优惠内容", trigger: "blur" },
],
couponType: [
{ required: true, message: "请选择劵类型", trigger: "change" },
],
minUsed: [
{ required: true, message: "请选择优惠门槛", trigger: "change" },
],
effectiveTime: [
{ type: 'string', required: true, message: '请选择日期', trigger: 'change' }
],
failureTime: [
{ type: 'string', required: true, message: '请选择日期', trigger: 'change' }
],
},
activeAreaList: [
{
value: "1",
label: "新用户券",
},
{
value: "0",
label: "满减券",
},
],
};
},
created() { },
methods: {
handleCancle() {
this.$emit("cancle");
},
couponts(val) {
coupontsGET(val).then((res) => {
if (res.code == 200) {
this.form = res.data
}
})
},
onSubmit() {
let that = this;
that.$refs.form.validate((valid) => {
console.log(valid);
if (valid) {
that.$emit("onSubmit", that.form);
} else {
return false;
}
});
},
},
};
</script>
<style lang="scss" scoped>
::v-deep .delInput input::-webkit-outer-spin-button,
::v-deep .delInput input::-webkit-inner-spin-button {
-webkit-appearance: none !important;
}
::v-deep .delInput input[type="number"] {
-moz-appearance: textfield;
}
.description {
font-size: 25px;
margin-top: 10px;
}
.d-flex {
display: flex;
}
.a-center {
align-items: center;
}
.flex-1 {
flex: 1;
}
.margin-left {
margin-left: 10px;
}
.margin-right {
margin-right: 10px;
}
.custom-input {
width: 250px !important;
}
.customer {
display: flex;
flex-wrap: wrap;
margin-top: 20px;
&-lab {
width: 33%;
&-icke {
width: 100%;
}
}
}
</style>
<template>
<div class="app-container">
<el-form ref="queryForm" size="small" :inline="true" label-width="94px">
<el-form-item>
<el-button type="primary" icon="el-icon-circle-plus-outline" size="mini" @click="handleAdd">添加优惠券</el-button>
</el-form-item>
</el-form>
<el-table :data="tableData" border style="width: 100%">
<el-table-column type="index" width="50" label="序号" align="center">
</el-table-column>
<el-table-column prop="couponType" label="券类型" :show-overflow-tooltip="true" align="center">
<template slot-scope="scope">
{{ scope.row.couponType | filtersList }}
</template>
</el-table-column>
<el-table-column prop="fullSubtraction" label="优惠内容" :show-overflow-tooltip="true" align="center">
</el-table-column>
<el-table-column prop="minUsed" label="使用门槛" :show-overflow-tooltip="true" align="center">
</el-table-column>
<el-table-column prop="effectiveTime" label="生效时间" :show-overflow-tooltip="true" align="center">
</el-table-column>
<el-table-column prop="failureTime" label="失效时间" :show-overflow-tooltip="true" align="center">
</el-table-column>
<el-table-column label="操作" width="150" align="center">
<template slot-scope="scope">
<el-button type="text" size="small" @click="modify(scope.row, '1')">修改</el-button>
<el-button type="text" size="small" @click="clickDel(scope.row)">删除</el-button>
<el-button type="text" size="small" @click="modify(scope.row, '2')">详情</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" />
<!-- 弹出框 -->
<dialogFile :dialogVisible="dialogVisible" :disableds="disableds" :disabled="disabled" :title="title" @cancle="handleCancleDialog" @onSubmit="handleSave"
:isEdit="isEdit" ref="refDialogFile"></dialogFile>
</div>
</template>
<script>
import dialogFile from "./components/detailFile.vue";
import { couponGET, couponPOST, coupontGET,couponlePUT } from '@/api/orderform/index'
export default {
name: "orderform",
components: { dialogFile },
data() {
return {
dialogVisible: false,
control: "0",
total: 0,
title: "添加优惠券",
queryParams: {
pageNum: 0,
pageSize: 10,
},
disabled:false,
disableds:false,
value: "",
tableData: [],
isEdit: true,//判断添加修改详情的保存按钮是否显示
};
},
filters:{
filtersList(val) {
switch (val) {
case '0':
return '满减卷'
case '1':
return '新用户'
}
}
},
created() {
this.coupon()
},
methods: {
coupon() {
couponGET({ ...this.queryParams }).then((res) => {
this.tableData = res.rows
this.total = res.total
})
},
// 页码切换
getList() {
this.coupon()
},
handleAdd() {
let that = this;
that.title = "添加优惠券";
this.$refs['refDialogFile'].form = {}
this.disabled = false
this.disableds = false
that.isEdit = true
that.dialogVisible = true;
},
clickDel(val) {
coupontGET(val.id).then((res) => {
if (res.code == 200) {
this.$message({
message: '删除成功!',
type: 'success'
});
this.coupon()
}
})
},
// 修改详情
modify(sta, type) {
let that = this;
if (type == "1") {
that.title = "修改优惠券";
this.$refs['refDialogFile'].couponts(sta.id)
this.disabled = false
this.disableds = true
that.isEdit = true
} else if (type == "2") {
this.$refs['refDialogFile'].couponts(sta.id)
this.disabled = true
this.disableds = true
that.title = "查看优惠券";
that.isEdit = false
}
that.dialogVisible = true;
},
//保存
handleSave(e) {
console.log('表单值', e)
if (this.title == "添加优惠券") {
couponPOST({ ...e }).then((res) => {
if (res.code == 200) {
this.$refs['refDialogFile'].form.couponType = ''
this.$refs['refDialogFile'].form.fullSubtraction = ''
this.$refs['refDialogFile'].form.minUsed = ''
this.$refs['refDialogFile'].form.effectiveTime = ''
this.$refs['refDialogFile'].form.failureTime = ''
this.dialogVisible = false;
this.coupon()
}
})
}else if(this.title == "修改优惠券"){
couponlePUT({ ...e }).then((res)=>{
if (res.code == 200) {
this.$refs['refDialogFile'].form.couponType = ''
this.$refs['refDialogFile'].form.fullSubtraction = ''
this.$refs['refDialogFile'].form.minUsed = ''
this.$refs['refDialogFile'].form.effectiveTime = ''
this.$refs['refDialogFile'].form.failureTime = ''
this.dialogVisible = false;
this.coupon()
}
})
}
},
// 其他 弹窗关闭
handleCancleDialog() {
this.$refs['refDialogFile'].form.couponType = ''
this.$refs['refDialogFile'].form.fullSubtraction = ''
this.$refs['refDialogFile'].form.minUsed = ''
this.$refs['refDialogFile'].form.effectiveTime = ''
this.$refs['refDialogFile'].form.failureTime = ''
this.dialogVisible = false;
},
},
};
</script>
+
\ No newline at end of file
<template>
<div class="app-container">
<el-dialog
:title="title"
:visible.sync="dialogVisibl"
width="30%"
:before-close="dialog"
center
>
<div v-if="control != 4">
<!-- 图片说明 -->
<el-image v-if="control == '1'" style="width: 100%" :src="idt">
</el-image>
<!-- 视频说明 -->
<comvideo
v-if="control == '2'"
:videoUrl="idt"
:videoCover="videoCover"
></comvideo>
<!-- 语音说明 -->
<audio v-if="control == '3'" controls ref="audio" class="aud">
<source :src="idt" />
</audio>
</div>
<!-- 沟通后金额 -->
<div v-if="control == '4' || control == '9'">
<el-form :model="form">
<el-form-item label="沟通后金额">
<el-input
class="delInput"
type="number"
v-model="form.money"
placeholder="请输入沟通后金额"
></el-input>
</el-form-item>
<el-form-item label="管理员备注" v-if="control == '4'">
<el-input
type="textarea"
:rows="2"
placeholder="请输入管理员备注"
v-model="form.adminRemark"
maxlength="500"
show-word-limit
:autosize="{ minRows: 4}"
>
</el-input>
</el-form-item>
</el-form>
</div>
<!-- 驳回 -->
<div v-if="control == '5'">
<el-form :model="form">
<el-form-item label="驳回理由">
<el-input
v-model="form.name"
type="textarea"
placeholder="请输入驳回理由"
></el-input>
</el-form-item>
</el-form>
</div>
<span
v-if="control == '4' || control == '5' || control == '9'"
slot="footer"
class="dialog-footer"
>
<el-button type="primary" @click="clickDialog">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import comvideo from "./video.vue";
export default {
name: "orderform",
components: {
comvideo,
},
props: {
dialogVisibl: {
type: Boolean,
},
control: {
type: String,
},
bindex: {
type: Array,
},
idt: {
type: [String, Number],
},
videoCover: {
type: [String, Number],
},
},
data() {
return {
url: "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
// srcList: [
// 'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg',
// 'https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg'
// ],
form: {
name: "",
money: "",
},
title: "",
id: "",
};
},
watch: {
control(st, old) {
let self = this;
if (st == "4") {
this.title = "生成支付订单";
if (self.dialogVisibl) {
this.bindex.forEach((element) => {
if (self.idt == element.id) {
self.form.money = element.dataName;
console.log(
self.form.money,
element.dataName,
"element.dataName"
);
}
});
}
} else if (st == "1") {
this.title = "";
} else if (st == "5") {
this.title = "订单驳回";
} else if (st == "9") {
this.title = "生成退款订单";
if (self.dialogVisibl) {
this.bindex.forEach((element) => {
if (self.idt == element.id) {
self.form.money = element.dataName;
console.log(
self.form.money,
element.dataName,
"element.dataName"
);
}
});
}
}
},
idt(val, old) {
this.$nextTick(() => {
this.$refs.audio.src = val;
});
},
bindex(st, old) {
console.log(st, old, this.idt, "000000000000");
},
},
created() {},
methods: {
dialog() {
this.$emit("visivie");
},
clickDialog() {
this.$emit("clickDialog");
},
},
};
</script>
<style scoped lang="scss">
::v-deep .delInput input::-webkit-outer-spin-button,
::v-deep .delInput input::-webkit-inner-spin-button {
-webkit-appearance: none !important;
}
::v-deep .delInput input[type="number"] {
-moz-appearance: textfield;
}
</style>
<template>
<div class="app-container">
<el-dialog :title='title' :visible.sync="dialogVisibl" width="60%" :before-close="dialog">
<el-form ref="form" :model="form" label-width="80px">
<span class="description">客户基本信息</span>
<div class="customer">
<el-form-item label="联系人" class="customer-lab">
<el-input v-model="particulars.linkman" :disabled="disabled"></el-input>
</el-form-item>
<el-form-item label="联系电话" class="customer-lab">
<el-input v-model="particulars.phone" :disabled="disabled"></el-input>
</el-form-item>
<el-form-item label="订单标题" class="customer-lab">
<el-input v-model="particulars.title" :disabled="disabled"></el-input>
</el-form-item>
<el-form-item label="维修时间" class="customer-lab">
<el-date-picker v-model="particulars.repairTime" type="date" placeholder="选择日期" value-format="yyyy-MM-dd"
class="customer-lab-icke" :disabled="disabled">
</el-date-picker>
</el-form-item>
<el-form-item label="维修地址" class="customer-lab">
<el-input v-model="particulars.repairAddress" :disabled="disabled"></el-input>
</el-form-item>
</div>
<div class="description">
<span>图片说明</span>
<div style="display: flex;">
<div class="imgdiv" v-for="v in particulars.pictureList">
<el-image class="imgdiv-img" style="margin: 5px;" :src="v.url" :preview-src-list="srcList">
</el-image>
</div>
</div>
</div>
<div class="description">
<span>视频说明</span>
<div class="imgdiv">
<comvideo :width="width" :videoUrl="video" :videoCover="videoCover"></comvideo>
</div>
</div>
<div class="description">
<span>语音描述</span>
<div class="imgdiv">
<audio ref="audio" controls class="aud">
<source :src="particulars.voice" type="audio/ogg">
</audio>
</div>
</div>
<div class="description">
<span>备注说明</span>
<div class="imgdiv">
<el-input type="textarea" v-model="particulars.remark" :disabled="disabled"></el-input>
</div>
</div>
<el-form-item>
</el-form-item>
</el-form>
<el-button @click="dialog">返回</el-button>
<el-button v-if="title == '修改订单'" type="primary" @click="onSubmit">确认修改</el-button>
</el-dialog>
</div>
</template>
<script>
import comvideo from './video.vue'
import { particularsGET, editPOST } from '@/api/orderform/index'
export default {
name: "modify",
components: {
comvideo
},
props: {
dialogVisibl: {
type: Boolean
},
title: {
type: String
},
disabled: {
type: Boolean,
default: false,
}
},
data() {
return {
width: '200',
videoCover:'',
url: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
srcList: [],
value1: '',
form: {
name: '',
region: '',
date1: '',
date2: '',
delivery: false,
type: [],
resource: '',
desc: ''
},
video:'',
particulars: {
video: '',
voice: ''
},
idt: ''
};
},
created() { },
methods: {
partic(val) {
let self = this
particularsGET({ id: val }).then((res) => {
if (res.code == 200) {
this.$nextTick(() => {
if (res.data.videoList && res.data.videoList.length) {
self.video = res.data.videoList[0].url
self.videoCover = res.data.videoList[0].cropImage
console.log(self.particulars.video,'self.particulars.video')
} else {
self.video = ''
self.videoCover = ''
}
if (res.data.voiceList && res.data.voiceList.length) {
// this.idt = require(res.data.voiceList[0].url)
this.$refs.audio.src = res.data.voiceList[0].url
// self.idt =
} else {
this.$refs.audio.src = ''
}
self.particulars = res.data
if (res.data.repairTime != null) {
res.data.repairTime = res.data.repairTime.slice(0, 10)
}
self.srcList = []
self.particulars.pictureList.forEach((item)=>{
self.srcList.push(item.url)
})
})
console.log(self.particulars,self.srcList,'itd===========')
}
})
},
dialog() {
this.$emit('diaisibl')
},
onSubmit() {
editPOST({ ...this.particulars }).then((res) => {
console.log(res, 'res===========')
})
this.$emit('onSubmit')
}
}
};
</script>
<style lang="scss" scoped>
.description {
font-size: 25px;
margin-top: 10px;
}
.customer {
display: flex;
flex-wrap: wrap;
margin-top: 20px;
&-lab {
width: 33%;
&-icke {
width: 100%;
}
}
}
.imgdiv {
margin-top: 20px;
display: flex;
flex-wrap: wrap;
&-img {
width: 120px;
}
}
</style>
\ No newline at end of file
<template>
<div class="m-video" :style="`width: ${width}px; `">
<video
ref="veo"
:style="`object-fit: ${zoom};`"
:src="videoUrl"
:poster="videoCover"
:width="width"
:height="height"
:autoplay="autoplay"
:controls="!originPlay&&controls"
:loop="loop"
:muted="autoplay || muted"
:preload="preload"
@click.prevent.once="onPlay">
</video>
</div>
</template>
<script>
export default {
name: 'Video',
props: {
videoUrl: { // 视频文件url,必传,支持网络地址 https 和相对地址 require('@/assets/files/Bao.mp4')
type: String,
required: true,
default: 'https://haokan.baidu.com/v?pd=wisenatural&vid=9170416735180523490'
},
videoCover: { // 视频封面url,支持网络地址 https 和相对地址 require('@/assets/images/Bao.jpg')
type: String,
default: 'https://img0.baidu.com/it/u=391913564,1144083768&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500'
},
width: { // 视频播放器宽度
type: String,
default: '100%'
},
height: { // 视频播放器高度
type: Number,
default: 300
},
/*
由于目前在最新版的Chrome浏览器(以及所有以Chromium为内核的浏览器)中,
已不再允许自动播放音频和视频。就算你为video或audio标签设置了autoplay
属性也一样不能自动播放!
本组件解决方法:设置视频 autoplay 时,自动将视频设置为静音 muted: true 即可实现自
动播放,然后用户可以使用控制栏开启声音,类似某宝商品自动播放的宣传视频逻辑
*/
autoplay: { // 视频就绪后是否马上播放
type: Boolean,
default: false
},
controls: { // 是否向用户显示控件,比如进度条,全屏
type: Boolean,
default: true
},
loop: { // 视频播放完成后,是否循环播放
type: Boolean,
default: false
},
muted: { // 是否静音
type: Boolean,
default: false
},
preload: { // 是否在页面加载后载入视频,如果设置了autoplay属性,则preload将被忽略;
type: String,
default: 'auto' // auto:一旦页面加载,则开始加载视频; metadata:当页面加载后仅加载视频的元数据 none:页面加载后不应加载视频
},
showPlay: { // 播放暂停时是否显示播放器中间的暂停图标
type: Boolean,
default: false
},
playWidth: { // 中间播放暂停按钮的边长
type: Number,
default: 96
},
zoom: { // video的poster默认图片和视频内容缩放规则
type: String,
default: 'none' // none:(默认)保存原有内容,不进行缩放; fill:不保持原有比例,内容拉伸填充整个内容容器; contain:保存原有比例,内容以包含方式缩放; cover:保存原有比例,内容以覆盖方式缩放
}
},
data () {
return {
originPlay: true,
vplay: false
}
},
mounted () {
if (this.showPlay) {
this.$refs.veo.addEventListener('pause', this.onPause)
this.$refs.veo.addEventListener('playing', this.onPlaying)
}
if (this.autoplay) {
this.vplay = true
this.originPlay = false
}
// 自定义设置播放速度
// this.$refs.veo.playbackRate = 2
},
methods: {
onPlay () {
console.log('click')
if (!this.autoplay) {
this.vplay = true
this.originPlay = false
this.$refs.veo.play()
} else {
this.$refs.veo.pause()
}
},
onPause () {
this.vplay = false
console.log('pause')
this.$once('hook:beforeDestroy', function () {
removeEventListener('pause', this.onPause)
})
},
onPlaying () {
this.vplay = true
console.log('playing')
// 自动清理自己,避免内存泄漏
this.$once('hook:beforeDestroy', function () {
removeEventListener('playing', this.onPlaying)
})
}
}
}
</script>
<style lang="sass" scoped>
</style>
\ No newline at end of file
<template>
<div class="register">
<el-form ref="registerForm" :model="registerForm" :rules="registerRules" class="register-form">
<h3 class="title">RuoYi-Vue-Plus后台管理系统</h3>
<h3 class="title">新人力后台管理系统</h3>
<el-form-item prop="username">
<el-input v-model="registerForm.username" type="text" auto-complete="off" placeholder="账号">
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
......
......@@ -7,7 +7,7 @@ function resolve(dir) {
const CompressionPlugin = require('compression-webpack-plugin')
const name = process.env.VUE_APP_TITLE || 'RuoYi-Vue-Plus后台管理系统' // 网页标题
const name = process.env.VUE_APP_TITLE || '新人力后台管理系统' // 网页标题
const port = process.env.port || process.env.npm_config_port || 80 // 端口
......@@ -35,7 +35,8 @@ module.exports = {
proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: {
target: `http://localhost:8080`,
target: `http://xinrenli.nyinhong.com/api`,
// target: `http://192.168.0.175:7001`,
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: ''
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment