Commit 0a0559b7 by Jings

Merge remote-tracking branch 'origin/feature/九月好办分权' into dev

parents 9e44f05a 3ca7479e
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<el-input show-word-limit placeholder="请输入欢迎语标题" type="text" v-model="form.title" maxlength="20" class="w-384"></el-input> <el-input show-word-limit placeholder="请输入欢迎语标题" type="text" v-model="form.title" maxlength="20" class="w-384"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="欢迎语内容" prop="welcomeContent" class="welcomeContentItem"> <el-form-item label="欢迎语内容" prop="welcomeContent" class="welcomeContentItem">
<el-input placeholder="请输入文本内容" type="textarea" v-model="form.welcomeContent" class="w-384 welcomeContent"></el-input> <el-input id="inputContent" placeholder="请输入文本内容" type="textarea" v-model="form.welcomeContent" class="w-384 welcomeContent"></el-input>
<div class="text-bottom flex w-384"> <div class="text-bottom flex w-384">
<div class="flex flex-wrap flex-align-center"> <div class="flex flex-wrap flex-align-center">
<div class="put" @click="putName">插入&lt; 微信昵称 &gt;</div> <div class="put" @click="putName">插入&lt; 微信昵称 &gt;</div>
...@@ -15,12 +15,12 @@ ...@@ -15,12 +15,12 @@
<div class="put" @click="addLinkDialogShow">插入#公众号</div> <div class="put" @click="addLinkDialogShow">插入#公众号</div>
</div> </div>
<el-popover placement="top" width="388" trigger="click"> <el-popover placement="top" width="388" trigger="click">
<ul class="flex flex-wrap"> <ul class="flex flex-wrap" @show="showPopover('inputContent')">
<li v-for="(item, index) in emojiList" :key="index + 'emoji'"> <li v-for="(item, index) in emojiList" :key="index + 'emoji'">
<img :src="item.gifUrl" alt="" @click="selectEmoji(item)" /> <img :src="item.gifUrl" alt="" @click.stop="selectEmoji(item)" />
</li> </li>
</ul> </ul>
<p slot="reference" style="cursor:pointer;height:24px;"> <p slot="reference" style="cursor: pointer; height: 24px">
<svg-icon iconname="iconbiaoqing" size="20"> </svg-icon> <svg-icon iconname="iconbiaoqing" size="20"> </svg-icon>
</p> </p>
</el-popover> </el-popover>
...@@ -28,12 +28,12 @@ ...@@ -28,12 +28,12 @@
<div class="mediaEcho"> <div class="mediaEcho">
<div class="flexBoxContainer" v-for="(item, index) in form.welcomeMediaList" :key="index"> <div class="flexBoxContainer" v-for="(item, index) in form.welcomeMediaList" :key="index">
<div class="flexBox"> <div class="flexBox">
<svg-icon :iconname="iconType[item.mediaType]" size="16" style="margin-right: 13px;"> </svg-icon> <svg-icon :iconname="iconType[item.mediaType]" size="16" style="margin-right: 13px"> </svg-icon>
<span class="popverText"> <span class="popverText">
{{ item.mediaTitle }} {{ item.mediaTitle }}
<span v-if="item.mediaType == 5">({{ item.miniProgramPage }})</span> <span v-if="item.mediaType == 5">({{ item.miniProgramPage }})</span>
</span> </span>
<i class="el-icon-close" style="margin-left: 20px;cursor: pointer;" @click="handleDelMedia(item, index)"></i> <i class="el-icon-close" style="margin-left: 20px; cursor: pointer" @click="handleDelMedia(item, index)"></i>
</div> </div>
</div> </div>
</div> </div>
...@@ -41,41 +41,41 @@ ...@@ -41,41 +41,41 @@
<el-popover placement="top" trigger="click"> <el-popover placement="top" trigger="click">
<ul class="flex flex-wrap"> <ul class="flex flex-wrap">
<li v-for="(item, index) in uploadList" :key="index" :class="['uploadListBox', form.welcomeMediaList.length >= 9 || (index == 5 && publicAccountDisabled) ? 'disabled' : '']" :style="index == 5 ? 'width: 118px;' : ''" @click="handleUploadList(item, index)"> <li v-for="(item, index) in uploadList" :key="index" :class="['uploadListBox', form.welcomeMediaList.length >= 9 || (index == 5 && publicAccountDisabled) ? 'disabled' : '']" :style="index == 5 ? 'width: 118px;' : ''" @click="handleUploadList(item, index)">
<i :class="['iconfont-hb3', item.icon]" style="font-size:20px"></i> <i :class="['iconfont-hb3', item.icon]" style="font-size: 20px"></i>
<p>{{ item.title }}</p> <p>{{ item.title }}</p>
<input type="file" :accept="item.fileType" @change="e => handkeFileChange(e, item)" class="upload-input" /> <input type="file" :accept="item.fileType" @change="e => handkeFileChange(e, item)" class="upload-input" />
</li> </li>
</ul> </ul>
<div slot="reference" style="cursor: pointer; display: inline-block;"> <div slot="reference" style="cursor: pointer; display: inline-block">
<i class="iconfont-hb3 icontianjiajiahaowubiankuang"></i> <i class="iconfont-hb3 icontianjiajiahaowubiankuang"></i>
<p>添加图片/视频/文件/链接/小程序/带参公众号二维码</p> <p>添加图片/视频/文件/链接/小程序/带参公众号二维码</p>
</div> </div>
</el-popover> </el-popover>
<p style="font-size:12px;color:#909399">(附件不超过9个,单个大小不超过2M)</p> <p style="font-size: 12px; color: #909399">(附件不超过9个,单个大小不超过2M)</p>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="使用范围" required v-if="form.type == 1"> <el-form-item label="使用范围" required v-if="form.type == 1">
<el-radio v-model="form.defaultWelcomeFlag" :disabled="defaultWelcomeFlag && echoDefaultWelcomeFlag == 0" :label="1">全体成员</el-radio> <el-radio v-model="form.defaultWelcomeFlag" :disabled="defaultWelcomeFlag && echoDefaultWelcomeFlag == 0" :label="1">全体成员</el-radio>
<el-radio v-model="form.defaultWelcomeFlag" :label="0">部分成员</el-radio> <el-radio v-model="form.defaultWelcomeFlag" :label="0">部分成员</el-radio>
<span @click="openScopeDialog" v-if="form.defaultWelcomeFlag == 0" class="color-2f54eb cursor-pointer" style="margin-left:8px;"> {{ form.suitDepartmentAddList.length ? '修改使用范围' : '请选择使用范围' }}</span> <span @click="openScopeDialog" v-if="form.defaultWelcomeFlag == 0" class="color-2f54eb cursor-pointer" style="margin-left: 8px"> {{ form.suitDepartmentAddList.length ? '修改使用范围' : '请选择使用范围' }}</span>
<div class="scopeContainer" v-if="form.defaultWelcomeFlag == 1"> <div class="scopeContainer" v-if="form.defaultWelcomeFlag == 1">
<div class="wwTag"> <div class="wwTag">
<span class="font-14 color-2f54eb opacity80 iconfont-hb3 iconqiye-tianchong"></span> <span class="font-14 color-2f54eb opacity80 iconfont-hb3 iconqiye-tianchong"></span>
全体成员 全体成员
</div> </div>
</div> </div>
<div v-else> <div v-else>
<div v-show="form.suitDepartmentAddList.length" class="scopeContainer"> <div v-show="form.suitDepartmentAddList.length" class="scopeContainer">
<div class="wwTag" v-for="item in form.suitDepartmentAddList" :key="item.departmentId"> <div class="wwTag" v-for="item in form.suitDepartmentAddList" :key="item.departmentId">
<span class="font-14 color-2f54eb opacity80 iconfont-hb3 iconqiye-tianchong"></span> <span class="font-14 color-2f54eb opacity80 iconfont-hb3 iconqiye-tianchong"></span>
{{ item.departmentName }} {{ item.departmentName }}
<!-- <i class="el-icon-close" style="margin-left: 20px;cursor: pointer;"></i> --> <!-- <i class="el-icon-close" style="margin-left: 20px;cursor: pointer;"></i> -->
</div> </div>
</div> </div>
</div> </div>
</el-form-item> </el-form-item>
<el-button type="primary" style="margin-left:117px;margin-bottom:20px" :loading="submitbtnLoading" @click="submit">保存</el-button> <el-button type="primary" style="margin-left: 117px; margin-bottom: 20px" :loading="submitbtnLoading" @click="submit">保存</el-button>
<el-button style="margin-bottom:20px" @click="$router.push('salutatory')">返回</el-button> <el-button style="margin-bottom: 20px" @click="$router.push('salutatory')">返回</el-button>
</el-form> </el-form>
<preview :welcomeContent="form.welcomeContent" :mediaList="form.welcomeMediaList" /> <preview :welcomeContent="form.welcomeContent" :mediaList="form.welcomeMediaList" />
</div> </div>
...@@ -94,7 +94,7 @@ ...@@ -94,7 +94,7 @@
<el-form label-position="right" label-width="100px" @submit.native.prevent> <el-form label-position="right" label-width="100px" @submit.native.prevent>
<el-form-item label="链接地址"> <el-form-item label="链接地址">
<el-input v-model="url" @keyup.enter.native="addUrl"></el-input> <el-input v-model="url" @keyup.enter.native="addUrl"></el-input>
<span style="font-size:12px;color:#909399;">以http或https开头</span> <span style="font-size: 12px; color: #909399">以http或https开头</span>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class=""> <div slot="footer" class="">
...@@ -105,10 +105,10 @@ ...@@ -105,10 +105,10 @@
<el-dialog title="请选择使用范围" width="886px" class="replay-link-dialog" :visible.sync="scopeVisible"> <el-dialog title="请选择使用范围" width="886px" class="replay-link-dialog" :visible.sync="scopeVisible">
<div class="scopeBox"> <div class="scopeBox">
<div class="left"> <div class="left">
<el-input placeholder="请输入部门名称" maxlength="50" v-model="filterText" style="width: 398px;" clearable @clear="handlefilterTextClear" @keyup.native="value => toInput(value, searchInput)"> <i slot="prefix" class="el-input__icon el-icon-search"></i> </el-input> <el-input placeholder="请输入部门名称" maxlength="50" v-model="filterText" style="width: 398px" clearable @clear="handlefilterTextClear" @keyup.native="value => toInput(value, searchInput)"> <i slot="prefix" class="el-input__icon el-icon-search"></i> </el-input>
<el-tree :key="showTree" v-loading="loading" ref="tree" :data="treeData" :check-on-click-node="true" show-checkbox node-key="departmentId" :props="defaultProps" :expand-on-click-node="false" class="tree" :render-after-expand="true" @check-change="handleCheckChange" @check="handleCheck"> <el-tree :key="showTree" v-loading="loading" ref="tree" :data="treeData" :check-on-click-node="true" show-checkbox node-key="departmentId" :props="defaultProps" :expand-on-click-node="false" class="tree" :render-after-expand="true" @check-change="handleCheckChange" @check="handleCheck">
<span class="custom-tree-node" slot-scope="{ node }"> <span class="custom-tree-node" slot-scope="{ node }">
<span class="font-14 color-2f54eb opacity80 iconfont-hb3 iconqiye-tianchong"></span> <span class="font-14 color-2f54eb opacity80 iconfont-hb3 iconqiye-tianchong"></span>
<span>{{ node.label }}</span> <span>{{ node.label }}</span>
</span> </span>
</el-tree> </el-tree>
...@@ -121,7 +121,7 @@ ...@@ -121,7 +121,7 @@
<li class="contact-li" v-for="(item, index) in selectedTreeData" :key="index + 'gic'"> <li class="contact-li" v-for="(item, index) in selectedTreeData" :key="index + 'gic'">
<div class="li-cell cursor-pointer"> <div class="li-cell cursor-pointer">
<div> <div>
<span class="font-14 color-2f54eb opacity80 iconfont-hb3 iconqiye-tianchong"></span> <span class="font-14 color-2f54eb opacity80 iconfont-hb3 iconqiye-tianchong"></span>
<span class="font-14 color-303133 span-departName"> {{ item.departmentName }}</span> <span class="font-14 color-303133 span-departName"> {{ item.departmentName }}</span>
</div> </div>
<i class="iconfont-hb3 iconclose" @click="handleSelectedDataCancel(item, index)"></i> <i class="iconfont-hb3 iconclose" @click="handleSelectedDataCancel(item, index)"></i>
...@@ -137,7 +137,7 @@ ...@@ -137,7 +137,7 @@
</el-dialog> </el-dialog>
<el-dialog title="添加小程序" width="640px" :visible.sync="appletDialogVisible" @closed="closeAppletDialog"> <el-dialog title="添加小程序" width="640px" :visible.sync="appletDialogVisible" @closed="closeAppletDialog">
<div class="admin-tip-body"> <div class="admin-tip-body">
<div role="alert" class="el-alert el-alert--info" style="width: 550px;"> <div role="alert" class="el-alert el-alert--info" style="width: 550px">
<i class="el-alert__icon el-icon-info"></i> <i class="el-alert__icon el-icon-info"></i>
<div class="el-alert__content"> <div class="el-alert__content">
<p class="el-alert__title"> <p class="el-alert__title">
...@@ -148,14 +148,14 @@ ...@@ -148,14 +148,14 @@
</div> </div>
</div> </div>
</div> </div>
<el-form label-position="right" ref="appletForm" :model="appletForm" label-width="120px" style="margin-top:20px" @submit.native.prevent> <el-form label-position="right" ref="appletForm" :model="appletForm" label-width="120px" style="margin-top: 20px" @submit.native.prevent>
<el-form-item label="小程序配置" required> <el-form-item label="小程序配置" required>
<el-select v-model="appletForm.selectedApple" style="width:458px;"> <el-select v-model="appletForm.selectedApple" style="width: 458px">
<el-option v-for="item in appTableData" :key="item.miniprogramSettingId" :label="item.miniprogramName" :value="item.miniprogramSettingId" :disabled="handleDiabled(item)"></el-option> <el-option v-for="item in appTableData" :key="item.miniprogramSettingId" :label="item.miniprogramName" :value="item.miniprogramSettingId" :disabled="handleDiabled(item)"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="小程序路径" required v-show="appletForm.selectedApple != -1"> <el-form-item label="小程序路径" required v-show="appletForm.selectedApple != -1">
<el-input v-model="appletForm.appletPath" style="width: 458px;" placeholder="请输入小程序跳转路径,例如:/page " /> <el-input v-model="appletForm.appletPath" style="width: 458px" placeholder="请输入小程序跳转路径,例如:/page " />
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class=""> <div slot="footer" class="">
...@@ -259,7 +259,8 @@ export default { ...@@ -259,7 +259,8 @@ export default {
defaultWelcomeFlag: false, defaultWelcomeFlag: false,
isNew: true, isNew: true,
echoDefaultWelcomeFlag: 0, echoDefaultWelcomeFlag: 0,
iphone2 iphone2,
ele: '' // dom元素id
}; };
}, },
watch: { watch: {
...@@ -299,6 +300,12 @@ export default { ...@@ -299,6 +300,12 @@ export default {
preview preview
}, },
methods: { methods: {
/**
* 获取dom
*/
showPopover(id) {
this.ele = id;
},
getExistDefaultWelcome(isNew) { getExistDefaultWelcome(isNew) {
getRequest('/haoban-manage3-web/welcome/exist-default-welcome', { wxEnterpriseId: this.wxEnterpriseId }).then(res => { getRequest('/haoban-manage3-web/welcome/exist-default-welcome', { wxEnterpriseId: this.wxEnterpriseId }).then(res => {
let resData = res.data; let resData = res.data;
...@@ -613,7 +620,20 @@ export default { ...@@ -613,7 +620,20 @@ export default {
}, },
selectEmoji(item) { selectEmoji(item) {
const that = this; const that = this;
const str = that.form.welcomeContent + item.key; // const str = that.form.welcomeContent + item.key;
let textArea = document.getElementById(this.ele);
let startPos = textArea.selectionStart;
let endPos = textArea.selectionEnd;
if (startPos === undefined || endPos === undefined) return;
let currentTxt = textArea.value;
const str = currentTxt.substring(0, startPos) + item.key + currentTxt.substring(endPos);
textArea.value = str;
textArea.focus();
this.$nextTick(() => {
textArea.selectionStart = startPos + item.key.length;
textArea.selectionEnd = endPos + item.key.length;
});
if (str.length > 1000) { if (str.length > 1000) {
this.$message('添加该表情后文本内容将超过字数限制,无法添加!'); this.$message('添加该表情后文本内容将超过字数限制,无法添加!');
} else { } else {
......
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