朱鑫波 il y a 3 ans
Parent
commit
a37d378ee3
43 fichiers modifiés avec 7568 ajouts et 774 suppressions
  1. 3 3
      public/index.html
  2. 3 3
      src/api/video.js
  3. BIN
      src/assets/img/test.jpg
  4. 1 1
      src/components/README.md
  5. 1 1
      src/components/tools/UserPassword.vue
  6. 6 0
      src/config/router.config.js
  7. 4 2
      src/utils/request.js
  8. 1 1
      src/views/account/settings/BaseSetting.vue
  9. 0 1
      src/views/dashboard/Analysis.vue
  10. 1 1
      src/views/modules/BatchCreate/components/Treeselect.vue
  11. 53 0
      src/views/modules/Statistics/change-face/change-face.less
  12. 419 0
      src/views/modules/Statistics/change-face/change-face.vue
  13. 639 690
      src/views/modules/Statistics/popularVideo.vue
  14. 1 1
      src/views/modules/advertiser/UserAllocationList.vue
  15. 2 2
      src/views/modules/advertiser/modules/BindAccountLoginModal__Style#Drawer.vue
  16. 1 1
      src/views/modules/advertiser/modules/ProjectModal.vue
  17. 2 2
      src/views/modules/advertiser/modules/UserAllocationModal.vue
  18. 4 4
      src/views/modules/advertiser/modules/UserAllocationModal__Style#Drawer.vue
  19. 1 1
      src/views/modules/advertiser/modules/productModal.vue
  20. 1 1
      src/views/modules/advertiser/modules/projectListModal.vue
  21. 3 0
      src/views/modules/autoLaunch/directional/components/targetedPopulation.vue
  22. 3 3
      src/views/modules/autoLaunch/directional/components/templateModal.vue
  23. 3 0
      src/views/modules/autoLaunch/material-all/components/targetedPopulation.vue
  24. 1 1
      src/views/modules/autoLaunch/material-all/components/templateModal.vue
  25. 3169 0
      src/views/modules/autoLaunch/material-test/creatMaterialTest.vue
  26. 1673 0
      src/views/modules/autoLaunch/material-test/index.vue
  27. 1136 0
      src/views/modules/autoLaunch/material-test/lookPreview.vue
  28. 304 0
      src/views/modules/autoLaunch/material-test/treeSelectAccount.vue
  29. 8 1
      src/views/modules/crowd-control/crowd-control.vue
  30. 48 12
      src/views/modules/earlyWarningRules/accountClear/createClear.vue
  31. 9 9
      src/views/modules/earlyWarningRules/accountClear/index.vue
  32. 3 0
      src/views/modules/kuaishouapp/account/stepForm/stepModule/newModulePop.vue
  33. 3 0
      src/views/modules/kuaishouapp/account/stepForm/stepModule/targetedPopulation.vue
  34. 0 1
      src/views/modules/kuaishouapp/account/stepForm/stepModule/test.vue
  35. 3 0
      src/views/modules/kuaishouapp/groupCreate.vue
  36. 7 7
      src/views/modules/material/materialList.vue
  37. 24 1
      src/views/modules/material/videoMaterial.vue
  38. 1 1
      src/views/modules/workBench/placeOrder.vue
  39. 4 4
      src/views/system/modules/PasswordModal.vue
  40. 4 4
      src/views/system/modules/UserModal.vue
  41. 10 7
      src/views/user/Login.vue
  42. 6 6
      src/views/user/layer.vue
  43. 3 2
      vue.config.js

+ 3 - 3
public/index.html

@@ -280,9 +280,9 @@
   <script>
     window._CONFIG = {};
     // window._CONFIG['domianURL'] = 'http://192.168.1.72:8088/jeecg-boot';
-    window._CONFIG['domianURL'] = 'http://139.186.31.213:8804/jeecg-boot';
-    window._CONFIG['imgDomainURL'] = 'http://139.186.31.213:8804/jeecg-boot/sys/common/view';
-    window._CONFIG['pdfDomainURL'] = 'http://139.186.31.213:8804/jeecg-boot/sys/common/pdf/pdfPreviewIframe';
+    window._CONFIG['domianURL'] = 'http://gateway.tjyourong.com.cn/jeecg-boot';
+    window._CONFIG['imgDomainURL'] = 'http://gateway.tjyourong.com.cn/jeecg-boot/sys/common/view';
+    window._CONFIG['pdfDomainURL'] = 'http://gateway.tjyourong.com.cn/jeecg-boot/sys/common/pdf/pdfPreviewIframe';
   </script>
   <script src="<%= BASE_URL %>splitting.js"></script>
 

+ 3 - 3
src/api/video.js

@@ -2,7 +2,7 @@
 import {axios} from '@/utils/request'
 
 
-//获取登账户已经绑定过的快手账户列表
+//获取登账户已经绑定过的快手账户列表
 export function getUserList() {
     return axios({
       url: "/ks/web/user/list",
@@ -11,7 +11,7 @@ export function getUserList() {
     })
 }
 
-// 获取登二维码
+// 获取登二维码
 export function getLoginQr() {
     return axios({
       url: "/ks/web/login/qr",
@@ -20,7 +20,7 @@ export function getLoginQr() {
     })
 }
 
-// 获取登状态
+// 获取登状态
 // /ks/web/login/status
 // 参数 String requestId
 export function getLoginStatus(parameter) {

BIN
src/assets/img/test.jpg


+ 1 - 1
src/components/README.md

@@ -11,7 +11,7 @@ onEnd倒计时结束触发函数
 ####6.Ellipsis包:字符串截取组件,可以指定字符串的显示长度,并将全部内容显示到tip中,简单使用参考src\views\system\PermissionList.vue
 ####7.jeecg包:该包下自定义了很多列表/表单中用到的组件 参考包下readme文件
 ####8.jeecgbiz包:该包下定义了一些业务相关的组件,比如选择用户弹框,根据部门选择用户等等
-####9.layouts+page包:系统页面布局相关组件,比如登进去之后页面顶部显示什么,底部显示什么,菜单点击触发多个tab的布局等等 一般情况不需要修改
+####9.layouts+page包:系统页面布局相关组件,比如登进去之后页面顶部显示什么,底部显示什么,菜单点击触发多个tab的布局等等 一般情况不需要修改
 ####10.menun包:菜单组件,俩个,一个折叠菜单一个正常显示的菜单
 ####11.NumberInfo:数字信息显示组件 如下图
 ![输入图片说明](https://static.oschina.net/uploads/img/201904/12185858_uvJ5.png "在这里输入图片标题")

+ 1 - 1
src/components/tools/UserPassword.vue

@@ -88,7 +88,7 @@
     methods: {
       show(uname){
         if(!uname){
-          this.$message.warning("当前系统无登用户!");
+          this.$message.warning("当前系统无登用户!");
           return
         }else{
           this.username = uname

+ 6 - 0
src/config/router.config.js

@@ -83,6 +83,12 @@ export const constantRouterMap = [
     component: () => import(/* webpackChunkName: "fail" */ '@/views/modules/autoLaunch/configProject/creatConfig')
   },
 
+  
+  {
+    path: '/creat-material-test',
+    name: 'creatMaterialTest',
+    component: () => import(/* webpackChunkName: "fail" */ '@/views/modules/autoLaunch/material-test/creatMaterialTest')
+  },
   {
     path: '/test',
     component: BlankLayout,

+ 4 - 2
src/utils/request.js

@@ -19,8 +19,10 @@ else if (process.env.NODE_ENV === 'debug') {
 }
 else if (process.env.NODE_ENV === 'production') {
 	// axios.defaults.baseURL = 'http://apipre.tjyourong.com.cn/jeecg-boot'; // 预生产
-    // axios.defaults.baseURL = 'http://139.186.165.84:8806/jeecg-boot';
-	axios.defaults.baseURL = 'http://api.tjyourong.com.cn/jeecg-boot'; // 生产环境
+    axios.defaults.baseURL = 'http://gateway.tjyourong.com.cn/jeecg-boot';//测试
+	// axios.defaults.baseURL = 'http://api.tjyourong.com.cn/jeecg-boot'; // 生产环境
+	// axios.defaults.baseURL = 'http://gateway.tjyourong.com.cn/jeecg-boot'; // 生产环境
+	
 }
 const service = axios.create({
 	// baseURL: '/jeecg-boot', // api base_url

+ 1 - 1
src/views/account/settings/BaseSetting.vue

@@ -38,7 +38,7 @@
             <a-input placeholder="h3gSbecd"/>
           </a-form-item>
           <a-form-item
-            label="登密码"
+            label="登密码"
             :required="false"
           >
             <a-input placeholder="密码"/>

+ 0 - 1
src/views/dashboard/Analysis.vue

@@ -343,7 +343,6 @@
         this.loading = !this.loading
       }, 1000)
       this.initLogInfo()
-      console.log(localStorage.getItem('roleCode'),345678901222)
     },
     methods: {
       initLogInfo() {

+ 1 - 1
src/views/modules/BatchCreate/components/Treeselect.vue

@@ -61,7 +61,7 @@
       reqUrl: {
         type: String,
         default () {
-          return '/ctop/projectMember/participateList'
+          return ''
         }
 
       }

+ 53 - 0
src/views/modules/Statistics/change-face/change-face.less

@@ -0,0 +1,53 @@
+.change-face-modal {
+    width: 800px !important;
+    .policy-operation-form,
+    .face-right-div,
+    .face-right-table {
+        margin-top: 20px;
+    }
+    .face-right-div-p {
+        display: flex;
+        justify-content: space-between;
+    }
+    .pagin-table-class {
+        display: flex;
+        justify-content: flex-end;
+        margin-top: 20px;
+    }
+    .avatar-uploader > .ant-upload {
+        width: 128px;
+        height: 128px;
+        position: relative;
+    }
+    .upload-img-class {
+        position: absolute;
+        top: 0;
+        left: 0;
+        height: 100%;
+        .img-flex-url {
+            width: 128px;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            height: 100%;
+            img {
+                max-width: 100%;
+                max-height: 100%;
+            }
+        }
+        .cover-img-div {
+            position: absolute;
+            top: 0;
+            left: 0;
+            width: 100%;
+            height: 100%;
+            line-height: 120px;;
+            background: rgba(10, 10, 10, 0.5);
+            z-index: 10000;
+            .delete-icon-class {
+                font-size: 20px;
+                color: #1890ff;
+            }
+        }
+    }
+}

+ 419 - 0
src/views/modules/Statistics/change-face/change-face.vue

@@ -0,0 +1,419 @@
+<template>
+    <!-- 换脸弹窗 -->
+    <a-modal
+        v-if="faceShowStatus"
+        title="换脸操作"
+        :visible="faceShowStatus"
+        :confirmLoading="confirmLoading"
+        dialog-class="change-face-modal"
+        @ok="handlePolicyOperationSure"
+        @cancel="handlePolicyOperationCancel"
+    >  
+        <div class="face-right-div-p">
+            <a-radio-group v-model="faceType" button-style="solid" @change="handleFaceTypeChange">
+                <a-radio-button value="a">人脸合成</a-radio-button>
+                <a-radio-button value="b">合成列表</a-radio-button>
+            </a-radio-group>
+            <span v-if="faceType === 'b'" class="add-acount-policy-btn">
+                <a-button type="primary" @click="handleRefresh">刷新</a-button>
+            </span>
+        </div>
+        <a-form-model
+            v-if="faceType === 'a'"
+            class="policy-operation-form"
+            ref="policyOperationForm"
+            :model="policyOperationForm"
+            :label-col="labelCol"
+            :wrapper-col="wrapperCol"
+        >
+            <a-form-model-item label="图片上传">
+                <a-upload
+                    name="avatar"
+                    list-type="picture-card"
+                    class="avatar-uploader"
+                    :show-upload-list="false"
+                    :before-upload="beforeUpload"
+                >
+                    <div v-if="imageUrl" class="upload-img-class">
+                        <div class="img-flex-url">
+                            <img :src="imageUrl" alt="avatar"/>
+                        </div>
+                    </div>
+                    <div v-else>
+                        <a-icon type="plus" style="margin-top: 10px;"/>
+                        <div class="ant-upload-text">Upload</div>
+                    </div>
+                </a-upload>
+                <p style="margin: 0;">1、请保证脸部无遮挡、光线充足</p>
+                <p style="margin: 0;">2、视频、照片中只能出现一张人脸</p>
+            </a-form-model-item>
+        </a-form-model>
+        <div v-else-if="faceType === 'b'" class="face-right-div">
+            <a-table
+                class="face-right-table"
+                ref="table"
+                size="middle"
+                bordered
+                :columns="settlementColumns"
+                :dataSource="dataSource"
+                :pagination="false"
+            >
+                <span slot="input_video_url" slot-scope="text, record">
+                    <video :src="record.input_video_url" style="width:100px" controls></video>
+                </span>
+                <span slot="input_image_url" slot-scope="text, record">
+                    <img v-if="text" :src="text" style="width:60px">
+                    <img v-if="!text" src="@/assets/noImg.png" style="width:60px">
+                </span>
+                <span slot="actions" slot-scope="text, record">
+                    <a :disabled="!faceShowList.projectId || record.status !== 'finished'" @click="handlePushData(record)">推送</a>
+                    <a-divider type="vertical"/>
+                    <a @click="handleDownLoadData(record)" :disabled="record.status !== 'finished'">下载</a>
+                </span>
+            </a-table>
+            <a-pagination
+                class="pagin-table-class"
+                :total="totalAll"
+                :show-total="total => `共 ${totalAll} 条`"
+                size="small"
+                :current="defaultCurrent"
+                :defaultPageSize="2"
+                @change="onShowSizeChange"
+                @showSizeChange="onShowSizeChange"
+            />
+        </div>
+    </a-modal>
+</template>
+<script>
+import {mapGetters} from 'vuex';
+import {fileInsertV2} from '@/api/actor';
+import {getAction, postAction} from '@/api/manage';
+
+import BMF from 'browser-md5-file';
+let COS = require('cos-js-sdk-v5');
+let cos = new COS({
+    SecretId: 'AKIDE6IpMi8fJQRCg1iuWzFajjRs43kbbets',
+    SecretKey: 'tXzuwMfplTTK3c9GFUyETilasvQfePu9'
+});
+
+export default {
+    name: 'change-face',
+    props: {
+        status: {
+            type: Boolean,
+            default: false
+        },
+        defaultList: {
+            type: Object,
+            default: () => {}
+        }
+    },
+    data() {
+        return {
+            confirmLoading: false,
+            departValueInfoModality: [],
+            departValueInfoMod: [],
+            departValueInfoSence: [],
+            getProjectId: '',
+            defaultCurrent: 1,
+            dataAllList: [],
+            totalAll: 0,
+            uploadType: 'face',
+            dataSource: [],
+            settlementColumns: [
+                {
+                    title: '视频',
+                    dataIndex: 'input_video_url',
+                    align: 'center',
+                    width: 150,
+                    scopedSlots: {customRender: 'input_video_url'}
+                },
+                {
+                    title: '人脸',
+                    dataIndex: 'input_image_url',
+                    align: 'center',
+                    width: 150,
+                    scopedSlots: {customRender: 'input_image_url'}
+                },
+                {
+                    title: '状态',
+                    align: 'center',
+                    dataIndex: 'status',
+                    width: 100
+                },
+                {
+                    title: '操作',
+                    align: 'center',
+                    dataIndex: 'actions',
+                    width: 130,
+                    scopedSlots: {customRender: 'actions'}
+                }
+            ],
+            labelCol: {span: 4},
+            wrapperCol: {span: 16},
+            imageUrl: '',
+            faceShowStatus: false,
+            faceType: 'a',
+            policyOperationForm: {},
+            urlResult: '',
+            md5Result: ''
+        };
+    },
+    watch: {
+        status(newVal) {
+            this.faceShowStatus = newVal;
+        },
+        defaultList(newVal) {
+            if (newVal) {
+                this.faceShowList = newVal;
+            }
+        }
+    },
+    methods: {
+        ...mapGetters(['userInfo']),
+        // 分页操作按钮
+        onShowSizeChange(current, pageSize) {
+            this.defaultCurrent = current;
+            const defaultData = [...this.dataAllList];
+            this.dataSource = [...defaultData.slice(2 * current - 2, 2 * current)];
+        },
+        handleFaceTypeChange(e) {
+            if (e.target.value === 'b') {
+                this.handleInitTable();
+                this.handleGetMaterialTagInfo();
+            }
+        },
+        handleInitTable() {
+            const paramsData = {
+                videoMd5: this.faceShowList.projectId ? this.faceShowList.code : this.faceShowList.videoCode
+            };
+            // http://192.168.1.34:8000
+            // http://faceswap.tjyourong.com.cn
+            postAction('http://faceswap.tjyourong.com.cn/jeecg-boot/task/query', paramsData).then(result => {
+                if (result.code === 0) {
+                    this.dataAllList = result.data;
+                    this.dataSource = result.data.slice(0, 2);
+                    this.totalAll = result.data.length ? result.data.length : 0;
+                }
+                else {
+                    this.$message.error(result.message);
+                }
+            }).catch(error => {
+                console.log(error, 'eeee');
+            });
+        },
+        handleGetDetailList() {
+            getAction('/ctop/materialInfo/queryById', {
+                id: this.faceShowList.projectId ? this.faceShowList.code : this.faceShowList.videoCode
+            }).then(res => {
+                if (res.success) {
+                    this.getProjectId = res.result.projectId;
+                }
+            });
+        },
+        handleGetMaterialTagInfo() {
+            getAction('/ctop/materialTagInfo/detail', {
+                code: this.faceShowList.projectId ? this.faceShowList.code : this.faceShowList.videoCode
+            }).then(res => {
+                if (res.success) {
+                    this.departValueInfoModality = res.modalityTagList.map(item => item.tagId);
+                    this.departValueInfoMod = res.modTagList.map(item => item.tagId);
+                    this.departValueInfoSence = res.senceTagList.map(item => item.tagId);
+                }
+            });
+        },
+        // TODO 推送操作
+        handlePushData(list) {
+            const paramsData = {
+                projectId: this.faceShowList.projectId, // 项目选择
+                ascription: {
+                    planId: 'e9ca23d68d884d4ebb19d07889727dae',
+                    shotId: 'e9ca23d68d884d4ebb19d07889727dae',
+                    clipId: 'e9ca23d68d884d4ebb19d07889727dae'
+                },
+                status: '1',
+                code: list.output_video_md5,
+                url: list.output_video_url && list.output_video_url.split(':')[1],
+                type: 'VIDEO',
+                userId: this.userInfo().id,
+                modalityTagList: this.departValueInfoModality, // 形式标签
+                senceTagList: this.departValueInfoSence, // 场景标签
+                modTagList: this.departValueInfoMod // 基调标签
+            };
+            const that = this;
+            this.$confirm({
+                title: '提示',
+                content: '是否进行推送操作',
+                onOk() {
+                    fileInsertV2(paramsData).then(res => {
+                        if (res.code === 0) {
+                            that.handlePolicyOperationCancel();
+                            that.$emit('sureface');
+                            that.$message.success('素材已经同步到未审核列表,请进入查看');
+                        }
+                        else {
+                            that.$message.error(res.message);
+                        }
+                    });
+                }
+            });
+        },
+        // 下载操作
+        handleDownLoadData(list) {
+            const randomTime = new Date().getTime() + '_check.mp4';
+            fetch(list.output_video_url)
+                .then(res => res.blob())
+                .then(blob => {
+                    const a = document.createElement('a');
+                    document.body.appendChild(a);
+                    a.style.display = 'none';
+                    // 使用获取到的blob对象创建的url
+                    const url = window.URL.createObjectURL(blob);
+                    a.href = url;
+                    // 指定下载的文件名
+                    a.download = randomTime;
+                    a.click()
+                    document.body.removeChild(a);
+                    // 移除blob对象的url
+                    window.URL.revokeObjectURL(url);
+                });
+        },
+        // 刷新按钮
+        handleRefresh() {
+            this.defaultCurrent = 1;
+            this.handleInitTable();
+        },
+        checkTv(data) {
+            const index = data.lastIndexOf(".");
+            let tv_id = '';
+            tv_id = data.substring(index);
+            if(tv_id !== ".mp4" && tv_id !== ".rmvb" && tv_id !== ".avi" && tv_id !== ".ts") {
+                return data + '.mp4';
+            }
+            else {
+                return data;
+            }
+        },
+        // 确定按钮
+        handlePolicyOperationSure() {
+            if (this.faceType === 'a') {
+                this.confirmLoading = true;
+                if (!this.md5Result) {
+                    this.$message.error('请上传图片');
+                    return;
+                }
+                const paramsData = {
+                    inputVideoUrl: this.checkTv(this.faceShowList.url),
+                    inputImageUrl: this.urlResult,
+                    videoMd5: this.faceShowList.projectId ? this.faceShowList.code : this.faceShowList.videoCode,
+                    imageMd5: this.md5Result,
+                    createBy: this.userInfo().id
+                };
+                postAction('http://faceswap.tjyourong.com.cn/jeecg-boot/task/single', paramsData).then(result => {
+                    if (result.code === 0) {
+                        this.handlePolicyOperationCancel();
+                        this.$emit('sureface');
+                        this.$message.success('图片上传成功');
+                        this.confirmLoading = false;
+                    }
+                    else {
+                        this.$message.success('目标图片已存在,请下载视频');
+                        this.faceType = 'b';
+                        this.handleInitTable();
+                        this.handleGetMaterialTagInfo();
+                        this.confirmLoading = false;
+                    }
+                }).catch(error => {
+                    console.log(error, 'eeee');
+                    this.confirmLoading = false;
+                });
+            }
+            else {
+                this.handlePolicyOperationCancel();
+            }
+        },
+        // 取消按钮
+        handlePolicyOperationCancel() {
+            this.faceType = 'a';
+            this.imageUrl = '';
+            this.urlResult = '';
+            this.md5Result = '';
+            this.$emit('closeface');
+        },
+        getBase64(img, callback) {
+            const reader = new FileReader();
+            reader.addEventListener('load', () => callback(reader.result));
+            reader.readAsDataURL(img);
+        },
+        beforeUpload(info) {
+            const isZip = info.type.includes('png') || info.type.includes('jpeg');
+            if (!isZip) {
+                this.$message.error('请上传正确类型的图片');
+                this.imageUrl = '';
+                this.urlResult = '';
+                this.md5Result = '';
+                return;
+            }
+            this.handleMd5(info);
+            this.cosUpload(info);
+            this.getBase64(info, imageUrl => {
+                this.imageUrl = imageUrl;
+            });
+        },
+        handleMd5(file) {
+            let bmf = new BMF();
+            let that = this;
+            return new Promise(function (resolve, reject) {
+                bmf.md5(file, (err, md5) => {
+                    that.md5Result = md5;
+                });
+            });
+        },
+        cosUpload(file) {
+            let that = this;
+            let date = new Date();
+            let y = date.getFullYear();
+            let MM = date.getMonth() + 1;
+            MM = MM < 10 ? '0' + MM : MM;
+            let d = date.getDate();
+            d = d < 10 ? '0' + d : d;
+            let timeElse = new Date().getTime();
+            let arr = file.name.split('.');
+            let str = '';
+            for (let i = 0; i < arr.length; i++) {
+                if (i === arr.length - 1) {
+                }
+                else {
+                    if (i === arr.length - 2) {
+                        str += arr[i];
+                    }
+                    else {
+                        str += arr[i] + '.';
+                    }
+                }
+            }
+            cos.putObject(
+                {
+                    Bucket: 'media-1301855440',
+                    Region: 'ap-chongqing',
+                    // 存储桶所在地域,必须字段
+                    Key: that.uploadType + '/' + y + '-' + MM + '-' + d + '/' + str + '-' + timeElse + '.' + arr[arr.length - 1],
+                    StorageClass: 'STANDARD',
+                    Body: file // 上传文件对象
+                },
+                function (err, data) {
+                    if (err) {
+                        that.$message.error('上传失败!!!' + err);
+                        return;
+                    }
+                    that.loadingElse = false;
+                    that.urlResult = 'http://' + data.Location;
+                }
+            );
+        }
+    }
+}
+</script>
+<style lang="less">
+    @import "change-face";
+</style>

Fichier diff supprimé car celui-ci est trop grand
+ 639 - 690
src/views/modules/Statistics/popularVideo.vue


+ 1 - 1
src/views/modules/advertiser/UserAllocationList.vue

@@ -341,7 +341,7 @@ export default {
           dataIndex: 'projectId_dictText',
         },
         //    {
-        //     title: '输入账号  --登',
+        //     title: '输入账号  --登',
         //     align:"center",
         //     dataIndex: 'accountName'
         //    },

+ 2 - 2
src/views/modules/advertiser/modules/BindAccountLoginModal__Style#Drawer.vue

@@ -38,8 +38,8 @@
         <a-form-item
           :labelCol="labelCol"
           :wrapperCol="wrapperCol"
-          label="1未登陆 2已登陆">
-          <a-input placeholder="请输入1未登陆 2已登陆" v-decorator="['status', {}]" />
+          label="1未登录 2已登录">
+          <a-input placeholder="请输入1未登录 2已登录" v-decorator="['status', {}]" />
         </a-form-item>
         <a-form-item
           :labelCol="labelCol"

+ 1 - 1
src/views/modules/advertiser/modules/ProjectModal.vue

@@ -278,7 +278,7 @@ export default {
     },
     getSupplierList() {
       var params = {}
-      getAction('/ctop/supplierList/list').then((res) => {
+      getAction('/ctop/supplierList/list',{pageNo:1,pageSize:100}).then((res) => {
         if (res.success) {
           this.supplierList = res.result.records
         } else {

+ 2 - 2
src/views/modules/advertiser/modules/UserAllocationModal.vue

@@ -37,8 +37,8 @@
         <!-- <a-form-item
           :labelCol="labelCol"
           :wrapperCol="wrapperCol"
-          label="输入账号  --登">
-          <a-input placeholder="请输入输入账号  --登" v-decorator="['accountName', {}]" />
+          label="输入账号  --登">
+          <a-input placeholder="请输入输入账号  --登" v-decorator="['accountName', {}]" />
         </a-form-item> -->
         <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="授权名称">
           <a-input placeholder="请输入授权名称" v-decorator="['authName', {}]" />

+ 4 - 4
src/views/modules/advertiser/modules/UserAllocationModal__Style#Drawer.vue

@@ -14,8 +14,8 @@
         <a-form-item
           :labelCol="labelCol"
           :wrapperCol="wrapperCol"
-          label="登人id">
-          <a-input placeholder="请输入登人id" v-decorator="['userId', {}]" />
+          label="登人id">
+          <a-input placeholder="请输入登人id" v-decorator="['userId', {}]" />
         </a-form-item>
         <a-form-item
           :labelCol="labelCol"
@@ -56,8 +56,8 @@
         <a-form-item
           :labelCol="labelCol"
           :wrapperCol="wrapperCol"
-          label="输入账号  --登">
-          <a-input placeholder="请输入输入账号  --登" v-decorator="['accountName', {}]" />
+          label="输入账号  --登">
+          <a-input placeholder="请输入输入账号  --登" v-decorator="['accountName', {}]" />
         </a-form-item>
         <a-form-item
                 :labelCol="labelCol"

+ 1 - 1
src/views/modules/advertiser/modules/productModal.vue

@@ -183,7 +183,7 @@
       },
       getSupplierList() {
         var params = {}
-        getAction('/ctop/supplierList/list').then(res => {
+        getAction('/ctop/supplierList/list',{pageNo:1,pageSize:100}).then(res => {
           if (res.success) {
             this.supplierList = res.result.records
           } else {

+ 1 - 1
src/views/modules/advertiser/modules/projectListModal.vue

@@ -289,7 +289,7 @@ export default {
     },
     getSupplierList() {
       var params = {}
-      getAction('/ctop/supplierList/list').then((res) => {
+      getAction('/ctop/supplierList/list',{pageNo:1,pageSize:100}).then((res) => {
         if (res.success) {
           this.supplierList = res.result.records
         } else {

+ 3 - 0
src/views/modules/autoLaunch/directional/components/targetedPopulation.vue

@@ -243,6 +243,9 @@ li:hover {
         <a-radio :value="5">5x+</a-radio>
         <a-radio :value="6">6x+</a-radio>
         <a-radio :value="7">7x+</a-radio>
+        <a-radio :value="8">8x+</a-radio>
+        <a-radio :value="9">9x+</a-radio>
+        <a-radio :value="10">10x+</a-radio>
       </a-radio-group>
     </a-form-item>
     <a-form-item

+ 3 - 3
src/views/modules/autoLaunch/directional/components/templateModal.vue

@@ -213,7 +213,7 @@ export default {
           this.populationData.allForm.noAgeBreak = dataJson.noAgeBreak + ''
           this.populationData.allForm.noGenderBreak = dataJson.noGenderBreak + ''
           this.populationData.allForm.noAreaBreak = dataJson.noAreaBreak + ''
-          this.populationData.allForm.behaviorInterest = dataJson.label ? '1' : '0'
+          this.populationData.allForm.behaviorInterest = dataJson.label&&dataJson.label!='[]' ? '1' : '0'
           this.populationData.allForm.checkArr =
             this.populationData.allForm.appType == '2' ? JSON.parse(dataJson.appIds) : []
           this.populationData.projectId = dataJson.projectId + ''
@@ -252,8 +252,8 @@ export default {
                   templateName: values.templateName,
                   projectId: this.projectId,
                 }
-                params.label = JSON.stringify(params.behavior)
-                params.interestLabel = JSON.stringify(params.interest)
+                params.label = params.behavior?JSON.stringify(params.behavior):'[]'
+                params.interestLabel = params.interest?JSON.stringify(params.interest):'[]'
                 if (this.type == 'add') {
                   postAction('/kuaishouDirectionalPackage/createDirectionalPackage', params).then((res) => {
                     if (res.success) {

+ 3 - 0
src/views/modules/autoLaunch/material-all/components/targetedPopulation.vue

@@ -243,6 +243,9 @@ li:hover {
         <a-radio :value="5">5x+</a-radio>
         <a-radio :value="6">6x+</a-radio>
         <a-radio :value="7">7x+</a-radio>
+        <a-radio :value="8">8x+</a-radio>
+        <a-radio :value="9">9x+</a-radio>
+        <a-radio :value="10">10x+</a-radio>
       </a-radio-group>
     </a-form-item>
     <a-form-item

+ 1 - 1
src/views/modules/autoLaunch/material-all/components/templateModal.vue

@@ -185,7 +185,7 @@ export default {
           this.populationData.allForm.noAgeBreak = dataJson.noAgeBreak + ''
           this.populationData.allForm.noGenderBreak = dataJson.noGenderBreak + ''
           this.populationData.allForm.noAreaBreak = dataJson.noAreaBreak + ''
-          this.populationData.allForm.behaviorInterest = dataJson.label=='[]' ? '1' : '0'
+          this.populationData.allForm.behaviorInterest = dataJson.label&&dataJson.label!='[]' ? '1' : '0'
           this.populationData.allForm.checkArr =
             this.populationData.allForm.appType == '2' ? JSON.parse(dataJson.appIds) : []
           this.populationData.projectId = dataJson.projectId + ''

Fichier diff supprimé car celui-ci est trop grand
+ 3169 - 0
src/views/modules/autoLaunch/material-test/creatMaterialTest.vue


Fichier diff supprimé car celui-ci est trop grand
+ 1673 - 0
src/views/modules/autoLaunch/material-test/index.vue


Fichier diff supprimé car celui-ci est trop grand
+ 1136 - 0
src/views/modules/autoLaunch/material-test/lookPreview.vue


+ 304 - 0
src/views/modules/autoLaunch/material-test/treeSelectAccount.vue

@@ -0,0 +1,304 @@
+<style lang="scss" scoped>
+.select-project {
+    width: 50%;
+}
+</style>
+<template>
+    <div class="select-project">
+        <treeselect
+            :multiple="multiple"
+            :disable-branch-nodes="!multiple"
+            :disable-fuzzy-matching="true"
+            :options="options"
+            :load-options="loadOptions"
+            placeholder="请选择项目以及账户"
+            v-model="value"
+            :value-consists-of="valueConsistsOf"
+            :auto-load-root-options="false"
+            @select="update"
+            @input="emitValue"
+            :limit="limit"
+            :default-options="true"
+            :disabled="disabled"
+            :limitText="
+                count => {
+                    return '隐藏' + count + '条'
+                }
+            "
+            noChildrenText="该项目下暂无账号"
+            :noOptionsText="showLoading"
+        />
+    </div>
+</template>
+
+<script>
+//   @open="getParticipateList"
+// import the component
+import Treeselect from '@riophae/vue-treeselect'
+// import the styles
+import '@riophae/vue-treeselect/dist/vue-treeselect.css'
+import { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect'
+
+import { getAction, postAction } from '@/api/manage'
+import { mapGetters } from 'vuex'
+// We just use `setTimeout()` here to simulate an async operation
+// instead of requesting a real API server for demo purpose.
+let called = false
+export default {
+    data: () => ({
+        value: null,
+        valueConsistsOf: 'LEAF_PRIORITY',
+        options: [],
+        showLoading: 'loading...'
+    }),
+    props: {
+        oneData: {
+            type: Boolean,
+            default() {
+                return false
+            }
+        },
+        //是否多选
+        multiple: {
+            type: Boolean,
+            default() {
+                return true
+            }
+        },
+        appId: {
+            default() {
+                return ''
+            }
+        },
+        //判断媒体类型
+        request: {
+            type: String,
+            default() {
+                return '2,4'
+            }
+        },
+        //一级请求接口
+        reqUrl: {
+            type: String,
+            default() {
+                return '/ctop/projectMember/participateListByMediaId'
+            }
+        },
+        // 展示条数
+        limit: {
+            type: Number,
+            default() {
+                return 2
+            }
+        },
+        disabled: {
+            type: Boolean,
+            default() {
+                return false
+            }
+        }
+    },
+    components: {
+        Treeselect
+    },
+    watch: {
+        $route(n, o) {},
+        appId: {
+            handler(n, o) {
+                console.log(n)
+                if (n.length == 0) {
+                    if (this.multiple) {
+                        this.value = []
+                    } else {
+                        this.value = undefined
+                    }
+                } else {
+                    this.value = this.appId
+                }
+            },
+            deep: true,
+            immediate: true
+        }
+    },
+    methods: {
+        ...mapGetters(['nickname', 'avatar', 'userInfo']),
+        update(node, id) {
+            this.$emit('select-value', node)
+            console.log(node)
+            if (typeof node.id == 'string' && node.id.indexOf('p') != -1) {
+                getAction('/ctop/userAllocation/getByProjectId', {
+                    projectId: node.id.split('p')[0]
+                }).then(res => {
+                    // console.log(res)
+                    if (res.code == 0) {
+                        if (res.result.length > 0) {
+                            node.children = res.result.map(item => {
+                                return {
+                                    id: item.userId ? item.userId : '',
+                                    label: item.userId ? item.userId : '',
+                                    children: item.accounts.map(c => {
+                                        return {
+                                            id: c.accountId,
+                                            label:
+                                                c.userName +
+                                                '\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0' +
+                                                c.authName
+                                        }
+                                    })
+                                }
+                            })
+                        } else {
+                        }
+                    } else {
+                        new Error('Failed to load options: network error.')
+                    }
+                })
+            }
+        },
+        emitValue(value, id) {
+            this.$emit('update:appId', this.value)
+        },
+        loadOptions({ action, parentNode, callback }) {
+            // Typically, do the AJAX stuff here.
+            // Once the server has responded,
+            // assign children options to the parent node & call the callback.
+            if (action === LOAD_CHILDREN_OPTIONS) {
+                getAction('/ctop/userAllocation/getByProjectId', {
+                    projectId: parentNode.id.split('p')[0]
+                }).then(res => {
+                    if (res.code == 0) {
+                        if (res.result.length > 0) {
+                            parentNode.children = res.result.map(item => {
+                                return {
+                                    id: item.userId ? item.userId : '',
+                                    label: item.userId ? item.userId : '',
+                                    children: item.accounts.map(c => {
+                                        return {
+                                            id: c.accountId,
+                                            label:
+                                                c.userName +
+                                                '\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0' +
+                                                c.authName
+                                        }
+                                    })
+                                }
+                            })
+                            callback()
+                        } else {
+                            parentNode.children = []
+                            callback()
+                        }
+                    } else {
+                        callback(new Error('Failed to load options: network error.'))
+                    }
+                })
+            }
+        },
+        getParticipateList() {
+            //我参与的
+            //   toutiaoParticipateList
+            var params = {}
+            params.userId = this.userInfo().id
+
+            if (this.request == '1,3') {
+                params.type = 'bytedance'
+            } else if (this.request == '2,4') {
+                params.type = 'kuaishou'
+            }
+
+            if (this.reqUrl == '/ctop/projectMember/participateListByMediaId') {
+                if (this.options.length > 0) {
+                    return
+                }
+                getAction('/ctop/projectMember/projectList').then(res => {
+                    if (res.success) {
+                        this.options = res.data.map(item => {
+                            return {
+                                id: item.id + 'projectId',
+                                label: item.projectName,
+                                children: null
+                            }
+                        })
+                        if (this.oneData && !this.multiple) {
+                            var data = this.options.filter(item => {
+                                if (item.children && item.children.length > 0) {
+                                    return { ...item }
+                                }
+                            })
+                            this.$emit('update:appId', data[0].children[0].id)
+                        }
+                    }
+                })
+            } else if (this.reqUrl == '/ctop/projectMember/getProjectAccountByUserId') {
+                getAction(this.reqUrl, {
+                    mediaType: this.request
+                }).then(res => {
+                    if (res.code == 0) {
+                        if (res.result.length > 0) {
+                            res.result.forEach((element, index) => {
+                                if (element) {
+                                    this.options.push({})
+                                    this.options[index].label =
+                                        element.project.projectName + '_(' + element.project.advertiserName + ')'
+                                    this.options[index].id = 'project' + element.project.projectId
+                                    this.options[index].key = element.project.projectId
+                                    this.options[index].mediaId = element.project.mediaId
+                                    this.options[index].children = []
+
+                                    if (element.account.length) {
+                                        element.account.forEach((ele, i) => {
+                                            this.options[index].children.push({})
+                                            this.options[index].children[i].label =
+                                                ele.userName + '_' + ele.authName + '_' + element.project.projectName
+                                            this.options[index].children[i].id = ele.accountId
+                                            this.options[index].children[i].key = ele.accountId
+                                        })
+                                    }
+                                }
+                            })
+                        } else {
+                            this.showLoading = '暂无数据'
+                        }
+                    }
+                })
+            } else {
+                getAction(this.reqUrl, {
+                    userId: this.userInfo().id
+                }).then(res => {
+                    if (res.code == 0) {
+                        if (res.result.length > 0) {
+                            var arr = this.request.split(',')
+                            var dataTwo = []
+                            var data = res.result.filter(item => {
+                                return item.mediaId == arr[0]
+                            })
+                            if (arr.length > 1) {
+                                dataTwo = res.result.filter(item => {
+                                    return item.mediaId == arr[1]
+                                })
+                            }
+                            var allData = data.concat(dataTwo)
+                            this.options = allData.map(item => {
+                                return {
+                                    id: item.projectId,
+                                    label:
+                                        item.projectName +
+                                        '\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0' +
+                                        item.advertiserName,
+                                    children: null
+                                }
+                            })
+                        } else {
+                            this.showLoading = '暂无数据'
+                        }
+                    }
+                })
+            }
+        }
+    },
+
+    mounted() {
+        this.getParticipateList()
+    }
+}
+</script>

+ 8 - 1
src/views/modules/crowd-control/crowd-control.vue

@@ -47,6 +47,7 @@
                 :columns="columns"
                 :dataSource="dataSource"
                 :pagination="false"
+                :loading="dataLoading"
             >
                 <span slot="action" slot-scope="text, record">
                     <a @click="handleEdit(record)">推送</a>
@@ -68,6 +69,7 @@
                 </span>
             </a-table>
             <a-pagination
+                v-if="dataSource.length>0"
                 class="pagin-table-class"
                 :total="totalAll"
                 :show-total="total => `共 ${totalAll} 条`"
@@ -262,6 +264,7 @@ export default {
     data() {
         let that = this;
         return {
+            dataLoading: false,
             src: '/kuaishouPopulationPackage/getAccountByProjectId',
             unitAccountId: '',
             personResourceDisabled: false,
@@ -509,16 +512,20 @@ export default {
                 pageNo: this.tablePag.page,
                 pageSize: this.tablePag.size
             };
-            this.dataSource = []
+            this.dataSource = [];
+            this.dataLoading = true;
             getAction('/kuaishouPopulationPackage/list', paramsData).then(result => {
                 if (result.code === 200) {
+                    this.dataLoading = false;
                     this.dataSource = result.result.list || [];
                     this.totalAll = result.result.total || 0;
                 }
                 else {
+                    this.dataLoading = false;
                     this.$message.error(result.message);
                 }
             }).catch(error => {
+                this.dataLoading = false;
                 console.log(error, 'eeee');
             });
         },

+ 48 - 12
src/views/modules/earlyWarningRules/accountClear/createClear.vue

@@ -211,12 +211,14 @@ li.chouzhen.first:before {
                                 <a-col :span="16">
                                     <a-form-item label="模板名称">
                                         <a-input
-                                            disabled
+                                            :disabled="$route.query.preview == 'true'"
                                             v-decorator="[
                                                 'templateName',
                                                 {
-                                                    rules: [{ required: true, message: ' ' }],
-                                                    initialValue: '僵尸推广组清理'
+                                                    rules: [
+                                                        { required: true, message: ' ' },
+                                                        { validator: templateNameValid }
+                                                    ]
                                                 }
                                             ]"
                                         >
@@ -281,7 +283,7 @@ li.chouzhen.first:before {
                             <a-row :gutter="16">
                                 <a-col :span="16">
                                     <a-form-item label="累计消耗">
-                                        <span style="width: 20%;display: inline-block;">花费小于等于</span>
+                                        <span style="width: 15%;display: inline-block;">小于等于</span>
                                         <a-input-number
                                             :disabled="$route.query.preview == 'true'"
                                             v-decorator="[
@@ -307,7 +309,7 @@ li.chouzhen.first:before {
                             <a-row :gutter="16">
                                 <a-col :span="16">
                                     <a-form-item label="累计转化数">
-                                        <span style="width: 20%;display: inline-block;">小于等于</span>
+                                        <span style="width: 15%;display: inline-block;">小于等于</span>
 
                                         <a-input-number
                                             :disabled="$route.query.preview == 'true'"
@@ -346,7 +348,7 @@ li.chouzhen.first:before {
                                             @change="checkStatus"
                                         >
                                             <a-select-option value="1">投放中</a-select-option>
-                                            <a-select-option value="2">暂停</a-select-option>
+                                            <a-select-option value="2">暂停</a-select-option>
                                             <a-select-option value="3">不限</a-select-option>
                                         </a-select>
                                     </a-form-item>
@@ -523,6 +525,28 @@ export default {
     filters: {},
     methods: {
         moment,
+        templateNameValid(rule, value, callback) {
+            if (value === '' || value === undefined || value === 0 || value === '0') {
+                callback('模板名称必须填写')
+            } else {
+                let params = {}
+                params.templateName = value
+                if (this.$route.query.id) {
+                    params.id = this.$route.query.id
+                    callback()
+                } else {
+                    this.getAction('/accountClean/getTemplateNameSize', params).then(res => {
+                        if (res.success) {
+                            if (res.result > 0) {
+                                callback('模板名称重复')
+                            } else {
+                                callback()
+                            }
+                        }
+                    })
+                }
+            }
+        },
         ...mapGetters(['userInfo']),
         getFormData(form, className) {
             return this[form].getFieldValue(className)
@@ -564,13 +588,25 @@ export default {
             })
         },
         checkStatus(e) {
-            if (e != 1) {
-                this.formOptimize.setFieldsValue({
-                    performOperations: 3
-                })
-            }
+            // if (e != '1') {
+            this.formOptimize.setFieldsValue({
+                performOperations: '3'
+            })
+            // }else{
+            //      this.formOptimize.setFieldsValue({
+            //         performOperations: undefined
+            //     })
+            // }
         },
-        clearAllData() {}
+        clearAllData() {
+            if (this.$route.query.id) {
+                this.$router.replace('/earlyWarningRules/accountClear')
+                this.$bus.$emit('remove', `/earlyWarningRules/createClear?id=${this.$route.query.id}`)
+            } else {
+                this.$router.replace('/earlyWarningRules/accountClear')
+                this.$bus.$emit('remove', '/earlyWarningRules/createClear')
+            }
+        }
     }
 }
 </script>

+ 9 - 9
src/views/modules/earlyWarningRules/accountClear/index.vue

@@ -181,11 +181,11 @@
                 <a-form layout="inline" :form="form" hide-required-mark :selfUpdate="true" @submit="handleQueryList">
                     <a-row :gutter="24" v-if="tabKey === 1">
                         <a-col :md="8" :sm="8" :xxl="6">
-                            <a-form-item label="模板id">
+                            <a-form-item label="模板名称">
                                 <a-input
-                                    v-decorator="['templateId']"
+                                    v-decorator="['templateName']"
                                     type="text"
-                                    placeholder="请输入需要搜索的模板id"
+                                    placeholder="请输入需要搜索的模板名称"
                                 />
                             </a-form-item>
                             <!-- <selectTable :projectId.sync="projectIdAll" ref="selectTable"></selectTable> -->
@@ -370,7 +370,7 @@ let TTcolumns = [
         key: 'templateName'
     },
     {
-        title: '应用模板',
+        title: '应用媒体',
         dataIndex: 'appliedMedia',
         scopedSlots: { customRender: 'appliedMedia' },
         align: 'center',
@@ -518,7 +518,7 @@ export default {
                     // 当在页面定义change事件时,切记要把此处的事件清除,因为这两个事件重叠了,可能到时候会导致一些莫名的bug
                     this.ipaginationHistory.current = current
                     this.ipaginationHistory.pageSize = pageSize
-                    this.getHistroy({ userName: this.userName, accountId: this.accountIdSearch })
+                    this.getHistroy({ userId: this.userName, id: this.accountIdSearch })
                 }
             },
             historyColumns: [
@@ -611,11 +611,11 @@ export default {
         ...mapGetters(['userInfo']),
         getHistroy(item) {
             this.unitVisible = true
-            this.userName = item.userName
-            this.accountIdSearch = item.accountId
+            this.userName = item.userId
+            this.accountIdSearch = item.id
             let params = {}
-            params.userName = item.userName
-            params.accountId = item.accountId
+            params.userId = this.userInfo().id
+            params.templateId = item.id
             params.pageNum = this.ipaginationHistory.current
             params.pageSize = this.ipaginationHistory.pageSize
 

+ 3 - 0
src/views/modules/kuaishouapp/account/stepForm/stepModule/newModulePop.vue

@@ -250,6 +250,9 @@ li:hover {
         <a-radio :value="5">5x+</a-radio>
         <a-radio :value="6">6x+</a-radio>
         <a-radio :value="7">7x+</a-radio>
+        <a-radio :value="8">8x+</a-radio>
+        <a-radio :value="9">9x+</a-radio>
+        <a-radio :value="10">10x+</a-radio>
       </a-radio-group>
     </a-form-item>
     <a-form-item

+ 3 - 0
src/views/modules/kuaishouapp/account/stepForm/stepModule/targetedPopulation.vue

@@ -249,6 +249,9 @@ li:hover {
         <a-radio :value="5">5x+</a-radio>
         <a-radio :value="6">6x+</a-radio>
         <a-radio :value="7">7x+</a-radio>
+        <a-radio :value="8">8x+</a-radio>
+        <a-radio :value="9">9x+</a-radio>
+        <a-radio :value="10">10x+</a-radio>
       </a-radio-group>
     </a-form-item>
     <a-form-item

+ 0 - 1
src/views/modules/kuaishouapp/account/stepForm/stepModule/test.vue

@@ -186,7 +186,6 @@ export default {
           return 0
         }
       })
-      console.log(this.dataString.join(''))
       this.$emit('update:scheduleTime', this.dataString.join(''))
       this.selectFlag = false
       this.max = {

+ 3 - 0
src/views/modules/kuaishouapp/groupCreate.vue

@@ -114,6 +114,9 @@
           <a-radio value='5'>5.x+</a-radio>
           <a-radio value='6'>6.x+</a-radio>
           <a-radio value='7'>7.x+</a-radio>
+          <a-radio value="8">8x+</a-radio>
+          <a-radio value="9">9x+</a-radio>
+          <a-radio value="10">10x+</a-radio>
         </a-radio-group>
       </a-form-item>
 

+ 7 - 7
src/views/modules/material/materialList.vue

@@ -1010,13 +1010,13 @@ export default {
       })
     },
     getParticipateList() {
-      getAction('/ctop/projectMember/participateList', {
-        userId: this.userInfo().id
-      }).then(res => {
-        if (res.code == 0) {
-          this.dataElse = res.result
-        }
-      })
+      // getAction('/ctop/projectMember/participateList', {
+      //   userId: this.userInfo().id
+      // }).then(res => {
+      //   if (res.code == 0) {
+      //     this.dataElse = res.result
+      //   }
+      // })
     },
     getProjectId(items) {
       getAction('/ctop/projectMember/getMemberList', {

+ 24 - 1
src/views/modules/material/videoMaterial.vue

@@ -726,7 +726,7 @@ a {
                       </div>
                       <a href="javascript:;" style="margin-right: 20px">驳回</a>
                     </a-popconfirm>
-
+                    <a v-show="active === '1'" style="margin-right: 20px" @click="handleChangeFace(items)">换脸</a>
                     <a-popconfirm
                       @confirm="okEditShow(items, '1')"
                       v-show="active != '1' && active != '3'"
@@ -1735,10 +1735,19 @@ a {
     <account-check ref="check" @synchro="implement"></account-check>
     <accountCheckBytedance ref="accountCheckBytedance" @synchro="implement" />
     <permission-modal ref="modalForm" @ok="modalFormOkElse"></permission-modal>
+    <!-- 换脸模块 -->
+		<change-face
+			:status="faceTypeStatus"
+			:defaultList="faceChangeList"
+			@closeface="handleFaceCloseModal"
+			@sureface="handleFaceSureModal"
+		>
+		</change-face>
   </a-card>
 </template>
 
 <script>
+import changeFace from '@/views/modules/Statistics/change-face/change-face';
 import PermissionModal from './modules/DepartModal'
 import { JeecgListMixin } from '@/mixins/JeecgListMixin'
 import JEllipsis from '@/components/jeecg/JEllipsis'
@@ -1768,10 +1777,13 @@ export default {
     PermissionModal,
     accountCheckBytedance,
     selectTableProject,
+    changeFace
   },
 
   data() {
     return {
+      faceTypeStatus: false,
+      faceChangeList: {},
       designList: [],
       // 标签的数据
       labelValue: [],
@@ -2064,6 +2076,17 @@ export default {
     },
   },
   methods: {
+    handleChangeFace(data) {
+      console.log(data, '-------------------------')
+      this.faceTypeStatus = true;
+			this.faceChangeList = data;
+    },
+    handleFaceCloseModal() {
+			this.faceTypeStatus = false;
+		},
+		handleFaceSureModal() {
+			this.searchQuery();
+		},
     // 获取设计人员
     getDesignList() {
       postAction('/ctop/kuaishou/videoReport/getDesignList').then((res) => {

+ 1 - 1
src/views/modules/workBench/placeOrder.vue

@@ -240,7 +240,7 @@
                              <a-form-model-item ref="project"  prop="project">
                                <a-select  style="width: 500px" v-model="form.project" show-search  option-filter-prop="children" placeholder="请选择关联项目">
                                     <a-select-option v-for="item in projectList" :key="item.projectId" :value='item.projectId'>
-                                        {{item.projectName+'_'+ (item.mediaId==1?'头条':'快手')+'_'+ item.userName}}
+                                        {{item.projectName+'_'+ (item.mediaId==1?'头条':'快手')}}
                                     </a-select-option>
                                 </a-select>
                             </a-form-model-item>

+ 4 - 4
src/views/system/modules/PasswordModal.vue

@@ -16,12 +16,12 @@
           <a-input placeholder="请输入用户账号" v-decorator="[ 'username', {}]" :readOnly="true"/>
         </a-form-item>
 
-        <a-form-item label="登密码" :labelCol="labelCol" :wrapperCol="wrapperCol" hasFeedback>
-          <a-input type="password" placeholder="请输入登密码" v-decorator="[ 'password', validatorRules.password]"/>
+        <a-form-item label="登密码" :labelCol="labelCol" :wrapperCol="wrapperCol" hasFeedback>
+          <a-input type="password" placeholder="请输入登密码" v-decorator="[ 'password', validatorRules.password]"/>
         </a-form-item>
 
         <a-form-item label="确认密码" :labelCol="labelCol" :wrapperCol="wrapperCol" hasFeedback>
-          <a-input type="password" @blur="handleConfirmBlur" placeholder="请重新输入登密码"
+          <a-input type="password" @blur="handleConfirmBlur" placeholder="请重新输入登密码"
                    v-decorator="[ 'confirmpassword', validatorRules.confirmpassword]"/>
         </a-form-item>
 
@@ -52,7 +52,7 @@
           },
           confirmpassword: {
             rules: [{
-              required: true, message: '请重新输入登密码!',
+              required: true, message: '请重新输入登密码!',
             }, {
               validator: this.compareToFirstPassword,
             }],

+ 4 - 4
src/views/system/modules/UserModal.vue

@@ -22,14 +22,14 @@
 				<a-input placeholder="请输入用户账号" v-decorator="['username', validatorRules.username]" :disabled="disableSubmit"/>
 				</a-form-item>
 				<template v-if="!model.id">
-				<a-form-item label="登密码" :labelCol="labelCol" :wrapperCol="wrapperCol">
-					<a-input type="password" placeholder="请输入登密码" v-decorator="['password', validatorRules.password]" :disabled="disableSubmit"/>
+				<a-form-item label="登密码" :labelCol="labelCol" :wrapperCol="wrapperCol">
+					<a-input type="password" placeholder="请输入登密码" v-decorator="['password', validatorRules.password]" :disabled="disableSubmit"/>
 				</a-form-item>
 				<a-form-item label="确认密码" :labelCol="labelCol" :wrapperCol="wrapperCol">
 					<a-input
 					type="password"
 					@blur="handleConfirmBlur"
-					placeholder="请重新输入登密码"
+					placeholder="请重新输入登密码"
 					v-decorator="['confirmpassword', validatorRules.confirmpassword]"
 					:disabled="disableSubmit"
 					/>
@@ -191,7 +191,7 @@ export default {
 				rules: [
 					{
 					required: true,
-					message: '请重新输入登密码!',
+					message: '请重新输入登密码!',
 					},
 					{
 					validator: this.compareToFirstPassword,

+ 10 - 7
src/views/user/Login.vue

@@ -15,7 +15,8 @@
           <a-form-item>
             <a-select v-model="creativeTag" @change="setData">
               <a-select-option value="huichuang">北京主公司</a-select-option>
-              <a-select-option value="jiaoyang">北京分公司</a-select-option>
+              <a-select-option value="jiaoyang">北京分公司1</a-select-option>
+              <a-select-option value="juyi">北京分公司2</a-select-option>
             </a-select>
             <div id="wx_reg" style="display: flex; justify-content: center; margin-top: 15px"></div>
             <div style="display: flex; justify-content: center; color: red; font-size: 16px">
@@ -23,7 +24,7 @@
             </div>
           </a-form-item>
         </a-tab-pane>
-        <a-tab-pane key="tab2" tab="账号密码登">
+        <a-tab-pane key="tab2" tab="账号密码登">
           <a-form-item>
             <a-input
               size="large"
@@ -74,7 +75,7 @@
         </a-tab-pane>
       </a-tabs>
       <a-form-item v-if="customActiveKey != 'tab1'">
-        <a-checkbox v-model="formLogin.rememberMe">自动登</a-checkbox>
+        <a-checkbox v-model="formLogin.rememberMe">自动登</a-checkbox>
         <router-link :to="{ name: 'alteration' }" class="forge-password" style="float: right"> 忘记密码 </router-link>
         <!--
         <router-link :to="{ name: 'register'}" class="forge-password" style="float: right;margin-right: 10px" >
@@ -102,7 +103,7 @@
         <span class="FSinfo">使用飞书快捷登录</span>
       </div> -->
       <!-- <div class="user-login-other">
-        <span>其他登方式</span>
+        <span>其他登方式</span>
         <a><a-icon class="item-icon" type="alipay-circle"></a-icon></a>
         <a><a-icon class="item-icon" type="taobao-circle"></a-icon></a>
         <a><a-icon class="item-icon" type="weibo-circle"></a-icon></a>
@@ -289,8 +290,10 @@ export default {
     setData() {
       if (this.creativeTag == 'huichuang') {
         this.appId = 'ww24b8a47826f5875f'
-      } else {
+      } else if (this.creativeTag == 'jiaoyang'){
         this.appId = 'wwef2e51064c0ac897'
+      }else if(this.creativeTag == 'juyi'){
+        this.appId = 'ww460c4ae74efe25c9'
       }
       this.$nextTick(() => {
         var url = ''
@@ -330,7 +333,7 @@ export default {
         remember_me: that.formLogin.rememberMe,
       }
 
-      // 使用账户密码登
+      // 使用账户密码登
       if (that.customActiveKey === 'tab2') {
         that.form.validateFields(
           ['username', 'password', 'inputCode'],
@@ -359,7 +362,7 @@ export default {
             }
           }
         )
-        // 使用手机号登
+        // 使用手机号登
       } else if (that.customActiveKey === 'tab3') {
         that.form.validateFields(
           ['mobile', 'captcha'],

+ 6 - 6
src/views/user/layer.vue

@@ -5,7 +5,7 @@
 <!--        :activeKey="customActiveKey"-->
 <!--        :tabBarStyle="{ textAlign: 'center', borderBottom: 'unset' }"-->
 <!--        @change="handleTabClick">-->
-<!--        <a-tab-pane key="tab1" tab="账号密码登">-->
+<!--        <a-tab-pane key="tab1" tab="账号密码登">-->
 <!--          <a-form-item>-->
 <!--            <a-input-->
 <!--              size="large"-->
@@ -49,7 +49,7 @@
 
 
 <!--        </a-tab-pane>-->
-<!--        <a-tab-pane key="tab2" tab="手机号登">-->
+<!--        <a-tab-pane key="tab2" tab="手机号登">-->
 <!--          <a-form-item>-->
 <!--            <a-input-->
 <!--              v-decorator="['mobile',validatorRules.mobile]"-->
@@ -85,7 +85,7 @@
 <!--      </a-tabs>-->
 
 <!--      <a-form-item>-->
-<!--        <a-checkbox v-model="formLogin.rememberMe">自动登</a-checkbox>-->
+<!--        <a-checkbox v-model="formLogin.rememberMe">自动登</a-checkbox>-->
 <!--        <router-link :to="{ name: 'alteration'}" class="forge-password" style="float: right;">-->
 <!--          忘记密码-->
 <!--        </router-link>-->
@@ -109,7 +109,7 @@
 <!--      </a-form-item>-->
 
 <!--      &lt;!&ndash; <div class="user-login-other">-->
-<!--        <span>其他登方式</span>-->
+<!--        <span>其他登方式</span>-->
 <!--        <a><a-icon class="item-icon" type="alipay-circle"></a-icon></a>-->
 <!--        <a><a-icon class="item-icon" type="taobao-circle"></a-icon></a>-->
 <!--        <a><a-icon class="item-icon" type="weibo-circle"></a-icon></a>-->
@@ -261,7 +261,7 @@
 <!--          remember_me: that.formLogin.rememberMe-->
 <!--        };-->
 
-<!--        // 使用账户密码登-->
+<!--        // 使用账户密码登-->
 <!--        if (that.customActiveKey === 'tab1') {-->
 <!--          that.form.validateFields(['username', 'password', 'inputCode'], {force: true}, (err, values) => {-->
 <!--            if (!err) {-->
@@ -279,7 +279,7 @@
 <!--              });-->
 <!--            }-->
 <!--          })-->
-<!--          // 使用手机号登-->
+<!--          // 使用手机号登-->
 <!--        } else {-->
 <!--          that.form.validateFields(['mobile', 'captcha'], {force: true}, (err, values) => {-->
 <!--            if (!err) {-->

+ 3 - 2
vue.config.js

@@ -71,7 +71,7 @@ module.exports = {
 				// target: 'http://192.168.1.8:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙
 				// target: 'http://192.168.1.3:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙
 				// target: 'http://192.168.0.59:8088', //请求本地 需要jeecg-boot后台项目  英豪
-				// target: 'http://192.168.1.62:8088', //请求本地 需要jeecg-boot后台项目  英豪
+				// target: 'http://192.168.1.62:7001', //请求本地 需要jeecg-boot后台项目  英豪
 				// target: 'http://192.168.6.162:9806', //请求本地 需要jeecg-boot后台项目  祚云
 				// target: 'http://192.168.1.43:8098', //请求本地 需要jeecg-boot后台项目  毕洁泉
 				// target: 'http://192.168.1.43:8088', //请求本地 需要jeecg-boot后台项目  毕洁泉
@@ -90,8 +90,9 @@ module.exports = {
 				// target: 'http://192.168.1.8:8806', // 学超
 				// target:'http://139.186.165.84:8806', //测试
 				// target:'http://apipre.tjyourong.com.cn', //预生产
-        target: 'http://192.168.1.134:8080', //请求本地 需要jeecg-boot后台项目  周泽宇
+        // target: 'http://192.168.1.134:8080', //请求本地 需要jeecg-boot后台项目  周泽宇
 
+        target:'http://gateway.tjyourong.com.cn/',//测试
 
 				ws: false,